关于i++和++i的有关问题,头疼~
关于i++和++i的问题,头疼~~
算了一晚上都没算对,想问下各位高手。。。
我在Linux上的VIM的编辑器上先声明了int i=1;
然后运行了2个句子,分别是:
1.i=i++ + i++ + ++i + ++i + ++i + ++i + ++i;
2.i=i++ + ++i + i++ + ++i + ++i + ++i + ++i;
但第一个的的值是24,而第二个的值是26,怎么算都算不对。。。。
有考虑过堆栈的问题- -但还是头疼。。。。
可以告诉我这两句是怎么算的吗?谢谢各位了,算了一晚上都不对。。。
------解决方案--------------------
初学者都会为这些问题所困扰。等你学上手了,就不会再考虑这些问题了。因为没人会自动把代码写成这个样子。
建议楼主去学下一个知识点。不要把时间耗在这个问题上。
------解决方案--------------------
把语句拆分了,就没有这样的问题了。
------解决方案--------------------
以上各楼说的都很正确,具体的结果取决于编译器的,而C标准没有对这块进行严格定义,所以结果是不一定的。
记得自己刚学的时候,也纠结与这些问题。但是现在发现,实际中根本用不上的,谁写这样的代码,两耳光扇过去!如果是老师考这样的题,我只能再次为中国的教育事业默哀
------解决方案--------------------
1.i=i++ + i++ + ++i + ++i + ++i + ++i + ++i;
1.对于二元操作符, 他的左操作数和右操作数哪个先求值是不确定的.
所以,上面例子中的全部+操作也是这样.
这是错误之1.
2.对于i++这个表达式的副作用(+1的效果)产生的时间是从语句的始到整句话执行完毕之间任意时刻.
这是错误之2.
表达式求值顺序
------解决方案--------------------
写这种代码的就是蛋疼.
最后的值编译器相关。
而且这种代码也让人难以理解你的目的。
算了一晚上都没算对,想问下各位高手。。。
我在Linux上的VIM的编辑器上先声明了int i=1;
然后运行了2个句子,分别是:
1.i=i++ + i++ + ++i + ++i + ++i + ++i + ++i;
2.i=i++ + ++i + i++ + ++i + ++i + ++i + ++i;
但第一个的的值是24,而第二个的值是26,怎么算都算不对。。。。
有考虑过堆栈的问题- -但还是头疼。。。。
可以告诉我这两句是怎么算的吗?谢谢各位了,算了一晚上都不对。。。
------解决方案--------------------
初学者都会为这些问题所困扰。等你学上手了,就不会再考虑这些问题了。因为没人会自动把代码写成这个样子。
建议楼主去学下一个知识点。不要把时间耗在这个问题上。
------解决方案--------------------
把语句拆分了,就没有这样的问题了。
------解决方案--------------------
以上各楼说的都很正确,具体的结果取决于编译器的,而C标准没有对这块进行严格定义,所以结果是不一定的。
记得自己刚学的时候,也纠结与这些问题。但是现在发现,实际中根本用不上的,谁写这样的代码,两耳光扇过去!如果是老师考这样的题,我只能再次为中国的教育事业默哀
------解决方案--------------------
1.i=i++ + i++ + ++i + ++i + ++i + ++i + ++i;
1.对于二元操作符, 他的左操作数和右操作数哪个先求值是不确定的.
所以,上面例子中的全部+操作也是这样.
这是错误之1.
2.对于i++这个表达式的副作用(+1的效果)产生的时间是从语句的始到整句话执行完毕之间任意时刻.
这是错误之2.
表达式求值顺序
------解决方案--------------------
写这种代码的就是蛋疼.
最后的值编译器相关。
而且这种代码也让人难以理解你的目的。