c中的++i和java中的++i不一样?

新手上路,请多包涵

一段c的代码

clipboard.png

一段java代码

clipboard.png

相关c代码

`#include<stdio.h>
int main(void){

int i = 5, j = 5, p , q;
p = (i++) + (i++) + (i++);
q = (++j) + (++j) ;
printf("%d , %d, %d, %d", i, j, p, q);
return 0;

}`

相关java代码

`public class TestNum {

public static void main(String[] args) {
    int i = 5, j = 5, p , q;
    p = (i++) + (i++) + (i++);
    q = (++j) + (++j) + (++j);
    System.out.println(i);
    System.out.println(j);
    System.out.println(p);
    System.out.println(q);
}

}`

什么运算后java中q是21,c中q是22呢?

阅读 1.9k
2 个回答

哈哈,这个我知道。
对于子表达式的运算顺序来说,C标准是未定义的。也就说先运算子表达式中的哪一个只有天知道。...
同时,对于i++来说,究竟什么时候刷新i的值只有编译器知道(有一个叫做顺序点的东西),这是由有编译器决定的。能够肯定的是它会一定在进入下一条语句之前刷新i的值。再不同的编译器下面这个是不一样的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题