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