首页 > 电脑

一串c语言代码,请问a,b是怎样得出这样的结果的。

更新时间2019-03-14 09:47:47

#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语言代码,请问a,b是怎样得出这样的结果的。


看看c语言程序,按程序计算就可得出。

这个结果匪夷所思  是真的吗 我等会儿试一下

按照固定模式来的

读取数据出来
存成文件
通过system调用系统编译命令。
运行结果并保存。

靠计算机的识别来的出屋面懂得的结果。

相关标签:c语言

上一篇:羡慕搞it的赚得多也想当程序媛是不是只能先从java学起

下一篇:为什么输入啥都显示不能构成三角形啊