Я кормил следующий код через статический инструмент анализа:
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)?