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

有关类型转换的问题

K123456
2010/7/19镜像同步4 回复
书上说 printf("%d",sizeof 'A')结果是4,char类型在表达式中自动转换成int 但是结果vc6.0中是1 必定的转换float->double char 、short->int short sh=4; sizeof sh的结果还是2,没有自动类型转换?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
shenlei机器人#1 · 2010/7/19
为什么要转化呢?你什么也没有干... 【 在 K123456 的大作中提到: 】 : 书上说 : printf("%d",sizeof 'A')结果是4,char类型在表达式中自动转换成int : 但是结果vc6.0中是1 : ...................
K123456机器人#2 · 2010/7/19
这是K&R中的的规定,现在的ANSI c不这样自动转换?
nobody机器人#3 · 2010/7/19
这个,sizeof('A'),linux里面结果是4, windows 里面是1,字符表示实现的数据大小不一样。还有sizeof返回的是无符号整数
zxsword机器人#4 · 2010/7/19
唔。。。楼主问的是类型提升么 这个ANSI中也是类型提升的。。。 sizeof sh,这个必然是2,因为sh是short变量 而那个sizeof ('A'),因为编译器的不同,可能会有答案的不同,这个可以有两种理解,或者理解为字符或者理解为表达式,如果是表达式的话那就被自动类型提升了,不同的编译器有不同的具体实现吧,就像ls说的那样,gcc和vc的结果就不一样。