A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jasonmes 中级黑马   /  2016-4-21 16:13  /  1619 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

9 个回复

倒序浏览
因为你没有考虑int c=a-(b--);  // ①对下面运算的影响,此运算进行后,a=12,b=0,c=11
所以,int d=(++a)-(--b);  // ②d=(13)-(-1)=14
回复 使用道具 举报
最下面b的值已经变成-1了,有时候我也好搞混
回复 使用道具 举报
1运行完成后b的值变成0了。
2运行的时候--b是 -1,减负一等于加一。。。
回复 使用道具 举报
前来学习            
回复 使用道具 举报
来学习学习
回复 使用道具 举报
楼上有正解!
回复 使用道具 举报
楼上正解,int c=a-(b--); 这步运行完后b=0了
回复 使用道具 举报

#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
回复 使用道具 举报
可以的兄弟····
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马