再谈《C语言中自加(减)运算符使用的一小疑问》

Author: Date: 1996-12-13

        1.当表达式赋于某个变量时,计算机把i的原值(3)取出来,作为表达式中i的值,因此先进行三个i相加得9。若表达式为(++i)+(++i)+(++i),当赋于某个变量时,由于++i的自加是在整个表达式求解一开始时最先进行,即对表达扫描,先对i进行三次自加,i得6,然后进行(6+6+6)的运算,故得18。再看一个例子k=(++i)+(i++)+(++i),i初值为3此时k为多少呢?先对i进行二次自加得5,然后进行k=5+5+5=15。
        2.若表达式作为函数参数时,则Turbo C规定函数参数的求值顺序是自右而左。例如:
        i=3;
        printf("k=%d,i=%d\n",(i++)+(i++)+(i++));
        此时(i++)+(i++)+(i++)=5+4+3=12
        同时读者可算出:
        表达式(++i)+(++i)+(++i)=6+5+4=15
        表达式(++i)+(i++)+(++i)=6+4+4=14
        表达式(++i)+(i++)+(i++)=6+4+3=13(福建   林颖贤)