两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
43两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是.(A)。main(){intx;scanf(“%d”,&x);if(x++>5)printf(“%d”,...
43两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是.( A )。
main()
{intx;
scanf(“%d”, &x);
if(x++>5) printf(“%d”, x);
else printf(“%d\n”, x--);}
A) 7和5B) 6和3C) 7和4D) 6和4
为什么不选C?求详解! 展开
main()
{intx;
scanf(“%d”, &x);
if(x++>5) printf(“%d”, x);
else printf(“%d\n”, x--);}
A) 7和5B) 6和3C) 7和4D) 6和4
为什么不选C?求详解! 展开
5个回答
展开全部
当从键盘上输入6时,x=6,x++表达式的值为6,接着x自加1,即x=7,故x++=6>5成立,输出x的值7;当从键盘上输入4时,x=4,x++表达式的值为4,接着x自加1,即x=5,故x++=4>5不成立,输出x--(后置运算),所以先输出x的值5,之后再进行自减1操作。
i++ 和 ++i 是不一样的。这两个的优先级是不一样的。在查表的时候应该能注意到有两个++和--,i++ 是先用 i 再自加,++i 是先自加再用 i。
扩展资料:
优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:
指针最优,单目运算优于双目运算。如正负号。
先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.
逻辑运算最后结合。
参考资料来源:百度百科-运算符优先级
展开全部
输入6,执行x++>5的运算,先加1,x成为7,大于5,条件成立,输出7.
输入4,还是行x++>5的运算,先加1,x成为5,不大于5,条件不成立,执行else部分。注意,在这里,是x--,意思是先输出x的值,然后在减1.输出5,然后x变成4.答案是7,5,就是A.
输入4,还是行x++>5的运算,先加1,x成为5,不大于5,条件不成立,执行else部分。注意,在这里,是x--,意思是先输出x的值,然后在减1.输出5,然后x变成4.答案是7,5,就是A.
追问
其实你的回答有问题·····不能选为满意
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x++跟x--都是先执行当前语句然后再加减的~
例如:
if(x++>5)这个语句是先之行(x>5)再执行(x=x+1)的
相同的
printf("%d\n",x--) 是先输出来x 再进行x=x-1;的~
所以输入6时 先判断6>5 正确 然后 6+1=7 然后输出
输入4时 先判断4>5 错误 然后 输出x 输出之后4-1=3; (注意是先输出来4再运算变成3的)
例如:
if(x++>5)这个语句是先之行(x>5)再执行(x=x+1)的
相同的
printf("%d\n",x--) 是先输出来x 再进行x=x-1;的~
所以输入6时 先判断6>5 正确 然后 6+1=7 然后输出
输入4时 先判断4>5 错误 然后 输出x 输出之后4-1=3; (注意是先输出来4再运算变成3的)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1题。遇到 ++x时 x先加一 再执行 遇到x ++时 x的值不变,执行完当前操作后,x的值再加一x--和--x同理
2题。k=(++a<0)&&!(b--<=0);
这一句从左向右执行,先判断(++a<0)
++a; //a=0
所以++a<0为假
由于是求&&的结果,
所以判断为(++a<0)为假后直接付给k,不再执行!(b--<=0)
所以k=0, //逻辑假,0
a=0, //执行了一遍++a得到
b=4 //保持原值
2题。k=(++a<0)&&!(b--<=0);
这一句从左向右执行,先判断(++a<0)
++a; //a=0
所以++a<0为假
由于是求&&的结果,
所以判断为(++a<0)为假后直接付给k,不再执行!(b--<=0)
所以k=0, //逻辑假,0
a=0, //执行了一遍++a得到
b=4 //保持原值
追问
看不懂···
追答
哪题不懂?k=(++a<0)&&!(b--<=0);这个语句分成两部分来看k=和(++a<0)&&!(b--<=0)
在第二个语句里面要分别判断(++a<0)和!(b--<=0)先判断(++a<0)显然为假。那么逻辑值就是0。与语句的逻辑值必须两边同时是1值才能为1的。到这里就不必再往后执行了。k就是0了,逻辑值就是假呗。懂吗?也就是说k的值要么为1要么为0.当两个都为1的时候k是1,至少有一个为0的时候k的值就是0.。。。这题考察的是与语句的知识
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.输入6,由于x++等于x=x+1,
执行完if语句中的条件后,x的值为7,所以输出x=7,这个你应该明白
2.输入4,同样执行if条件语句,此时x=5,
执行printf语句,由于x--是在变量使用之后再对其进行减1操作,所以是先执行了x=5,然后再对x减1,所以输出的x=5
执行完if语句中的条件后,x的值为7,所以输出x=7,这个你应该明白
2.输入4,同样执行if条件语句,此时x=5,
执行printf语句,由于x--是在变量使用之后再对其进行减1操作,所以是先执行了x=5,然后再对x减1,所以输出的x=5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询