【发布时间】:2020-02-26 04:07:10
【问题描述】:
该代码要求一个正整数,然后第一个输出显示相应的 ASCII 代码,其他的用于将整数转换为十进制、八进制和十六进制等价物。我理解代码的逻辑,但我不理解在第 10 行 c=code 上所做的分配,而不是在第 12 行 code=c 上所做的分配。当我们“交换”这两个变量时,后台会发生什么。
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
unsigned char c = 0;
unsigned int code = 0;
cout << "\nPlease enter a decimal character code: ";
cin >> code;
c = code;
cout << "\nThe corresponding character: " << c << endl;
code = c;
cout << "\nCharacter codes"
<< "\n decimal: " << setw(3) << dec << code
<< "\n octal: " << setw(3) << oct << code
<< "\n hexadecimal: " << setw(3) << hex << code
<< endl;
return 0;
}
【问题讨论】:
-
所以它是关于代表一种类型的位数。
char是(至少,但几乎总是)8 位。int至少为 16 位,但更常见的是 32 位。通过将int分配给char,在隐式类型转换中会删除 32-8=24 位。顺便说一下,这通常会导致“精度损失”编译器警告。