我可不是什么大牛,我只是个小小小的菜鸟
其实那个问题的结果是确定的,并不是个未定义的行为。
至于结果为什么是那样,从源码上是看不出什么,所以
干脆说成是未定义的或者说是编译器搞的
都可以。
然后就建议不要这样使用云云。
但实际上确实可以从2进制文件上去研究
反汇编并不是普通意义上的汇编,
反汇编是对2进制文件的再识别,然后用助记符表示出来。
任何语言都需要落实到2进制文件上,所以说,正确反汇编得到的结果
足以支撑或说明任何语言在CPU执行这最底层上的实现细节。
在反汇编这层上,可以知道,I这个变量的“中间变化过程”并不被保存,所以导致最后
的结果都是I的最终值做运算。
3个I的运算结果又不同,那是因为先运算2个,结果再运算另1个,i有机会出现了两次最终值。具体的我也没去分析,记得以前了解过。
学C是为了用C,而用C这种偏底层的高级语言,就必须了解其上其下的多门知识,
当然,初学者要把精力全部用在C语言本身上,版主的引导方向没错,但是没必要
过分排斥其他相关知识。