我想知道为什么sizeof
不能与不同类型的格式说明符一起使用。
[我知道sizeof
通常与%zu
格式说明符一起使用,但是我想以我自己的知识知道当我将nan
或长整数与它一起使用时,后面会发生什么以及为什么打印%f
与%lf
一起使用时>
int a = 0;
long long d = 1000000000000;
int s = a + d;
printf("%d\n", sizeof(a + d)); // prints normal size of expression
printf("%lf\n", sizeof(s)); // prints big number
printf("%f", sizeof(d)); // prints nan
我想知道为什么sizeof在不同类型的格式说明符中不起作用。我知道sizeof通常与%zu格式说明符一起使用,但是我想以我自己的知识知道什么...
sizeof
计算得出的值为size_t
类型的值。 size_t
的正确说明符是%zu
。您可以在%u
和size_t
是相同类型或至少具有相同大小和表示形式的系统上使用unsigned int
。在64位系统上,size_t
值具有64位,因此大于32位int。在64位linux和OS / X上,此类型定义为unsigned long
,在64位Windows上,此类型定义为unsigned long long
,因此在这些系统上使用%lu
或%llu
也可以。