“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;