一道很简单的面试题!

ffimm 2003-10-15 05:22:21
一家软件公司的面试题
main()
{
int i=3;
int j=++i + ++i + ++i + ++i;
cout<<j;
}
问最后的结果是多少?
我的答案是22(4+5+6+7)
可是,我在vc6.0下得到的结果是23,实在是想不通为什么?
...全文
79 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
bing_huo 2003-10-16
  • 打赏
  • 举报
回复
垃圾问题。。。。如果你进了这家公司,干活的时候多写点这类代码。boss问起,你就告诉他,你们要我这样写地。。。
RunningPuma 2003-10-16
  • 打赏
  • 举报
回复
这样的公司还是不要出了。

j=++i + ++i + ++i + ++i;
这里根本不用考虑++的前置后置问题!它对同一变量写入的次数大于1,从而结果是undefined的。就算编译器给出一个最奇怪的结果(如-12345),也是允许的!
playmud 2003-10-16
  • 打赏
  • 举报
回复
自以为是的人真多,从左从右不一样啊,23
instigator 2003-10-16
  • 打赏
  • 举报
回复
写这种代码的人是想炫耀
还要压跟不懂什么叫可维护性
别理他
microran2000 2003-10-15
  • 打赏
  • 举报
回复
第1道为6,我把零后缀给忘了.
第2道,应该为4,因为参数是指针进入堆栈,只有一个参数,是4个字节.40没有任何意义,编译时会忽视这个数字.
microran2000 2003-10-15
  • 打赏
  • 举报
回复
我也有一道,刚面试过,答错了,弄的我很没面子,
char s[]="hello";
问sizeof s等于?
void demo(char s[40])
{
问sizeof s等于几
}

要求写出判断一个符点数是否等于零的代码,
结果我又给晕了头写成了
if(f1!=0.0)
应该是if(abs(f1)<1e-06)
cy0414 2003-10-15
  • 打赏
  • 举报
回复
一个很简单的问题`````
j=++i + ++i + ++i + ++i
其中++i是把i+1,而没次+1之后就把+1后的值付给了i,然后累加了4次,想想是多少?
然后再相加,得到的答案是28
Robin 2003-10-15
  • 打赏
  • 举报
回复
:》
wadefelix 2003-10-15
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=476
看看吧,赶快结帖吧!
dreamfly8848 2003-10-15
  • 打赏
  • 举报
回复
毛病。连公司也出这样的题目
生产上屁会用这样的写法。
98440622 2003-10-15
  • 打赏
  • 举报
回复
0040131E mov eax,dword ptr [ebp-4]
00401321 add eax,1
00401324 mov dword ptr [ebp-4],eax
00401327 mov ecx,dword ptr [ebp-4]
0040132A add ecx,1
0040132D mov dword ptr [ebp-4],ecx
00401330 mov edx,dword ptr [ebp-4]
00401333 add edx,dword ptr [ebp-4]
00401336 mov eax,dword ptr [ebp-4]
00401339 add eax,1
0040133C mov dword ptr [ebp-4],eax
0040133F add edx,dword ptr [ebp-4]
00401342 mov ecx,dword ptr [ebp-4]
00401345 add ecx,1
00401348 mov dword ptr [ebp-4],ecx
0040134B add edx,dword ptr [ebp-4]
0040134E mov dword ptr [ebp-8],edx
i =7 j = 23
alongfly 2003-10-15
  • 打赏
  • 举报
回复
不同的编译器可以得到不同的值,这个公司出这种题,有毛病
setupserver 2003-10-15
  • 打赏
  • 举报
回复
请问二楼的朋友,为什麽不是
j=((++i + ++i )+ ++i) + ++i
j=((4+5)+++i)+ ++i???????
aiqin 2003-10-15
  • 打赏
  • 举报
回复
++i(6)
|
/ \
/ \
+ +
/ \ /
/ \ ++i (7)
++i ++i
(5) (5)
gccr 2003-10-15
  • 打赏
  • 举报
回复
就连开发C语言的那位牛人都不敢说到底等于什么,不信看
《The C programming language》。
我靠,真是无聊,写这样代码的人真是白学软件工程了,以后人家怎么看??
挺拔的劲松 2003-10-15
  • 打赏
  • 举报
回复
vc6.0下
j=((++i + ++i )+ ++i) + ++i
j=((5+5)+++i)+ ++i
j=(10+6)+ ++i
j=16+7
j=23

挺拔的劲松 2003-10-15
  • 打赏
  • 举报
回复

在TC2下应该是28。7+7+7+7=28
挺拔的劲松 2003-10-15
  • 打赏
  • 举报
回复
C语言大全明确说了,这种表达式要看编译器采取得优化方法,不是想当然的从左到右执行,是以未定顺序计算的。最好避免
std3lqi 2003-10-15
  • 打赏
  • 举报
回复
好像不少公司出这种题。
Jinhao 2003-10-15
  • 打赏
  • 举报
回复
出这种面食题的公司真够垃圾,连自己都不懂C/C++还出题考人,真是世界上最晕的事!
晕~~
加载更多回复(7)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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