C语言表达式

问题一:设整形变量a,b,c的值分别是3,4,5,计算下面表达式的值:!(a+b)+c-1&&b+c/2书上说b+c/2的值为6,能解释下吗?问题二:若inta=0,b=... 问题一:设整形变量a,b,c的值分别是3,4,5,计算下面表达式的值: !(a+b)+c-1&&b+c/2 书上说b+c/2的值为6,能解释下吗? 问题二:若int a=0,b=2,c=3;则a&&b++&&++c的值是0,b值是2,c值是3. 若int a=1,b=0,c=3;则a&&b++&&++c的值是0,b值是1,c值是3. 若int a=0,b=2,c=3;则a||b++||++c的值是1,b值是3,c值是3. 若int a=1,b=2,c=3;则a||b++||++c的值是1,b值是2,c值是3. 这四个表达式都能解释下是怎么运算得来的吗?要详细点... 本人是自学,问题有点多,谢谢大家能够抽出时间帮忙解答. 有高手希望能加个好友,方便请教... 问题补充:还有能解释下问题二所有表达式中的b和c两个值是怎么得出来的吗?不太懂.... 展开
 我来答
赫博牵恬欣
2020-07-23 · TA获得超过1120个赞
知道小有建树答主
回答量:1880
采纳率:100%
帮助的人:9.7万
展开全部
问题一:b+c/2
涉及到两个知识点,1.优先级:乘除的优先级高于加减,所以计算c/2,再与b做加法
2.整数除整数等到的结果仍为整数,小数部分直接截掉(不是四舍五入)
所以
c/2=2,
4+2=6
因此b+c/2=6
问题二:
1.先了解a++和++a
a++是先使用a的值再使a自增,++a的值是先使a自增再使用a的值

a=1;
b=a++;
相当于
a=1;b=a;a=a+1
所以最后的结果是
a=2,b=1
而a=1;b=++a;相当于
a=1;a=a+1;b=a;所以最后的结果是
a=2,b=2
了解了++的用法,再来了解逻辑与(&&)和逻辑或(||)
c语言中,非零值为真,零值为假,而&&与||的运算结果要嘛为真(1)要嘛为假(0),就是说不管是什么整数通过&&
或者
||
运算后的结果不是
0
就是1。对于&&来说,如果&&左边的值为0,就不需要再判断&&后面的值,因为0是假,不管&&右边的值为何都是假(0),如果&&左边的值为真(非0),则需要继续判断右边的值,对于||来说刚好相反,如果&&左边的值为非0(真),就不需要再判断右边的值,如果为0(假),则需要继续判断右边的值
好了,现在来看上面四个表达式
1)若int
a=0,b=2,c=3;则a&&b++&&++c的值是0,b值是2,c值是3.
由于a=0
a&&任何值的结果都是零,后面的b++与++c不会再被执行,所以结果是
0,b=2,c=3
2)若int
a=1,b=0,c=3;则a&&b++&&++c的值是0,b值是1,c值是3.
a=1所以继续判断b++的值,即,a&&b++
等价于
a&&b,b=b+1;由于b的初始值是0,所以a&&b的结果为0,++c不会被执行,最终结果为
0,b=1,c=3
3)若int
a=0,b=2,c=3;则a||b++||++c的值是1,b值是3,c值是3.
a=0,所以继续判断b++的值,即
a||b++
等价于
a||b;b++;由于b的初始值是2(非零),也就是真,所以a||b的结果为真(1),此时不会再执行++c,所以结果为
1,b=3;c=3
4)若int
a=1,b=2,c=3;则a||b++||++c的值是1,b值是2,c值是3.
a=1,a为非0(真),a||任意值都是真(1),所以b++与++c不会被执行,最终结果1,b=2,c=3
种贝羽觅云
2020-04-21 · TA获得超过1032个赞
知道小有建树答主
回答量:1992
采纳率:100%
帮助的人:9.6万
展开全部
问题一:对于int型/的作用其实是求商的,明白否(强制转换)。
问题二:讲方法。。。对于c语言中的逻辑运算,其
结合性是从左往右的,也就是从左往右运算。在运算的过程中,只要计算到某一步时能够确定整个表达式的值时,后面的式子就不会参与运算了,也就是保持原来的值不变。像你的问题中的第一个例子,a=0,0&&任何数还是0,所以后面的两个式子就不会参与运算了。不懂再问。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式