一道表达式的经典试题

    技术2022-05-20  49

    写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C 错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,11。

     

     

    ------------------------------------------------------------------------

    自己的实验:

    int main(){        int a = 4;        (++a) += (a++);         int b = 4;        (++b) = (++b) + (b++);         printf("a = %d, b = %d/n", a, b);         return 0;}

    运行结果:

    a = 11, b = 13。

     

    根据以上结果(个人猜想):

    编译器对表达式进行了两遍处理:

      1.第一次:从左到右,进行出现的++运算。

      2.第二次:从右到左,进行表达式的计算。

     

     


    最新回复(0)