使用CCS软件写程序时遇到了C语言的语法问题
在程序中有一句: if( ‘0’ <= c <= ‘9’ )
此语句的目的是判断一个字符变量是否在符号 ‘0’ ~ ‘9’ 的区间内,然而当
c = ‘\0’
时判断结果还是1,意外地执行了条件语句中的程序。因此我写了测试程序测试该语句的原理。
通过测试发现,a <= b <= c 这种形式的语句并不能正确判断出 b 处于 a ~ c 的范围内。通过查阅书籍资料发现,a <= b <= c 这种形式的语句执行原理是:
从左到右执行。
先判断 a<=b,比如结果是0,
再用判断结果判断 0<=c ,此时如果c是正整数就能得到判断结果为1。
这就解释了为什么我程序中的 if( ‘0’ <= c <= ‘9’ ) 语句,即使 c=’\0’ 时依然能判断成功了。程序先判断 ‘0’ <= c ,得到0,再判断 0 <= ‘9’ ,就得到结果1。这种执行原理也可以解释上图测试程序的执行结果。