77问答网
所有问题
c语言中int a=2,printf("%d%d%d",--a,a++,--a)输出结果是什么,为什么
如题所述
举报该问题
推荐答案 2013-10-13
printf是自右往左运算的
先算最右边的--a,--a整个表达式的值是1,将1压栈,运算结束后a=1.
其次是中间的a++,a++表达式的值是1,将1压栈,运算后a=2;
最后是最左边的--a, --a表达式的值是1,将1压栈,预算后a=1。
然后将栈的值依次出栈。结果是111
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/3v8WpW3Wq.html
其他回答
第1个回答 推荐于2018-02-28
结果是111.
调用函数的时候,函数的参数是从后往前依次通过
堆栈
传参.
比如一个函数: aaa( 1,2,3 ); 这里是先把 3 入栈,然后是 2 ,最后是 1 .
那么同样, printf 的其中三个参数排列依次是 --a,a++,--a 其中a的值是 2 ,先算倒数第一个 --a, 再算a++, 最后才算第一个--a.( 注意: 这里有一个a++需要特别注意,是先把a当前的值传参以后再自加1的. )
这样算下来,每次a的值都是1,然后被printf打印出来.
本回答被提问者和网友采纳
第2个回答 2013-10-13
输出结果为1,1,1;过程为a自减1然后输出,此时a=1;然后a输出a,再自增1,此时a=2;然后a再自减1,输出a,此时a=1;看一下++/--,自增自减的用法,以及放在变量前与后的区别。
第3个回答 2013-10-13
我实际运行了一下,结果是111
第4个回答 2013-10-13
例如:首先要区别x++和++x(--同理)。x++是先引用再增值,++x是先增值增引用。例如:
int x,a,b;
x=0;
a=x++; //a=0;a=x++是先把x值给a,,操作完再+1,即先做a=x,然后x再+1
b=x; //b=1
int x,a,b;
x=0;
a=++x; //a=1;++x是先增值再用,即先做x+1,在做a=x
本题中,相当于先后计算--a,a++和--a,我们可以这样看
int a=2,b,c,d;
b=--a;
c=a++;
d=--a;
首先,b=--a时是先做a自减操作(即a=a-1)再赋值给b的,所以b=1,a=1;
然后,c=a++是先做c=a,接着a再自增1,所以c=1,a=2;
最后,d=--a参照b=--a。
1
2
下一页
相似回答
...main
()
{ int
a=2;
printf(
"
%d
",((
++a)
==(--a))); printf("%d"
,a
...
答:
a--
,a++是
先使用a再执行操作。初始
a=2;((++a)
==(--a))意思就是先把左边的a自增得a==3,再把右边的自减得a=
=2,
最后自减后的值赋值给a a==2;
若有定义int
a=2,
则语句
printf(
“
%d
”
,a++);
的
输出结果
为2
,为什么
不...
答:
因为
a++是
先返回a的值,以供
printf输出,
然后再执行a = a + 1;所以输出的是2,在输出之后 a的值是3.
a++
与--a的区别,请详细说明,感激不尽~
答:
1、
a++
:运算
结果是
a表达式结果加上一位。2、--a:运算结果是a表达式结果减去一位。二、运算过程不同 1、a++:运算过程中先执行a表达式,之后再执行自增运算。2、--a:运算过程中先执行自减运算,之后再运行a表达式。三、内存运行不同 1、a++:在内存中先运行a,之后再寄存器中增加1。2、--a...
int
a=2;printf(
"
%d,%d
"
,++a,a
*=2
);输出什么
答:
这段代码的运行
结果是
确定的:5,4。原因:
printf
函数的参数表遵循从右至左计算规则,即先计算a*
=2,
使a=4压栈;然后再计算
++a
使a=5压栈;再从左至右(实质是栈操作后进先出)弹出来输出到屏幕上。
printf(
"
%d,%d,%d,
\n"
,a++,a,++a)
答:
运行结果如图所示:由于操作数据变化,执行顺序不同,其结果不同。三者联合操作与单独执行效果又不一样,单独执行效果如下:
在
c语言中,a=2;printf(
“
%d
”,b=(
a++
)+
a);
的
输出
为5 但b=(a++)+a;p...
答:
第一个等于5,是因为(a++)中的a先引用,再
++,(a++)
值等于2,但a的值等于3了,所以b=2+3
,输出
为5;第二个为4,好诡异,按我所知道的,也应该为5啊
c语言中,int
a=2;printf(
"a++:
%d
++a
:%d a++:%d"
,a++,
++
答:
这个编译器不同会导致
输出结果
的不同……一般是不能这么用的 至于
为什么输出
这个,我也不知道,结果匪夷所思= = 有知道的大神说一声。
大家正在搜
相关问题
c语言中a=2;printf("a=%%d",a);为什么答...
c语言中,int a=2;printf("a++:%d ++...
为什么main() { int a=-2L; printf(...
C语言中 int a=5,b=-3,c=4;printf("...
c语言。int a=-2>>2;printf("%d",a)...
c语言中int a=2;a+=a*=a-=a*=3...
c语言中int a=2;a+=a*=a-=a*=3;prin...
int a=2;printf("%d,%d",++a,a*=...