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

可以帮我解答一下吗?


#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么?

可以详细解答一下吗??

提问者:慕村1253227 2017-05-21 11:10

个回答

  • V100V
    2017-05-21 11:53:30
    已采纳

    //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;    
    }

  • 瞳13
    2017-06-22 16:40:03

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

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


  • 慕斯1430372
    2017-05-21 11:47:01

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

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


  • 永不言败21
    2017-05-21 11:45:49

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