请具体解释一下a=1; a=(a++)+(++a)+(a++) 的运算过程

来源:百度知道 编辑:UC知道 时间:2024/06/23 07:35:37
刚学c,自增自减不明白

像a=1; a=(a++)+(++a)+(a++) 这样子的题,用一堆加加减减放在加减号的两面,等号的两面的题不要再做了,请你也不要再为它的结果而好奇了,这个不同的编译器的结果会不同的,而不同的结果也不能说是谁对谁错,它们都有自己的解释,就是说这个加号减号的运算顺序是不确定的,注意是运算顺序,不是结合顺序,比如(++i)+(++i)+(++i),这个式子,你只能根据优先级的表确定括号里面的先执行,但是谁都不能确定的告诉你三个式子是哪个先执行,所以有了不同的结果,在c的标准里面,这个是没有规定运算顺序的,在c的标准里面,有且仅有四个运算符是规定了运算顺序的,注意是运算顺序,那就是与&&,或||,逗号运算符,,唯一的三目运算符?:,除了这四个运算符规定是从左到右执行的,剩下的都没有规定运算顺序。

不明白就不用,那东西没意义!

国内某些叫兽写的书真搞,大肆宣扬不能用goto,事实上要一次从n层循环内跳到最外层最好的方法就是goto
一个表达式内出现同一变量多次自增(尤其是前增),这真正要避免的情况,反而没有太多强调

不同编译器不同
不要这样用