【发布时间】:2015-02-24 09:27:25
【问题描述】:
#include <iostream>
#include <cstdint>
#include <cstdio>
using namespace std;
int main()
{
uint16_t ii;
std::cin >> ii;
printf("%d\n", ii);
}
当我输入5 时,输出也是5。但是当我将ii 的类型更改为uint8_t 时,我没有得到5,而是53,这似乎是5 的ASCII 值。这是预期的吗?
【问题讨论】:
-
但是,我使用 printf 而不是 cout 对。不是cin的问题吗?
-
打印也有问题,为什么投到
uint8_t? -
@KarolyHorvath 对……我打印的方式也是错误的。但不知何故,它打印出正确的价值.. 不知道为什么
-
因为它通常与 C 和 C++ 一样,这是运气和/或实现定义(或什至未定义)行为的结果。哥伦布侦探正在为你准备答案。在这种情况下,符号位为 0。