c语言有道题不明白,为什么结果得5.5,麻烦讲解一下
发布网友
发布时间:2024-10-04 03:52
我来回答
共3个回答
热心网友
时间:2024-10-22 03:35
先来看b/3*(int)(a+c)/2这一部分。
b是int型,b/3=2;
a,c都是float型,a+c=7.2;
(int)(a+c)为7,所以为2*7/2,故为7。
所以原式等于a+7%4=2.5+3=5.5。
热心网友
时间:2024-10-22 03:34
a+(int)(b/3*(int)(a+c)/2)%4
先计算 b/3 = 2
然后 (int)(a+c) = 7
然后 2 * 7 / 2 = 7
然后 7 %4 = 3
最后 a + 3 = 5.5
热心网友
时间:2024-10-22 03:28
c语言中不同类型变量运算程序会首先统一变量类型再计算,一般简单类型向复杂类型转换,如float和int类型会统一为float类型再运算,float和double类型会统一为double类型再运算。
先从里面开始,b/3=7/3=2(整型变量相除商也为整型,只取整数部分),a+c=7.2,前面有强制转换符(int),7.2本是float类型,转换为int变为7(不是四舍五入,是直接舍弃小数部分),2*7=14,14/2=7,7强制转换为int还是int类型7,7%4=3(%取模符号,也即7/4=1余3,取余数3),a+3=2.5+3,3转换为float即3.0,2.5+3.0=5.5,所以最后结果5.5
热心网友
时间:2024-10-22 03:30
先来看b/3*(int)(a+c)/2这一部分。
b是int型,b/3=2;
a,c都是float型,a+c=7.2;
(int)(a+c)为7,所以为2*7/2,故为7。
所以原式等于a+7%4=2.5+3=5.5。
热心网友
时间:2024-10-22 03:35
c语言中不同类型变量运算程序会首先统一变量类型再计算,一般简单类型向复杂类型转换,如float和int类型会统一为float类型再运算,float和double类型会统一为double类型再运算。
先从里面开始,b/3=7/3=2(整型变量相除商也为整型,只取整数部分),a+c=7.2,前面有强制转换符(int),7.2本是float类型,转换为int变为7(不是四舍五入,是直接舍弃小数部分),2*7=14,14/2=7,7强制转换为int还是int类型7,7%4=3(%取模符号,也即7/4=1余3,取余数3),a+3=2.5+3,3转换为float即3.0,2.5+3.0=5.5,所以最后结果5.5
热心网友
时间:2024-10-22 03:31
a+(int)(b/3*(int)(a+c)/2)%4
先计算 b/3 = 2
然后 (int)(a+c) = 7
然后 2 * 7 / 2 = 7
然后 7 %4 = 3
最后 a + 3 = 5.5