-6
如果您要編譯並執行以下c代碼,會輸出什麼內容?編譯C
void main(){
int huge*p=(int huge*)0XC0563331;
int huge*q=(int huge*)0xC2551341;
*p=200;
printf("%d",*q);
}
如果您要編譯並執行以下c代碼,會輸出什麼內容?編譯C
void main(){
int huge*p=(int huge*)0XC0563331;
int huge*q=(int huge*)0xC2551341;
*p=200;
printf("%d",*q);
}
假設你的意思是寫如下:
#include <stdio.h>
int main(void){
int *p=(int *)0XC0563331;
int *q=(int *)0xC2551341;
*p=200;
printf("%d",*q);
return 0;
}
那麼輸出應該是任何整數值存儲起始地址0xC2551341
。
我不確定int huge
應該代表什麼;更寬的整數類型是long int
和long long int
(或者只是long
和long long
)。請注意,這些更寬的類型分別使用%ld
和%lld
轉換說明符來輸出。
'巨大'涉及到16位x86內存訪問目前的64Kb段以外的訪問地址..它看起來像來自一些古董編譯器的代碼,並且幾乎可以肯定地將現代編譯器和操作系統分割開來。 – Clifford
爲什麼不檢查? –
也許未定義的行爲。 – MikeCAT
然後發佈錯誤消息,並解決問題,而不是問這樣的......坦率地說,廢話。 「夥伴。」一個不可編譯的程序如何產生輸出!?無論如何,它的未定義的行爲。 – Downvoter