WHAT 发表于 2015-3-22 20:54:05

关于逻辑运算和赋值运算的BUG

第二个输出的为什么是0


0 || 6应该是等于1的


但是赋值给 x 就等于0了

WHAT 发表于 2015-3-22 20:54:36

补充代码
void main()
{

        int i=1,j=2,k=3;
        float x=3e+5,y=0.85;
        printf("%d \n",x+y||i+j+k);
    printf("%d \n",x=y||i+j+k);

}

月之吟 发表于 2015-3-22 21:20:51

=的优先级小于||   因此实际上 x=y||i+j+k 是 x = (y||i+j+k) ,所以最后输出的是赋值后x的值。
而x是float型,printf中用的是%d,所以输出的是0(至于为什么,我目前也不知道......),如果改成%f,就会输出1.000000

我感觉是这样......
页: [1]
查看完整版本: 关于逻辑运算和赋值运算的BUG