一到非常简单的程序题 关于C语言的

来源:百度知道 编辑:UC知道 时间:2024/05/31 22:33:08
int a,b,c=0;
a=++c;
b=c++;
printf("%d %d %d\n",a,b,++c);
结果为什么是1 1 3?
为什么不是1 1 1
我是菜鸟 请详解 我一定给你分

a=++c;
c先自加,等于1,在将值传给a a=c=1

b=c++;

c先把值传给b,再自加 b=1 c=2

++c 就是c加1 =2+1=3

a=++c; //c自增加1等于1然后赋给a,所以a=1
b=c++;//c先赋给b,所以b=1,然后c自增1=2
printf("%d %d %d\n",a,b,++c);//c自增1=3 然后输出
这里需要注意的是若为++c,则先加1再赋值
若为c++,则先赋值再加1

(1)a=++c 先自增c再赋值,这之后a=1,c=1
(2)b=c++ 先赋值再自增c,这之后b=1,c=2
(3)printf("%d %d %d\n",a,b,++c) 先自增c再打印,打印之前a=1,b=1,c=3
所以最后答案是1 1 3

运行第二行后,C变为1
运行第三行后,C变为2
在printf那个语句里,是++C,也就是C的值先加1,再使用。
些是时的C已是2了,再加1就成了3,所以结果是1 1 3

因为a=++c;时C等于1,
b=c++;时C等于2,
最后输出printf("%d %d %d\n",a,b,++c);时C就成3了..
++号在前面时是先自增,后复制;++号在后面时是先复制后自增.