问个计算的问题
程序如下:main()
{
int x=40,y=4,z=4;
x=y==z;printf("%d\n",x);
x=x==(y=z);printf("%d\n",x);
}
为什么答案分别是1,0呢?赋值勤运算是自右向左,先不管Y跟Z本来它们都是等值的,但为什么最后
X的值是1呢?下面的零就更令我不解呢。请指教指教! y=z为真 x=1
第二个答案为0 先计算括号里面的4=4为真 所以为1
当计算 x==1 因为定义过x=40 所以x!=1 所以为假 为0
所以第二题x=0 这些东西有时候还蛮麻烦啊 如果为真 就是1
如果为假 就是0 简单说,1和0在这里只是隐式转化为int类的boolen值.
其实==操作的返回值应该是boolen值true和false.
但是你用int类的变量接收,那么收到的就是转化为int的boolen值,第一个式子是真的,4等于4,所以结果是true,就是1.第二个式子是假的,40不等于1,所以结果是false,是0. 晕,这是basic的语法么? 应该算C的语法吧
页:
[1]