Jes*_*per 57

不,if (c)是一样的if (c != 0).和if (!c)是一样的if (c == 0).

  • 假设没有发生奇怪的重载,这通常是C++中答案的一部分. (9认同)
  • 其中一天我要制作一个让操作员重载音效的课程.每当有人想要对它们进行排序时,它会很棒. (9认同)
  • 当然,如果运营商==或!=超载,任何事情都可能发生,它甚至可以为你开始播放国歌...... ;-) (6认同)

D.S*_*ley 23

我会打破这个......" if (c)"最接近" if (((bool)c) == true)".对于整数类型,这意味着" if (c != 0)".正如其他人所指出的那样,超载operator !=可能会引起一些陌生感,但operator bool()除非我弄错,否则会超载" ".

  • if(static_cast <bool>(c))...我会得到我的外套. (3认同)

Pat*_*ola 6

如果c是指针或数值,

if( c )
Run Code Online (Sandbox Code Playgroud)

相当于

if( c != 0 )
Run Code Online (Sandbox Code Playgroud)

如果c是布尔值(类型为bool [only C++]),(编辑:或用户定义的类型,运算符bool()的重载)

if( c )
Run Code Online (Sandbox Code Playgroud)

相当于

if( c == true )
Run Code Online (Sandbox Code Playgroud)

如果c也不是指针或数值都不是布尔值,

if( c )
Run Code Online (Sandbox Code Playgroud)

不会编译.

  • 它是一个用户定义的类型,可以实现`operator bool()`作为D. Shawley和galets都指出,所以它将编译得很好. (2认同)