黑马程序员技术交流社区

标题: 自增和自减遇到的问题 [打印本页]

作者: Jasonmes    时间: 2016-4-21 16:13
标题: 自增和自减遇到的问题
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a=12;
    int b=1;


    int c=a-(b--);  // ①
    int d=(++a)-(--b);  // ②


    printf("c=%d, d=%d\n", c, d);


    system("pause");
    return 0;
}


运行结果是
c=11
d=14

c我明白,可是d不是等于13吗?为什么是14?


作者: muzipiao    时间: 2016-4-21 21:50
因为你没有考虑int c=a-(b--);  // ①对下面运算的影响,此运算进行后,a=12,b=0,c=11
所以,int d=(++a)-(--b);  // ②d=(13)-(-1)=14
作者: king、小白    时间: 2016-4-21 21:59
最下面b的值已经变成-1了,有时候我也好搞混
作者: a_skting    时间: 2016-4-21 22:13
1运行完成后b的值变成0了。
2运行的时候--b是 -1,减负一等于加一。。。
作者: 缘之有缘    时间: 2016-4-21 22:32
前来学习            
作者: 毛小猪    时间: 2016-4-21 22:45
来学习学习
作者: 堕落天使    时间: 2016-4-22 07:47
楼上有正解!
作者: huangyueqil    时间: 2016-4-22 19:39
楼上正解,int c=a-(b--); 这步运行完后b=0了
作者: 我说三年    时间: 2016-4-24 16:29

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a=12;
    int b=1;


    int c=a-(b--);  // ①这时候b = 0;
    int d=(++a)-(--b);  // ②这时候 b = -1;


    printf("c=%d, d=%d\n", c, d);


    system("pause");
    return 0;
}
所以d的值等于14
作者: chenbin19930916    时间: 2016-4-27 21:18
可以的兄弟····




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2