后置 ++ 即运行完此段语句才会++
if (m++ >5) 不成立 走 else 此时 m 为6
打印为后++ 即打印6,打印之后再++,如果此时再打印就能看到7了。
M++就是M先参与运算再自增1,++M是M先自增1再参与运算,你要看符合在前在后--m 不就是先减后运算嘛,这个 if 先判断错误后才变成的 6,所以 else,然后 m++
初始:m = 5;
执行if(m++ > 5) 时,拆解为两句:if(m > 5 ) , m++; 先比较 m > 5, 此时 m = 5 , 5 > 5 显然不成立,再m++ ,所以比较完 m = 6, 转去执行 else printf("%d", m++); 这里和上面一样,先输出 m ,然后再 m++, 所以这里先输出 6 ,这句执行完后 m++ = 7 了。
++m 和 m++ 有区别,++ 在前,就先自加再引用,在后则先引用再自加。
【以下回答由 GPT 生成】
问题原因:C语言中的后缀递减操作符--在表达式求值的时候,会先使用变量的值,然后再把值减1。
解决方案: 在代码中,m--会先使用m的值,然后再将m的值减1。所以,即使是在if的条件语句中,m的值也会减1。因此,m的值实际上是4,并不是5。
要得到预期的结果7,可以修改代码如下:
#include<stdio.h>
int main() {
int m = 5;
if (m) {
m--;
m += 7;
printf("%d", m);
}
else {
printf("%d", m);
}
return 0;
}
修改后的代码中,我们在if条件语句中先将m的值减1,然后再加7。这样就能得到预期的结果7。
所以,正确答案应该是D) 7。
【相关推荐】