8. ******执行下列程序段后,a的值是 . int a,b,c,m=10,n=9; a=(--m==n++)?--m:++n; A) 11 B) 10 C) 9 D)答案是D,不过我认为是C,为什么?

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/15 16:00:30
8.******执行下列程序段后,a的值是.inta,b,c,m=10,n=9;a=(--m==n++)?--m:++n;A)11B)10C)9D)答案是D,不过我认为是C,为什么?8.******执

8. ******执行下列程序段后,a的值是 . int a,b,c,m=10,n=9; a=(--m==n++)?--m:++n; A) 11 B) 10 C) 9 D)答案是D,不过我认为是C,为什么?
8. ******执行下列程序段后,a的值是 . int a,b,c,m=10,n=9; a=(--m==n++)?--m:++n; A) 11 B) 10 C) 9 D)
答案是D,不过我认为是C,为什么?

8. ******执行下列程序段后,a的值是 . int a,b,c,m=10,n=9; a=(--m==n++)?--m:++n; A) 11 B) 10 C) 9 D)答案是D,不过我认为是C,为什么?
你的D)没有内容,如果D)的内容是8的话那应该是D).
因为条件句--m==n++中--m是前增1符,要先计算,即m=m-1=10-1=9;而n++是后增1符,要在表达式计算后才增1,所以n=9不变.这样表达式--m==n++就是9=9为真.那么?语句就要将紧跟在?后的表达式的计算结果赋给a而不理会:后的表达式;本题中紧跟在?后的表达式是--m,即要做m=m-1=9-1=8,即要把8赋给a,所以答案D)正确.