【发布时间】:2013-10-20 04:13:30
【问题描述】:
在 x86 或 x64 计算机上是否存在此程序不会输出 0xFFFF 的任何可能情况?还是保证可以正常工作?
#include <stdlib.h>
#include <stdio.h>
int main()
{
unsigned short int s = 0;
unsigned long int l = 0xFFFFFFFF;
memcpy(&s, &l, sizeof(short));
printf("0x%.4X", s);
return 0;
}
【问题讨论】:
-
应该改为
printf("0x%.4hX", s);,以停止 printf 将其参数解释为(普通)int? -
memset(&s, 0xFF, sizeof(short))应该在所有平台上生成FFFF。
标签: c type-conversion memcpy