Quase “se” em switch / case [duplicado]
Oct 26 2020
Eu enfrentei uma nova para mim C / C ++ switch / if / else / case sintaxe. Não consigo encontrar sua menção no padrão C. O valor dentro de "if" não importa, "if (1)" ou "if (0)" funciona da mesma forma. Parece que este "se" não age como condição, mas como escopo. É extensão do compilador ou açúcar do compilador?
#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;
}
Respostas
2 EricPostpischil Oct 26 2020 at 12:58
A switch pula para o caserótulo selecionado . As ifcondições nunca são avaliadas porque o controle do programa nunca flui para elas. Isso é especificado pelos padrões C e C ++.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino