【问题标题】:Breaking out of shorthanded if statement [duplicate]打破简写的if语句[重复]
【发布时间】:2025-12-26 03:20:13
【问题描述】:

我喜欢使用简写的“if 语句”格式

if-condition?then-statement:else-statement

为什么这行得通...

if (num==0)break;else continue;

这不是吗?

num==4?break:continue;

认为这两个语句在逻辑上是等价的。

【问题讨论】:

  • 您的问题是基于错误的前提。正确的语法是 if-condition ?表达式:表达式。

标签: c++ c++11 if-statement break continue


【解决方案1】:

第一个是语句,第二个是表达式。不能在表达式中使用语句。

if 的语法是:

if (<expression>) <statement> [else <statement>]

表达式的语法是:

<Boolean expression> ? <expression> : <expression>

语法不允许在表达式中使用语句。

【讨论】:

  • −1 而不是修复这个(这会使它变得面目全非)我只是注意到例如42 是一个表达式,42; 是一个语句。
  • @Cheers-and-hth-Alf,他仍然不能在表达式中声明。关于将表达式转化为语句,我只字未提。什么是反对票?
  • 这里都是陈述。它的break 不能用作?: 的操作数,因为break 是一个语句并且此运算符需要表达式。
  • @hacks,所有运算符都需要表达式。
  • 感谢您的解释。