日期:2014-05-18  浏览次数:20955 次

i=3;k=(++i)+(++i)+(++i) 求i 和k的值
i=3;k=(++i)+(++i)+(++i) 求i 和k的值

为什么c\c++ 运行结果是i=6,k=18,而C# 运行结果却是 i=6 ,k=15 。求高人指点。

迷惑的不行了都

------解决方案--------------------
编译器怎么做事它们自己的事儿,你的项目里面如果出现了如这样的代码,那就是你的错误了。
------解决方案--------------------
编译器不同,结果不同
------解决方案--------------------
探讨
i=3;k=(++i)+(++i)+(++i) 求i 和k的值

为什么c\c++ 运行结果是i=6,k=18,而C# 运行结果却是 i=6 ,k=15 。求高人指点。

迷惑的不行了都

------解决方案--------------------
呵呵,对于喜欢写这样代码的人,最好还是去学python,而且最好去做视频解码器这样的东西。
通用企业级别开发的人,写成这样的代码基本叫做不是bug的bug,因为不管是多大的大牛,总要愣上5秒种的样子才能反应出是啥结果,而且通常来说还不一定肯定就是这结果。写代码不是编天书,你写的东西最后还让人看的懂才对

ps:不同编译器对这玩意有不同的解析,所以结果不一样一点不稀奇。
------解决方案--------------------
你弄简单点不行啊?
------解决方案--------------------
探讨

呵呵,对于喜欢写这样代码的人,最好还是去学python,而且最好去做视频解码器这样的东西。
通用企业级别开发的人,写成这样的代码基本叫做不是bug的bug,因为不管是多大的大牛,总要愣上5秒种的样子才能反应出是啥结果,而且通常来说还不一定肯定就是这结果。写代码不是编天书,你写的东西最后还让人看的懂才对

ps:不同编译器对这玩意有不同的解析,所以结果不一样一点不稀奇。

------解决方案--------------------
要是哪个公司用这个面试,我转身就走。
------解决方案--------------------
其实我们学习编程如果太把中心放到语言上,那就错了,多看看底层的,等你掌握了,你自己可以写出一个编译器
那么多语言语法没多大区别,都是底层的编译器的运行原理不一样
------解决方案--------------------
C++
i=6;k=6+6+6=18;

C# 按你理解的运算方法
------解决方案--------------------
楼主可以去读一下《编译原理》。里面有对语句的详细解释。
另外,每个编译器都会有对这种语法的特殊解释。

不知道你问这问题干嘛。