int xx = 0;
if(xx = 0 || xx == 0) printf("4"); // if(TRUE||TRUE) then printf("4")
if(xx == 0) printf("5"); //xx been changed to 1??
printf("6\n");
我认为输出将为456,但输出为46。 为什么?
答案 0 :(得分:5)
根据operator precedence,operator||
的优先级高于operator=
,然后
if(xx = 0 || xx == 0)
与
相同if(xx = (0 || xx == 0))
即xx
由0 || xx == 0
分配; true
,然后隐式转换为1
并分配给xx
(因为xx
是int
),则对xx
进行求值if
条件,它隐式转换为值bool
的{{1}};这就是为什么您得到输出true
的原因。而且由于"4"
已分配给xx
,所以您没有得到输出1
。
我认为您想要的是
"5"