Пожалуйста
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено smav 19 сентября 2003 г. 11:51
В ответ на: Ответ: Да много чего нет. отправлено Bill 19 сентября 2003 г. 11:09

printf("Hello %s!\n", sex? "boy" : "girl");

if sex then s:='boy' else s:='gerl';
writeln('Hello '+s+'!');
Согласитесь, выглядит гораздо читабельней. Разве что sex я бы объявил как перечисляемый тип, а то получается boy правильный, а girl - ложный.
Или, если вы пишете по win,можно так:
writeln(Format('Hello %s!',[s]));

Второй пример:
dst^:=src^; inc(dst); inc(src);
Уверяю вас, в обоих вариантах код будет одинаковый, а читабельность гораздо лучше и меньше возможности сделать ошибку.

А теперь встречный вопрос:
Попробуйте на C включить в строку код, заданный символической константой, например, нестандартный управляющий символ:
На паскале:
const
alignRught=1;
alignCenter=2;
str=alignRight+'пример строки';
Где-то в программе:
case str[i] of
alignRight:setRight;
alignCenter:setCenter;
else ...
end;

Пробуем на C:
Вариант 1.
#define alignRight 1
#define alignCenter 2
char * str= ??? - включить в строку не получиться
Вариант 2.
#define alignRight "1"
#define alignCenter "2"
char * str = alignRight "пример строки"; /* Вроде получилось */
switch (* str)
case alignRight: setRight();
/* Синтаксическая ошибка - alignRight - указатель на строку, а не символ */

Как мне пришлось сделать:
#define alignRight 1
#define alignRightStr "1"
...
Соответственно, исправлять код символа нужно в 2 местах - очень существенный недостаток.

И таких примеров можно привести много.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru