第六章 C语言控制语句:循环
6.3.3新的_Bool
类型
在C语言中一直用int类型的变量表示真假。C99专门针对这种类型的变量新增了_Bool类型。该类型是以英国数学家George Boole的名字命名的,他开发了用代数表示逻辑和解决逻辑问题。
#include "stdio.h"
int main(void){
long num;
long sum = 0L;
_Bool input_is_good;
printf("Please enter an integer to be sumed ");
printf("(q to quit):");
input_is_good = (scanf("%ld", &num) == 1);
while(input_is_good){
sum += num;
printf("Please enter next ineter (q to quit)");
input_is_good = (scanf("%ld", &num)==1);
printf("%d\n", input_is_good);
}
printf("Those inegers sum to %ld\n", sum);
return 0;
}
顺带一提,从优先级方面考虑的话,并不需要用圆括号把
scanf("%ld", &num) == 1
括起来,这样做可以提高代码可读性。还要注意,如何为变量命名才能让while循环的测试简单易懂C99提供了
stdbool.h
头文件,该文件让bool成为了_Bool
的别名,而且还把true
和false
为别定义为1和0的符号常量。包含头文件后,写出的代码可以与C++兼容,因为C++把bool
、true
和false
定义为关键字如果系统不支持
_Bool
类型,导致无法运行该程序,可以把_Bool
替换成int即可
第七章 逻辑运算符
7.3.1 备选拼写:iso646.h
头文件
C是在美国用标准美式键盘开发的语言。但是在世界各地,并非所有的键盘都有和美式键盘一样的符号。因此,C99标准新增了可替代逻辑运算符的拼写,他们被定义在iso646.h头文件中。如果在程序中包含了该头文件,便可
and
替代&&
、or
替代||
、not
替代!
。
#include "stdio.h"
#include "iso646.h"
int main(void){
if (not 0){
printf("not 0\n");
}
if (1 and 0){
printf("1 and 0\n");
}
if (1 or 0){
printf("1 or 0\n");
}
return 0;
}
读者可能会很好奇,为何C不直接使用and、or和not?因为C一直坚持尽量较少的关键字
评论区