请问一个字符与整型之间的转换运算有关问题
请教一个字符与整型之间的转换运算问题
#include <iostream>
using namespace std;
int main()
{char c1,c2;
int i1,i2;
cout < < "please input two numbers: ";
cin> > i1> > i2;
c1=i1;
c2=i2;
cout < < "the resulst is: " < <c1 < <c2 < <endl;
system( "pause ");
return 0;
}
如果输入-132和1000,请问如何考虑输出结果是什么?
我输出的结果是|
请问问什么呢?
------解决方案--------------------
如果是 '0 '- '9 '转换的话,这样写 n=ch-48; // 或者 n=ch- '0 ';
如果是多位,就一位一位转,只有一个字符是不够的~~~
------解决方案--------------------
int向char赋值的时候会截短的,只留下低字节的内容.
------解决方案--------------------
ascii转换,严重同意Piao_Polar(飘)的思想
------解决方案--------------------
结果其实跟机器的编码有关. 不过char是一个字节的, 在我机器上的范围是[-128, 127), LZ输入的-132和1000显然都是溢出了, 在这种情形下, 机器自动把他们truncate到[-128,127)之内, 也就是-132+256 = 124了, 1000-4*256=-24了, 而124就是ASCII码|, 而-24不是可显示码.
#include <iostream>
using namespace std;
int main()
{char c1,c2;
int i1,i2;
cout < < "please input two numbers: ";
cin> > i1> > i2;
c1=i1;
c2=i2;
cout < < "the resulst is: " < <c1 < <c2 < <endl;
system( "pause ");
return 0;
}
如果输入-132和1000,请问如何考虑输出结果是什么?
我输出的结果是|
请问问什么呢?
------解决方案--------------------
如果是 '0 '- '9 '转换的话,这样写 n=ch-48; // 或者 n=ch- '0 ';
如果是多位,就一位一位转,只有一个字符是不够的~~~
------解决方案--------------------
int向char赋值的时候会截短的,只留下低字节的内容.
------解决方案--------------------
ascii转换,严重同意Piao_Polar(飘)的思想
------解决方案--------------------
结果其实跟机器的编码有关. 不过char是一个字节的, 在我机器上的范围是[-128, 127), LZ输入的-132和1000显然都是溢出了, 在这种情形下, 机器自动把他们truncate到[-128,127)之内, 也就是-132+256 = 124了, 1000-4*256=-24了, 而124就是ASCII码|, 而-24不是可显示码.