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

耗尽温柔 提交于 2020-03-02 18:40:44

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

程序清单  7.6 chcount.c

#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;
}

逻辑运算符的优先级低于关系运算符,所以不必使用圆括号组合表达式。

C的逻辑运算符

运算符 含义
&&
||
!

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

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

*如果A为真或B为真或二者都为真,A||B为真。

*如果A为真,!A为假;如果A为假,!A为真。

7.3.1 改变拼写法:iso646.h

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。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!