回覆列表
-
1 # 使用者4680405605635
-
2 # lanfengkd
#include
int main()
{
float d;
scanf("%f",&d);
float *p=&d;
int *out = (int*)p;
printf("%X\n",*out);
}
#include
int main()
{
float d;
scanf("%f",&d);
float *p=&d;
int *out = (int*)p;
printf("%X\n",*out);
}
不知道你所說"在win64上正常執行"是指什麼,如果是指32位程式在64位系統上執行,那應該不用做任何修改(除非你使用了極其古老的早已被捨棄的windows API),除此之外你要注意在遠古時期(win95 win98的年代)有一個極其古老的程式設計技巧,那就是32位指標最早有24個bit有效,有8位永遠為0,有些程式設計師處於某種原因使用了這8個bit作為它用.這種程式不加修改是不能在win64上執行的,不過我相信你不會用到這個技巧的.但如果你的程式使用了一些極其古老的庫,是有可能有這種問題的.然後就是執行庫的問題之類的.如果你的程式沒這些問題,一般能直接在64位系統上執行.如果你指的是將32位程式選成64位重新編譯,一般要注意以下幾點:1.你用的庫是否支援64位.包括微軟自己的庫2.是否使用了不規範的指標轉換,例如char* a... int b=(int)a3.是否有假定sizeof(指標型別)==4的情況4.64位vc編譯器不再支援內聯彙編,檢視你的程式碼中或者你用的庫中有沒有內聯彙編.