[an error occurred while processing this directive]
Все просто (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Беня 24 декабря 2002 г. 16:01
В ответ на: Вопрос по HT_PICC 8PL3 отправлено Алексей ВМ 24 декабря 2002 г. 15:45

long B;
B=200000
действительно по правилам языка Си B будет не 200000. Потому что константы по умолчанию имеют тип int, а константа 200000 не помещается в int. Поэтому надо явно сказать,что Ваша константа типа long - надо так :
B=200000L;
Так заработает.

Ну а если надо умножить int A на int B и записать результат в int C, то если результат превысит 2 байта и не поместится в C, то будет в результате какой-то мусор. Поэтому совершенно бессмысленно получать результат вычислений как 4-х байтовый long, если затем Вы все равно записываете его в 2-байтовую переменную и он "обрежется" при пересылке в 2-байтовую переменную int C. Так что можно просто C = A * B. Но если у Вас результат может не поместиться в два байта, то просто сделайте long C - четырехбайтовую переменную C для результата.

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

Ответы



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

E-mail: info@telesys.ru