下列程序的输出结果为( ) void main() { int x, y, z; x = y = 1; z = x++,

下列程序的输出结果为( ) void main() { int x, y, z; x = y = 1; z = x++, y++, ++y; printf(“%d, %d,
下列程序的输出结果为( )
void main()
{ int x, y, z;
x = y = 1;
z = x++, y++, ++y;
printf(“%d, %d, %dn”, x, y, z);
}
选择一个答案

a. 2, 3, 3
b. 2, 3, 2
c. 2, 3, 1
d. 2, 2, 1
蔡莹 1年前 已收到1个回答 举报

amina913 春芽

共回答了19个问题采纳率:84.2% 举报

c
首先赋值后,x=1,y=1
z = x++,y++,++y;
先执行z=x++=1,后面的y++,++y是逗号表达式,赋值优先级高于它
当输出后x=2,y=3;(x自加了一次,y自加了2次)

1年前 追问

3

蔡莹 举报

z = x++, y++, ++y; 我理解的是逗号表达式并列,取最后一个++y=2

举报 amina913

错了,是先进行z的赋值语句,z是取第一个逗号的啦,在进行y的自加 因为逗号优先级低于“=”(赋值),所以 z = x++, y++, ++y; 就是一个逗号语句,z=x++是一条,y++,是一条++y是一条,按顺序执行 如果z = (x++, y++, ++y);那么答案就是楼下十一级回答的那样
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.034 s. - webmaster@yulucn.com