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两个值是怎么得出来的吗?不太懂....
展开
1个回答
展开全部
问题一:
b+c/2值为6,是因为c/2中c和2都是整型所以得到的值也为整型,这个值是2(整型要舍掉小数部分),在加上值为4的b,最后就等于6了。
问题二:
int
a=0,b=2,c=3;
a&&b++&&++c值为0,b值为2,c为3。
是因为逻辑“&&”表示关系与,所以当a等于0时,就已经知道了整个表达式的值为0,因此不必再计算后面的子表达式的值了,所以a&&b++&&++c值为0,b值为2,c为3。
int
a=1,b=0,c=3;
a&&b++&&++c值为0,b值是1,c值是3。
(其实跟上面差不多的)因为a为1,还不知道整个表达式的值,要继续计算,
当计算到b++时,由于b++是先引用值再将加1,所以b为0去当&&得左表达式(因为&&是“副作用”点,++被执行,b就变成1),知道整个表达式为0,终止计算。所以a&&b++&&++c值为0,b值是1,c值是3。
int
a=0,b=2,c=3;
a||b++||++c的值是1,b值是3,c值是3。
因为逻辑“||”表示关系或,a为0,不知道整个表达式的值,需要继续计算,当计算到b当||左表达式(因为是“副作用”点,++被执行,b变成3),知道了整个表达式值为1,终止计算。所以a||b++||++c的值是1,b值是3,c值是3。
最后一个自己想想吧。
b+c/2值为6,是因为c/2中c和2都是整型所以得到的值也为整型,这个值是2(整型要舍掉小数部分),在加上值为4的b,最后就等于6了。
问题二:
int
a=0,b=2,c=3;
a&&b++&&++c值为0,b值为2,c为3。
是因为逻辑“&&”表示关系与,所以当a等于0时,就已经知道了整个表达式的值为0,因此不必再计算后面的子表达式的值了,所以a&&b++&&++c值为0,b值为2,c为3。
int
a=1,b=0,c=3;
a&&b++&&++c值为0,b值是1,c值是3。
(其实跟上面差不多的)因为a为1,还不知道整个表达式的值,要继续计算,
当计算到b++时,由于b++是先引用值再将加1,所以b为0去当&&得左表达式(因为&&是“副作用”点,++被执行,b就变成1),知道整个表达式为0,终止计算。所以a&&b++&&++c值为0,b值是1,c值是3。
int
a=0,b=2,c=3;
a||b++||++c的值是1,b值是3,c值是3。
因为逻辑“||”表示关系或,a为0,不知道整个表达式的值,需要继续计算,当计算到b当||左表达式(因为是“副作用”点,++被执行,b变成3),知道了整个表达式值为1,终止计算。所以a||b++||++c的值是1,b值是3,c值是3。
最后一个自己想想吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询