[email protected]:~/langs/c$ cat 3264int.c
#include <stdio.h>
int main(){
long z;
printf("Long int size is %d bytes long!\n", sizeof(z));
return 0;
}
[email protected]:~/langs/c$ cat 3264int.c ^C
[email protected]:~/langs/c$ gcc -m32 -o 32int 3264int.c
[email protected]:~/langs/c$ gcc -m64 -o 64int 3264int.c
3264int.c: In function ‘main’:
3264int.c:4: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘long unsigned int’ cat 3264int.c
我試圖改變類型z
爲int,它仍然無法編譯。爲什麼我可以在32位而不是64位編譯這個?
`%zu`不是gcc特有的,實際上編譯器與`printf`(庫函數)支持的內容無關。 `%zu`是ANSI/ISO C語言的標準部分,已有10多年的歷史。 – 2011-02-14 04:37:45