您的位置:首页 > 编程语言 > C语言/C++

C++中int型128转入char型变量c中

2015-10-05 18:48 357 查看
《C++程序设计原理与实践》Bjarne Stroustrup著 第47页程序。

#include <iostream>

using namespace std;

int main()

{

double d=0;

while(cin>>d){

int i=d;

char c=i;

int i2=c;

cout<<"d=="<<d<<"\n"

<<"i=="<<i<<"\n"

<<"i2=="<<i2<<"\n"

<<"char("<<c<<")"<<endl;

}

return 0;

}

第一个问题:int型128为什么能转为char型的128?此程序,第10行,执行 “char c=i;”时,当,i值为128时,仍能输出ASCII码为128的字符(在Windows7系统中,用Borland C++ 5.5 for Win32)。

但是,int占4个字节,在转化为char型时只保留最底1个字节的值,而char的取值在-128~127之间。我认为程序只能输出0~127之间的ASCII码字符,而不能输出ASCII码为128的字符。

也就是说,int型数据转为char型时,只能转换0~127之间的值。为何,i值为128时,仍能输出ASCII码为128的字符?

第二个问题:从类型间转换看:int型128补码为:0000 0000 0000 0000 0000 0000 1000 0000【补】转化为char型截取低8位:1000 0000【补】。到这里又出现问题,1000 0000【补】表示的数值是128?还是-0?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: