`

看一个连续重复修改变量的例子(Java和C比较)

 
阅读更多

先分析一下这个表达式:

                                       x+=expr           //expr代表一个表达式

                  1.   对于Java:       x的值是在计算expr之前被提取的。

                   2.  对于C:         x的值是在计算完expr之后才被提取的。

看个例子:

                int x=2;
		int y=3;
		x+=y+=x+=y;

          请问:以上代码执行完之后,x和y的值各变成了多少?

在Java中:         x变成了10;y变成了8。

在C中:              x变成了13;y变成了8。

 我们来做一下分析:

                                                    在Java中:由于被之前提取

                  1.  首先最右边的式子:x+=y

                        将x提取到中间变量temp中:  temp1=x(此时temp==2).执行完x+=y之后,x变成5.

                  2. 接下来到了中间的式子:y+=x

                        首先提取y,temp2=y。执行完y+=x之后y=temp1+x=3+5,y变成了8.

                  3。最后到了最左边的这个式子:x+=y

                         在这里实际上执行的是x=temp1+y=2+8(实际上Java用了中间变量机制)

                         在这里C语言执行的是x=x+y=5+8(C语言没有中间变量机制)

分享到:
评论

相关推荐

    2021-2022计算机二级等级考试试题及答案No.2320.docx

    5. C语言do-while循环和switch-case结构:该程序包含一个do-while循环,其中switch-case用于处理不同情况。在每次循环中,n的值将被累加。由于k初始为5,循环会执行两次,输出n的值分别为0和2。最终输出结果为"02",...

    2021-2022计算机二级等级考试试题及答案No.19713.docx

    在学生表的例子中,选项A返回所有学生的总数,选项B返回"所在系编号"列中不同值的数量,选项C和D使用了GROUP BY子句,这意味着它们返回每个学号出现的次数。因此,返回值为3的选项是D,因为它按学号分组并计算每个组...

    2021-2022计算机二级等级考试试题及答案No.2531.docx

    - **指针定义**:在C/C++等编程语言中,指针变量用于存储另一个变量的内存地址。 - **指针操作**:可以通过指针变量间接访问和修改其所指向的变量的值。 ### 19. Windows 文件操作 - **知识点**: - **文件拖动*...

    net学习笔记及其他代码应用

    然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中...

    第6 - 7章作业1

    在上面的例子中,`display` 方法被重载了两次,一次接受一个整型参数,另一次接受一个字符串参数。 ### 2. 一维数组与二维数组的创建 #### 一维数组 **定义**:一维数组是一组连续内存空间中存储的同类型数据集合...

    2021-2022计算机二级等级考试试题及答案No.9855.docx

    例如,在创建一个学生信息表时,我们需要定义字段如“学号”、“姓名”、“性别”等,并指定每个字段的数据类型和长度。 #### 2. Access 2003中的视图切换 - **知识点**: 在Access 2003中,可以在设计视图和数据表...

    程序员试卷2003年

    题目中的正规表达式r=(a|b|c)(0|1)*描述了一个由字符'a'、'b'或'c'开头,后跟任意数量的'0'或'1'组成的字符串集,这个集合是无限的,因为'0'和'1'可以无限次重复。 #### 语法分析与树结构 在编译程序的语法分析阶段...

    2021-2022计算机二级等级考试试题及答案No.15269.docx

    - **解析**: `String` 类的对象是不可变的,这意味着一旦创建了一个 `String` 对象,它的值就不能被更改。相反,`StringBuffer` 是可变的,可以在运行时修改其内容,因此适用于需要频繁修改字符串内容的场景。 ####...

    二十三种设计模式【PDF版】

    所以很少存在简单重复的工作,加上Java 代码的精炼性和面向对象纯洁性(设计模式是 java 的灵魂),编程工作将变成一个让你时刻 体验创造快感的激动人心的过程. 为能和大家能共同探讨"设计模式",我将自己在学习中的心得...

    2021-2022计算机二级等级考试试题及答案No.12390.docx

    在给定的例子中,由于`fun`函数内部尝试修改了一个未定义的全局变量`s`,这会导致`UnboundLocalError`异常。 #### 23. C语言中的宏定义使用 - **知识点**: C语言中的宏定义使用`#define`指令。在示例程序中,由于`S...

    2021-2022计算机二级等级考试试题及答案No.17157.docx

    Java中提供了一个专门用于将日期格式化为字符串的类`DateFormat`,但题目中的括号可能是笔误,正确答案应为`DateFormat`类。 ### 12. 关系数据库操作——投影 从关系模式中选择若干属性组成新的关系称为**投影**。...

    精通正则表达式~~~

    关于内嵌代码和my变量的忠告... 338 使用内嵌代码匹配嵌套结构... 340 正则文字重载... 341 正则文字重载的问题... 344 模拟命名捕获... 344 效率... 347 办法不只一种... 348 表达式编译、/o修饰符、qr/·...

    华为编程开发规范与案例

    与开发人员在测试组环境多次重复以上步骤,发现11群的计次表话单有时正常,有时其出中继群号就为一个随机值,发生异常的频率比较高。为什么其它群的话单正常,唯独11群不正常呢?11群是四个群中最小的群,其中继计...

    2021-2022计算机二级等级考试试题及答案No.13468.docx

    - **题目描述**:给出了一个具体的C语言switch-case结构的例子,展示了如何使用break和default关键字。 - **知识点详解**: - **switch-case**:这是一种多路分支结构,用于根据不同的条件执行不同的代码块。如果...

    linker and loader introuction

    假设有一个简单的C程序,由几个源文件组成,每个源文件包含不同的函数。编译这些源文件后,会得到多个目标文件。链接器的任务就是将这些目标文件合并,并解决各个目标文件之间的符号引用问题,最终生成一个可执行...

    2021-2022计算机二级等级考试试题及答案No.10941.docx

    在设计Access数据库中的表时,应遵循的原则包括:每个表仅包含一个主题的信息、表中不应包含重复信息、信息不应在表间复制等。 ### 26. 数据库设计步骤 在数据库设计过程中,确定需要哪些表是一项非常关键的步骤。 ...

    2021-2022计算机二级等级考试试题及答案No.18984.docx

    - 在条件宏设计中,连续重复的条件可以使用符号 `…` 替代,以减少重复编写相同条件的工作量。 ### 17. 关系数据库的操作 - **知识点概述**:关系数据库中的基本操作包括选择、投影和连接等。 - **详细解释**: ...

    javascript实现数字配对游戏的实例讲解

    此外,我们还需要一个变量times记录已用时间,以及一个变量NEW_START记录游戏是否可以开始。 为了生成随机数数组,我们可以编写一个getNum()函数,确保生成的数组包含十个互不相等的随机数,然后将每个数字复制一份...

Global site tag (gtag.js) - Google Analytics