一道很简单的面试题,问题出在考官的回答让我很郁闷,大家来评评理
据说工作10年有余,一直在编程int a=1;
int b=2;
不用第三个变量进行互换
我给的答案是a = b + ((b = a) * 0);
然后考官说你这个写的是什么东西,能编译么?
然后很谦虚的告诉我
正确答案应该是这样
a = a + b;
b = a - b;
a = a - b;
我就干了1年啊,请问他这个工作经验是不是有水分啊 --------------------编程问答--------------------
a = a ^ b;--------------------编程问答-------------------- a = b + ((b = a) * 0);不同编译器处理的结果不一样。 --------------------编程问答-------------------- 你给的答案是a = b + ((b = a) * 0)也确实有点问题,编译能通过但结果有问题,最先算b=a得1,此时b的值已经变为1了,所以a=b=1; --------------------编程问答-------------------- 水分的话不敢说,估计是考一下基础扎不扎实~~ --------------------编程问答-------------------- 你明显上论坛少鸟。 这些题目在论坛上见了N遍鸟。 --------------------编程问答--------------------
b = a ^ b;
a = a ^ b;
自己基础不扎实就别乱说话,实在没什么水平就去找个电脑去测测行么?
别在这里误导新人 --------------------编程问答--------------------
这个就要请教了,不太了解。但是我用的都这样,不知道在什么情况下才会得到处理结果不一样的数据呢?
指点一下 --------------------编程问答-------------------- 我的理解是
a=b+ 这个b是2 b=a 这个时候不会影响到这个第一个B的值。
但是可能不同的编译器处理数据的方式不一样吧,还是请高手指点一下,具体怎么回事啊? --------------------编程问答-------------------- 其实,感觉上哈,先不说楼主这个写法对于不对
从楼主的写法上,已经看出了,楼主的功力还是比较深厚的,如果能想到一句代码写出答案,可见楼主不可能不知道用++--的三句答案,这个问题见过N遍,楼主的也应该见过,只能说++--是常规的解法。
楼主在用创新的思维解答问题,值得大家赞赏! 这一个等式中蕴含了比较多的编译上的处理机制,只有熟知了可能才会这样写吧,一般人不怎么理解这样的处理机制,所以不敢这样写吧
可以肯定的是楼主很厉害,但还是尽量的避免非常规,学习可以,找工作就不行了,当然表现自己与众不同另当别论 --------------------编程问答--------------------
我可没那种想法,我觉得思路和水平是两码事,他给我的是笔试,我懒得写那么多 --------------------编程问答-------------------- 其实我这个帖子的目的很简单,
有一些考官,他考你基础是一方面,想压低你的工资也是一方面,要看他的职位了,如果他是技术兼股东,他必然会利用这种手法来榨压你的工资
当然如果是纯做技术的话就另当别论了。
他们不会故为的为难你,而是想知道你什么水平能不能干的了这个活,水平差看看你有没有培养的潜力。 --------------------编程问答-------------------- 你在C测试下看看。 --------------------编程问答--------------------
哦这样啊,怪我没说清楚了,我是去面试C#程序员的,C我一点不会 --------------------编程问答-------------------- C和C#是两种编译的体制,编译后的结果就另当别论了,编译的处理器不一样结果就不一样了。
补充:.NET技术 , 非技术区