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

时间:2015-03-21 05:33:07

标签: c++ casting

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

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

2 个答案:

答案 0 :(得分:6)

257投射到char时,该值会被截断为1。

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

std::cout << (char)257;

如果您使用:

char c = (char)257;
std::cout << (int)c << std::endl;

您应该看到1作为输出。

  

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

我相信你在谈论extended ASCII characters

答案 1 :(得分:0)

你无法'char转换为数字'。你可以将一个数字转换为char但是你得到的是char,,它不够宽,不能容纳大于255的数字。