我有以下代码:
int s[4096];
unsigned char o = 0;
int main(void) {
int *n;
return ((char *) (s + o)) == 0 ? *n : 0;
}
[当我在该代码上运行Clang静态分析器时,它警告我我取消引用n
,因为(char *) (s + o)
是一个空指针,但不是(我什至可以打印它并获得一个绝对不为零的地址) )。
我想念什么?
[我注意到删除(char *)
强制转换会使警告消失。
我正在使用Clang Static Analyzer版本8进行测试。版本10不再报告警告。