【发布时间】:2015-05-24 19:31:02
【问题描述】:
条件运算符不能处理混合数据类型,所以:
bool cond = true;
cout << (cond?1:2) << endl;
cout << (cond?"msg1":"msg2") << endl;
cout << (cond?1:"msg") << endl;
在最后一行,我收到以下错误消息:
错误:不兼容的操作数类型('int' 和 'const char *')
有没有办法在这样的语句中混合不同的类型,使用一行代码?我需要把它放在一个预处理器宏中。
编译器:clang 3.5
【问题讨论】:
-
如果您使用的是静态语言,编译器仅支持变量获取一种类型,因此它们必须具有相同的类型。某些编译器可能会允许这种操作
-
@Pietro 如果你的意思是最后一条语句,那么你可以写 cond ? std::to_string( 1 ) : "味精"
-
@VladfromMoscow:很好。如果你把它作为答案,我会接受它。
-
“[...] 使用单行代码?我需要将它放在预处理器宏中。”对此有两个 cmets: 1. 呃,你为什么使用宏? 2. 你知道你可以在一个宏中做多行语句,不是吗?
-
您对它做的唯一事情是把它喂给
ostream& <<吗?如果是这样,您可以键入擦除到ostream& <<。
标签: c++ types iostream conditional-operator