【发布时间】:2015-09-07 10:17:32
【问题描述】:
我不明白为什么从 int 到 char 的转换会给我一个超出 (char) 范围的数字?这是我的 C++ 程序:
#include <cmath>
#include <stdio.h>
int main(){
printf("%c\n",(char) 246 );
printf("%d\n", (char) (246) );
}
我明白了
\366
-10
有什么解释吗?我这里需要的是从 int 到 char 的转换
char int2char(int i);
将截断的“i”返回给字符。当然,可以通过一些(i mod 256) 来做到这一点,但我正在寻找一种使用类型转换来做到这一点的方法。任何想法?
【问题讨论】:
-
-10在char的范围内 -
366 是八进制的 246。 '%c' 不打印数字的值,它打印由它表示的字符,并且您的系统/控制台似乎没有字符,因此它打印转义的八进制表示。
标签: c++ char type-conversion