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

时间:2016-03-03 14:24:43

标签: c++ ternary-operator

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

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

首先,bool数据类型如何接受int?其次,int x = three,这不是一项任务,而不是x == 3的条件测试?或是它说,&#34;创建一个名为int的{​​{1}}并在x其他3时分配three == 3?&#34;

1 个答案:

答案 0 :(得分:6)

bool three = 3;隐式 3转换为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;