javascript - C 和其他语言中的预增量行为

标签 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;
    }

Java

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

最佳答案

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

关于javascript - C 和其他语言中的预增量行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43674250/

相关文章:

javascript - Angular Directive(指令) : Adding ng-class directive at compile time on existing template element

javascript - 如何在退出全屏时更改样式

java - "Result of method is ignored"- 这意味着什么?

c++ - 禁用为 C/++ 中的某些行生成调试符号?

c - makefile 跳过隐式规则?

c - segmentation fault和segmentation fault core dumped的区别

javascript - 使用 json 数据和 javascript 创建导航菜单有什么好处或优点?

javascript - 在 Google Chrome 中使用 javascript 访问另一个框架( Uncaught ReferenceError )

java - Java Servlet 中的 ExecutorService

java - 我如何获得一个 html 页面中包含的所有文件的总大小(对于 css 文件递归)?