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

 
 
> Детская ошибка
amiller
сообщение May 2 2016, 06:22
Сообщение #101


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

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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 страниц V  < 1 2


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 20:16
Рейтинг@Mail.ru


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