无符号类型与带符号类型的比较

now*_*wox 4 c

我的编译器(DSP SHARC)非常挑剔。当我用备注进行构建时,出现此错误:

[cc1123] foo.c:1511 {D} remark: comparison of unsigned type
          with signed type
      while (taille > 0)
Run Code Online (Sandbox Code Playgroud)

两种解决方案:

  1. 编译器是正确的,我应该写

    size_t taille;
    ...
    while(taille > (size_t)0)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编译器很愚蠢,我应该忽略这一点

  3. 可能涉及ISO或MISRA标准的另一种解决方案

我该怎么办?

编辑

其实我最好写这样的例子

 while(taille) {...}
Run Code Online (Sandbox Code Playgroud)

但是,这与我最初的问题无关

chu*_*ica 5

IMO,编译器比较弱或至少是学究的。要使此不必要的警告安静,请使用:

while (taille > 0u) 
Run Code Online (Sandbox Code Playgroud)

顺便说一句:喜欢“两个解决方案:1. 2. 3.”


后期信用:现在,请参阅@Wintermute,比我自己早对此发表了类似评论。