C语言问题。请高手

来源:百度知道 编辑:UC知道 时间:2024/05/30 06:20:05
我是一名初学者,学了一个月的C语言,到做题就特别的迷

请高手帮我讲一下题..感激不尽

1:若有定义“int m=5,y=2;”则执行语句“y=+=y—=m*=y”变量y的值是:___

看到这题,我想了好长时间也没作对。
我是这样做的:我先算m=m*y 之后作y=y+y ?

2:还有一道题是:表达式8.0*(1/2)的值为:
我看答案是0.0 我就怎么也算不出来是0.0啊?

3:表达式3&4的值是?表达式3|4的值是?
这道题,我自学的时候 没见过...

我看能不能帮上忙:
1.=是赋值运算,故连等式是从右向左算。那里错了。重举个例子“y=m+=y-=m*=y”?算是的话,先算最右边等式m*=y.所以此时:
m=10,y=2;
再继续,即是算y-=(m=10),此时:
m=10,y=-8;
再来,m+=(y=-8),此时:
y=-8,m=2;
最后,y=(m=2),得到:
y=2,m=2.
这即是结果。

2.1/2,表示1和2均是整型,整型数之间运算结果仍是整型。本来是0.5,但整型就只能为0了。

3.这是位与、位或运算,要转化为二进制的。如:
3为0 1 1,4为1 0 0,对好,如下:
0 1 1
1 0 0
看到没?从上到下对应的分别是0--1,1--0,1--0.这几组之间分别进行与运算,得0,0,0.所以3&4=0;同理,或运算时,得到1,1,1.故3|4=7(二进制是111)。

希望对你有所帮助。呵呵!

1、y=+=y—=m*=y貌似存在语法错误,你再写清楚点,是不是你表达式写错了;
2、8.0*(1/2):首先计算(),因为1和2都是整型,所以1/2=0.5,0.5取整型就是0,所以结果就是0.0
3、3&4 3|4 都是位运算。也就是将3和4转换为二进制再做运算,3的二进制是11,4的二进制是100。&的意思是说他们相同位上都为1,&的结果才为1,| 的意思是说他们相同位上只要有一个为1,结果就为1。
3=011
4=100 3&4=000=0, 3|4= 111 = 7

不知道你看明白了没

1是y+=y-=m*=y吧?从右往左算m=m*y=10,y=y-m=-8,y=y+y=-16结果16
2是因为1和2都是整型所得结果也是整型0,改成1.0/2
3中&是按位与,I是按位或自己看书,3&4=11&100=0,3I4=7