Sun Studio 12:C 用户指南

4.6.1.3 可疑的构造

lint 会标记那些不能表达编程人员意图的各种合法构造。示例:


unsigned x;
if (x < 0) ...

总是失败。测试:


unsigned x;
if (x > 0) ...

等效于:


if (x != 0) ...

这可能不是预期的操作。lint 会标记 unsigned 变量与负常量或 0 的可疑比较。要将 unsigned 变量与负数的位模式进行比较,请将该变量的类型强制转换为 unsigned


if (u == (unsigned) -1) ...

或者使用 U 后缀:


if (u == -1U) ...

int fun()
{
    int a, b, x, y;
    (a = x) && (b == y);
}

if (x & a == 0) ...

求值如下:


if (x & (a == 0)) ...

这很有可能不是您的意图。如果使用 -h 调用 lint,则会禁用该诊断