Могут ли в скобках в C изменить результат типа операндов побитовой операции?

Я кормил следующий код через статический инструмент анализа:

u1 = (u1 ^ u2); // OK

u1 = (u1 ^ u2) & u3;  // NOT OK

u1 = (u1 ^ u2) & 10; // NOT OK

u1 = (u1 ^ u2) & 10U; // NOT OK

u1 = (unsigned char)(u1 ^ u2) & 10U; // OK

u1 = (unsigned char)(u1 ^ u2) & u3;  // OK

«ОК» означает инструмент статического анализа не жаловаться. «Не ок» означает инструмент статического анализа, который пожаловаться - утверждая, что какой-то операнд побитовой операции не является целым числом без знака.

Результаты последних 2 строк показывают, что скобки вызывают либо

a. фактическое преобразование типа для подписанного

б. То, что означает, что инструмент статического анализа - это преобразование типа для подписания

Я попрошу разработчику инструмента статического анализа о (B).

Но прежде чем я сделаю, я хотел бы знать, может ли быть, возможно, известен язык C (A)?

5
задан Vicky 13 September 2011 в 10:32
поделиться