关于逻辑运算和赋值运算的BUG
第二个输出的为什么是00 || 6应该是等于1的
但是赋值给 x 就等于0了 补充代码
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);
}
=的优先级小于|| 因此实际上 x=y||i+j+k 是 x = (y||i+j+k) ,所以最后输出的是赋值后x的值。
而x是float型,printf中用的是%d,所以输出的是0(至于为什么,我目前也不知道......),如果改成%f,就会输出1.000000
我感觉是这样......
页:
[1]