首页 > 试题广场 >

阅读以下程序,程序运行后,如果从键盘上输入5,则输出结果是。

[单选题]
阅读以下程序:
#include <stdio.h>
int main() {
    int x;
    scanf("%d", &x);
    if (x-- < 5)
        printf("%d", x);
    else
        printf("%d", x++);
    return 0;
}
程序运行后,如果从键盘上输入5,则输出结果是
  • 3
  • 4
  • 5
  • 6
推荐
选B
    if(x-- < 5)printf(“ % d”, x); 
     if中 --执行的是先返回值,后执行--操作 这个地方等价于执行的是if(5<5) 肯定返回false,
执行x--的操作x变成4, 然后执行else
    elseprintf(" % d", x++);
在else中 ++也--是一个道理,先返回值,后执行++操作,因此先返回4,输出4.不过在内存中
x最后的值为5,因为在x执行了++操作。

在这里也想说一下--x和++x,这两个的顺序是先执行--和++操作然后返回执行操作后值。
这x--和--x的区别。
      
编辑于 2015-10-16 09:40:19 回复(5)
更多回答
这题的答案应该是B:4
首先,弄明白这题想考的是x++这种类型的运算顺序,针对本题,
(x--<5)先用输入的x=5做比较不小于5,为false,应该进入else{}语句;
再执行x--,x的值为4;
执行else{}里的打印语句,先输出x的值4(控制台显示结果),
再执行x++,变量x的值为5;
程序结束
延伸一下,++x作运算时,先把变量x的值加1,再去做其他运算
如果把最后的输出改为printf(“ % d”, ++x);
控制台显示的为5
编辑于 2015-10-16 08:58:45 回复(0)
B
(x-- < 5)printf(“ % d”, x); 比较的时候,x的值还是5 ,所以不满足条件,  这句执行完  变成4
printf(“ % d”, x++); 输出时是4   执行完后 变成5
发表于 2015-10-18 12:07:14 回复(0)
选B是毋庸置疑的,我来补充一点
例如:
    int x = 0;
    printf("%d %d %d",x--,x+=2,x = 5);
此时计算过程为: x = 5, x+=2,x--
因此打印结果为7 6 6


发表于 2020-10-16 12:06:09 回复(2)
x--和--x; 1.先输出再计算 2.先计算再输出
发表于 2018-03-13 10:15:15 回复(0)

输出那儿的++为什么不说是表达式的一部分,输出的不是表达式的值么

发表于 2019-11-23 16:30:23 回复(0)
不太明白各位大佬是怎么得到B答案的,当初一看到这道题就认为考点在scanf上。明显的在%d之间有一个空格,直接5输出一定会有问题,评论区各位大佬有没有上机操作一下就在“B”凑答案...觉得题有问题,VS2017上跑的结果

发表于 2017-12-26 10:13:21 回复(1)
本题需要注意if中的判断语句会改变x的值,if后面的语句可不必再看
发表于 2016-10-14 14:00:38 回复(0)
输入的值是5,x--是先运算然后减一,所以需要执行else的值,此时x的值是4,同样x++是先运算后加一,所以答案是B
发表于 2016-08-27 15:36:52 回复(0)
这题答案就有问题,先进行x--<5的判断,这是自减运算符,(x--)的值为5判断完后x=x-1,现在x的值为4,而else语句中打印的是(x++)的值,值应该为4,执行完这个表达式后x才为5
发表于 2023-10-19 14:44:54 回复(0)
不懂
发表于 2023-09-01 18:58:00 回复(0)
x最初为5首先经过x--<5判断不成立但此时x变成了4最后输出x++,故结果为4
发表于 2023-01-05 19:57:37 回复(0)
判断结束后x减1为4,然后输出之后再减1,所以结果为4
发表于 2022-01-04 11:42:04 回复(0)

x等于5 然后记得执行x--


发表于 2019-10-23 13:45:43 回复(0)

记得if里面x已经--

发表于 2019-10-09 13:17:24 回复(0)
有点懵,在x--<5的判断中还能想到左边输出值为5,而x的值变为4,执行else时居然认为x++后变成5了,果断选成了C。
发表于 2016-11-22 09:28:48 回复(1)
if(x--)到这一步程序已经运行,把x的值替换压栈
发表于 2016-07-17 09:58:04 回复(0)
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,因为x会比较了过后--
然后输出后x++
发表于 2015-10-16 23:00:10 回复(0)
B
执行x--<5后x变为4:
printf((“ % d”, x++ );x++代表5

发表于 2015-10-16 21:58:53 回复(0)
B,i++,i--,虽然都是i发生了变化,但是此刻,(i++),(i--)的值还是原来i的值没有变
发表于 2015-10-16 21:47:53 回复(0)
选择B;
主要考察运算符执行先后的问题。当控制台输入5时,判断 (x--<5)语句的true或false,此时相当于
if( x<5 )无论返回是 true或false  ,都要再执行 x--语句。那么程序执行进入else程序段,同样的原理,控制显示4(程序输出结果),然后x+1,变成5
发表于 2015-10-16 15:25:31 回复(0)