关于自加和自减的计算规则,请高手指点一下!

发布时间:2024-05-21 10:15 发布:上海旅游网

问题描述:

如下面的程序:

#include<stdio.h>
void main()
{
int num = 1, sum;
sum = ++num + ++num;
printf("%d\n", sum);
}

为什么以上程序的结果会是“6”?
而下面的程序结果却是“5”!

#include<stdio.h>
void main()
{
int num = 1, sum, a, b;
sum = (a = (++num)) + (b = (++num));
printf("%d\n", sum);
}

请问有什么区别?编译器是怎么计算的?谢谢

问题解答:

上面num初识化为1,++之后变成了2,后面的那个++之后又变成了3,
这样num现在为3,3+3就是6了。

下面num初始化为1,++为2赋给a,再++为3,赋给b,a+b=2+3所以为5。

不过在编写程序的时候不要使用这样容易使人产生误解的语句,尽量使用简单的语句。

这个问题比较麻烦的.不同的版本编译器的处理不同.涉及到程序运算的优先级别问题.在生成OBJ文件的时候就会产生差异.最好不要使用这种模糊的语言.

我这里下面的程序输出也是 6

我下面的程序输出也是6啊…………

num+num

a+b

热点新闻