一道C语言的简单的算术问题,请说明运算顺序。

定义 int a=7;float x=2.5;y=4.7;
请问 x+a%3*(int)(x+y)%2/4 等于多少?

由于 * / %以及()优先级相同,并且高于+,所以会先计算:

a%3*(int)(x+y)%2/4

由于()的优先级最高,所以先计算x+y并进行类型转换,之后上式就变成了:

a%3*7%2/4

之后由于这里的运算符优先级相同,而且结合性是从左向右的,所以从左向右依次计算,即上式等价于:
(((a%3)*7)%2)/4
把a=7代入上式,得:
(((7%3)*7)%2)/4
于是,最终结果是:
1/4=0
x+0=x=2.5
所以最后的计算结果是2.5
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-09
定义 int a=7;float x=2.5;y=4.7;
请问 x+a%3*(int)(x+y)%2/4 等于多少?
这些操作符的顺序是括号大于除号和余号然后是加号
结果是2.5+1*7%2/4=2.5追问

请在详细点。
括号(int)(x+y)等于7对吧,然后呢?

追答

是的,int是强制取整,把那个小数部分的去掉,.然后就按*%/这样的顺序算下来啊

第2个回答  2012-01-09
x+y=2.5+4.7=7.2;
int(x+y)=7;//强制转化为整数
a%3*(int)(x+y)%2/4=(7%3)*7%2/4=1*7%2/4=1/4=0;//这里是整形数
x+a%3*(int)(x+y)%2/4 =2.5

一道C语言的简单的算术问题,请说明运算顺序。
x+0=x=2.5 所以最后的计算结果是2.5

C语言中算术运算符优先级的问题
2、先运算乘除后运算加减。3、先算术运算,后移位运算,最后位运算。4、逻辑运算最后计算。

c语言运算符号顺序问题
1. y--即y=2-1=1;2. 1<=x,逻辑为真,值为1,判断结束;3.x=1;4.输出 1,1

帮我说说这个C语言的运算顺序吧!拜托了
1、x+=x-=x+x ;这是赋值运算符,运算顺序是从右到左。即先将x+x的值减赋给x变量(x-=x+x,即x=7-14=-7),再将x+=-7 所以x的最终的值为-7+-7 为-14 2、k=(i=1,++i,i++); 这是将括号中的值计算出来后再赋值给变量k,i=1,++i,i++ 从左向右运算,将最...

C语言编写一个计算计算算式的程序。求点思路。本人在计算算式时有问题...
),那就是运算符的优先问题了。就是说乘除优先于加减做运算。你可以用栈来实现这个功能。先将第一个运算符进栈(也就是这里的*号),然后读到第二个运算符的时候,将它与栈中的进行比较,如果栈中的运算符优先级要高就先计算第一个,如果是第二个运算符的优先级高,就继续把这个运算符进栈。重...

C语言,此算术表达式如何运算?a+=a-=a*=a;
c语言中,计算的顺序,大多是从右向左的。建议你上机试一下,结果总是0;include<iostream> using namespace std;int main(){ double a;cout<<"请输入a的值:"<<endl;cin>>a;double m=a+=a-=a*=a;cout<<"a+=a-=a*=a:的值是:"<<m<<endl;} 原因是输入一个值,经过一次运算,a...

c语言问题求解!!!谢谢!!!
+=,-= 是赋值运算符,优先级仅比‘,’高,是明显低于算术运算符‘*’的,而且赋值运算符的结合性是“从右往左”(也就是把右值赋给左值)。当然前提是已经给a赋值了,那么计算的顺序是,a*a -> a = a-(a*a) -> a= a+(a-a*a)2、字符串长度问题。字符串赋初值时,系统自动给字符...

C语言运算的问题
b=a--,先将a的值赋给b,a再自减1 a=3,b=a=3,然后a自减1,a=2 x=(a=3,b=a--),右边为逗号运算符,从左至右执行各语句,并将最后一个语句的计算结果赋给x,对于本题,也就是将b的值赋给x。x=3 因此,执行语句x=(a=3,b=a--);后,x的值是3,a的值是2,b的值是3...

C语言中,z=x+a%3*(int)(x+y)%2\/4;的运算顺序是什么?谢...
4、7 %2=1,式子变 x+1\/4;5、1\/4 整数除整数的除法先做,商得 0,式子变 x + 0;6、x+0=2.5 + 0=2.5,答案2.5。字符解释:(int)(x+y) -- 括号里的先做 2\/4 -- 整数2除以整数4,得整数0,但这里前面还有运算符%,所以你不能先做2除以4的整数除法。是整数与整数的除法...

C语言中算术运算符优先级的问题
另外在C语言里 没有前置后置之分 因为++ -- 是右结合所以 右侧优先运算 表现为 "后置优先级比较高" 的假象 前置和后置的区分是因为运算符重载而后加入C++的 接下来是算术运算符,*、\/、%的优先级当然比+、-高了。移位运算符紧随其后。其次的关系运算符中,< <= > >=要比 == !=高一个...

相似回答
大家正在搜