我正在测试代码,但不小心将-0放在代码行中,并注意到没有警告出现。代码行是:while(--argc>-0)
。我用make编译了程序。在代码中写入-0时为什么不显示警告?
答案 0 :(得分:1)
您可能没有意识到C中的整数常量不能为负。 -0
被解析为两个标记,即一元减运算符-
和整数常量0。将一元减应用于零是明确定义的,它只会再次产生零。如果不是这样定义的话,一个愤怒的数学家暴徒会袭击C委员会。因此,C编译器认为这不是错误。
但是,如果由于要编写while(--argc>=0)
而需要警告,请继续并在C编译器上提出功能请求。错字检测最近很流行,他们可能很喜欢这个主意。
答案 1 :(得分:0)
您不会收到警告,因为这是定义良好的C代码,经验还没有显示这样的代码,这表明程序员的错误经常足以引起警告。