小编sag*_*agi的帖子

比较char和unsigned char时如何启用编译器警告?

以下面的C代码为例:

int main(int argc, char *argv[])
{
    signed char i;
    unsigned char count = 0xFF;

    for (i=0; i<count;i++)
    {
        printf("%x\n", i);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码在无限循环中运行,即使我按如下方式编译它:

# gcc -Wall -Wpedantic -Wconversion -Wsign-compare -Wtype-limits -Wsign-conversion test.c -o test
Run Code Online (Sandbox Code Playgroud)

有人知道应该警告这些问题的编译器标志吗?

为了清楚起见,我不是在问'为什么会得到一个无限循环',而是要知道是否有办法使用编译器或静态分析来阻止它?

c unsigned signed gcc compiler-warnings

23
推荐指数
2
解决办法
1397
查看次数

标签 统计

c ×1

compiler-warnings ×1

gcc ×1

signed ×1

unsigned ×1