|
Детская ошибка |
|
|
|
May 2 2016, 06:22
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Недавно столкнулся с одной странностью (по крайней мере для меня). Хотелось бы понять. Есть фрагмент года (упрощенный до безобразия): CODE int16u temp1, temp2; for (int32u i = 0; i < 10; i++) { temp1 = 0x0001; temp2 = 0xFFFE; if (~temp1 != temp2) continue; temp2 = temp1; }
Так вот, в этом фрагменте условный оператор и код после него никогда не выполняется. В отладчике после выполнения операции "temp2 = 0xFFFE;" происходит сразу переход на начало цикла. Переменные объявлены как int16u (== unsigned short (16 бит беззнаковое)) При этом никаких предупреждений на этапе компиляции. Если переменные объявить как int32u (== unsigned long (32 бита беззнаковое)), то условный оператор выполняется, но естественно результат всегда true. И код работает как надо только в таком варианте: CODE int16u temp1, temp2; for (int32u i = 0; i < 10; i++) { temp1 = 0x0001; temp2 = 0xFFFE; temp1 = ~temp1; if (temp1 != temp2) continue; temp2 = temp1; }
В этом случае выполняются все операторы, входящие в тело цикла. IAR C/C++ Compiler for ARM 7.40.3.8902 (7.40.3.8902) Добавлю: Оптимизация отключена. Проект под микроконтроллер STM32F105VCT6
Сообщение отредактировал amiller - May 2 2016, 06:41
|
|
|
|
Сообщений в этой теме
amiller Детская ошибка May 2 2016, 06:22 ViKo К вопросу о продвижении short. Как пишет Шилдт (с... May 11 2016, 07:01 aiwa Цитата(GetSmart @ May 11 2016, 07:40) Код... May 11 2016, 07:45 halfdoom Цитата(aiwa @ May 11 2016, 10:45) А вот у... May 11 2016, 08:05 IgorKossak Предлагаю участникам сосредоточиться на главном во... May 11 2016, 07:56 aiwa Цитата(ViKo @ May 11 2016, 10:01) К вопро... May 11 2016, 08:05 scifi Цитата(aiwa @ May 11 2016, 11:05) char, s... May 11 2016, 08:09 ViKo Цитата(aiwa @ May 11 2016, 11:05) Если об... May 11 2016, 09:13 aiwa Цитата(scifi @ May 11 2016, 11:09) За иск... May 11 2016, 08:29 scifi Цитата(aiwa @ May 11 2016, 11:29) Странно... May 11 2016, 08:54 aiwa Цитата(scifi @ May 11 2016, 11:54) Вы что... May 11 2016, 12:15 ViKo Все (продвинутые) ссылаются на стандарт по языку C... May 12 2016, 08:28 aiwa Тоже одни черновики.
С системами контроля версий ... May 12 2016, 16:01 dxp QUOTE (aiwa @ May 12 2016, 22:01) Тоже од... May 13 2016, 05:42 GetSmart Шо, привидение увидели?
Цитата(zltigo)[Pa091]: op... May 17 2016, 01:28 zltigo QUOTE (GetSmart @ May 17 2016, 04:28) Шо,... May 17 2016, 05:00  GetSmart Цитата(zltigo @ May 17 2016, 09:00) ?
Спе... May 17 2016, 11:40 aiwa Цитата(GetSmart @ May 17 2016, 14:40) Неп... May 17 2016, 13:47 GetSmart Цитата(aiwa @ May 17 2016, 17:47) Дополне... May 17 2016, 14:35 aiwa Цитата(GetSmart @ May 17 2016, 17:35) Зак... May 17 2016, 16:43 GetSmart Цитата(aiwa @ May 17 2016, 20:43) С допол... May 17 2016, 17:05 aiwa Цитата(GetSmart @ May 17 2016, 20:05) Поч... May 17 2016, 17:57 GetSmart Цитата(aiwa @ May 17 2016, 21:57) В систе... May 17 2016, 18:25  halfdoom Цитата(GetSmart @ May 17 2016, 21:25) Пок... May 18 2016, 05:57   GetSmart Цитата(halfdoom @ May 18 2016, 09:57) Воз... May 18 2016, 07:04    halfdoom Цитата(GetSmart @ May 18 2016, 10:04) Не ... May 18 2016, 07:12     GetSmart Цитата(halfdoom @ May 18 2016, 11:12) Код... May 18 2016, 07:30 ViKo Господа, вы занимаетесь казуистикой. Надо помнить ... May 17 2016, 18:18 aiwa Цитата(ViKo @ May 17 2016, 21:18) Господа... May 18 2016, 01:42 GetSmart Цитата(aiwa @ May 18 2016, 05:42) Это пун... May 18 2016, 03:03 ViKo Если ТС напишет
int8_t temp1 = 0x0001;
if (temp1 ^... May 18 2016, 06:26 halfdoom Цитата(ViKo @ May 18 2016, 09:26) будет т... May 18 2016, 07:03  ViKo Цитата(halfdoom @ May 18 2016, 10:03) Ну ... May 18 2016, 07:20   halfdoom Цитата(ViKo @ May 18 2016, 10:20) Ничего ... May 18 2016, 07:43 aiwa Цитата(GetSmart @ May 18 2016, 10:30) Что... May 18 2016, 08:31 scifi О господи, бесконечные хождения вокруг трёх битов ... May 18 2016, 08:58 GetSmart Дадада. Переливаю тут из пустого в порожнее.
Резу... May 18 2016, 09:11 aiwa Цитата(GetSmart @ May 18 2016, 12:11) Дад... May 18 2016, 12:57 GetSmart Цитата(aiwa @ May 18 2016, 16:57) Почему ... May 18 2016, 13:43  halfdoom Цитата(GetSmart @ May 18 2016, 16:43) Два... May 18 2016, 16:15   GetSmart Цитата(halfdoom @ May 18 2016, 20:15) Код... May 18 2016, 16:27 aiwa Цитата(GetSmart @ May 18 2016, 16:43) Два... May 18 2016, 14:58 GetSmart Цитата(aiwa @ May 18 2016, 18:58) Коренно... May 18 2016, 16:13 aiwa Цитата(GetSmart @ May 18 2016, 19:13) В д... May 18 2016, 18:03 GetSmart Цитата(aiwa @ May 18 2016, 22:03) Это явл... May 19 2016, 09:29 aiwa Цитата(GetSmart @ May 19 2016, 12:29) И х... May 19 2016, 11:08 GetSmart Цитата(aiwa @ May 19 2016, 15:08) З.Ы. Ес... May 19 2016, 12:53 GetSmart ЦитатаЭто пункт 5. Unary operators.
Формально тиль... May 20 2016, 09:47 aiwa Цитата(GetSmart @ May 19 2016, 15:53) Есл... May 20 2016, 15:58 GetSmart Цитата(aiwa)Более того, в стандарте особо подчерки... May 20 2016, 16:43 aiwa Цитата(GetSmart @ May 20 2016, 19:43) Ага... May 20 2016, 23:58 GetSmart У меня вчера инет сломался. Я исправил предыдущий ... May 21 2016, 07:21 aiwa Цитата(GetSmart @ May 21 2016, 10:21) Общ... May 21 2016, 11:32 GetSmart Цитата(aiwa)Что касается самого стандарта, так в н... May 22 2016, 00:45 aiwa Цитата(GetSmart @ May 22 2016, 03:45) Ари... May 22 2016, 16:38 GetSmart При преобразовании множества в многочлен теряется ... May 23 2016, 16:02 aiwa Оказывается в С++11 структура "булевая алгебр... May 23 2016, 21:20 GetSmart Перечитываю себя и нахожу не совсем то, что хотел ... May 24 2016, 19:31 aiwa Цитата(GetSmart @ May 24 2016, 22:31) Огл... May 25 2016, 01:25 vit496 Помогите пожалуйста восполнить пробел в познаниях ... Apr 25 2017, 19:30 Шаманъ Цитата(vit496 @ Apr 25 2017, 22:30) Помог... Apr 26 2017, 05:25  Сергей Борщ QUOTE (Шаманъ @ Apr 26 2017, 08:25) Видим... Apr 26 2017, 07:01  vit496 Цитата(Шаманъ @ Apr 26 2017, 09:25) Видим... Apr 26 2017, 09:33 k155la3 Цитата(vit496 @ Apr 25 2017, 22:30) Помог... Apr 26 2017, 05:55 GetSmart Удалить if компилятор может как из-за условия, так... Apr 26 2017, 09:21 vit496 Цитата(GetSmart @ Apr 26 2017, 12:21) Уда... Apr 26 2017, 19:10  Шаманъ Цитата(vit496 @ Apr 26 2017, 22:10) Еще. ... Apr 27 2017, 05:59   vit496 Цитата(Шаманъ @ Apr 27 2017, 09:59) Вроде... Apr 27 2017, 08:05  GetSmart Цитата(vit496 @ Apr 26 2017, 23:10) toggl... Apr 27 2017, 07:07 Шаманъ Цитата(Сергей Борщ @ Apr 26 2017, 10:01) ... Apr 26 2017, 15:50 aiwa Цитата(GetSmart @ Apr 27 2017, 10:07) Мож... Apr 28 2017, 08:56
2 страниц
< 1 2
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|