现在该轮到你来写些代码了,好消息是,你只需为这个谜题编写两行代码,并为下一个谜题也编写两行代码。这有什么难的呢?我们给出一个对变量x和i的声明即可,它肯定是一个合法的语句:
x += i;
但是,它并不是:
x = x + i;
许多程序员都会认为该迷题中的第一个表达式(x += i)只是第二个表达式(x = x + i)的简写方式。但是这并不十分准确。这两个表达式都被称为赋值表达式。第二条语句使用的是简单赋值操作符(=),而第一条语句使用的是复合赋值操作符。(复合赋值操作符包括 +=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、^=和|=)Java语言规范中讲到,复合赋值 E1 op= E2等价于简单赋值E1 = (T)((E1)op(E2)),其中T是E1的类型,除非E1只被计算一次。
换句话说,复合赋值表达式自动地将它们所执行的计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。然而,如果结果的类型比该变量的类型要宽,那么复合赋值操作符将悄悄地执行一个窄化原始类型转换。因此,我们有很好的理由去解释为什么在尝试着执行等价的简单赋值可能会产生一个编译错误。
分享到:
相关推荐
赋值语句的语法分析文档加代码,可以作为编译原理的课程设计
这个是赋值语句翻译程序,包括词法分析,语法分析,语法分析采用算符优先
赋值语句的词法分析、语法分析、语义分析程序 基本功能都实现了 就是做的有些简单 如果有什么意见请联系 proudxu@gmail.com
这是我们编译原理的实验--简单赋值语句的语法语义分析程序,在VS05的平台上运行。
对编译原理中间代码生成的赋值语句的翻译,对中间代码的理解更有帮助
赋值语句的翻译程序 编译原理实验,第二个编译原理实验
编译实验,是对你在txt文档中写入的任意赋值语句程序段进行翻译成四元式并且进行词法分析。
赋值语句的翻译 LR文法 LL文法 简单优先法 编译原理
完成赋值语句、条件语句的四元式生成程序构造 完成赋值语句、条件语句的四元式生成程序构造 完成赋值语句、条件语句的四元式生成程序构造 完成赋值语句、条件语句的四元式生成程序构造 完成赋值语句、条件语句的四元...
赋值语句的编译.rar 赋值语句的编译.rar 赋值语句的编译.rar 赋值语句的编译.rar
本资源实现赋值语句的解释程序设计,资源中附加了代码和实现思路
编译原理 赋值语句的翻译 LL文法 LR文法 简单优先法
整数运算表达式及赋值语句翻译 整数运算表达式及赋值语句翻译 整数运算表达式及赋值语句翻译
主要是编译原理的理论知识应用,对赋值语句进行语法翻译和语义分析。
此程序使用算符优先法的语义分析方法实现了将赋值语句翻译为四元式的功能。这种仅将{=,+,-,*,/}当做运算符,而将括号当做深度的变种算符优先法,很好控制,很容易就能翻译赋值语句。该程序是linux平台下的,若要在...
这个跟单词的词法分析一起,在有词法分析的基础上,调用Scaner 方法 完成这个程序。 相信 计算机专业的 或是 软件工程专业的学生都会用到得
赋值语句的LR翻译程序设计 包含源代码和调试结果
这是编译原理的语义分析,对一个简单赋值语句进行翻译,翻译成逆波兰是也就是后缀式.