使用SizeOf时收到警告

时间:2014-01-15 17:53:19

标签: c sizeof

我收到警告warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat]

我正在编写一个非常基本的程序,它提供了数据类型的大小,但是在Linux环境中我得到了这个警告,而在Visual Studio中,程序没有任何警告。源代码如下: -

#include<stdio.h>

int main()
{

 int a;
 printf("\nThe Size Of Integer A Is = \t%d", sizeof(a));

return 0;
}

答案将不胜感激,任何人都可以告诉我一种解决此类警告的正确方法,因为我是这个C的新手并且是标准。

3 个答案:

答案 0 :(得分:4)

sizeof返回size_t类型。使用%zu说明符打印sizeof的值。

printf("\nThe Size Of Integer A Is = \t%zu", sizeof(a));    

C11 6.5.3.4 sizeof_Alignof运营商:

  

5两个运算符的结果值是实现定义及其类型(a   unsigned integer类型)是size_t,在<stddef.h>(以及其他标题)中定义。

注意:正如lorebcomment中指出的那样,当您在Windows中编译代码时,很可能会收到如下警告:

[Warning] unknown conversion type character 'z' in format [-Wformat]
[Warning] too many arguments for format [-Wformat-extra-args]

答案 1 :(得分:1)

sizeof返回size_t而不是int

%zu

中使用printf

答案 2 :(得分:0)

在C99中,size_t变量的正确格式为%zu。

使用:

printf("\nThe Size Of Integer A Is = \t%zu", sizeof(a));