c语言选择程序设计练习题

img


这个运行结果是6,但是不应该是7吗。m=5执行else语句,m++为6也就是6去执行else语句,最后再自增1结果不应该是7吗

后置 ++ 即运行完此段语句才会++
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。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^