c语言习题 50

c语言习题这5题我都不明白27.字型符得到的值是数字?28.怎么算的...29.不明白30.后面的一大串算出1我基础不好可以详细说明吗?... c语言习题这5题我都不明白 27.字型符得到的值是数字?
28.怎么算的... 29.不明白 30.后面的一大串算出1
我基础不好 可以详细说明吗?
展开
 我来答
奥贝利科斯
2017-12-04 · TA获得超过3447个赞
知道小有建树答主
回答量:729
采纳率:65%
帮助的人:352万
展开全部

27

A+'6'-'3' 而不是A+6-3,当然这不是重点,注意一下就好

而题目的意思是A的ascII码+6的ASCii码-3的ASCii码,

答案是 'D' 而D的ASCII码就是68

出题人的意思大概是D选项没写单引号,我认为出这题的人脑子不合适,不做深究。

28

考的是运算符的优先顺序,和运算符的结合问题,这种问题是最没意思的

(重复一下出题人脑子有泡)

那么看运算优先级,自加减优先级高于赋值运算符,高于逗号运算符

表面上貌似是先做++,-- 在做赋值,最后做等号,哈答案是9

这是典型没考虑运算符结合问题,

先说赋值和,逗号这两个运算符,没有任何问题,是同样的二元运算符,会严格遵循向右结合,所以优先级生效了

再看麻烦的++和--,同样的向右结合,但是++ -- 写在数字后面的时候貌似向右没有操作数了

那么向左结合就会被翻译成 x,x++,a = x++ 就是 a = x ,x++;

把这个原理用在这道题上,先算sum = num ;

此时sum= num = 7

然后num++; num = 8;

再看下一个二元运算符,

sum++ sum = 8;

num++ num= 9;

此时sum 的值是8

扩没笑隐展一下 C还有个三元运算符 ?:这个运算符一般没人会考,你枯厅把它当成两个连续向右结合的二元运算符就好了。这种题也就考试有用。

29题

考的是与运算符的一个小知识

与要为真的基本条件是1&1 = 1

0 & n = 0

如果计算第一个表达式为0

那么n表达式是不会计算的,跳过了

所以m的升首值没有变是2

30题

考的是运算精度问题

int * int  = int 

int / int = int

int *float = float

看出来了吧,向位数更高的靠拢

(int)2/(int)4 = 0 而不等于0.5

后面那个表达式*/%为同级运算符

为了使算式不出现/0或者%0异常都是从左向右结合运算的

先算括号里的(x+y) = 7.3然后存储结果时发现有强转,即7,a%3 = 1

1*7 = 7

7%2 = 1 

1/4 = 0

2.5+0 = 2.5

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式