tyl*_*r16 2 c++ operator-precedence
我有一个样本中期问题,我不太确定.这里是:
#include <iostream.h>
void f( int i )
{
if( i = 4 || i = 5 ) return;
cout << "hello world\n" ;
}
int main()
{
f( 3 );
f( 4 );
f( 5 );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我理解逻辑OR运算符具有更高的优先级,并且从左到右读取.我也明白,正在使用的是赋值运算符而不是关系运算符.我只是不明白如何理解这一切.编译器会检查的第一件事是4 || i?如何评估以及之后会发生什么?
让我们添加所有的隐含括号(记住,||具有更高的优先级比=那=是右关联):
i = ((4 || i) = 5)
Run Code Online (Sandbox Code Playgroud)
因此,它首先评估4 || i,评估为true(实际上,它甚至忽略i,因为4是true和||短路).然后它尝试为此分配5哪些错误.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |