777777 0 22 декабря, 2010 Опубликовано 22 декабря, 2010 · Жалоба Вы ветку прочитали бы. Что, там кто-то уже высказал такую шутку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 24 декабря, 2010 Опубликовано 24 декабря, 2010 · Жалоба А еще... а еще можно передать байт, как есть. А преобразовывать в цифры уже на том конце. :) Любопытно, если массив объявлен const char DDD[256][3], а заносятся строки "000" и т.д., что будет отброшено - нуль, заканчивающий строку, или старшая цифра? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 24 декабря, 2010 Опубликовано 24 декабря, 2010 · Жалоба Любопытно, если массив объявлен const char DDD[256][3], а заносятся строки "000" и т.д., что будет отброшено - нуль, заканчивающий строку, или старшая цифра? нуль, заканчивающий строку, естественно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 27 декабря, 2010 Опубликовано 27 декабря, 2010 · Жалоба нуль, заканчивающий строку, естественно.А у меня компилятор ругается (см. сообщение 22). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 27 декабря, 2010 Опубликовано 27 декабря, 2010 · Жалоба А у меня компилятор ругается (см. сообщение 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]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 27 декабря, 2010 Опубликовано 27 декабря, 2010 · Жалоба А у меня компилятор ругается (см. сообщение 22).Ничего не могу добавить к уже сказанному:-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 27 декабря, 2010 Опубликовано 27 декабря, 2010 · Жалоба 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'} }; Он просто обязан такое сжевать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 27 декабря, 2010 Опубликовано 27 декабря, 2010 · Жалоба Он просто обязан такое сжевать.Да как сказать понятно. Видимо это еще одно отличие C и C++. Я проверял на плюсах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 27 декабря, 2010 Опубликовано 27 декабря, 2010 · Жалоба Да как сказать понятно. Видимо это еще одно отличие C и C++. Я проверял на плюсах.Здесь скорее не отличие С и С++ как стандартов а просто сложившаяся практика применения. По K&R запись "xyz" эквивалентна {'x','y','z','\0'} то есть массиву из 4 символов, при этом при инициализации char arr[3]="xyz" компилятор (по K&R) обязан выдавать как минимум предупреждение о том что количество инициализаторов > размера данных, но видимо программисты никак не хотели сдаваться и упорно писали такую инициализацию в огромном количестве кода, ну хотя бы просто для экономии памяти... Вот в итоге и получилось что, де-факто, C компиляторы такое жуют легко, а в С++ просто решили эту вакханалию прикрыть т.к. он более продвинутый язык по контролю над программистом... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться