C语言这样来处理数据的真假的:
非零即为真,零是假;真就用1来表示,假用0来表示。来看代码例子:
# include<stdio.h>
int main(void){
int i = 10;
int j = 20;
int m;
m = (3 > 2)&&(j = 8);//注意一个 & 表示的是引用地址
printf("m = %d, j = %d\n", m ,j);
return 0;
}
/*******程序输出结果如下:
m = 1, j = 8
*/
分析:m = (3>2)&&(j = 8);3>2为真,j = 8这是个赋值操作,把8赋值给了j,由于C语言中规定了,非零即为真,所以j = 8为真,真&&真,结果为真,那么m 就为1。再来看另外一段代码:
# include<stdio.h>
int main(void){
int i =10;
int j =20;
int m;
m = (3 > 2)&&(j = 0);
printf("m = %d, j = %d\n", m ,j);
return 0;
}
/******输出结果为:
m = 0, j = 0
*/
分析:C中规定了零为假,所以j = 0这是为假,真&&假结果为假,那么m的值就为0,由于给j 赋值0,所以最后输出结果都为0.
# include<stdio.h>
int main(void){
int i =10;
int j =20;
int m;
m = (1 > 2)&&(j = 5);
printf("m = %d, j = %d\n", m ,j);
return 0;
}
/*************输出结果为:
m = 0, j = 20
*/
分析:为什么此处j = 20而不是等于5呢?也就是j = 5 这个没有执行。记住:
" &&“ 这个运算符很特别,当左边表达式是假的时候,右边就不执行了,当” || “的左边为真的时候,右边就不执行。