реклама на сайте
подробности

 
 
> Интересный глюк в CodeVisionAVR
DMD
сообщение Apr 17 2008, 09:02
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 19-02-08
Пользователь №: 35 166



Обнаружил интересный глюк в CodeVision, целый день вчера просидел - думал во мне дело, оказалось, что нет.
Если мы делаем сдвиг и результирующее число выходит из размера 1 байта, то, почему-то, компилятор не преобразует его к int (хотя обязан по стандарту). То есть вот такой код работает непрявильно:
Код
unisigned char s = 243;
//...
unsigned int d = (unsigned int)(s << 4);  // d != 3888


а надо так делать, что глупо...

Код
unisigned char s = 243;
//...
unsigned int d = (unsigned int)(((unsigned int)s) << 4);  // d = 3888


Интересно, зачем это надо или это просто баг??..


--------------------
Все будет хорошо! Я проверял!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Apr 18 2008, 14:50
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(DMD @ Apr 17 2008, 12:02) *
Обнаружил интересный глюк в CodeVision, целый день вчера просидел - думал во мне дело, оказалось, что нет.

Уже обсуждалось. "Выбрось каку".


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
zhevak
сообщение Dec 2 2008, 15:52
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Выбрось каку wink.gif

Прошу не пинать -- прошелся поиском по сайту и нашел сто-0-олько тем про глюконат-кодевижина, что прям ой! Вобщем, пощщу (от сл. "постить") в первый попавшийся топик по глюкам.

Сегодня приспичило меня поднять старые исходники, которые я еще писал в CodeVision в хз каком мохнатом году... Думал, закопипащщу (опять, гы-гы) текст в ИАР, подправлю где надо порты/регистры и вперед! Тема-то изъезженная вдоль и поперек -- подключение текстового LCD. Чего тут думать-то!? Ан, нет! Старые грабли с новыми ручкам...

Короче, IAR обнаружил ошибку на выходе из функции. Стыдно признаться, но это так, -- моя невнимательность. Но меня другое плющит -- Codevision эту ошибку в упор не видит. Пф-ф!

Вот код функции (слегка урезанный):
Код
//
//  Перевод кодировки Win-1251 в LDC-кодировку
//
BYTE _Translate(BYTE data)
{
  switch (data)
  {
  case 'Ё':
    return 0xA2;
  case 'ё':
...
  case '№':
    return 0xCC;
  case '\\':
    return 0xFF;
  }

  if (data >= 0xC0)
    return rus[data - 0xC0];
}


Для молодых поэтов поясняю -- собака порылась в последнем операторе if.

Вопрос: что будет, если data будет меньше 0xC0? Какой код вернет функция? Правльный выход из функции должен быть, разумеется, такой:
Код
...
  if (data >= 0xC0)
    return rus[data - 0xC0];
  else
    return data;
}


(Может кому пригодится. Хех!)


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DMD   Интересный глюк в CodeVisionAVR   Apr 17 2008, 09:02
- - Сергей Борщ   Да, выходит, это еще одно несоответствие стандарту...   Apr 17 2008, 09:17
|- - defunct   Цитата(Сергей Борщ @ Apr 17 2008, 11:17) ...   Dec 3 2008, 00:15
|- - Сергей Борщ   Цитата(defunct @ Dec 3 2008, 02:15) Можно...   Dec 3 2008, 01:58
|- - zhevak   Цитатаdefunct[/b]' date='Dec 3 2008, 05:15...   Dec 3 2008, 21:26
|- - defunct   zhevak за подробнейшие ответы.   Dec 3 2008, 22:47
|- - LordVader   Цитата(zhevak @ Dec 4 2008, 01:26) Если L...   Dec 4 2008, 10:26
|- - zhevak   Цитата(LordVader @ Dec 4 2008, 15:26) Сущ...   Dec 4 2008, 10:47
|- - LordVader   Цитата(zhevak @ Dec 4 2008, 13:47) Я вам ...   Dec 4 2008, 18:22
|- - zhevak   Цитата(LordVader @ Dec 4 2008, 23:22) Ну ...   Dec 4 2008, 19:15
- - prottoss   Цитата(DMD @ Apr 17 2008, 16:02) Обнаружи...   Apr 17 2008, 10:31
|- - Сергей Борщ   Цитата(prottoss @ Apr 17 2008, 13:31) А п...   Apr 17 2008, 11:20
|- - prottoss   Цитата(Сергей Борщ @ Apr 17 2008, 18:20) ...   Apr 18 2008, 00:42
|- - Andrew O. Shadoura   Цитата(Сергей Борщ @ Apr 17 2008, 14:20) ...   Apr 18 2008, 02:01
- - WHALE   Цитата(DMD @ Apr 17 2008, 13:02) Обнаружи...   Apr 17 2008, 12:33
- - DMD   Ворнинги не генерились, что и странно. А насчет то...   Apr 18 2008, 09:41
||- - Nick_Shl   Цитата(zhevak @ Dec 2 2008, 17:52) Вопрос...   Dec 3 2008, 06:15
|- - delamoure   Цитата(ReAl @ Apr 18 2008, 16:50) Уже обс...   Dec 3 2008, 11:48
|- - Сергей Борщ   Цитата(delamoure @ Dec 3 2008, 13:48) Но ...   Dec 3 2008, 13:35
|- - SasaVitebsk   Цитата(Сергей Борщ @ Dec 3 2008, 17:35) Т...   Dec 3 2008, 23:53
|- - Qwertty   Цитата(SasaVitebsk @ Dec 4 2008, 02:53) В...   Dec 4 2008, 04:57
|- - Сергей Борщ   Цитата(SasaVitebsk @ Dec 4 2008, 01:53) А...   Dec 4 2008, 09:36
- - _Pasha   Интересно, какие грабельки еще подкинет 16-битная ...   Dec 3 2008, 14:22
|- - Serj78   Цитата(_Pasha @ Dec 3 2008, 17:22) Интере...   Dec 4 2008, 08:20
- - delamoure   Впрочем, IAR для меня не новость "Многостроч...   Dec 4 2008, 00:52
- - ARV   а как можно преобразовать строки для вывода на LCD...   Dec 4 2008, 09:51
|- - Сергей Борщ   Цитата(ARV @ Dec 4 2008, 11:51) понимаю, ...   Dec 4 2008, 10:16
||- - ARV   Цитата(Сергей Борщ @ Dec 4 2008, 13:16) Н...   Dec 4 2008, 10:19
||- - ReAl   Цитата(ARV @ Dec 4 2008, 12:19) это очеви...   Dec 5 2008, 11:06
|- - zhevak   Цитата(ARV @ Dec 4 2008, 14:51) а как мож...   Dec 4 2008, 10:25
|- - _Pasha   Цитата(ARV @ Dec 4 2008, 13:51) а как мож...   Dec 4 2008, 10:38
- - SasaVitebsk   Стоимость LCD от 3.5$ за 2х16 до 11 за 4х20. ...   Dec 4 2008, 20:56
- - delamoure   Цитата(SasaVitebsk @ Dec 4 2008, 22:56) П...   Dec 4 2008, 21:25
|- - SasaVitebsk   Цитата(delamoure @ Dec 5 2008, 01:25) В C...   Dec 4 2008, 23:39
- - Сергей Борщ   Цитата(SasaVitebsk @ Dec 4 2008, 22:56) П...   Dec 5 2008, 02:41


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01442 секунд с 7
ELECTRONIX ©2004-2016