一段C代码,K为什么等于16?
#include <stdio.h>void main()
{
int i=3,k;
k=(++i)+(++i)+(++i);
printf("k=%d\n",k);
}
补充:VC6.0下:i=6,k=16;;
V studio 05下:i=6,k=18;
用JavaScript脚本编写:i=6,k=15;
追问:就是在VC6.0试的
补充:VC6.0下:i=6,k=16;;
V studio 05下:i=6,k=18;
用JavaScript脚本编写:i=6,k=15;
追问:就是在VC6.0试的
答案:k==16 么 .. 我算怎么等于15么 你在机器上试了么 ??我可以很肯定是18这个问题我曾经都遇到过,我问过我们老师,他说这个要看你的运行环境。根据运行环境的不同会有不同的值不要写这样有歧义的程序,没有任何意义。好像是先做三次自加1,然后做i+i+i吧。原因:V studio 05下:编译的过程是先执行一次运算(即先++i为4再++为5在0再++为6),之后为i=6。然后执行二次运算,k=6+6+6为18.
用JavaScript脚本编写:为单步运行++i为4之后k=4+(++i)+(++i).然后为第二个++i为i=5。k=4+5+(++i).然后i=6。最后为k=4+5+6=15.
VC6.0下:i=6是肯定的,但我正在使用VC6.0,结果为15.在这两种环境下,他们的结合性不同,答案肯定不同了