[an error occurred while processing this directive]
На компилятор надейся...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено DP 05 июля 2002 г. 06:31
В ответ на: Глюк компилятора или мой? Объясните мне глупому...(Hi-Tech C) отправлено Юрец 05 июля 2002 г. 02:24

Для выполнения подобных операций компилятор обычно заводит временную переменую, где это преобразование и делает. Переменная обычно берётся типа int, чтобы, значит, с запасом. А потом он с ней же и сравнивает.
Все эти описания типа result has... относятся, скорее, с стандарту, нежели к конкретной реализаци компилятора.
Так что, во избежание головняков в будущем лучше не мудрствовать в настоящем. Лучше лишний раз разжевать компилятору, что ты хочешь, чем надеяться, что он сам догадается.
В данном примере это можно сделать так:
if(a == (~b & 0xFF))
{
...
}

В любом случае общие принципы примерно таковы:
Тип данных - не более чем указание компилятору сколько места в памяти под эти данные выделить.
Если после операции с данными предполагается из сравнение, надо жёстко отфильтровать заведомо неправильные значения до сравнения.

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

Ответы



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

E-mail: info@telesys.ru