int p=89; //An integer defined and declared
char g; //A character defined
g=p; //Assigning the character the value of the integer p
cout<<g; //Here the output comes out to be "Y"
cout<<endl<<"Enter any number";
cin>>g;
cout<<g; //Here the output is coming out to be the integer you have inputted
它不应该输出一个整数而不是给出"Y"
吗?它被分配了一个整数的值?
当您为字符变量分配整数时,它会从内存中读取该整数并存储在其位置,在解释该字符值时,它会返回它的 ASCII 等效值。在将 cin 缓冲区读取到字符变量 (char( 时,它会读取内存中的 char 或其 ASCII 值的 1 个字节,并将输出作为 ASCII 等效项给出
。您需要了解int
和char
之间的区别。
int
变量的大小为 4(或 8(个字节,具体取决于您的计算机,而char
变量仅为 1 个字节。- 由于类型升级,
char
可隐式转换为int
。 - 数字具有其 ASCII 等效字符。
所以
int p=89; //An integer defined and declared
char g; //A character defined
g=p; //Assigning the character the value of the integer p, which is 'Y' in ASCII - note single quotes
cout<<g; //Here the output comes out to be 'Y'
cout<<endl<<"Enter any number";
cin>>g; // say 88, but since size of char is 1 byte, it only saves the first character, i.e., '8'
cout<<g; // prints '8' the character, not the integer
当你向 char g 输入一些东西时,你实际上是输入一个 char 而不是 ASCII 值。
例如:
char bar;
cin>>bar;// assume you type 67
cout<<bar;
输出将为 6,因为 67 不是整数而是 2 个字符,而 char bar 最多只能容纳 1 个字符,因此,输出将为 6。