一、问题描述
什么叫,条件表达式的位置是一个值?
●在判断语句和循环语句中,都有括号中的判断条件表达式和循环条件表达式,往往是由运算符和数值共同构成。如:
if(a>b){}; while(a<10){}; do{}while(a<10);
●而在实际应用中会出现条件表达式的位置是一个值,如:
int a=6; if(a){}; while(a){};
二、问题分析
●很明显,如果是由常见条件表达式得出的最终值往往是布尔值(True、False),为真则判断为真执行语句,为假则不执行语句。布尔True也是1,布尔False也是0。
●在C语言中,不为0的数都为真,0为假。
●条件表达式的位置是一个值时,该值不为0则判断为真执行语句,该值为0时则判断为假不执行语句。
三、示例
意为:x<0,y=-1;x=0,y=0;x>0,y=1
if (x < 0) y = -1; else if (!x) //当且仅当x=0时,!x=1,故此处x=0,y=0 y = 0; else y = 1;
意为:先do输出i,在跟while()中的循环条件表达式判断是否循环,0为假不执行循环语句。
这里其实考察了三点:1.do{}while();语句先循环一次,在判断是否继续循环。
2.i--第一次以原值输出。这一点与--i是不同的,--i第一次以i-1输出。
3.0为假,不执行循环语句。
int i=6; do { printf("%d", i--); } while (0);
语句
while(x%3) a++;
中的表达式x%3
等价于_______。解答:需要x%3的值不等于0,则可以执行循环语句。即x%3!=0。
表达式
!!"2010-01-27"
的值为_______(以1表示真,0表示假)。解答: 值为1。