[an error occurred while processing this directive]
|
Для выполнения подобных операций компилятор обычно заводит временную переменую, где это преобразование и делает. Переменная обычно берётся типа int, чтобы, значит, с запасом. А потом он с ней же и сравнивает.
Все эти описания типа result has... относятся, скорее, с стандарту, нежели к конкретной реализаци компилятора.
Так что, во избежание головняков в будущем лучше не мудрствовать в настоящем. Лучше лишний раз разжевать компилятору, что ты хочешь, чем надеяться, что он сам догадается.
В данном примере это можно сделать так:
if(a == (~b & 0xFF))
{
...
}
В любом случае общие принципы примерно таковы:
Тип данных - не более чем указание компилятору сколько места в памяти под эти данные выделить.
Если после операции с данными предполагается из сравнение, надо жёстко отфильтровать заведомо неправильные значения до сравнения.
E-mail: info@telesys.ru