请问这个条件表达式的结果类型为什么是double?
c语言吧
全部回复
仅看楼主
level 2
苍穹之颠 楼主
-3>2?1.0:1
2014年06月24日 14点06分 1
level 16
1.0和1推导出的类型。
2014年06月24日 15点06分 2
如果把1.0换成5,那是不是结果类型就仍然是int?
2014年06月24日 15点06分
回复 苍穹之颠 : √
2014年06月25日 10点06分
level 11
printf("%d",
sizeof(1?(short)1:(short)1.1));
为何不是2。单独sizeof (short)是2
2014年06月25日 10点06分 5
为什么我编译哦结果就是2 啊
2014年06月25日 11点06分
回复 CQ296645660 :雅蠛蝶?@zjfaok 求解释。
2014年06月25日 11点06分
回复 liuzhongzem :就是2啊,而且类型就是short要不要截个图给你看看
2014年06月25日 11点06分
@刘高燕520😘 求编译器版本
2014年06月25日 11点06分
level 13
1。printf("%zu",sizeof...) 2。short在表达式中提升为int
2014年06月25日 10点06分 6
谢!佩服。。
2014年06月25日 10点06分
这么说char也是吧。。还有,如果编译器不支持zu怎么破
2014年06月25日 10点06分
@liuzhongzem unsigned short/char/unsigned char/signed char也都会进行提升。不支持%zu说明编译器该换了
2014年06月25日 11点06分
回复 zjfaok :看看5L的回复怎么解释。谢谢。
2014年06月25日 11点06分
level 8
2014年06月25日 10点06分 7
level 13
2014年06月25日 11点06分 8
[拍砖]目测是C和C++规定不同。C++规定?:的第二和第三个操作数是相同类型的时候不发生转换,但是C没有这一条规定……
2014年06月25日 11点06分
回复 zjfaok :我不知道我刚学的c跟c++有可能老师上课没讲到,我就很奇怪两个short+的时候他提升成int 另一个为什么不像你说的一样提升成int;
2014年06月25日 11点06分
回复 zjfaok :还有你写成cout << typeid(i=1 ? (short)1 : (short)1.1).name()这样让他=的时候又提升成int了我搞昏了
2014年06月25日 11点06分
回复 CQ296645660 :先分清C和C++再说
2014年06月25日 11点06分
1