编写一个程序,确定计算机是大端序还是小端序。
bool endianness() {
int i = 1;
char *ptr;
ptr = (char*) &i;
return (*ptr);
}
我有上面这个函数,但我不太理解。ptr = (char*) &i,我认为这意味着一个指向字符的指针位于i所在的地址,所以如果一个整数是4个字节,比如ABCD,当你在它上面调用char*时,我们是在谈论A还是D?为什么?
请问是否有人能详细解释一下这个问题?谢谢。
具体来说,ptr = (char*) &i; 当你把它转换成char*时,&i的哪一部分被获取了?
littleEndian()
,这样返回true
就表示体系结构是小端模式,那么它会更易于理解。endianness() == true
不太具有信息含量。 - Graphics Noobbool little_endian(void) { static const int i = 1; return reinterpret_cast<const char&>(i) == 1; }
- GManNickG