Можно объявить переменные в операторе переключения при запуске нового блока:
switch (thing)
{
case A:
{
int i = 0; // Completely legal
}
break;
}
причина относится к выделению (и исправление) пространство на стеке для устройства хранения данных локальной переменной (переменных).
unsigned
на самом деле является сокращением для unsigned int
, и поэтому определено в стандарте C.
Исторически в C, если вы опускали тип данных, предполагалось "int". Итак, «беззнаковый» - это сокращение от «беззнаковое целое». Долгое время это считалось плохой практикой, но все еще существует довольно много кода, который ее использует.
unsigned
означает unsigned int
. подписанный
означает подписанный int
. Использование только unsigned
- это ленивый способ объявления unsigned int
в C. Да, это ANSI.
в C, unsigned
- это сокращение для unsigned int
.
У вас есть то же самое для long
, то есть сокращение для long int
. Также можно объявить unsigned long
(это будет unsigned long int
).
Это находится в Стандарт ANSI