当我们将char转换为大于256的数字时会发生什么?

mar*_*gor 1 c++ casting

我创建了一个可以创建256个唯一符号的程序,它工作正常.它通过写入二进制(1-2)的(char)演员来工作.但是如果我决定将(char)257打印到文件,该文件仍然有256个唯一符号.当我cout(char)257时,我在屏幕上看不到任何内容.这只是一个空洞的角色还是实际上指向某个东西?

此外,如果ASCII是128个字母,你会称这个术语为256个字符?UTF-8?

R S*_*ahu 6

当你施放257char,该值被截断为1.

假设sizeof(int)您的平台中为4 ,则以十六进制257表示0x00000101.当你char通过执行强制转换将其截断为a时,你得到0x01,等于1.表示的ASCII字符1不是可打印字符.因此,使用时看不到任何输出:

std::cout << (char)257;
Run Code Online (Sandbox Code Playgroud)

如果您使用:

char c = (char)257;
std::cout << (int)c << std::endl;
Run Code Online (Sandbox Code Playgroud)

你应该1看作输出.

你会称这个术语为256个字符?

我相信你在谈论扩展的ASCII字符.