【问题标题】:pre increment behavior in c and other languages [duplicate]c和其他语言中的预增量行为[重复]
【发布时间】:2017-04-28 07:16:32
【问题描述】:

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 中未定义。我建议您查看 C 中的 Sequence points

标签: javascript java c


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多