Диапазоны в Си
Почитал тут на досуге какие ещё расширения есть у «ГНУ Си». Хотя я их и не использую, но знать не помешает. Оказалось, что там много такого, что лично мне хотелось бы видеть в языке. Например, хорошая штука — диапазоны. Выглядят они так:
const char *whatisit(char code) {
switch (code) {
case 'a' ... 'z':
return "lowercase";
case 'A' ... 'Z':
return "capital";
case '0' ... '9':
return "digit";
case 0 ... 31:
return "special";
default:
return "unknown";
}
}
Но написал я про них не только потому что мне нравится конструкция, но и потому, что оказалось, что меня неконсистентно бесит пробел слева от многоточия, который надо обязательно поставить, если диапазон начинается в цифры.
Если его не будет, компилятор подумает, что перед ним число с плавающей точкой и заругается на ошибку синтаксиса.
Непонятно почему меня это так раздражает. Ну пробел, это же не первый синтаксический костыль, который я вижу, но почему-то именно тут он мне кажется очень некрасивым.
В паскале такое спокойно работает без лишних пробелов. Тут возможно дело в несовершенстве компилятора, но все равно странно.
Странно, да, возможно какие-то трудности при построении дерева при парсинге.
Пример немного странный: 0 ... 9 — это же непечатаемые символы?
(Да, с апострофами будет пример не по теме.)
Ха, точно ))) Сейчас поправлю )