【发布时间】:2015-02-26 12:27:02
【问题描述】:
我正在努力提高我的编程技能。下面程序的输出是 'I'm in else if 1'。 我想知道背后的原因,为什么x值没有初始化为2而是显示为1。
#include <iostream>
using namespace std;
int main()
{
if (false)
{
cout << "I'm in if " << endl;
}
else if (int x=2 && true)
{
cout << "I'm in else if " << x << endl;
}
else
{
int y = x;
cout << y << endl;
}
return 0;
}
【问题讨论】:
-
运算符的优先级...
-
@iharob:Yes it does。在
if标头中声明的变量在if和else块中都作用域。 -
@iharob 实际上它确实编译
-
@MikeSeymour 我不知道,我不喜欢它......
-
关于其他答案,如果是优先级问题,可以用括号解决,但
if((int x = 2) && true)(或其他)是语法错误。如果=是这里的运算符,if(int x = 2 , 1)会起作用(逗号的优先级低于赋值),但这也是语法错误。