C语言程序问题~求助~!!

来源:百度知道 编辑:UC知道 时间:2024/05/31 19:32:09
#include<stdio.h>
void main()
{
int i=5,j=5,p,q;

p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);

printf("%d,%d,%d,%d",p,q,i,j);
}
就是这个程序,用VC执行之后q的值是22,用BC执行后q的值是24,想问问VC怎么会算错啊···我很迷茫啊···

不同的编译器在执行的时候是按照不同的顺序来执行的。
BC是先把所有括号里的算了再来加。而VC是先将前面两个括号里面的算了,接着就将前面两个数相加,完了再算第三个括号里面的,再和前面的和相加。即先执行第一个括号里的++J,得j=6再执行第二个括号里的++j此时j=7接着就执行第一个加号,得14。再执行第三个括号里的++j,得j=8再执行第二个加号,14+8所以q=22;

这种问题已经讨论得太多了.
这个问题与C没有明确定义,各种编译器各自为政.

我用TC2.0运行了一下,结果是15,24,8,8。
各种编辑器的运算符运行的顺序是不一样的,具体的要看你用的那种编辑器的使用手册,

这就是经验!!~~努力吧。。

VC版本问题