奇怪的gcc行为与无符号整数

时间:2014-12-27 13:37:10

标签: c++ c++11 g++ c++14

#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似乎是{{1}}的ASCII值。这是预期的吗?

1 个答案:

答案 0 :(得分:11)

uint8_t被允许(但不是必需)成为char的typedef(如果它恰好是无符号的)或unsigned char。并且输入的是字符而不是数字。所以这是有效但不是必需的行为。