[英]If … else switch … statement
以下代码在我的gcc 5.4.0上编译,不生成任何警告并且工作正常:
if (a == 0) {
puts("0");
} else switch (a) {
case 1: puts("1"); break;
case 2: puts("2"); break;
default: puts("default"); break;
}
如果......别换......正确的说法?
您的代码没有任何问题。 if
... else
的语法如下:
attr(可选) if (condition)statement-true else statement-false
switch
是一个语句,所以它被允许去后else
。
请注意, else if
不是特殊构造,则它只是在else
之后的if
语句。
你所拥有的在语法上是正确的......但它并不容易阅读。
如果您的代码正在被审核,您可能会被拉上它 - 因为您正在使用“ 无支撑,多行语句作为条件的一部分 ”。
更喜欢明确并像这样写:
if (a == 0) {
puts("0");
} else {
switch (a) {
case 1: puts("1"); break;
case 2: puts("2"); break;
default: puts("default"); break;
}
}
以下是合法的,这是合法的:
if (a == 0)
puts("0");
else
puts("not0");
重新访问代码时,这样的结构可能会导致错误...我似乎记得最近的“流行”漏洞之一被实现(错误地......希望)部分是由于这种“ 无支撑 ”的使用if
。
这个switch
是一个语句,所以这只是在else
一个语句。
它没有什么不同
else
a = 0;
要么
else
{
switch(a)
{
case 1:
...
}
}
这不是一种非常常见的写作方式,但它很好。
您的代码没有任何问题,这与编写此代码相同:
if (a == 0) {
puts("0");
} else {
switch (a) {
case 1: puts("1"); break;
case 2: puts("2"); break;
default: puts("default"); break;
}
}
这完全合法。 else switch
不是真正的声明。
你的陈述是
if(condition){code block} else {code block}
code block
可以包含任何语句,例如switch
语句。
if
语法是:
if ( condition ) statement-true else statement-false
condition is an expression convertible to a boolean (true/false)
statement-true is a statement which is executed if condition is true
statement-false is a statement which is executed if condition is false
而switch
block是一个声明。
所以是的,您的代码展示了正确的陈述。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.