在c ++中
size>5?cout<<"size is greater than 5":cout<<"size less than 5";
正在运作,但
size>5?cout<<"size is greater than 5":return 0;
正在抛出编译时间
这可能是一个基本的疑问,
我在使用三元运算符时遇到了什么以及为什么第二个语句会产生编译时错误?
感谢。
答案 0 :(得分:2)
我在使用三元运算符时缺少什么?
每个分支必须是一个表达式。 return语句不是表达式。
如果你想在任一分支中添加更多通用语句,或者你只是想让代码更少噩梦阅读,那就使用if...else
。
答案 1 :(得分:2)
三元运算符是运算符,这意味着它是表达式的一部分。它的参数(操作数)是表达式同样。
return 0
不是表达 - 它是一个声明。你正在做的事情有点类似于例如这样:
int a = 4 + for (int j = 0; j < 10; ++j) { std::cout << j; };
您需要流控制,而不仅仅是不同的表达式 - 使用if
而不是三元运算符。这也是你的第一行中的一个好主意:使用三元运算符sparignly,绝对不仅仅是if
的简写。