【发布时间】:2014-11-06 06:08:54
【问题描述】:
一般原型: exp1?exp2:exp3
三元运算符的返回类型为 exp2。 exp3 必须具有与 exp2 相同的返回类型或至少具有隐式转换。否则会报错
在下面的程序中,由于 exp3 是 int 而 exp2 是 char*,我在 CodeBlocks 中遇到了预期的错误。 Bjut 当我用 0 替换 1 时,它正在打印 0..
0也是int值,看不懂。
#include <iostream>
using namespace std;
int main()
{
int test = 0;
cout << test ? "A String" : 1;
return 0;
}
【问题讨论】:
-
0 被隐式转换为空指针,或者按照标准的说法,
0是一个空指针常量。 -
注意这里打印的
0不是表达式右边的0,而是test的值。三元表达式的值被丢弃。 -
谢谢...是的,你是对的..0 是一个空指针常量..
标签: c++ ternary-operator