我通过静态分析工具提供了以下代码:
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
“OK”表示静态分析工具没有报错。“NOT OK”意味着静态分析工具确实抱怨 - 声称按位运算的某些操作数不是无符号整数。
最后两行的结果表明括号导致
一种。实际类型转换为有符号
湾。静态分析工具认为是有符号的类型转换
我将向静态分析工具开发人员询问(b)。
但在此之前,我想知道 C 语言是否已知可以做 (a)?