【发布时间】:2018-05-19 17:14:08
【问题描述】:
那么在 c++ 中,为什么这两个输出不同?
int x;
for(int x=2;x<5;x++);
cout<<x<< x++ << ++x << x <<endl;
这个输出 7677
cout<<x<<endl;
cout<<x++<<endl;
cout<<++x<<endl;
cout<<x<<endl;
这个输出 5577
那么为什么它们不同呢?
我猜是第一个同时计算整行,这就是它输出 7 的原因,但为什么 ++x 仍会输出 6?这里是否有某种优先级或发生了什么?
【问题讨论】:
-
首先,您的
x在第一个示例中未初始化。循环中的x与全局声明的不一样。 -
因为其中只有一个是明确定义的,而另一个是未定义的行为(没有序列点,未初始化
x,因为循环后有分号)。 -
这段代码怎么编译,因为你在
for循环中有i,而不是x?确保如果您要显示代码块的输出,请复制并粘贴您正在运行的准确代码——不要匆忙在编辑窗口中输入代码。跨度> -
输出将在 c++17 中得到很好的定义。
-
for(int x=2;i<5;x++);中的i是什么???这个空体循环的目的是什么?
标签: c++