假设需要编写一个程序,用来计算在一个输入的句子中,除单引号和双引号以外的字符出现了多少次。可以用逻辑运算符来实现该目的,可以用英文的句号来标识一个句子的结束。
程序清单 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。
来源:oschina
链接:https://my.oschina.net/u/2754880/blog/693191