相关疑难解决方法(0)

uint8_t无法用cout打印

关于在C++中使用整数,我有一个奇怪的问题.

我写了一个简单的程序,它将一个值设置为一个变量然后打印它,但它没有按预期工作.

我的程序只有两行代码:

uint8_t aa = 5;

cout << "value is " << aa << endl;
Run Code Online (Sandbox Code Playgroud)

这个程序的输出是 value is

即,它打印为空白aa.

当我改变uint8_tuint16_t上面的代码就像一个魅力.

我使用64位的Ubuntu 12.04(精确穿山甲),我的编译器版本是:

gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Run Code Online (Sandbox Code Playgroud)

c++

129
推荐指数
7
解决办法
7万
查看次数

C中一元'+'运算符的目的是什么?

在C中,写下这样的内容是合法的:

int foo = +4;
Run Code Online (Sandbox Code Playgroud)

然而,据我所知道的,一元++4是一个空操作.是吗?

c

74
推荐指数
7
解决办法
2万
查看次数

一元+算子有实际用途吗?

一元运算+符是否仅包含与一元运算-符对称,还是在C++代码中找到了一些实际用途?

在这里搜索,我遇到了C中一元'+'运算符的目的是什么?,但唯一有用的场景涉及预处理器宏.这些都是很好的,但它们似乎是一些不常见的情况,并涉及宏.是否有涉及更常见的C++代码的用例?

c++ operators unary-operator

28
推荐指数
4
解决办法
2217
查看次数

cout不打印unsigned char

我正在编写以下代码:

#include<iostream>
#include<stdio.h>

using namespace std;

main() {
    unsigned char a;
    a=1;
    printf("%d", a);
    cout<<a;
}
Run Code Online (Sandbox Code Playgroud)

它打印1和一些垃圾.

为什么cout表现如此?

c++ printf

16
推荐指数
3
解决办法
5万
查看次数

std::cout 将 uint8_t 作为字符处理

如果我运行此代码:

std::cout << static_cast<uint8_t>(65);
Run Code Online (Sandbox Code Playgroud)

它会输出:

一种

这是数字 65 的 ASCII 等价物。这是因为它uint8_t被简单地定义为:

typedef unsigned char uint8_t;
Run Code Online (Sandbox Code Playgroud)
  • 这种行为是标准吗?

  • 不应该是定义uint8_t保证被处理为数字而不是字符的更好方法吗?

我无法理解如果我想打印uint8_t变量的值,它将被打印为字符的逻辑。

PS 我使用的是 MSVS 2013。

c++ cout language-lawyer c++11 fixed-size-types

5
推荐指数
1
解决办法
1747
查看次数