`
benx
  • 浏览: 276900 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自增 自减 java和c的区别

    博客分类:
  • java
 
阅读更多

 

JAVA

 

public class Test {  
  
    public static void main(String[] args) {  
        int i = 1000;  
        int j = 2000;  
        int a = i++;  
        int b = ++j;  
    }  
}  

汇编

 0: bipush        1000     //  
 2: istore_1              //设置 i=1000   index=1的本地变量  
 3: sipush        2000     
 6: istore_2              //设置j=2000;  index=2的本地变量 
 7: iload_1               //把index=1的数据放入操作栈  
 8: iinc          1, 1    //把index=1的数据加1  
11: istore_3              //把操作栈中数据赋值给a 
12: iinc          2, 1    //把index=2的数据加1  
15: iload_2               //把index=2的数据放入操作栈  
16: istore        4       //把操作栈中数据赋值给b 

 

区别:

a=i++ 表示先把i放入操作栈,后更新i在本地变量的值,最后把操作栈的值(没变动过)赋值给a  

b=++i  表示先更新本地变量j,后放到操作栈中,再把操作栈中数据赋值给b

 

 

 

C

 

int main(void) {
    int i = 1000;
    int j = 100;

    int a = i++;
    int b = ++j;
}

 leal    4(%esp), %ecx
 andl    $-16, %esp
 pushl   -4(%ecx)
 pushl   %ebp
 movl    %esp, %ebp
 pushl   %ecx
 subl    $16, %esp
 movl    $1000, -20(%ebp)    //栈ebp-20位置的值为1000  表示i
 movl    $100, -16(%ebp)     //栈ebp-16位置的值为2000  表示j
 movl    -20(%ebp), %eax     //把栈ebp-20位置的值1000 放入eax
 movl    %eax, -12(%ebp)     //把eax的值放入ebp-12  表示a
 addl    $1, -20(%ebp)       //把栈ebp-20的值+1
 addl    $1, -16(%ebp)       //把栈ebp-16的值+1
 movl    -16(%ebp), %eax     //把栈ebp-16的值放入eax
 movl    %eax, -8(%ebp)      //把eax的值放入栈ebp-8 表示b
 addl    $16, %esp
 popl    %ecx
 popl    %ebp
 leal    -4(%ecx), %esp

 区别:

a=i++ 表示先把i的值赋给a,然后给i加1

a=++i 表示先把i的值加1,然后赋值给a

 

分享到:
评论

相关推荐

    Java语言的自增_自减_运算符辨析

    本文将通过对比Java和C语言中的自增(`++`)和自减(`--`)运算符,探讨它们之间的区别,并通过实例程序帮助读者更好地理解这些概念。 #### Java与C语言中的自增自减运算符 在C语言和Java语言中,自增和自减运算符...

    Java语言中自增、自减运算符解析.pdf

    Java语言中的自增运算符(++)和自减运算符(--)是两个非常基础且独特的运算符,它们在编程中用于递增或递减变量的值。这两个运算符源自C语言,且Java语言中也使用了这两个运算符,并保留了它们的主要特性,但也有一些...

    自增自减工具

    首先,让我们了解自增1(++)和自减1(--)的概念。在大多数编程语言中,如C、C++、Java、Python等,这两个操作符用于分别使变量的值增加1或减少1。例如,对于变量`num`,`num++`会将`num`的值增加1,而`num--`则会...

    自增与自减

    2. **自减操作符(--)**:与自增操作符类似,自减操作符用于将变量的值减少1,同样可以分为前缀自减和后缀自减两种形式。 #### 二、工作原理 1. **前缀操作**: - 前缀操作符会首先改变变量的值,然后再返回该...

    Java语言中自增、自减运算符解析.zip

    在Java编程语言中,自增和自减运算符是编程中常见的操作,它们用于快速地增加或减少变量的值。自增和自减运算符在循环控制、算法优化以及简单的数学计算中扮演着重要角色。本篇文章将深入解析Java中的自增和自减...

    java中的自增(++)和自减(--)运算符.docx

    ### Java中的自增(++)和自减(--) 在Java编程语言中,自增(`++`)和自减(`--`)运算符是非常基础但又十分重要的概念。这两个运算符能够快速地改变变量的值,是编程中经常使用的工具之一。 #### 自增运算符(`++`...

    java中的自增(++)和自减(--)运算符 (2).pdf

    在Java编程语言中,自增(++)和自减(--)运算符是非常常见的,它们用于增加或减少变量的值。这两个运算符分为前缀和后缀两种形式,它们的行为略有不同。 1. **自增运算符(++)** - **前缀自增**:例如 `++i`,先将...

    自增(++)和自减(-)运算符.docx

    在Java编程语言中,自增(++)和自减(-)运算符是两种常用的单目运算符,它们用于增加或减少变量的值。这两个运算符分为前缀式和后缀式,其行为有所不同。 1. 自增运算符(++): - 前缀式:`++i`,先将变量i的值加1,...

    java中的自增(++)和自减(--)运算符.pdf

    Java中的自增(++)和自减(--)运算符是编程中常见的操作,它们用于增加或减少变量的值。这两个运算符分为前缀形式和后缀形式,每种形式有不同的行为和效果。 1. 自增运算符(++): - 前缀形式:`++i`,首先将变量i的...

    自增(++)和自减(-)运算符.pdf

    自增(++)和自减(-)运算符在编程语言中,特别是Java中,是非常基础且重要的概念。它们被用来修改变量的值,每次操作增加或减少1。这两个运算符分为前缀式和后缀式。 1. **自增(++)**: - 前缀式 `++i`:先将变量i的...

    最简单的方法搞懂java自增(++)和自减(--)(学不会来打我)(csdn)————程序.pdf

    Java中的自增(++)和自减(--)运算符是编程中常见的操作,它们用于增加或减少变量的值。本文将通过一个具体的例子深入解析这两种运算符的工作原理。 首先,我们来看自增运算符`++`。它有两种用法:前缀形式`++变量`和...

    趣谈C语言和JAVA中的++和--

    这两个运算符的灵活性在于它们可以被放置在变量之前或之后,从而产生前置自增/自减和后置自增/自减的区别。 ##### 前置与后置的区别 - **前置自增/自减**:形式为 `++var` 或 `--var`。这种情况下,变量的值首先被...

    java代码-例子2-3 Java语言中自增与自减运算符的用法

    在Java编程语言中,自增和自减运算符是编程中常见的操作,它们用于快速地增加或减少变量的值。自增和自减运算符在循环控制、算法优化以及简单的数学计算中扮演着重要角色。本示例将深入探讨这两个运算符的用法。 ...

    JavaSe的例题训练,学习和复习Java都可以用的到,包含各个章节的题

    程序实例中,通过分析变量的赋值、运算和自增自减操作,可以学习到Java中的顺序执行、赋值运算符、自增自减运算符以及条件判断的逻辑。例如,`n、`n=m`和`n>m`的判断,以及`x+=2`和`y-=3`这样的复合赋值运算。 总之...

    Java 基本语法(三)——运算符和类型转换

    Java中的自增自减运算符有两种形式:前缀和后缀。例如: ```java int a = 5; int b = a++; // 先赋值后自增,b 的值为 5 int c = ++a; // 先自增后赋值,c 的值为 7 ``` 前缀形式(如`++a`)会先增加变量的值然后...

    华中科技大学 编译原理 面向过程的C语言的编译器设计 含有词法分析和语法分析、语义分析、中间代码生成的 源码.zip

    源语言要求至少包含的语言成分如下: 数据类型至少包括char类型、int类型和float类型 基本运算至少包括算术运算、比较运算、自增自减运算和复合赋值运算 控制语句至少包括if语句和while语句 实验内容:完整可运行的...

    潍坊学院JAVA考试习题.doc

    题目中的表达式`a++*b+c*--d`在计算时会先计算d的自减,然后是a的自增,最终得出结果。 6. 标识符:有效的Java标识符必须以字母、下划线或美元符号开头,后续可以是字母、数字、下划线或美元符号。2_cugii不是一个...

    java编程基础ppt

    与C++的指针不同,Java的引用不支持自增自减运算。此外,Java还有String类用于表示字符串,虽然不是基本数据类型,但在使用上类似于引用类型。 在Java中,常量分为整型常量(包括十进制、八进制、十六进制)、浮点...

    Java基础知识总结

    1. **简单性**:相比 C 和 C++,Java 简化了许多复杂的概念,例如取消了指针、运算符重载等功能。 2. **面向对象**:Java 是一种完全的面向对象编程语言,支持封装、继承和多态等面向对象的核心概念。 3. **分布性**...

    Java平台开发技术.pptx

    引用不仅表示对象的地址,还提供了对对象的一些元信息,不允许进行自增自减运算。 在实际编程中,我们会声明变量来存储数据,如`int data=10;`和`Boolean isAlived;`。Java的操作符与C语言相似,但不包含指针操作。...

Global site tag (gtag.js) - Google Analytics