黑马程序员技术交流社区
标题:
自增和自减遇到的问题
[打印本页]
作者:
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