人人网的一个笔试题

唯有前进值得敬仰 2011-06-18 02:00:13
同样一个程序在环境VC6.0下与VS2005(或linux)下答案竟然不一样,为什么呢?
在VC6.0下输出的全是1,而在VS下是234321
求解释。。。

#include <iostream>
using namespace std;

int g=0;
template<typename T>
int foo()
{
static int value = ++g;
return value;
}
int main()
{
cout<<foo<int>()<<foo<bool>()<<foo<float>()<<foo<bool>()<<foo<int>()<<foo<char>();
cout<<endl;
return 0;
}
...全文
11258 119 打赏 收藏 转发到动态 举报
写回复
用AI写文章
119 条回复
切换为时间正序
请发表友善的回复…
发表回复
zaiguo 2011-10-10
  • 打赏
  • 举报
回复
有收获!
科喜软件 2011-09-09
  • 打赏
  • 举报
回复
foo是模板函数,而value是函数内部静态变量,不是全局静态变量,模板函数在编译期就决定下来了,不同的类型对应不同的函数
wwm86 2011-07-02
  • 打赏
  • 举报
回复
MARK 学习。
mnzn2530 2011-07-01
  • 打赏
  • 举报
回复
流操作是函数调用

cout << 1 << 2 << 3;
理论上应该是

cout.out(1);
cout.out(2);
cout.out(3);

但你去看vs生成的代码一般都是
push 3
push 2
push 1
cout.out
cout.out
cout.out


这个对结果肯定有影响
jzs6124 2011-06-30
  • 打赏
  • 举报
回复
路过,学习一下
linrulei11 2011-06-30
  • 打赏
  • 举报
回复
两点需要注意:第一、char,int,float,bool的模板实例各不相同;第二、cout与printf都是先将表达式读入栈中,最后读入的,最先最先处理;
Super_Ninja 2011-06-30
  • 打赏
  • 举报
回复
mark...
lampkid 2011-06-30
  • 打赏
  • 举报
回复
语言的背后,、、很神奇
blackkettle 2011-06-29
  • 打赏
  • 举报
回复
学习了~!
内存溢出 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 luciferisnotsatan 的回复:]
下面是裘宗燕的一篇文章,最然讨论的是 ++ 问题,但意思是一样的。


经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”
m = 1; n = m+++m++;
最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:
a = 4; cout << a++ << a;
C++ 不是规定 << 操作左结合吗?是C+……
[/Quote]看这回复 看的我眼疼 不过还是看完了
y309307896 2011-06-27
  • 打赏
  • 举报
回复
标准不同吧!!
CUSTCOM 2011-06-27
  • 打赏
  • 举报
回复
原题代码在编译之后和下面代码是等价的

#include <iostream>
using namespace std;

int g=0;
//template<typename T>
int fooint()
{
static int value = ++g;
return value;
}
int foobool()
{
static int value = ++g;
return value;
}
int foofloat()
{
static int value = ++g;
return value;
}
int foochar()
{
static int value = ++g;
return value;
}
int main()
{
cout<<fooint()<<foobool()<<foofloat()<<foobool()<<fooint()<<foochar();
cout<<endl;
return 0;
}


cout后面的函数在VS2005里是从后向前调用的
每一个函数static int value = ++g这句代码只会在value定义的时候执行一次,之后都是直接返回值。
所以结果是234321
xxffff 2011-06-27
  • 打赏
  • 举报
回复
还是没看懂。。
y309307896 2011-06-26
  • 打赏
  • 举报
回复
学习了。。。
LJTYZWW 2011-06-26
  • 打赏
  • 举报
回复
不是很清楚
License2Kill 2011-06-25
  • 打赏
  • 举报
回复
不确定啊,编程还得去除歧义啊
skyzhg 2011-06-25
  • 打赏
  • 举报
回复
学习了,支持
chengkunxf 2011-06-25
  • 打赏
  • 举报
回复
java的飘过!
小小summer 2011-06-24
  • 打赏
  • 举报
回复
楼上的所有回复一个没看
不知道有人看到没,它用到了模版定义,但是却没有使用这个模版
所以最后还是回到编译器的问题上
chrsailing 2011-06-24
  • 打赏
  • 举报
回复
标准问题!
加载更多回复(97)
大数据面试笔试资料-56家互联网大公司面试笔试题资料整理汇总: hive面试.doc 京东.jpg 笔试题1.docx 笔试题10.jpg 笔试题11.JPG 笔试题12_搜狐 笔试题13_九章云极科技有限公司 笔试题14_北京东方国信科技股份有限公司-联通事业部-笔试题 笔试题15_百分点 笔试题16_Admaster 笔试题2.docx 笔试题3.docx 笔试题4_boss直聘.docx 笔试题5_面试题4的实现思路.docx 笔试题6.jpg 面试总结 面试题1.doc 面试题2.doc 面试题3.doc 面试题7+面试题8+面试题9_北京广视通达数字网络科技有限公司 中企动力面试总结?-面试题1 畅捷通(用友集团)?-面试题2 麦达数字面试?-面试题3 boss直聘面试?-面试题5 博易智软(北京)技术股份有限公司?面试题7 公安部第一研究所?面试题7 IBM?面试题7 车网互联?面试题7 凯立德科技股份有限公司?面试题7 北京捷通华声语音技术有限公司?面试题7 北京法意科技有限公司?面试题7 大树科技(重点)?面试题7 北京XXX宇有限公司??面试题8 盛世全景?面试题8 华胜天成?面试题8 联龙博通?面试题8 大麦网?面试9 京东金融?面试10 滴滴打车 架构师?面试11 神州?面试11 百分点科技?面试11 锐安科技?面试12---有笔试 人人贷?国舜科技?面试13 宜信?面试16 明略数据?面试17 爱奇艺面试?面试18---爱奇艺明确有背景调查,记在面试评测上面,由hr写背景调查评测----(直接卡死了) 奥维云网?面试26 喜马拉雅FM?中星电子?银橙传媒?面试27 电信云计算?面试题29 乐视?面试题29 优酷?面试题29 无双科技公司?面试题30 亿玛在线公司?面试题30 58同城?面试题30 talkingDate?面试题30 慕华信息科技有限公司?面试题30 美团网?面试题31 LeanCloud?面试题31 筑巢新游?面试题31 阿里巴巴?面试题32 博睿宏远?面试题33 融易通?面试题33 中国互联网络信息中心?面试题33? 优酷土豆?面试题33 乐视?面试题41 TalkingData?面试题41 网德天下?面试题41 东方国信?面试题41 畅捷通?面试题41 太极?面试题41 北京四中网校?面试题41 SenseTime?面试题41 易观智库?面试题41 银创科技?面试题41 京东?面试题41 壕鑫互连?面试题41 滴答拼车?面试题41

65,176

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧