为了账号安全,请及时绑定邮箱和手机立即绑定

为什么取值为上一个语句的值 而不是一开始的100?

#include <stdio.h>

int main()

{

    int a = 100;

    printf("x=%d\n",a++);//先取值再计算,输出100,计算后a=101

    printf("x=%d\n",++a);//之前的a=101再计算+1后取值a=102

    printf("x=%d\n",--a);//先运算再取值a=101

    printf("x=%d\n",a--);//先取值再运算,输出101,a变成100

    printf("x=%d\n",a+1);//a=100+1=101,注意这里不改变a的值

    printf("x=%d\n",a);//由第8行a=100得

    return 0;

}

为什么后面几行的取值都为上一个语句的值 而不是一开始的100?


正在回答

2 回答

因为a++等于a=a+1,实质是已经通过运算给a重新赋值了

0 回复 有任何疑惑可以回复我~

x += a++;  
先 x = x+a;
再a++  
等于8
所以  
x = 8换行
同理x += a++;  
先 x = x + a;
再a++
x = 4 换行

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么取值为上一个语句的值 而不是一开始的100?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信