【发布时间】:2012-12-13 20:22:24
【问题描述】:
我的这段代码挑战了我所有的 C 知识。 我有:
int main(void){
unsigned long long int massage ;
scanf("%llX", &massage); //input: 0x1234567890abcdef
printf("%llX", massage);
return 0;
}
在我的“64bit - Corei5 - Fedora - GCC”上,它会准确地打印出我输入的内容。但在我好友的系统(32 位、MS XP、MinGW)上打印90ABCDEF。我不明白为什么。有人知道吗?
顺便说一句:sizeof(unsigned long long int) 在他的系统上是 8。
【问题讨论】:
-
他在使用 MSVC 左右?它们具有非标准的
printf和scanf格式。应该可以在编译器的文档中找到。 -
他使用 MINGW。 (编辑问题)
-
MinGW 是使用自己的 C 库,还是使用 Windows 库?在后一种情况下,非标准格式仍然适用。在前者,不知道。
-
@DanielFischer 相关:stackoverflow.com/questions/13590735/… 显然,它使用的是 Windows 的。
标签: c types platform-independent