реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Множественный выбор, оператор switch, язык С
777777
сообщение Dec 22 2010, 16:18
Сообщение #31


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(sergeeff @ Dec 22 2010, 22:05) *
Вы ветку прочитали бы.

Что, там кто-то уже высказал такую шутку?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 24 2010, 07:03
Сообщение #32


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А еще... а еще можно передать байт, как есть. А преобразовывать в цифры уже на том конце. sm.gif
Любопытно, если массив объявлен const char DDD[256][3], а заносятся строки "000" и т.д., что будет отброшено - нуль, заканчивающий строку, или старшая цифра?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 24 2010, 08:34
Сообщение #33


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(ViKo @ Dec 24 2010, 13:03) *
Любопытно, если массив объявлен const char DDD[256][3], а заносятся строки "000" и т.д., что будет отброшено - нуль, заканчивающий строку, или старшая цифра?

нуль, заканчивающий строку, естественно.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 27 2010, 05:44
Сообщение #34


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (demiurg_spb @ Dec 24 2010, 13:34) *
нуль, заканчивающий строку, естественно.
А у меня компилятор ругается (см. сообщение 22).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 27 2010, 06:37
Сообщение #35


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Сергей Борщ @ Dec 27 2010, 10:44) *
А у меня компилятор ругается (см. сообщение 22).

А Keil для STM32 скушал без вопросов
Код
const char DDD[2][3] = {"123", "456"};
for (uint32_t i=6; i!=0; i--) USART3->DR = DDD[i/3][i%3];
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 27 2010, 10:54
Сообщение #36


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Сергей Борщ @ Dec 27 2010, 11:44) *
А у меня компилятор ругается (см. сообщение 22).
Ничего не могу добавить к уже сказанному:-)


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 27 2010, 11:08
Сообщение #37


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Сергей Борщ @ Dec 22 2010, 10:54) *
Код
char const TTT[][3] =
{
        "123",
        "123"
};

error: initializer-string for array of chars is too long
А Вы ему тогда так скажите:
Код
char const TTT[][3] =
{
        {'1','2','3'},
        {'1','2','3'}
};

Он просто обязан такое сжевать.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 27 2010, 19:11
Сообщение #38


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (singlskv @ Dec 27 2010, 16:08) *
Он просто обязан такое сжевать.
Да как сказать понятно. Видимо это еще одно отличие C и C++. Я проверял на плюсах.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 27 2010, 20:26
Сообщение #39


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Сергей Борщ @ Dec 28 2010, 01:11) *
Да как сказать понятно. Видимо это еще одно отличие C и C++. Я проверял на плюсах.
Здесь скорее не отличие С и С++ как стандартов а просто сложившаяся практика применения.
По K&R запись "xyz" эквивалентна {'x','y','z','\0'} то есть массиву из 4 символов,
при этом при инициализации char arr[3]="xyz" компилятор (по K&R) обязан выдавать как минимум предупреждение
о том что количество инициализаторов > размера данных, но видимо программисты никак не хотели сдаваться
и упорно писали такую инициализацию в огромном количестве кода, ну хотя бы просто для экономии памяти...
Вот в итоге и получилось что, де-факто, C компиляторы такое жуют легко, а в С++ просто решили
эту вакханалию прикрыть т.к. он более продвинутый язык по контролю над программистом... sm.gif
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 02:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016