C++ 有人能给我解释一下输出吗?
好的,当我将C++ 有人能给我解释一下输出吗?,c++,c++11,C++,C++11,好的,当我将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; } void f
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;
}
void f(int i)
{
如果((i=4)|(i=5))返回;
正如@Carcigenicate所说,=
和=
是不同的
=
用于比较,而=
用于赋值。赋值a=b
不仅将变量a
中的值设置为b
,而且还返回b
的值。这样,像a=b=c
这样的赋值是可能的,因为返回的值要放在a
中e> 与已设置为b
的相同。您可以在条件句中使用此技巧,如您所做的,例如:
int x;
while(x = functionWhichCouldReturnZero()){
// Do something with x
}
当C++尝试将返回值解释为布尔值(<代码>真< /代码>或代码> false )时,它解释< <代码> 0 >代码>为<代码> false <代码>,其他所有值为<代码>真< /COD> < /P>
另一方面,使用(a==b)
,这是一个纯条件,如果a
等于b
,则返回true
,否则返回false
,这是不同的运算符,它们做不同的事情,有不同的行为。你查过它们之间的差异吗?哦,好的,泰。很抱歉这个愚蠢的问题,不用担心。有这不是一个愚蠢的问题。我们在编码上有自己的痛苦。