【发布时间】:2021-05-31 09:33:00
【问题描述】:
下面的 C++ 程序
#include <iostream>
int main() {
for(int i=0; i<5; i++) for(int j=0; j<5; j++){
if(i==1) if(j==2) std::cout << "A " << i << ' ' << j << std::endl;
else std::cout << "B " << i << ' ' << j << std::endl;
}
return 0;
}
输出
B 1 0
B 1 1
A 1 2
B 1 3
B 1 4
由此我推断“else”语句指的是第二个“if”。
C++ 标准中是否描述了这种行为?有理由以这种方式实施吗?我直觉地认为“else”指的是第一个“if”。
【问题讨论】:
-
一个很好的例子,说明为什么应该使用大括号和缩进。
-
同范围内最接近的
if。如果没有,那就没有多大用处了。 -
"有理由这样实现吗?"它还能如何工作?如果添加大括号,您将看到如果 else 引用第一个
if,则无法将else用于第二个 -
@463035818_is_not_a_number 我假设如果“if”语句包含在一行中,那么右大括号将在该行中
-
行无关紧要。您可以将所有内容放在一行中或将每个标记放在单独的行中,而不会改变含义
标签: c++ if-statement standards undefined-behavior