首页 > 试题广场 >

请写出下列代码的输出内容。

[单选题]
请写出下列代码的输出内容:
#include <stdio.h>
int main()
{
    int a, b, c, d;
    a = 10;
    b = a++;
    c = ++a;
    d = 10 * a++;
    printf("b,c,d:%d,%d,%d", b, c, d);
    return 0;
}

  • b,c,d:10,12,120
  • b,c,d:11 12 120
  • b,c,d:11,12,130
  • b,c,d:11,12,130
第一种情况: a=3; b=a++; 运行后 b=3,a=4 第二种情况: a=3; b=++a; 运行后 b=4,a=4
发表于 2015-11-09 23:38:19 回复(0)
炫头像
本题主要是考察的前自增和后自增的区别
++i;
i++ ;
++i表示,i自增1后再参与其它运算;而i++ 则是i参与运算后,i的值再自增1。
发表于 2016-03-31 13:42:20 回复(1)
a = 10 ;
b = a ++ ; // b = 10 , a = 11
c = ++a ; // a = 12 ,c = 12
d = 10 * a ++ ; // d = 120 , a = 13

发表于 2017-03-09 16:14:35 回复(0)
前置版本(++i):首先将运算对象加1,然后将改变后的对象作为求值结果;
后置版本(i++):也会将运算对象加1,但是求值结果是运算对象改变之前那个值的副本。
如:
int i=0,j;
j = ++i; // j=1, i=1 :前置版本得到递增之后的值
j = i++; // j=1, i=2 : 后置版本得到递增之前的值
d=10*a++;  在运算符优先级里,后置版本优先级要大于前置版本,也大于解引用(*,即 *pt++等价于*(pt++)),也大于四则运算符,所以这一句等价于: d = 10 * (a++);  a此时已是12,故d = 10 * 12 = 120,然后a变为13.
发表于 2016-06-27 11:00:04 回复(0)
b=a++不考虑运算符的优先级么?拆分开来不是a++;b=a吗?
发表于 2018-02-10 22:29:24 回复(0)
A 优先级相同时,从变量开始从右向左 (10*a),a++
发表于 2015-04-10 09:31:51 回复(1)
A ++a与a++的区别
发表于 2015-04-06 15:22:02 回复(0)
答:10,12,120
发表于 2014-10-25 00:26:02 回复(0)