将int分配给bool以进行三元操作

hax*_*ode -3 c++ ternary-operator

我是c ++的新手并试图了解条件(三元)运算符的工作原理.我熟悉它在java中的用法,但对于我在c ++中看到的一个例子非常困惑

int main() 
{
   bool three = 3;
   int x = three ? 3 : 0;
   cout << x << "\n";
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

首先,bool数据类型如何接受int?第二,int x = three这不是一项任务,而不是一项有条件的测试x == 3吗?或者它是说,"创建一个int被叫x,并3three == 3其他地方分配0?"

Bat*_*eba 6

bool three = 3;隐式地 3 转换为a bool,因此three将具有值true.(任何非零数字都将转换true为零,转换为false.)

另请注意,三元条件的优先级高于赋值(在C++和Java中).

所以int x = three ? 3 : 0;相当于int x = (three ? 3 : 0);.

int x = (three ? 3 : 0);因此相当于int x = (true ? 3 : 0);相当于int x = 3;