C语言求表达式的值

2021-03-10 14:29:48 字数 980 阅读 4707

1楼:匿名用户

float x=2.5,y=4.7;

int a=7;

printf("%.2f",x+a%3*(int)(x+y)%2/4);

运行结果是bai2.50

解释如下:

a%3------1####整型

du(int)(x+y)-----7####整型a%3*(int)(x+y)----7####整型a%3*(int)(x+y)%2-----1-----####整型a%3*(int)(x+y)%2/4-------0####整型####注意zhi这里因为被除数1和除dao数4是整数,所以会自动专进行类型转属,因此是0,而不是0.25

####所以最后的结果是2.50,而不是2.75你可以试着运行下面的程序:

float x=2.5;

int a=1;

printf("%.2f",x+a/4);

printf("%.2f",x+1/4);

/*printf("%.2f",1/4);*/####这里就会得不到结果

####类型转换是非常重要的,但也特别容易忽略...

2楼:匿名用户

#include

int main()

楼上的程序中错误地把a定义成float型了,float型数组是回不能做%操作的答

3楼:四海为家的鱼

x+a%3*(int)(x+y)%2/4 设x=2.5 ,a=7,y=4.7

其实这道题是考察bai各种运du

算符的优先级的,好象是谭zhi浩强的那本dao书上的习题,你回可以不用编程,直接动脑答算,算完后上机验证一下1.注意这个式子中有一个强制类型转换(int)(x+y),可得其值为7;

2.乘、除、求模运算优先于加减,按照自左至右的结合方式,那么原式为x+7%3*7%2/4,7%3得1,1乘以7,得7,再7%2,得1,1/4得0.25

然后x+0.25,最后得2.75

C语言中表达式1.0 3 3的值是

1楼 匿名用户 对呀,确实是这样的 因为浮点数的精度是这个1 0是浮点数,精度是小数点后6位。 所以1 0 3是0 333333,然后乘以3就是0 999999。 这个题目考查的是大家对各种数据类型精度的理解 2楼 子同 1 0 3按照单精度计算只保证小数点后面的前6位是有效位数 精度是6 ,所以计...

C++语言:三目运算符表达式1?表达式2表达式

1楼 匿名用户 你只要知道它是这么执行的就ok了, 先判断表达式1的值,为假或者0,则执行表达式3 否则,执行表达式2。 2楼 匿名用户 一成立执行二一不成立执行三谢谢采纳 3楼 旁文玉建媪 当然是从左到右了。先判断表达式1,若满足,就执行2,否则执行3。 三目运算符 表达式1 表达式2 表达式3 ...

c语言中,表达式"0?2.0,3 2:0 3》

1楼 匿名用户 0 2 0 3 2 0 3 2 55 6 0 4 3 先看第一个问好表达式 0是false,所以去冒号后面的 0 3 2 55 6 0 4 3 0 3 2即0 true,注意先算大于等于,也是false所以取 6 0 4 3 ,这是个逗号表达式,其值为最后一个,4 3,结果是1 2楼...