開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Code Block
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
預期按位元輸出該記憶體位址(by byte)的值,但得到亂數ffffffff
詳見下方
餵入的資料(Input):
255
預期的正確結果(Expected Output):
前面部分是測試碼所以省略
後面輸入255
預期會得出
(記憶體位址) ff
(記憶體位址) 00
(記憶體位址) 00
(記憶體位址) 00
錯誤結果(Wrong Output):
(記憶體位址) ffffffff
(記憶體位址) 00
(記憶體位址) 00
(記憶體位址) 00
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <stdio.h>
void printByte(char*, int);
void printInt(int);
void main()
{
char c;
int i;
int ex;
scanf("%c %d",&c, &ex);
//printf("%p is the original location\n", &a);
// for (i = 0; i < 4; i++)
printByte(&c, sizeof(i));
printInt(ex);
//printByte(&a, i);
return;
}
void printByte(char* a, int len)
{
int i;
printf("\n");
for(i = 0; i < len; i++)
{
printf("%p\t%.2x\n", a + i, *(a + i));
}
}
void printInt(int s)
{
printByte((char*)&s, sizeof(s));
}
補充說明(Supplement):
我不知道為何輸出一個byte為何會輸出八位
如果輸入12345
會得到:
(記憶體位址) 39
(記憶體位址) 30
(記憶體位址) 00
(記憶體位址) 00
這是正確的
但輸出某些數字,例如:1234567
就會得到
(記憶體位址) ffffff87
(記憶體位址) ffffffd6
(記憶體位址) 12
(記憶體位址) 00
1234567轉為16進位是12D687
所以基本上這個是正確的結果,但不曉得為何前面會多出一堆f
但有時會出現,有時又不會......
感謝!!