扭曲的C ++代码
可能重复:未定义的行为和顺序点
#include< iostream.h>
int main()
{
int i=7,j=i;
j=(i++,++i,j++*i);
cout <<j;
return 0;
}
什么是C ++代码的输出?
这是我的教授给我的作业。
有时通过用几个编译器编译程序并观察结果,有助于说服那些不相信这个不确定的人:
修复iostream.h
错误后,
(哦,并且重写为使用CI / O,Unix 7上的原始K&R C编译器打印63)
[编辑以解释OP更改编辑的问题]:
对于输出的结果是不确定的。
代码中存在以下错误:
#include <iostream.h>
应该是#include <iostream>
,
j
是未初始化的,所以j++*i
的值是未知的 - 好的,这在编辑中得到了修复,
此外,这项任务本身并不合适。 曲线可以改写为:
i++;
++i;
j = j++ * i;
由于这里描述的原因,最后一部分是无效的:
未定义的行为和顺序点
链接地址: http://www.djcxy.com/p/73233.html上一篇: Twisted C++ code