- 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);
这个是强制类型转换,并不能将数字转换为对应的字符