广安雷兴平:请问int怎样转换到char?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/02 09:01:20
题目是
#include<iostream>
using namespace std;
int main()
{short int i=289;char c;
c=i;
cout<<c;return 0;}
结果为!(即ASCII码为33)
咋一看就觉得结果为2,因为289中2最在前,char只占一字节,这是我一般的想法,但现在错了.真正结果为33.
其内部程序为
i=289 00000001(8位)00100001(8位)
(根据int转换char规律只将其低8位赋值) 00100001(8位) c=33
我的问题是:i=289怎么得出来的.我用进制转换表,始终都无法转换成289?谢谢!!
唉.等了好几个钟头了.还是没人来.
对于这个问题我只有一招了.#include<iostream>
例子1.
using namespace std;
int main()
{char a=305;
cout<<a;return 0;}
/*例子2{int i=289;char c;
c=i;
cout<<c;return 0;}*/
注意cout每次输出的都是ASCII码.并且有个规律.300其实是,301是-,303是/,304是0,305是1.即305这样得出255+50.ASCII码一共256(算0-255)然后循环退回,50-1(即0)=49(ASCII码为1)

这是我的另一种方法,不过都像正确的,(如果不是正确的谢谢指点).至于我的第1种方法如果哪位大侠能指点下更好!
谢谢

#include<stdio.h>
main()
{
short i;
char c[3];
i=289;
sprintf(c,"%c",i);
printf("%i->%s\n",i,c);
}