|
Кто разъяснит прикол IAR C |
|
|
|
 |
Ответов
|
Jul 12 2006, 17:41
|
Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 26-01-06
Пользователь №: 13 668

|
Цитата #define FSHOWACT 40 // ×àñòîòà èñïîëíåíèÿ êîìàíä OCR1A = FCLK/(1024*FSHOWACT); // FCLK/1024/16.7 Ãö = 862 Не учел, что 40*1024 превышает максимальное значение для int (32767), и, соответственно, результат умножения получается отрицательным
|
|
|
|
|
Jul 12 2006, 17:53
|

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

|
Цитата(sz36 @ Jul 12 2006, 20:41)  Не учел, что 40*1024 превышает максимальное значение для int (32767), и, соответственно, результат умножения получается отрицательным Имеено так. Препроцессор по умолчанию считает все данные как int. Во избежание подобных недоразумений следует писать #define FCLK 14745600ULL, т.е объявлять константу типа unsigned long long или 14745600UL, т.е. unsigned long
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 13 2006, 07:03
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Сергей Борщ @ Jul 12 2006, 20:53)  Цитата(sz36 @ Jul 12 2006, 20:41)  Не учел, что 40*1024 превышает максимальное значение для int (32767), и, соответственно, результат умножения получается отрицательным
Имеено так. Препроцессор по умолчанию считает все данные как int. Во избежание подобных недоразумений следует писать #define FCLK 14745600ULL, т.е объявлять константу типа unsigned long long или 14745600UL, т.е. unsigned long Все правильно, только препроцессор здесь ни при чем. Препроцессор тупо заменяет один текст другим, а все остальное делает компилятор.
|
|
|
|
Сообщений в этой теме
SasaVitebsk Кто разъяснит прикол IAR C Jul 12 2006, 16:48 Romario Цитата(sz36 @ Jul 12 2006, 21:41) Цитата#... Jul 12 2006, 17:51   IgorKossak Цитата(_Bill @ Jul 13 2006, 10:03) Цитата... Jul 13 2006, 07:21   Сергей Борщ Цитата(_Bill @ Jul 13 2006, 10:03) Цитата... Jul 13 2006, 07:42    SasaVitebsk Спасибо теперь понял. Jul 13 2006, 19:05 GetSmart Вроде бы профи, но не знаю чем отличается long от ... Jul 12 2006, 19:46 Сергей Борщ Цитата(GetSmart @ Jul 12 2006, 22:46) Вро... Jul 12 2006, 20:55 GetSmart Целое на 8 байт? Jul 12 2006, 21:07 IgorKossak Цитата(GetSmart @ Jul 13 2006, 00:07) Цел... Jul 13 2006, 06:48
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|