"if else"被视为单个语句吗?
Is "if else" treated as a single statement?
如果我的措辞错误,请道歉。
我从高中开始就被教导在语句(如if,while,for等(之后添加大括号,只要有不止一行代码要执行。例:
while(i<12)
i++;
z = i+3;
cout << "Answer is " << z << endl;
不会执行您的期望。但以下内容将:
while(i<12){
i++;
z = i+3;
cout << "Answer is " << z << endl;
}
但是,我最近遇到了一个包含 if..else 语句在查看时似乎不止一行代码/语句,但它执行并按应有的方式工作,无论它的范围是否有大括号。
while(current != NULL && !found)
if(current->info >= newItem)
found = true;
else
{
trailCurrent = current;
current = current->link;
}
为什么?它是否治疗如果..否则语句作为单个语句?
如果 .. else 是 C++ 中的单个语句(技术上称为选择语句(。 根据 [stmt.select]/1,if
的有效形式是:
selection-statement: if constexpr-opt ( init-statement-opt condition ) statement if constexpr-opt ( init-statement-opt condition ) statement else statement
所以
while(current != NULL && !found)
if(current->info >= newItem)
found = true;
else
{
trailCurrent = current;
current = current->link;
}
也是单个语句,并且行为正确。
if
的语法基本上是:
if (condition) statement else statement
如果要使用if
或else
腿控制多个语句,请使用大括号将它们组合到一个块中,这在语法上是单个语句。
while
、for
等也是如此。它们中的每一个都控制一个语句,该语句可以是简单语句,也可以是复合语句(即,使用大括号组合成一个块的若干语句(。
while (condition) statement
do statement while (condition)
for (for-init condition ; statement) statement
目前,我有点忽略了一些最近的添加,例如在循环标头中定义一个变量,例如:for (int i...)
,因为这与手头的问题并不真正相关。
从 C11 标准:
selection-statement:
if (expression) statement
if (expression) statement else statement
switch (expression) statement
所以是的,if-else 是一个单一的陈述。
可以这样想:如果 if-else 不是一个单一的陈述,那还会是什么?if
部分会是一个陈述,然后else
是另一个陈述吗?如果是这种情况,您应该能够单独使用else
作为语句(没有前面的if
(,但这毫无意义。
是的,else
部分是if
语句的一部分。这也是你可以写else if (...)
的原因。else if
中的if
形成第二个语句:第一个if
的else
部分的语句。
正如其他人已经在评论中指出的那样,依赖这一点会很快导致代码难以阅读、混乱甚至错误。例如:
if (a)
if (b)
; // ...
else
; // this is the else for if (b), not if (a)!
当然,它们是单一的语句。没有if
就无法编写else
。如果while
循环if-else
循环仅在if
情况下会怎样?你能想象循环完成后else
会被执行吗?
它是否处理 if..否则语句作为单个语句?
是的
if(current->info >= newItem)
found = true;
else
{
trailCurrent = current;
current = current->link;
}
是一个声明。
if
下面的行是一个子语句。
else
下的代码块是子语句。
无论它们是否处于while
块之下,都是如此。
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 如何使用单个返回语句返回对变量的引用
- "if else"被视为单个语句吗?
- 对于单个数据 WORD 的 memcpy 和赋值语句有什么区别?
- 何时使用 if 语句选择多个循环而不是单个循环
- 为什么查找 + 插入的组合比单个插入语句工作得更快
- C++ 中深度嵌套函数的单个捕获全部语句?
- 单个cout中的多个语句产生不同的结果
- 在单个if语句中测试多个布尔值
- 输入到字符串流并在单个语句中转换为字符串.可以没有帮助程序类
- 在不使用单个 if 的情况下执行一些语句
- 单个COUT中的Multle 语句
- C++输入失败:单个语句中有多个输入
- C++:将STL容器中的元素移到单个语句中的变量中
- 标准对单个 if 语句中单个变量的双重比较有什么看法
- 在单个语句中将类类型分配给该类的取消引用指针时执行哪些操作
- 包含所有必需 #include 语句的单个头文件
- 如何使用ApacheThrift在单个catch语句中捕获所有自定义异常
- 这段c++代码是如何处理不寻常的单个布尔语句的?
- 有什么比单个 if 语句负载更好的方法来解析大量案例?