在C语言中,0值代表假,非0值代表真。
随着语言的发展,引入了bool类型,定义在头文件 stdbool.h中。bool类型有两个值,true代表真值,false代表假值。这两者之间有等价关系,任何能转换为0值的表达式,其结果也是false,反之也成立产。
非0即为真,在程序设计里面会省去很多烦琐的代码。
比如:
malloc函数,不成功会返回NULL(实际上就是0),成功返回所分配的连续单元的首地址。那么在判断malloc()函数是否成功分配了内存,则可以这么写:
int *p = (int *)malloc(sizeof(int) * 10)
if (p)
TODO...
else
TODO...
扩展资料
1、对于逻辑与运算,如果第一个操作数被判定为“假”,系统不再判定或求解第二操作数。
2、对于逻辑或运算,如果第一个操作数被判定为“真”,系统不再判定或求解第二操作数。
在C语言中,判断语句的一般格式为
if(expr1){
//some codes
}
else if(expr2)
{
//some codes
}
else if(expr3)
...
else
{
//some codes
}
//out of check
执行时,会依照书写顺序,依次判断各个expr,如果有一个为真,则执行后续的{}内语句,并不再执行后续判断,而是直接从out of check开始执行。
else if的数量不限,可以不存在,也可以有任意多组。
else同样可以不存在。
每个else 与最其之前最近的没有匹配else的if相结合。
判断执行的语句{}部分,大括号对可以省略,省略后,if仅对其下一语句生效。
一般来说,我们不会直接使用ASCII码来处理,因为这样不够直观。比如你说的判定输入是否是字母,是否是数字,那么有个比较直观的方法来处理。如果你看过ASCII码表,那么你就知道字数和字母在ASCII码表中都是连续的,所以这个就比较好解决了。判定字符ch是否是数字:
if(ch>='0'
&&
ch<='9')
判定字符ch是否是字母:
if(ch>='a'
&&
ch<='z'
||
ch>='A'
&&
ch<='Z')
当然,有已经定义好的库函数用来判定是否数字和字母,不要加加载头文件<ctype.h>
判定字符ch是否是数字:
if(isalnum(ch))
判定字符ch是否是字母:
if(isalpha(ch))
这两个函数都是判定成立,结果是true也就是1,判定不成立,结果是false,也就是0.