首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

强制类型转换解决方法

2012-02-19 
强制类型转换C/C++ codeint main(void){int n 10char ch[10]n 1for (int i 0 i 10 i++)ch[

强制类型转换

C/C++ code
int main(void){    int n = 10;    char ch[10];        n >>= 1;    for (int i = 0; i < 10; i++)        ch[i] = (1 & n) + '0';    for (i = 0; i < 10; i++)        printf("%c ", ch[i]);    putchar('\n');    return 0;}


有点不明白ch[i] = (1 & n) + '0';这里的'0'启到了的是一个可以自动转换成字符的形式,但不不加'0',我要的是强制转换,我写这样ch[i] = (char)(1 & n);为什么不行啊。不也是强制转换吗?

[解决办法]
显示出来的字符和数字所两码事, 24, “24” 是两个不同的概念, 24 是个整体, 而“24”是一个序列。 通用 你应该先相加在转换就是一个结果了。
(char)((1 & n) + ‘0’)
[解决办法]
ch[i] = (1 & n) + '0';这里的'0'启到了的是一个可以自动转换成字符的形式,

首先这一行代码不是强制类型转换,是一个数字加上 '0' 的ASC码,就变成了对应的字符

ch[i] = (char)(1 & n); 

这个是强制类型转换,并不能将数字转换为对应的字符

热点排行