“warning: this decimal constant is unsigned only in ISO C90”的解决办法

报警“warning: this decimal constant is unsigned only in ISO C90”通常出现在默认型存储不够的情况下。
 
例如下面这段代码:
#include<stdio.h> 

int main(int argc,char *argv[]){
  unsigned int i = 2394967295;
  printf("%d",i);

  return 0;
}
编译时,GCC编译器会抛出以下warning:
$ gcc -o test iso_c90_warning.c 
iso_c90_warning.c: In function ‘main’:
iso_c90_warning.c:4: warning: this decimal constant is unsigned only in ISO C90
$
C语言中常量值默认是一个32位的有符号整型数。由于2394967295无法用32位的有符号整型数表示,所以会有报警产生。
 
解决方法有两种:
 
用99标准编译
$ gcc -std=c99 -o test iso_c90_warning.c
$
强制转型
unsigned int i = 2394967295U;




posted @ 2011-12-16 14:54  __BSD__  阅读(3270)  评论(0编辑  收藏  举报