Я смотрел на этот ТАК.Хотел бы знать две вещи
- Стандарт C99 гласит:
Целочисленное константное выражение должно иметь целочисленный тип
Но не уверен, еслиlong long и long также обрабатываются одинаково.Я попытался с приведенным ниже примером и не получил никаких предупреждений или ошибок компилятора.Так что я думаю, целое число означает enum, char, int, long и long long.
int main(void)
{
unsigned long long a=4294967296LL; // no need of LL
switch (a)
{
case 4294967296:
printf("Hello");
break;
}
return(0);
}
Может ли кто-нибудь объяснить значение «непосредственных операндов приведений» в выражении «Целочисленное константное выражение должно иметь целочисленный тип и должно иметь только операнды, которые являются целочисленными константами, ..... чьи результаты являются плавающими константами, которые являютсянепосредственные операнды приведений "
(в том же сообщении SO есть один оставшийся без ответа комментарий @ user963241).
Оцените один пример варианта коммутатора, чтобы обосновать использование плавающих констант, которые являются непосредственными операндами приведений.
Я использую MinGW 32-битный компилятор.