1857年是A的另一个字符代码吗?

use*_*458 1 c++ ascii fstream character-encoding

以下语句打印'A'.为什么?"A"的ASCII码是不是65?

cout<<char(1857);
Run Code Online (Sandbox Code Playgroud)

1857年是否会与演员一起变成65岁?我正在使用int_type get()方法从fstream中读取字符,并为'A'获取类似1857的奇怪值,为'B'获取1858等等.

这是我的代码:

int ch;
while(file) // file is fstream.
{
  ch = file.get();
   cout<<char(ch)<<":"<<ch<<" ";  /*prints A:1857 B:1858 C:1859*/
}
Run Code Online (Sandbox Code Playgroud)

注意:将int转换为char将其截断为8位,因此将1857转换为65.但是为什么get()方法返回1857而不是65?

Sak*_*mar 5

1857 in binary 0111 0100 0001
Run Code Online (Sandbox Code Playgroud)

Char截断低位8,即0100 0001二进制65,即字符'A'