警告此十进制常量仅在ISO C90中无符号

时间:2017-01-10 00:28:33

标签: c

#include<stdio.h>

int main(void) {

    int t;
    long long n = 4294967295;
    //printf("%lu",n);
    return 0;
}

每当我运行上面的代码时,编译器都会显示以下警告

  

[警告]此十进制常数仅在ISO C90

中无符号

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

在ISO C中,LOAD的行为在C90和C99之间发生了变化。

在C90中,在普通系统上,这是无符号值,4294967295(在32位系统上)或unsigned int(在16位系统上)。但是在C99中,这是在这些系统上签名的unsigned long

您可以停用此警告,或使用整数后缀来表明您了解问题,例如: long long

答案 1 :(得分:0)

对于long long int,您需要%lld格式说明符:

long long n = 4294967295;
printf("%lld", n);

对long long int类型使用错误的格式说明符%lu会导致未定义的行为。