全部问题 > 当前问题

强制类型转换

(int)((double)5/2)=(int)(2.5) (int)((double)(5/2) =(int)((double)(2)这两个强制类型转换具体过程到底是什么?

流行的云 2020-1-19 10:51:28

共 1 个回答

【C语言】桦桦 2020-3-7 12:02:40

括号优先级最高,所以先执行的是5/2,在c语言中,除法符号/ 的两边的操作数如果都是整形,那么它们的商也必须是整形,所以虽然5除以2等于2.5但是会被强制转换为整形,也就变成了整形2了  (double)(5/2)=(double)2

再加2.5是4.5,强制转换为整形4

问题来自: 浮点类型
表达式(int)((double)(5/2)+2.5)的值是 __【6】__ 。
A. 2
B. 3
C. 4
D. 5
答案:C
解析:(int)((double)(5/2)+2.5) =(int)((double)(2)+2.5) =(int)(2+2.5) =(int)(4.5) =4,因此答案是4。