求解 困扰我一晚上了 帮帮我

int a=5;
if(m++>5)
printf("%d",m);
else
printf("%d",m–)\n请问结果为什么是6,或者是为什么执行第一条语句,m++不是先讲m与5比较后再加一吗?

假定你的 m 值是5

if (m ++ > 5) 结果是 m >5 为假,然后 m 自加1 为6,进入假的分支

printf m -- ,这是时候, m 是 6,先输出,后自减1,变回5

int a=5;
if(m++>5)
printf("%d",m);
else
printf("%d",m–)

这段代码的输出结果应该是6。

原因是因为这里使用了后缀自增运算符“++”,它的特点是先使用变量的原值,然后再将变量加1。所以在执行if条件语句时,m的值是5,但是在执行完if语句后,m的值会自增1变成6,然后执行else语句,输出6。如果使用前缀自增运算符“++m”,那么在执行if条件语句时,m的值就会先自增1变成6,然后再和5进行比较,结果为false,执行else语句,输出5。