`
tanlan
  • 浏览: 203426 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

复合赋值运算符 += 到底怎么运算的?

阅读更多

题目:

short s1 = 1; 
s1 = s1 + 1;

 有什么错

short s1 = 1; 
s1 +=1;

 有什么错

此题咋一看,这两段代码貌似没有什么区别,但是它们的执行结果是不一样的。

结果是第一段代码会出错,第二段代码不会出错。

第一段代码的分析:

这段代码的第二句(s1=s1+1)就是简单的两个数字相加,结果赋值给第一个变量。

此时运算结果的数据类型由以下规则依次决定:

1,如果参与相加运算的表达式或数字有double类型,则结果是double类型

2,如果参与相加运算的表达式或数字有float类型,则结果是float类型

3,如果参与相加运算的表达式或数字有long类型,则结果是long类型

4,如果参与相加运算的表达式或数字没有以上3中数据类型,则结果是一律是int类型

按照这个规则,s1=s1+1;那么最终的运算结果应该是int,所以赋值给short类型的s1会出错。

第二段代码的分析:

类似于 num1 += num2 这样的形式的复合赋值表达式,,实际上等同于(num1的类型)(num1+num2),也就是将两个数相加之后的结果强制转型为赋值运算符左边操作数的数据类型。唯一的不同点就是num1只会计算一次,所以理论上复合赋值运算符的效率更高。

s1+=1;就会等同与 s1=(short)(s1+1);所以结果是没问题的。

 

各位是否明白了这个规则呢?请看以下两段代码,您是否能正确的说出答案呢?

下面的代码输出什么值?

short x = 3;
x += 4.6;
System.out.print(x);

 下面的代码有错吗?

 

int i = 5;
long j = 8;
i = i + j;
i += j;
0
3
分享到:
评论

相关推荐

    计算机二级C语言考点09赋值运算及复合赋值运算.pdf

    * +=、-=、\*=、/=、%=、<<=、>>=等:复合赋值运算符,用于将右侧的值和左侧的变量进行相应的运算,然后将结果赋给左侧的变量 例如:int a = 5; a += 2; // 将a的值加2,并将结果赋给a 三、复合赋值运算符 复合...

    Java运算案例(算数运算+赋值运算+逻辑运算+关系运算+自增运算+自减运算+条件运算+位运算)

    还有复合赋值运算符,如`+=`, `-=`等,它们结合了算数运算和赋值。例如,`x += 3;`相当于`x = x + 3;`。 3. **逻辑运算**: 逻辑运算符包括AND(&&), OR(||)和NOT(!)。这些运算符用于处理布尔值。例如,`if (a > 0 ...

    C语言程序设计-赋值运算符与赋值表达式.pptx

    除了基本的赋值运算符,C语言还提供了复合赋值运算符,包括 `+=`, `-=`,`*=`,`/=`,`%=`,`<<=`, `>>=`, `&=`, `|=` 和 `^=`。这些运算符将基本的算术或位运算与赋值操作结合起来。例如,`x += y` 相当于 `x = x +...

    c语言之赋值运算符共2页.pdf.zip

    除了基本赋值外,C语言还提供了复合赋值运算符,如`+=`, `-=`,`*=`,`/=`和`%=`等。这些运算符结合了算术运算和赋值操作,使得代码更为简洁。例如,`a += 3;` 相当于 `a = a + 3;`,在保持原有值的基础上对变量a...

    Java中赋值运算符.pdf

    除了基本的赋值运算符外,Java还提供了一组复合赋值运算符,它们结合了数学运算和赋值操作,简化了代码。这些运算符包括: 1. 加法赋值运算符(+=):例如,`x += 6` 相当于 `x = x + 6`,它会将x当前的值加上6,...

    python复合赋值运算符的使用例子.docx

    Python复合赋值运算符是编程语言中的一种高效工具,它允许开发者在单个语句中完成操作并赋值。在Python中,这些运算符能够帮助我们编写更简洁、可读性更强的代码。以下是Python中复合赋值运算符的详细说明及使用示例...

    C++运算符表格大全.pdf

    30. **除后赋值运算符/=,乘后赋值运算符*=,求余后赋值运算符%=,加后赋值运算符+=,减后赋值运算符-=,左移后赋值运算符<<=,右移后赋值运算符>>=,按位与后赋值运算符&=,按位异或后赋值运算符^=,按位或后赋值...

    js代码-js 赋值运算 *=,+=,/=,%=

    当我们谈论“js代码-js 赋值运算 *=,+=,/=,%="时,我们指的是四个特殊的复合赋值运算符,它们分别是乘法赋值(*=`)、加法赋值(+=`)、除法赋值(/=`)和模数赋值(%=`)。这些运算符不仅执行基本的数学操作,还...

    PHP程序设计-3期(KC016) 2.5.2赋值运算符课后习题.doc

    接下来,PHP还提供了一些其他的复合赋值运算符,如: 2. 加法赋值运算符:`+=` 当你执行 `x += y` 时,相当于 `x = x + y`。 3. 减法赋值运算符:`-=` 类似地,`x -= y` 相当于 `x = x - y`。 4. 乘法赋值...

    第二天 04赋值运算符【千锋Python人工智能学院】1

    本节我们将详细探讨Python中的基本赋值运算符和复合赋值运算符。 首先,我们来看基本赋值运算符,它是最简单的赋值方式,用`=`表示。这个运算符将右侧的值传给左侧的变量。例如,`num = 1 + 2 * 3` 这个语句会计算...

    C语言 数据类型 赋值 运算符 算法.pdf

    复合赋值运算符是将赋值运算符与其他运算符组合而成的运算符。例如`x += 5;`就是一个复合赋值运算符。复合赋值运算符可以简化代码,提高编译效率和代码质量。 七、逗号运算符和逗号表达式 逗号运算符是将多个...

    运算符的优先级顺序.docx

    复合赋值运算符如"+="、"-="、"*="、"/="、"%="、"<<="、">>="、"&="、"^="和"|=",它们的优先级低于算术运算符,但高于单个赋值运算符"="。复合赋值运算符会先执行相应的运算,然后赋值。 赋值运算符"="的优先级...

    PHP程序设计-3期(KC016) 2.5.2赋值运算符拓展知识.doc

    此外,PHP还提供了一组复合赋值运算符,它们结合了赋值和算术运算,使得代码更简洁。例如,`$a += 5`等同于`$a = $a + 5`,这将$a当前的值与5相加,然后将结果赋回给$a。同样地,其他复合赋值运算符包括`-=`(减赋值...

    python中的变量和算术运算符以及赋值运算符.docx

    - **复合赋值运算符**:包括加法赋值 (`+=`)、减法赋值 (`-=`)、乘法赋值 (`*=`)、除法赋值 (`/=`)、整除赋值 (`//=`)、取模赋值 (`%=`) 和幂赋值 (`**=`)。这些运算符允许您执行运算并立即重新赋值给变量。例如 `x ...

    赋值运算符

    除了基本的赋值运算符,还有几种复合赋值运算符,它们结合了赋值和算术运算。例如,`+=`表示增加并赋值,`-=`表示减去并赋值,`*=`表示乘以并赋值,`/=`表示除以并赋值,`%=`表示取模并赋值。这些运算符可以简化代码...

    C语言中《赋值运算》[参照].pdf

    然而,C语言还提供了复合赋值运算符,这些运算符结合了算术运算和赋值操作,使得代码更加简洁。复合赋值运算符包括: 1. 加赋值运算符“+=”:例如,`a += 3+1`等同于`a = a + (3+1)`,会先计算右侧的表达式,然后...

    java代码-例2-4 理解复合赋值运算符。

    复合赋值运算符包括加法赋值(+=)、减法赋值(-=)、乘法赋值(*=)、除法赋值(/=)、模运算赋值(%=)、左移赋值(<<=)、右移赋值(>>=)、无符号右移赋值(>>>=)、按位与赋值(&=)、按位或赋值(|=)以及按位...

    C语言中的运算符(2).docx

    复合赋值运算符包括加法赋值`+=`、减法赋值`-=`、乘法赋值`*=`、除法赋值`/=`、模运算赋值`%=`以及位运算相关的赋值(这里未详细解释)。使用复合赋值运算符通常会使程序运行更快,尤其是在表达式涉及函数调用或复杂...

    python基础学习day02.txt

    day01回顾: 数字 整数int, 浮点数float, 复数complex, 布尔型数bool(True/False) 运算符 算术运算符 + - * / // % ** is , is not 表达式 表达式一定会返回一个对象(数据) ... 复合赋值运算符 a += 10

Global site tag (gtag.js) - Google Analytics