`

看个简单的赋值操作的问题

 
阅读更多

看看以下程序会输出什么:

                int k=0;
		for(int i=0;i<100;i++){
			k=k++;
		}
		
		System.err.println("K is: "+k);

 输出结果竟然为:0

原因:Java的中间变量机制,上述代码的实际执行过程:

int tmp=k; k=k+1; k=tmp;

所以无论执行多少循环都只是0.

 

然而要是在C语言中,上述代码会输出预想的 100.C语言没有这个机制。

 

教训:不要在单个的表达式中对相同的变量赋值超过一次。

分享到:
评论

相关推荐

    C++构造函数_析构函数和赋值操作符学习小结

    考虑一个简单的 string 类,它有一个构造函数、一个析构函数和一个赋值操作符。如果没有自定义这些函数,可能会导致内存泄漏和其他问题。例如,如果定义两个对象 a 和 b,然后执行赋值操作 b = a,可能会导致内存...

    matlab数组循环赋值

    在 MATLAB 中,对数组的赋值是一个非常重要的操作。可以使用 For 循环、While 循环或向量化操作对数组进行赋值。使用循环语句可以对数组进行逐元素赋值,而使用向量化操作可以批量对数组进行赋值。选择合适的赋值...

    编译原理简单赋值语句的语法分析程序

    本实验聚焦于简单的赋值语句,这是一种常见的编程操作,如 `x = 5;`。在这个过程中,我们将探讨如何构建和实现一个针对此类语句的语法分析程序。 首先,我们要定义一个文法来描述这些简单的赋值语句。在形式化语言...

    赋值语句语法分析

    - **赋值操作符**:“:=”是一个整体,不可分割,用于将右侧表达式的值赋给左侧的变量。 - **注意事项**: - 赋值号由“:=”构成,单独的“:”或“=”具有不同的含义。 - 变量在使用前必须声明类型。 - 赋值操作...

    简单赋值语句的语法分析

    此代码示例主要关注于C++中的简单赋值语句语法分析过程,并且通过一个具体的实现方式来展示了如何处理这类语法分析问题。 ### 标题理解:简单赋值语句的语法分析 标题中的“简单赋值语句的语法分析”表明了本篇...

    拷贝构造函数和赋值操作符号的重载.docx

    在C++编程中,拷贝构造函数和赋值操作符重载是两个非常重要的概念,尤其是在处理包含动态分配资源的对象时。拷贝构造函数和赋值操作符是保证对象正确复制和赋值的关键。 拷贝构造函数是一种特殊的构造函数,其主要...

    编译原理简单赋值语句的语法分析c++

    在C++中,一个简单的赋值语句可能如下所示: ```cpp identifier = expression; ``` 这里的`identifier`是变量名,`expression`是任意有效的表达式,例如数字、算术运算或函数调用。在语法分析阶段,我们需要识别...

    拷贝构造函数和赋值操作符号的重载.pdf

    在C++编程中,拷贝构造函数和赋值操作符重载是两个非常重要的概念,尤其是在处理包含动态分配内存的类时。拷贝构造函数和赋值操作符的正确实现对于确保对象之间的独立性和防止资源泄露至关重要。 拷贝构造函数是一...

    编译原理 赋值语句的翻译 LL文法 LR文法 简单优先法

    4. **简单优先法**:简单优先法(Simple Precedence Parsing)是一种基于优先级的解析策略,常用于解决表达式的解析问题。它通过定义运算符的优先级和结合性来确定计算顺序。例如,在 `x = y + z * w` 中,乘法`*`的...

    赋值语句的翻译程序

    在这个“赋值语句的翻译程序”编译原理实验中,我们将深入探讨如何构建一个简单的编译器,专注于处理一种基础且常见的编程元素——赋值语句。这个实验的目标是帮助我们理解编译器的工作原理,以及如何实现特定的编译...

    MATHCAD 符号方程组赋值

    这一过程涉及到几个关键步骤:首先,定义符号变量,然后编写符号表达式,并通过赋值操作将其与特定的符号变量关联起来。这样,符号表达式就可以在后续计算中作为变量来调用。 下面详细说明在MATHCAD中进行符号方程...

    赋值语句词法语法语义分析程序

    在这个程序中,虽然简单,但至少实现了基础的语义检查,以保证赋值操作的合法性。 在压缩包中的文件"语义第三次.doc"可能是对语义分析的进一步说明,可能是关于改进版本的三次迭代,可能包含更复杂的情况处理或错误...

    多线程线程变量赋值

    总的来说,“多线程线程变量赋值”是一个关于如何在多线程环境中管理线程私有数据的问题。通过`ThreadLocal`,我们可以创建和操作线程特有的变量,避免了数据同步的复杂性,但在使用过程中需要注意内存管理和线程...

    SQL中SET和SELECT赋值的区别

    SET 适用于简单的赋值操作,而 SELECT 则适用于需要对多个变量同时赋值的场景。同时,需要注意在表达式返回多个值或无返回值时的差异。 理解 SET 和 SELECT 赋值的区别对于编写高效的 SQL 代码非常重要。

    阻塞和非阻塞赋值

    **定义**:非阻塞赋值是一种延迟执行的赋值操作,即在下一个时间步完成赋值。使用非阻塞赋值时,即使赋值语句被执行,程序也不会等待赋值完成就直接执行下一条语句。 **语法**:非阻塞赋值通常使用“”符号来表示,...

    C# 几个textbox 里的值相加 赋值到 textbox

    这样,我们可以确保只有当所有输入都是有效的数字时才执行加法和赋值操作。 为了扩展到更多个TextBox,你可以创建一个循环,遍历一个包含所有TextBox对象的列表或数组,每次迭代都尝试将文本转换为数值并累加。 ...

    赋值语句的翻译程序设计

    在这个实验中,我们需要对输入的赋值语句进行词法分析,识别出变量、赋值操作符和可能的数值。 4. **四元式**:四元式是编译原理中的一个概念,用于表示中间代码,通常用于表示计算步骤。一个四元式通常包含四个...

    赋值语句的语法分析程序

    在编程领域,赋值语句是程序设计中最基础的元素之一,它用于将一个值赋予一个变量或对象。本文将深入探讨赋值语句的语法分析,以及如何编写编译器来处理这些语句。首先,我们要理解的是,编译器是将高级语言转化为...

    赋值语句的解释程序设计.docx

    在这个项目中,采用了算符优先分析方法,这种方法通过优先级关系来确定操作符的结合顺序。 为了实现这一目标,设计中定义了两种关键的数据结构:变量表和单词串。变量表用结构体`varlist`表示,包含一个整型变量...

    if字段赋值_If..._arcgis字段_arcgis_土地利用_字段赋值_

    在处理地理数据时,有时我们需要对数据的属性字段进行赋值操作,特别是在涉及条件判断的情况下,`If...`语句就显得尤为重要。这个场景下,我们讨论的是如何在ArcGIS中使用`If`语句对土地利用代码进行赋值。 首先,...

Global site tag (gtag.js) - Google Analytics