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

这是不同的运算符,它们做不同的事情,有不同的行为。你查过它们之间的差异吗?哦,好的,泰。很抱歉这个愚蠢的问题,不用担心。有这不是一个愚蠢的问题。我们在编码上有自己的痛苦。