c++程序对big_endian检查没有输出

No output in c++ program for big_endian check

本文关键字:检查 输出 endian 程序 big c++      更新时间:2023-10-16

我正在用c++做实验,我决定尝试is_big_endian代码,就像我在C中做的一样。然而,当我试图打印出指针的值时,我没有得到任何输出。我尝试了C和c++风格的强制转换。我做错了什么?

#include <iostream>
using namespace std;
int main (void){
    int num = 1;
    char *ptr = (char *)&num;
    //char *ptr = reinterpret_cast<char *>(&num);
    cout << "Value is: " << *ptr << endl;
}

operator<<看到您正在输出char,因此它将其作为字符打印,而不是作为数字打印(就像在C中您在printf中写%c而不是%d一样);并且由于*ptr将为0或1,因此在这两种情况下,您最终都会得到一个不可打印的字符。

要解决这个问题,显式地将*ptr转换为int:

cout << "Value is: " << int(*ptr) << endl;