【发布时间】:2019-09-25 13:50:48
【问题描述】:
我正在尝试了解它是如何工作的。
#include<stdio.h>
int main()
{
int a = 110;
double d = 10.21;
printf("sum d: %d \t\t size d: %d \n", a+d, sizeof(a+d));
printf("sum lf: %lf \t size lf: %lf \n", a+d, sizeof(a+d));
printf("sum lf: %lf\t size d: %d \n", a+d, sizeof(a+d));
printf("sum d: %d \t\t size lf: %lf \n", a+d, sizeof(a+d));
return 0;
}
输出是:
sum d: 8 size d: 1343288280
sum lf: 120.210000 size lf: 0.000000
sum lf: 120.210000 size d: 8
sum d: 8 size lf: 120.210000
【问题讨论】:
-
你期待什么输出?
-
sizeof需要%zu格式说明符。 -
如果将错误类型的参数传递给 printf,那么后面的 args 可能无法正确对齐。
-
解释您期望的输出以及原因。
-
您通过将参数传递给
printf()来产生未定义的行为,这些参数与其相应的格式指令不匹配。这里没有什么要理解的,除了 C 不保证程序会做什么。