Chinaunix首页 | 论坛 | 博客
  • 博客访问: 241066
  • 博文数量: 21
  • 博客积分: 493
  • 博客等级: 下士
  • 技术积分: 308
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-05 12:21
文章分类

全部博文(21)

文章存档

2013年(1)

2012年(20)

分类: LINUX

2012-10-26 19:51:57

今天被小毛同学娱乐了,虽然很不爽,不过还是学到了些东西。
 
他出了两道题:
大家可以试着做下
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。。。
 
 
怎么感觉被调戏了一样。。。不过,确实挺有意思,写成博客让菜鸟们乐乐。。。。顺便说一下,小毛同学,那两个包子就算了吧。。。
阅读(4712) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

毛贼贼2012-10-28 18:05:55

包子迟早会让你还的.