当前位置:编程学习 > C#/ASP.NET >>

一道很简单的面试题,问题出在考官的回答让我很郁闷,大家来评评理

据说工作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;
            b = a ^ b;
            a = a ^ b;
--------------------编程问答-------------------- a = b + ((b = a) * 0);不同编译器处理的结果不一样。 --------------------编程问答-------------------- 你给的答案是a = b + ((b = a) * 0)也确实有点问题,编译能通过但结果有问题,最先算b=a得1,此时b的值已经变为1了,所以a=b=1; --------------------编程问答-------------------- 水分的话不敢说,估计是考一下基础扎不扎实~~ --------------------编程问答-------------------- 你明显上论坛少鸟。 这些题目在论坛上见了N遍鸟。 --------------------编程问答--------------------
引用 4 楼 s030902104 的回复:
水分的话不敢说,估计是考一下基础扎不扎实~~

自己基础不扎实就别乱说话,实在没什么水平就去找个电脑去测测行么?
别在这里误导新人 --------------------编程问答--------------------
引用 2 楼 huangwenquan123 的回复:
a = b + ((b = a) * 0);不同编译器处理的结果不一样。

这个就要请教了,不太了解。但是我用的都这样,不知道在什么情况下才会得到处理结果不一样的数据呢?
指点一下 --------------------编程问答-------------------- 我的理解是
a=b+  这个b是2 b=a 这个时候不会影响到这个第一个B的值。
但是可能不同的编译器处理数据的方式不一样吧,还是请高手指点一下,具体怎么回事啊? --------------------编程问答-------------------- 其实,感觉上哈,先不说楼主这个写法对于不对
从楼主的写法上,已经看出了,楼主的功力还是比较深厚的,如果能想到一句代码写出答案,可见楼主不可能不知道用++--的三句答案,这个问题见过N遍,楼主的也应该见过,只能说++--是常规的解法。
楼主在用创新的思维解答问题,值得大家赞赏! 这一个等式中蕴含了比较多的编译上的处理机制,只有熟知了可能才会这样写吧,一般人不怎么理解这样的处理机制,所以不敢这样写吧

可以肯定的是楼主很厉害,但还是尽量的避免非常规,学习可以,找工作就不行了,当然表现自己与众不同另当别论 --------------------编程问答--------------------
引用 9 楼 yxw545061402 的回复:
其实,感觉上哈,先不说楼主这个写法对于不对
从楼主的写法上,已经看出了,楼主的功力还是比较深厚的,如果能想到一句代码写出答案,可见楼主不可能不知道用++--的三句答案,这个问题见过N遍,楼主的也应该见过,只能说++--是常规的解法。
楼主在用创新的思维解答问题,值得大家赞赏! 这一个等式中蕴含了比较多的编译上的处理机制,只有熟知了可能才会这样写吧,一般人不怎么理解这样的处理机制,所以不敢这样写……

我可没那种想法,我觉得思路和水平是两码事,他给我的是笔试,我懒得写那么多 --------------------编程问答-------------------- 其实我这个帖子的目的很简单,
有一些考官,他考你基础是一方面,想压低你的工资也是一方面,要看他的职位了,如果他是技术兼股东,他必然会利用这种手法来榨压你的工资
当然如果是纯做技术的话就另当别论了。
他们不会故为的为难你,而是想知道你什么水平能不能干的了这个活,水平差看看你有没有培养的潜力。 --------------------编程问答--------------------
引用 7 楼 wjfwd2009 的回复:
引用 2 楼 huangwenquan123 的回复:
a = b + ((b = a) * 0);不同编译器处理的结果不一样。

这个就要请教了,不太了解。但是我用的都这样,不知道在什么情况下才会得到处理结果不一样的数据呢?
指点一下
你在C测试下看看。 --------------------编程问答--------------------
引用 12 楼 huangwenquan123 的回复:
引用 7 楼 wjfwd2009 的回复:
引用 2 楼 huangwenquan123 的回复:
a = b + ((b = a) * 0);不同编译器处理的结果不一样。

这个就要请教了,不太了解。但是我用的都这样,不知道在什么情况下才会得到处理结果不一样的数据呢?
指点一下
你在C测试下看看。

哦这样啊,怪我没说清楚了,我是去面试C#程序员的,C我一点不会 --------------------编程问答-------------------- C和C#是两种编译的体制,编译后的结果就另当别论了,编译的处理器不一样结果就不一样了。
补充:.NET技术 ,  非技术区
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,