【发布时间】:2021-02-08 17:36:20
【问题描述】:
我遇到了新的 C/C++ switch/if/else/case 语法。 我在 C 标准中找不到它的提及。 "if" 中的值无关紧要,"if(1)" 或 "if(0)" 的作用相同。 似乎这个“如果”不像条件,而是作为范围。 是编译器扩展还是编译器糖?
#include <stdio.h>
int main()
{
int a = 0, b = -1, c = -1;
switch(a)
{
if(1) {
case 0: b = 0;
printf("%u:b=%d\n", __LINE__, b);
}
else if(0) {
case 1: b = 1;
printf("%u:b=%d\n", __LINE__, b);
}
else if(0) {
case 2: b = 2;
printf("%u:b=%d\n", __LINE__, b);
}
else {
case 3: b = 3;
printf("%u:b=%d\n", __LINE__, b);
}
c = 0;
printf("%u:b=%d, c=%d\n", __LINE__, b, c);
break;
}
printf("b=%d", b);
return 0;
}
【问题讨论】:
-
您希望这些 if 语句在这里发生什么?
-
以后,请只用一种语言标记问题,C 或 C++,除非它涉及它们之间的一些差异或交互。不同语言的答案可能不同,因此应在不同的问题中解决。
-
我添加了 C 和 C++,因为我使用 C 和 C++ 编译器进行了测试