我使用了一段代碼(在本站點發現其他地方),它在運行時檢查字節序。理解字節順序 - 變量值
static bool isLittleEndian()
{
short int number = 0x1;
char *numPtr = (char*)&number;
std::cout << numPtr << std::endl;
std::cout << *numPtr << std::endl;
return (numPtr[0] == 1);
}
在調試模式下,該值numPtr看起來像這樣:0x7fffffffe6ee "\001"
我認爲第一個十六進制部分是指針的內存地址,而第二部分是其持有的價值。我知道\ 0在舊式C++中是空終止的,但爲什麼它在前面?這是否與排序有關?
在小端機器上:01第一個字節,因此最不重要(字節位置0),和\ 0第二個字節/最終字節(字節位置1)?
此外,cout語句不打印指針地址或它的值。這是因爲什麼?
您在使用它之後定義了'numPtr',那將如何編譯? – 2012-01-05 13:22:45
現在已經改變了。代表我複製粘貼錯誤。 – nf313743 2012-01-05 13:28:36
爲什麼你需要在運行時檢查字節順序。是不是每個端口的make文件的一部分? – 2012-01-05 14:28:16