我正在使用一段代码(在本网站的其他地方找到)来在运行时检查字节序。
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"
我认为十六进制的第一部分是指针的内存地址,第二部分是它所持有的值。我知道在旧式C++中\0代表空终止符,但为什么它在前面呢?这与字节序有关吗?在小端机器上:01是第一个字节,因此是最不重要的字节(字节位置0),\0是第二个字节/最后一个字节(字节位置1)。
另外,cout语句不打印指针地址或其值。原因是什么?
numPtr
之后才定义它,这样怎么可能编译通过呢? - Some programmer dude