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两个值是怎么得出来的吗?不太懂....
展开
2个回答
展开全部
问题一: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
涉及到两个知识点,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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询