C Primer Plus 第7章 C控制语句:分支和跳转 7.3得到逻辑性

假设须要编写一个程序,用来计算在一个输入的句子中,除单引号和双引号之外的字符出现了多少次。能够用逻辑运算符来实现该目的,能够用英文的句号来标识一个句子的结束。测试

程序清单  7.6 chcount.cspa

#include 
#define PERIOD '.'
int main (void)
{
    int ch;
    int charcount=0;

    while((ch=getchar())!=PERIOD)
    {
        if(ch!='"' && ch!='\'')  //若是字符不是双引号而且它不是单引号
            charcount++;
    }
    printf("There are %d non-quote characters.\n",charcount);
    return 0;
}

逻辑运算符的优先级低于关系运算符,因此没必要使用圆括号组合表达式。code

C的逻辑运算符ci

运算符 含义
&&
||
!

假设A和B是两个简单的关系表达式,那么能够声明以下:get

*仅当A和B都为真时,A&&B才为真。数学

*若是A为真或B为真或两者都为真,A||B为真。table

*若是A为真,!A为假;若是A为假,!A为真。class

7.3.1 改变拼写法:iso646.hobject

C99标准为逻辑运算符增长了可供选择的拼写法。它们在iso646.h头文件中定义。程序

表7.4 逻辑运算符的可选表示法

传统的 iso646.h
&& and
|| or
not

7.3.2  优先级

!运算符拥有最高的优先级,它高于乘法运算,和增量运算符的优先级相同,仅次于圆括号。&&运算符的优先级高于||,这两者的优先级都低于关系运算符而高于赋值运算符。

7.3.3  求值的顺序

C保证逻辑运算符是从左到右求值的。&&和||运算符是序列的分界点,所以在程序从一个操做数前进到下一个操做数以前,全部的反作用都会生效。并且,C保证一旦发现某个元素使表达式整体无效,求值将马上中止。

7.3.4  范围

能够把&&运算符用于测试范围。例如:range>=90 && range<=100,千万不要像数学上这样写90<=range<=100。