【发布时间】:2014-05-30 23:53:17
【问题描述】:
根据格式说明符,可以将scanf 值合并到一个联合中。
union {
int i;
double f;
} u;
scanf("%lf", &u.i); // implicitly scan the double
printf("%lf", u.f); // explicitly print the double
这是可行的,因为scanf 将指针作为参数,并且联合中的所有元素都是对齐的,(void*)&u.i == (void*)&u.f。
是否可以更改printf 行以执行相同的操作,根据格式从联合中选择要打印的正确值,而不会意外切割一些可能的值?
printf("%lf", ???); // implicitly print the double
【问题讨论】:
-
与您的问题无关,但请记住
sizeof(int)可能与sizeof(double)不同(很可能不是)。