好的,所以当我将if( (i = 4) || (i = 5) )
中的“ =”更改为“ ==
”时,它将返回hello world。但是,当“ {=
”保持为“ =”时,输出为空。它没有给我带来语法错误,因为您需要在if
==
”
void f( int i )
{
if( (i = 4) || (i = 5) ) return;
cout << "hello world\n" ;
}
int main()
{
f( 3 );
f( 4 );
f( 5 );
return 0;
}
因此,当代码为“ if( (i = 4) || (i = 5) )
”时,输出为无(如屏幕为空)。
当代码为“ if( (i == 4) || (i == 5) )
”时,输出为 hello world 。
我的主要问题是:为什么==
和=
在输出中有所不同,却没有给我带来语法错误?
答案 0 :(得分:2)
正如@Carcigenicate所说,==
和=
是不同的。
==
用于比较,=
用于分配。
答案 1 :(得分:1)
分配a = b
不仅将变量a
中的值设置为b
,而且还返回了b
的值。这样,就可以进行类似a = b = c
的赋值,因为返回的值要放入a
与设置为b
的值相同。您可以在条件条件中使用此技巧,例如:
int x;
while(x = functionWhichCouldReturnZero()){
// Do something with x
}
当C ++尝试将返回值解释为布尔值(true
或false
)时,它将0
解释为false
,将所有其他值解释为{{1 }}。
另一方面,对于true
,这是一个纯条件,如果(a == b)
等于true
,则返回a
,否则返回{{1} }。