c++ - big_endian 检查的 c++ 程序中没有输出

标签 c++

我正在试验 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 中写了 %c 而不是 %d 中的 printf );自 *ptr将是 0 或 1,在这两种情况下你都会以不可打印的字符结束。

要解决此问题,请显式转换 *ptrint :

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

关于c++ - big_endian 检查的 c++ 程序中没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090342/

相关文章:

c++:异步抛出 C2752 和 C2064

c++ - 关闭其存在依赖于与 C++ 中的 .close() 语句相同的 bool 的文件流时出错

C++数据结构保持插入顺序并能够通过键查找

c++ - 从 Eclipse 启动时,OpenCV C++ 应用程序立即终止

c++ - 二维数组C++中的递归问题

c++ - 指向变量的指针与指向一个元素数组或零元素数组的指针相同吗?

c++ - 如果函数返回一个 int,是否可以将 int 分配给它?

c++ - C++ 编译器实际上是如何传递引用参数的?

c++ - 如何诊断 g++ 4.3.4 中对 sqrt(int&) 的模糊调用

c++ - 如何获取函数返回类型的模板成员的取消引用类型