3.21 以下程序的输出结果是 main() { int a=21,b=11; printf("%

3.21 以下程序的输出结果是
main()
{ int a=21,b=11;
printf("%d\n",- -a+b,- -b+a);
}
新手上路、求指教

第1个回答  2014-07-06
31追问

答案是30啊、这我就不明白了

追答

不会是30,是31,只打印第一个--a+b

追问

3.21 以下程序的输出结果是
main()
{ int a=21,b=11;
printf("%%d\n",- -a+b,- -b+a);
}
A)30 B)31 C)32 D)33
正确答案: A

追答

它的答案有误

学习C要灵活,因为C本身就很灵活

追问

没有吧、答案是对的。

追答

你上机执行一次就知道了

追问

嗯、试试。谢谢

追答

不再和你说了,加强一下基础才能讨论问题,88

追问

sorry

3.21 以下程序的输出结果是
main()
{ int a=21,b=11;
printf("%%%%d\n",- -a+b,- -b+a);
}
A)30 B)31 C)32 D)33
正确答案: A

这是原题

追答

原题的printf语句,这4个答案全打印不出来

原题能打印出%%d

追问

我明白了

答案是30

追答

我不和你讨论了,没办法讨论了,88

第2个回答  2014-07-06
31,31追问

答案是30、这我就不明白了

追答

优先级原因吧

这种题不要纠结了,在程序里只有现在的二级考试里面才会出现这种题,在现实中,肯定得用括号扩'起来让程序的可读性增强,这种题其实毫无意义

追问

俺要考二级、求解答

追答

(--a)+(--b)建议学习二级的时候在电脑旁边,遇到不明确的程序自己编译运行一下,这样更容易掌握

追问

谢了、不是急于考试麻

追答

二级九月份才考的吧

追问

嗯、我说c语言、会出这样的题吗?

追答

会,这就是二级比较二的地方,而且估计不止一道

追问

唉、还没听懂。- -a+b,- -b+a。 等价于(--a)+(--b)?

追答

稍等我开电脑

追问

嗯、谢谢

追答

答案是30和31吧?

我打程序的时候打错了,sorry
printf("%d\n",--a+b,--b+a); }这句是个逗号运算,取后面的值.....但是前面的--a+b也是要运行的,运行了--a后a=20啦!!在运行后面的--b,b就等于10啦!!加起来就等于30.了

没看清楚程序,sorry,这道题考察自加运算,和C语言里面的逗号运算,取后面的值

能理解吧?

追问

奥、也就是说先--a然后取值为--b+a?

追答

对,--a+b因为逗号运算不输出,但也是运行过的,改变了a的值,前面输出语句要是这样写printf("%d/n%d/n",…)有两个输出的话就是都输出,这个只是输出后面那个表达式的值

之前输出都没看清,就给你说答案了不好意思啊

追问

嘿嘿、明白了。谢谢

这个程序怎么写?

追答

追问

为什么不用return返回阿

追答

我就是让你看一下正确写法,加上无所谓,不影响结果输出么,加上吧那

追问

呜呜

追答

怎么了

追问

你看运行结果?反了?

追答

没有,printf是从右至左计算参数表的

追问

OK

能帮我看一下、为什么不选B吗?

追答

有点不清楚,输出的那里再清楚点

追问

3.12 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是
A)2.500000 B)2.750000
C)3.500000 D)0.000000
正确答案: A

追答

看到那个(int)了吧?0.25的int型就是0

追问

类型转换?这个题(int)的作用范围是哪部分阿?

追答

就是它后面的值

本回答被提问者采纳
相似回答