【发布时间】:2016-03-03 14:24:43
【问题描述】:
我是 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 的分配而不是条件测试吗?还是说,“创建一个名为x 的int 并分配它3 if three == 3 else 0?”
【问题讨论】:
-
没有
bool接受int。而且我认为它在 Java 中并没有太大的不同。 -
bool three = 3? @juanchopanza -
@free_mind 任何等于零的都是
false;否则 -true? -
int x = three ? 3 : 0不能读作(int x = 3) ? 3 : 0,而是读作int x = (three ? 3 : 0),即计算三元表达式three ? 3 : 0(如果three,则返回3为真,如果为假,则为 0),然后为x分配此表达式的结果。在这种情况下,three被分配了true,因为它被分配了一个非零int,它被隐式转换。 -
确实如此。我也不明白-4。鉴于您来自 Java,我可以看到您的困惑。但是由于 Java 奇怪的自动装箱,我认为 Java 条件是 far 陌生的。
标签: c++ ternary-operator