关于自增自减的一个问题求指教
为什么这里P的值是24?我自己的理解是b最后的值是8,所以就是8+8+8=24;继续:
在VC6.0中这里的值又是22了,我的理解是可能编译环不同,这里计算方式为6+7+8=21;问题是这里居然是22,
我在书上看到这里p是自增了1,我又把这个问题理解为++(6+7+8);这样理解到底对不对?
还有一个问题,
这里最后一行不应该是输出8,9吗?怎么反了?
请大神指点;
以为自己看了几本书C语言算是知道一点点语法了,没想到在上课的时候老师讲到这里才发现自己对自增自减都不清楚,真是惭愧啊!
[解决办法]
我给你好好说说关于第一个q = 15,这基本是没有问题的,所有编译器结果都应该相同,但是为什么是这么个结果呢?在C语言里面存在顺序点!至于什么是顺序点你百度一下,我就不浪费时间了,在这个语句中顺序点是”;“但赋值发生在顺序点之前,其副作用已经产生,所以结果是5 + 5 + 5,你可以写个程序验证
int a = 5;
a = (a++) + (a++) + (a++);
printf("%d",a);
#include <stdio.h>
void print(int i,int j)
{
printf("%d\n",i);
printf("%d\n",j);
}
int main()
{
int a = 5;
print(a++,a++);
return 0;
}