使用“ if(var = 0 || var == 0)”语句将var更改为1

时间:2019-05-23 08:35:04

标签: c++ c

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。 为什么?

1 个答案:

答案 0 :(得分:5)

根据operator precedenceoperator||的优先级高于operator=,然后

if(xx = 0 || xx == 0) 

相同
if(xx = (0 || xx == 0))

xx0 || xx == 0分配; true,然后隐式转换为1并分配给xx(因为xxint),则对xx进行求值if条件,它隐式转换为值bool的{​​{1}};这就是为什么您得到输出true的原因。而且由于"4"已分配给xx,所以您没有得到输出1

我认为您想要的是

"5"