将char类型赋值给int打印相应的ASCII字符
Assigning char type to int to print corresponding ASCII character
该代码要求输入一个正整数,第一个输出显示相应的 ASCII 码,其他代码将整数转换为十进制、八进制和十六进制等值。我理解代码的逻辑,但我不理解第 10 行 c=code
上的赋值与第 12 行 code=c
上的赋值。当我们 'swap' 这两个变量时背景会发生什么。
#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
时,它会打印相应的字符。由于 c
是 char
类型,因此行 c = code
将输入的整数转换为字符。您可以通过将任何 int
分配给 char
变量并打印出来来自己测试。
第二个赋值,code = c
,似乎完全没有必要。
那不是交换。 c
被分配了与 code
相同的值,然后该值被分配回 code
。 code
的原始值丢失。
我们可以看到这一点,因为 unsigned char c
(通常)比 unsigned int code
小得多,并且将 code
中的值填充到 c
中可能会丢失一些信息。
例如code
= 257。在c = code;
之后code
仍然是257和c
,假设一个8位char
将是1。 code = c;
之后,code
和c
都会是1。257已经丢失了。
为什么要这样做?当给定 char
时,operator<<
将打印出编码的字符,完全忽略打印为 hex
、dec
或 oct
的请求。所以
<< "\n decimal: " << setw(3) << dec << c
浪费了。给定 int
<<
将尊重修饰符,但如果 c
和 code
具有不同的值,则您正在比较苹果和大脚野人。
该代码要求输入一个正整数,第一个输出显示相应的 ASCII 码,其他代码将整数转换为十进制、八进制和十六进制等值。我理解代码的逻辑,但我不理解第 10 行 c=code
上的赋值与第 12 行 code=c
上的赋值。当我们 'swap' 这两个变量时背景会发生什么。
#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
时,它会打印相应的字符。由于 c
是 char
类型,因此行 c = code
将输入的整数转换为字符。您可以通过将任何 int
分配给 char
变量并打印出来来自己测试。
第二个赋值,code = c
,似乎完全没有必要。
那不是交换。 c
被分配了与 code
相同的值,然后该值被分配回 code
。 code
的原始值丢失。
我们可以看到这一点,因为 unsigned char c
(通常)比 unsigned int code
小得多,并且将 code
中的值填充到 c
中可能会丢失一些信息。
例如code
= 257。在c = code;
之后code
仍然是257和c
,假设一个8位char
将是1。 code = c;
之后,code
和c
都会是1。257已经丢失了。
为什么要这样做?当给定 char
时,operator<<
将打印出编码的字符,完全忽略打印为 hex
、dec
或 oct
的请求。所以
<< "\n decimal: " << setw(3) << dec << c
浪费了。给定 int
<<
将尊重修饰符,但如果 c
和 code
具有不同的值,则您正在比较苹果和大脚野人。