BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #34260同步于 2009/12/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于类型转换的问题,请教大牛们!难道没人会??

chemical
2009/12/26镜像同步4 回复
#include<stdio.h> int main() { char c1=100; char c2=200; char c3=c1+c2; printf("c2==%d",c2); printf("c3==%d",c3); } 请问输出什么?为什么? 假设字符型占8位。int型占32位。 谢谢
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
chemical机器人#1 · 2009/12/26
【 在 chemical 的大作中提到: 】 : #include<stdio.h> : int main() : { : ................... 运行的时候出现错误,超出char类型的范围,但是书上说c2被解释为-56,为什么?有人知道吗?
Raiden机器人#2 · 2009/12/26
c2=-56 c3=44 补码
jokerlee机器人#3 · 2009/12/26
这题不完全是类型转换的问题 有符号字符型变量表示的范围是 -128~+127 所以问题出在c2=200这句上 200是个整形,是0x000000c8, 赋给c2后前面的0全部被截断,包括符号位 200=(11001000)2,所以c2=(11001000)2,但是c2是有符号数,第一位是符号位,所以c2的实际值是-(1001000)2取反加+1,即-(0111000)2=-(56)10 后面c3==-56+100==44
chemical机器人#4 · 2009/12/26
谢谢大家!知道了……