c和其他语言中的预增量行为

时间:2017-04-28 07:16:32

标签: javascript java c

c中的以下程序输出37,作为答案,我无法用它的逻辑出来。在其他语言中,答案如java或javascript输出为36.有人可以解释相同的逻辑提到的语言。

C

   #include <stdio.h>
      int main(){
      int a = 10; //assignment of variable
      printf("%d",(++a + ++a + ++a)); // increment the variable
      getchar();
      return 0;
    }

爪哇

public class postpreincrement {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a = 10;// variable a assigned value
        System.out.println(++a + ++a + ++a);// evaluation of expression
    }

}

的JavaScript

var a = 10; // variable a assigned value
console.log(++a + ++a + ++a); // evaluation of expression

1 个答案:

答案 0 :(得分:1)

在C语言中,它是未定义的行为,因为它试图在没有同步的情况下修改和读取同一个变量。