Перейти к содержанию
    

Множественный выбор, оператор switch

Вы ветку прочитали бы.

Что, там кто-то уже высказал такую шутку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А еще... а еще можно передать байт, как есть. А преобразовывать в цифры уже на том конце. :)

Любопытно, если массив объявлен const char DDD[256][3], а заносятся строки "000" и т.д., что будет отброшено - нуль, заканчивающий строку, или старшая цифра?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Любопытно, если массив объявлен const char DDD[256][3], а заносятся строки "000" и т.д., что будет отброшено - нуль, заканчивающий строку, или старшая цифра?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нуль, заканчивающий строку, естественно.
А у меня компилятор ругается (см. сообщение 22).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у меня компилятор ругается (см. сообщение 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];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у меня компилятор ругается (см. сообщение 22).
Ничего не могу добавить к уже сказанному:-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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'}
};

Он просто обязан такое сжевать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он просто обязан такое сжевать.
Да как сказать понятно. Видимо это еще одно отличие C и C++. Я проверял на плюсах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да как сказать понятно. Видимо это еще одно отличие C и C++. Я проверял на плюсах.
Здесь скорее не отличие С и С++ как стандартов а просто сложившаяся практика применения.

По K&R запись "xyz" эквивалентна {'x','y','z','\0'} то есть массиву из 4 символов,

при этом при инициализации char arr[3]="xyz" компилятор (по K&R) обязан выдавать как минимум предупреждение

о том что количество инициализаторов > размера данных, но видимо программисты никак не хотели сдаваться

и упорно писали такую инициализацию в огромном количестве кода, ну хотя бы просто для экономии памяти...

Вот в итоге и получилось что, де-факто, C компиляторы такое жуют легко, а в С++ просто решили

эту вакханалию прикрыть т.к. он более продвинутый язык по контролю над программистом... :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...