若有定义"int a=7; float x=2.5, y=4.7;",则表达式x+a%3*(int)(x+y)%a/4值是( )
- A. 2.500000
- B. 3.500000
- C. 2.750000
- D. 3.750000
答案:A
解析:在运算之前我们要清楚程序中出现的几种运算符的优先级,其中“(x+y)”优先级最高,因为它由括号包含,其次是取余“%”,乘“ * ”,除“ / ”,这三个运算符按照先左后右的顺序运算,最后是加“+”。运算式中(int)的含义是将后面紧随的(x+y)的运算结果1强行转化为整形类型,我们正式开始运算。
x+y=7.2
转化为整形后为7
7%a=7%7=0
0/4=0
x+0=2.5+0=2.5
故选择A选项。
转化成c代码如下,同学们可自行拷贝验证。
#define _CRT_SECURE_NO_WARNINGS 1//vs编译环境下会用到这个,在这里没用
#include<stdio.h>
int main()
{
int a = 7;
float x = 2.5, y = 4.7;
printf("%f", (x + a % 3 * (int)(x + y) % a / 4));
return 0;
}