java - C和JAVA中自增自减运算符的区别

标签 java c expression post-increment pre-increment

<分区>

请考虑以下声明:

int a[]={1,2,3,4,5,6,7,8};
int i=0,n;
n=a[++i] + i++ + a[i++] + a[i] ;

根据我的逻辑 n 应该是 10。但是我在 c 中得到了不同的输出(输出是 7) 但是在 Java 中,我得到的预期结果是 10。递增和递减运算符在 C 和 Java 中的工作方式有什么不同吗?

这是我的确切 C 和 Java 代码:

         #include <stdio.h>
            int main()
            {
                int a[]={1,2,3,4,5,6,7,8};
                int i=0,n;
                n=a[++i] + i++ + a[i++] + a[i] ;
                printf("%d",n);
                getch();
                return 0;
            }

Java 代码输出:10

public class HelloWorld{

     public static void main(String []args){

        int a[]={1,2,3,4,5,6,7,8};
        int i=0,n;
        i=0;
        n=a[++i] + i++ + a[i++] + a[i] ;
        System.out.println(n);
     }
}

最佳答案

C 中,这是一个未定义的行为。因为 C 不保证表达式中各个操作的求值顺序。

关于java - C和JAVA中自增自减运算符的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684991/

相关文章:

javascript - Mozilla 并没有完美地执行这段代码,尽管它可以在 Chrome 和 IE 上运行

c - 错误前的预期表达

Javascript - 如何在表达式中放置一个语句?

java - 选择 Java Web 框架 2011

java - 用 Java 开发一个简单的插件模块化 rest 可达服务

c - while 循环在每次迭代中工作两次

c - 使用c代码从文件中读取字符

Java EE 查询两个表

java - 如何声明并添加到全局数组列表?

c - 如何重新分配一个空的二维数组