为什么运算结果是0?

来源:3-3 自增与自减运算符

qq_茬縌境宬長_0

2016-12-29 19:03

#include<stdio.h>

int main()

{

int a=0;

printf("%d\n",a++);

return 0;

a++还是++a都同等于a=a+1,在表达完毕后a的值不是都自增1吗?那为什么这个运算结果是0啊?     求高手解释一下。。。

写回答 关注

5回答

  • 喔是你龙哥
    2016-12-29 19:13:53
    已采纳

    a++是先取值再运算,而++a是先运算再取值,所以执行a++输出结果为0,执行++a输出结果为1.

    qq_茬縌境...

    求解释

    2016-12-30 09:00:56

    共 1 条回复 >

  • Simon_______
    2016-12-31 18:44:15

    a++。计算机语言会先告诉你a是多少。再加。 加好的结果记忆了。但是不会显示出了。所以a是未加时的结果
    ++a。先给你加好。在告诉你结果。而且前面的a++。加过一了。 所以a=1。然后再加一次再告诉你a是多少
    区别。 一个是先输出目前结果再运算。一个是先运算再告诉你最后的结果

    qq_茬縌境...

    不用谢,在这里面都是互相帮助,互相学习的嘛。

    2017-01-01 13:44:49

    共 7 条回复 >

  • Caesar丶Wang
    2016-12-30 13:20:47

    其实我觉得可以这么理解,不知道你怎么想的。

    printf("%d\n",a++);

    printf("%d\n",++a);

    这两句程序都是要拆解执行的,那么我认为程序运行机制的不同,导致执行结果的改变;

    printf("%d\n",a++);   =》   printf("%d\n",a);  a = a +1;   (所谓的先执行再加加)

    printf("%d\n",++a);   =》   a = a + 1; printf("%d\n",a);   (所谓的先加加再执行)

    希望我这么说你可以理解我的意思吧,哈哈


    qq_天一生...

    你说的我懂了,谢谢

    2016-12-31 11:38:37

    共 1 条回复 >

  • qq_茬縌境宬長_0
    2016-12-29 21:07:00

    int a=0;

    a原本的值就是0,为什么自增后还是0.   那句话说:”a++还是++a都同等于a=a+1,在表达执行完毕后a的值自增1".

    我不明白的是  为什么原本是0自增后的值还是0.这自增运算符不就不起作用了吗?

  • qq_茬縌境宬長_0
    2016-12-29 21:00:58

    int a=0;

    我不明白,a++自增运算符在变量的后面,所以先取值0,然后再自增1,结果不是应该是1吗?

    求解  。。。

C语言入门

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

926206 学习 · 20797 问题

查看课程

相似问题