5) 如果(y>5) 这两种说法不一样。如果x5),则前者根本不打印任何内容){ 如果(y>5){ 不能,c++,C++" /> 5) 如果(y>5) 这两种说法不一样。如果x5),则前者根本不打印任何内容){ 如果(y>5){ 不能,c++,C++" />

这也会有同样的效果吗? 只是阅读一些C++书籍,我只是想知道是否有人可以仔细检查一下,这两个代码是否都一样? if (x > 5) if(y > 5) cout << "something"; else cout <<"something else"; if(x>5) 如果(y>5) 这两种说法不一样。如果x5),则前者根本不打印任何内容){ 如果(y>5){ 不能

这也会有同样的效果吗? 只是阅读一些C++书籍,我只是想知道是否有人可以仔细检查一下,这两个代码是否都一样? if (x > 5) if(y > 5) cout << "something"; else cout <<"something else"; if(x>5) 如果(y>5) 这两种说法不一样。如果x5),则前者根本不打印任何内容){ 如果(y>5){ 不能,c++,C++,考虑x=y=0的示例数据。 第一个代码段不会打印任何内容,而第二个代码段将打印“其他东西”。 C++分析器是贪婪的。您错误地缩进第一个代码块,导致您误解它。(技术上,它是这里的词法,但不管怎样)。我认为您的缩进会误导您。在第一个示例中,实际上,else实际上与内部的关联,而不是外部的。由于第二个版本语法错误,所以问题没有意义。@bhig890缩进没有任何目的,它是为了可读性。编译器不在乎缩进y的位置在我们的条件下,这不是python,因此您的缩进只会让示例中代码流的读者感到困惑。顺便说一句,要了

考虑x=y=0的示例数据。
第一个代码段不会打印任何内容,而第二个代码段将打印“其他东西”。

C++分析器是贪婪的。您错误地缩进第一个代码块,导致您误解它。(技术上,它是这里的词法,但不管怎样)。我认为您的缩进会误导您。在第一个示例中,实际上,
else
实际上与内部的
关联,而不是外部的。由于第二个版本语法错误,所以问题没有意义。@bhig890缩进没有任何目的,它是为了可读性。编译器不在乎缩进y的位置在我们的条件下,这不是python,因此您的缩进只会让示例中代码流的读者感到困惑。顺便说一句,要了解更多有关这方面的信息,需要搜索它。当编译器看到
else
,它会将它附加到当前正在处理的语句(第二个
if
)。它不会查看以前处理过的其他语句。因此,即使执行-if(//something)if(//something)这与if(//something)&&(//something)也不同?是的,因此在满足两个表达式的情况下,输出是相同的。但是,在
xIf没有
else
的情况下,它们是等效的。如果有
else
则它们的行为不同。@bhigg890如果您对我的答案感到满意,请将其标记为已接受,这样您的问题就不会继续存在.
if (x > 5) && (y > 5)
    cout <<"something";
else    
    cout <<"something else";
if (x > 5) {
    if (y > 5) {
        cout << "something";
    } else  {
        cout <<"something else";
    }
}