问答详情
源自:3-3 自增与自减运算符

为什么运算结果是0?

#include<stdio.h>

int main()

{

int a=0;

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

return 0;

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

提问者:qq_茬縌境宬長_0 2016-12-29 19:03

个回答

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

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

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

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

  • 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_茬縌境宬長_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吗?

    求解  。。。