关于在C++中使用整数,我有一个奇怪的问题.
我写了一个简单的程序,它将一个值设置为一个变量然后打印它,但它没有按预期工作.
我的程序只有两行代码:
uint8_t aa = 5;
cout << "value is " << aa << endl;
Run Code Online (Sandbox Code Playgroud)
这个程序的输出是 value is
即,它打印为空白aa.
当我改变uint8_t到uint16_t上面的代码就像一个魅力.
我使用64位的Ubuntu 12.04(精确穿山甲),我的编译器版本是:
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Run Code Online (Sandbox Code Playgroud) 一元运算+符是否仅包含与一元运算-符对称,还是在C++代码中找到了一些实际用途?
在这里搜索,我遇到了C中一元'+'运算符的目的是什么?,但唯一有用的场景涉及预处理器宏.这些都是很好的,但它们似乎是一些不常见的情况,并涉及宏.是否有涉及更常见的C++代码的用例?
我正在编写以下代码:
#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表现如此?
如果我运行此代码:
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。