一串c语言代码,请问a,b是怎样得出这样的结果的。
#include<stdio.h>
void main()
{
int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("i=%d,k=%d ",i,k);
printf("a=%d,b=%d ",a,b);
}
vc的执行结果
i=9,k=9
a=18,b=25
你的程序结果与编译器有关的,以下是我测试常用c/c++编译器的结果
gcc
i=9,k=9
a=21,b=25
vc 2017
i=9,k=9
a=18,b=27
c++ builder 7.4
i=9,k=9
a=18,b=27
vc++6.0
i=9,k=9
a=18,b=25
lcc
i=9,k=9
a=21,b=24
也就是说不同的编译器结果是不同的
这个是编译器的编写者按自己的理解进行解析的
这种没意义的讨论N年前就有了
你可以找下:
裘宗燕:C/C++ 语言中的表达式求值
以下是他的结论
看看c语言程序,按程序计算就可得出。
这个结果匪夷所思 是真的吗 我等会儿试一下
按照固定模式来的
读取数据出来
存成文件
通过system调用系统编译命令。
运行结果并保存。
靠计算机的识别来的出屋面懂得的结果。
热门标签: