Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法打印号码 问题_C++_Pointers_Printf_Cout - Fatal编程技术网

C++ 无法打印号码 问题

C++ 无法打印号码 问题,c++,pointers,printf,cout,C++,Pointers,Printf,Cout,我没有从一个简单的cout得到任何输出,而printf将始终打印数字: std::cout << variableuint8; // prints nothing printf("%u", variableuint8); // prints the number 环境 开发机器: OS X 10.6.8 编译器LLVM1.7 代码3.2.6 试验机: OS X 10.6.8 将std::cout它将字符作为字符打印 #include <iostream>

我没有从一个简单的cout得到任何输出,而printf将始终打印数字:

std::cout << variableuint8;  // prints nothing
printf("%u", variableuint8); // prints the number
环境
  • 开发机器:
    • OS X 10.6.8
    • 编译器LLVM1.7
    • 代码3.2.6
  • 试验机:
    • OS X 10.6.8

    • std::cout它将
      字符作为字符打印

      #include <iostream>
      
      int main() {
              unsigned char c = 0x41;
              std::cout << c << std::endl;
              return 0;
      }
      
      #包括
      int main(){
      无符号字符c=0x41;
      
      std::cout您是否尝试将其转换为int,以避免依赖于实现所使用的字符类型:

      std::cout << (int)variableuint8;
      

      std::cout这就是问题所在。我的示例输出不正确,您是对的-我已将其更改为演示我实际遇到的问题。这不是一个真正的问题。示例程序应打印
      42
      *
      )我在我的例子中犯了一个错误——肯尼是正确的。我用我正在处理的实际值修改了我的例子。很抱歉,混淆了。是的,这是正确的修复。在我的例子中,我投下了代码>(UTIN 16)< /C>。但是效果是一样的。我只想问下面的行是用C++定义的吗?(设备化*)somerandomdata;`如果对齐不是
      DeviceNotification
      所需的对齐,那么这行不是调用了未定义的行为吗?@AraK这些都在x86上运行,这允许未对齐的内存访问。它们可能会慢一些,因为它们可能需要两次读取内存总线才能获得跨边界拆分的值,但它可以工作很好。你可以做一些实验来证明这一点-如果你做了,让我们知道是否有速度差异。谢谢,这很有趣。编写这样一个微型基准测试会很好。即使在有严格对齐要求的机器上,这些都倾向于应用于基本类型,而不是结构。特别是,访问字节大小成员(例如
      UInt8 len
      )是安全的。这样会更简单
      #include <iostream>
      
      int main() {
              unsigned char c = 0x41;
              std::cout << c << std::endl;
              return 0;
      }
      
      std::cout << (int)variableuint8;