今天被小毛同学娱乐了,虽然很不爽,不过还是学到了些东西。
他出了两道题:
大家可以试着做下
1.
请问输出多少?
菜鸟们看完一定不假思索的就说是72吧。。。。还兴致勃勃的3+3=6吧。。。。额,我就是。。。
。。。他说答错了,想知道结果要请他吃一个包子,额,认了。。。
运行结果是18。。
下面来解答一下:等量代换3+3替换成x
那么f(3+3)就是“3+3*3+3”,没错,没括号。。。。。
那么返回的值就是“3+3*3+3*2”,又没错,没括号
所以值就是18。。。
“呵呵,好玩,不服,再来一个。。。”
2.
虽然一看就知道是逗号表达式,但是还是做错了。。。
请问输出多少?
又是不假思索的说出了160吧。。。。我也是。。。。所以就又错了。。。
求知欲很强的我为了知道为什么,就又搭进去了个包子。。。。
答:输出那一句可以写成 cout<<(20,100),160;
因为逗号表达式的关系cout 输出了个100。。。。跟160没什么关系。。。
小小变化一下:
输出什么?
还是100?
所以还是错。。。。。。
输出是报错信息:error: invalid operands of types 'int' and '' to binary 'operator<<'
原因就是逗号将整句分开,逗号后面成了一条错误的语句,缺少cout<< 所以就报错了。。。
再变化一下:
同样输出什么?
“abcefg”终于答对了,但是貌似想法是又错了。。。。
他看我已经输的够惨的了。。。所以就没再问我要包子。。。
先问个问题,cout<<"abc","efg" 这一句输出什么,返回什么?
答案是:输出abc 返回efg。。。
因为跟上题一样,efg跟cout 没有关系所以只输出abc
但是这一句的返回值就是要看逗号表达式了,逗号表达式,最后一个逗号后面的值作为值。
所以先输出了个abc,然后逗号表达式的值efg作为外层cout输出的内容,最后结果就是abcefg。。。
怎么感觉被调戏了一样。。。不过,确实挺有意思,写成博客让菜鸟们乐乐。。。。顺便说一下,小毛同学,那两个包子就算了吧。。。
阅读(4762) | 评论(1) | 转发(0) |