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

可以帮我解答一下吗?


#include <stdio.h>
int main()
{
    int a=100;
    printf("%d\n",a++); 
    printf("%d\n",++a);
    printf("%d\n",--a);
    printf("%d\n",a--);
    printf("%d\n",a+1);
 printf("%d\n",a);
    return 0;   
}
结果是100 ,102,101,101,101,100

++自增1--自减1    那a++不是101么?a--不是99么?

可以详细解答一下吗??

正在回答

4 回答

//a++与++a虽然运行完结果一样,但是运行顺序不一样,a++先将已有a值输出,再对a进行重新赋值,a的新值将被应用到下一个循环,此循环仍用a++之前的a值;而++a先将a值自增1,得到新的值,将这个值赋给a,再将a输出。a--与--a的关系也一样。放到例子中来说就是如下:
#include <stdio.h>
int main()
{
    int a=100;
    printf("%d\n",a++);//a值先输出,故为100,再赋值,故a=101,此结果应用到下一循环;  
    printf("%d\n",++a);//a值先进行新赋值,a=a+1,即a=102,(由于a的值已被赋为101,故此处为102);再输出102.
    printf("%d\n",--a);//先计算,a=101,再输出101;
    printf("%d\n",a--);//先输出101,再计算a=100;
    printf("%d\n",a+1);//直接输出101;
    printf("%d\n",a);//输出100.
    return 0;    
}

2 回复 有任何疑惑可以回复我~
#1

慕村1253227 提问者

非常感谢!
2017-05-25 回复 有任何疑惑可以回复我~

    printf("%d\n",--a);//先计算,a=101,再输出101;为啥不是98

    printf("%d\n",a--);//先输出101,再计算a=100;为啥不是99


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

++a和--a的运算规则是先运行后取值,就a++说明,a自增1后,再取值;a++和a--的运算规则是先取值后运算;

a++表示出来是100,实际上是表示未运算时就已经取值出来的,而它运算后就是101


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

a++是计算之后自增,++a是计算前自增,int a=100,a++即显示100,但存入编译器的a为101

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926209    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

可以帮我解答一下吗?

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