qq超市粉丝英雄搭配:C语言算术运算初级题求解。。。

来源:百度文库 编辑:高考问答 时间:2024/05/07 03:31:12
1. 求这题算术表达式
x+a%3*(int)(x+y)%2/4
x=2.5 a=7 y=4.7
答案是2.5 好象a%3*(int)(x+y)%2/4算下来=0.25被省去了
怎么回事?什么意思?

2. a为整形变量
写出这个表达式算后a的值 设a原来=12
a+=a-=a*=a
答案为0
看到书上的例题我知道大概怎么得出这答案
可是为什么不是-144呢
就是该怎么理解这题拉~.~

谢谢~!
只有 狐狸花猪 这句分析说到了我的心里

1 a%3*(int)(x+y)%2/4得0,因为将x+y转成int型后,a%3*(int)(x+y)%2/4整个式子值就成了int型,1/4后就成0了

现在就想多个人来帮我确认下~

很感谢zamanewby
其实你说的我也知道
不过
我只是想说明下
我想知道
为什么1/4结果是0
怎么考虑?为什么不是0.25呢?
偶是自学的
问题低级
望见谅!

啊 啊啊啊啊

找到答案了
C的内容真的很细
真的要多看
在书上看到原因了:
两个整数相除的结果还是整数!~
舍去小数部分
原来如此~
谢谢大家了 呵呵~~

1 a%3*(int)(x+y)%2/4得0,因为将x+y转成int型后,a%3*(int)(x+y)%2/4整个式子值就成了int型,1/4后就成0了。

2 += -= *= 结合方向从右向左

a=a*a=144
a=a-144=0
a=a+0=0

1) x+y = 7.2, (int)(x+y)=7, a%3=1, 1*7=7, 7%2=1, 1/4=0

2.5+0 = 2.5

2) 1.从右向左看 2.注意这是同一个a, 右边的a改变了, 左边也同时改变

a *= a; 所以a = 144 , a -= a, 是144 - 144 = 0, a += a 是0 + 0 = 0, 所以答案是0

不知道我说清楚了没有

整天就考这个, 中国的教育制度, 皑皑, 不说什么了, 一点儿都不实用

继续回答你的问题

“1 a%3*(int)(x+y)%2/4得0,因为将x+y转成int型后,a%3*(int)(x+y)%2/4整个式子值就成了int型,1/4后就成0了”

这个解释是错误的, (int)只能改变离它最近的那个值或离它最近的括号里的值。 因为2、4等这些数本身就是整数类型。 你可以试试把2或4改成2.0或4.0, 这样, 你就发现, 那个(int)只改变了(x+y)的类型, 而未改变整个表达式的类型。

“只有 狐狸花猪 这句分析说到了我的心里 ”

记住, 赋值运算符的级别是最低的, 仅比 , 高。

这些都是赋值运算符:

=
+=
-=
*=
/=
%=
&=
^=
|=
<<=
>>=

1.(int)(x+y)=7 按照“%”,“*”,“/”结合性从左到右,则a%3*(int)(x+y)%2/4=0
2.赋值运算结合性是从右到左。
C语言里的运算结合性是分两种,从左到右和从右到左,而不是数学上的只有从左到右

x+a%3*(int)(x+y)%2/4
x=2.5 a=7 y=4.7
解法:2.5+7%3(int)(4.7+2.5)%2/4=2.5+1*7%2/4=2.5+7%2/4=2.5+1/4=2.5+0=2.5

运算优先原则:(有>表示优)
1:单目>双目
2:算术运算>关系运算>逻辑运算>赋值运算
*有括号()的,先算括号内的.