对于以下内容:
( a != b ) ? cout<<"not equal" : cout<<"equal";
Run Code Online (Sandbox Code Playgroud)
假设我不在乎它是否相等,我怎么能用cout<<"equal"no-op 代替上述陈述.
Vin*_*vic 21
如果它确实适用于不需要第二个操作的三元运算符,那么最好的选择是将其替换为if:
if (a!=b) cout << "not equal";
Run Code Online (Sandbox Code Playgroud)
它的味道会少很多.
alt*_*uic 11
简单:我会将其编码为
if (a != b)
cout << "not equal";
Run Code Online (Sandbox Code Playgroud)
三元运算符要求两个结果属于同一类型.所以你也可以逃脱
(a != b) ? cout << "not equal" : cout;
Run Code Online (Sandbox Code Playgroud)
因为流运算符(<<)只返回ostream引用.在我看来,这是丑陋和不必要的.
小智 8
(void)0;是无用的。使用表单有很多充分的理由expr?false:true。看看assert()是如何实现的。
所以在你的例子中,使用( a != b ) ? (void)0 : cout<<"equal";
其他答案中唯一缺少的是:没有办法直接用 C/C++ 编写“noop”。
另外,doing:(a != b) ? : printf("equal\n");实际上确实为我编译(gcc 4.2.4中的gcc -ansi)。
以下将实现您正在寻找的内容,但是,阅读您的代码的人可能不清楚它为什么起作用:
(a != b) && (cout << "equal");
Run Code Online (Sandbox Code Playgroud)
就个人而言,我同意Vinko Vrsalovic 的这个回答。
| 归档时间: |
|
| 查看次数: |
9489 次 |
| 最近记录: |