题目:
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;
相关推荐
* +=、-=、\*=、/=、%=、<<=、>>=等:复合赋值运算符,用于将右侧的值和左侧的变量进行相应的运算,然后将结果赋给左侧的变量 例如:int a = 5; a += 2; // 将a的值加2,并将结果赋给a 三、复合赋值运算符 复合...
还有复合赋值运算符,如`+=`, `-=`等,它们结合了算数运算和赋值。例如,`x += 3;`相当于`x = x + 3;`。 3. **逻辑运算**: 逻辑运算符包括AND(&&), OR(||)和NOT(!)。这些运算符用于处理布尔值。例如,`if (a > 0 ...
除了基本的赋值运算符,C语言还提供了复合赋值运算符,包括 `+=`, `-=`,`*=`,`/=`,`%=`,`<<=`, `>>=`, `&=`, `|=` 和 `^=`。这些运算符将基本的算术或位运算与赋值操作结合起来。例如,`x += y` 相当于 `x = x +...
除了基本赋值外,C语言还提供了复合赋值运算符,如`+=`, `-=`,`*=`,`/=`和`%=`等。这些运算符结合了算术运算和赋值操作,使得代码更为简洁。例如,`a += 3;` 相当于 `a = a + 3;`,在保持原有值的基础上对变量a...
除了基本的赋值运算符外,Java还提供了一组复合赋值运算符,它们结合了数学运算和赋值操作,简化了代码。这些运算符包括: 1. 加法赋值运算符(+=):例如,`x += 6` 相当于 `x = x + 6`,它会将x当前的值加上6,...
Python复合赋值运算符是编程语言中的一种高效工具,它允许开发者在单个语句中完成操作并赋值。在Python中,这些运算符能够帮助我们编写更简洁、可读性更强的代码。以下是Python中复合赋值运算符的详细说明及使用示例...
30. **除后赋值运算符/=,乘后赋值运算符*=,求余后赋值运算符%=,加后赋值运算符+=,减后赋值运算符-=,左移后赋值运算符<<=,右移后赋值运算符>>=,按位与后赋值运算符&=,按位异或后赋值运算符^=,按位或后赋值...
当我们谈论“js代码-js 赋值运算 *=,+=,/=,%="时,我们指的是四个特殊的复合赋值运算符,它们分别是乘法赋值(*=`)、加法赋值(+=`)、除法赋值(/=`)和模数赋值(%=`)。这些运算符不仅执行基本的数学操作,还...
接下来,PHP还提供了一些其他的复合赋值运算符,如: 2. 加法赋值运算符:`+=` 当你执行 `x += y` 时,相当于 `x = x + y`。 3. 减法赋值运算符:`-=` 类似地,`x -= y` 相当于 `x = x - y`。 4. 乘法赋值...
本节我们将详细探讨Python中的基本赋值运算符和复合赋值运算符。 首先,我们来看基本赋值运算符,它是最简单的赋值方式,用`=`表示。这个运算符将右侧的值传给左侧的变量。例如,`num = 1 + 2 * 3` 这个语句会计算...
复合赋值运算符是将赋值运算符与其他运算符组合而成的运算符。例如`x += 5;`就是一个复合赋值运算符。复合赋值运算符可以简化代码,提高编译效率和代码质量。 七、逗号运算符和逗号表达式 逗号运算符是将多个...
复合赋值运算符如"+="、"-="、"*="、"/="、"%="、"<<="、">>="、"&="、"^="和"|=",它们的优先级低于算术运算符,但高于单个赋值运算符"="。复合赋值运算符会先执行相应的运算,然后赋值。 赋值运算符"="的优先级...
此外,PHP还提供了一组复合赋值运算符,它们结合了赋值和算术运算,使得代码更简洁。例如,`$a += 5`等同于`$a = $a + 5`,这将$a当前的值与5相加,然后将结果赋回给$a。同样地,其他复合赋值运算符包括`-=`(减赋值...
- **复合赋值运算符**:包括加法赋值 (`+=`)、减法赋值 (`-=`)、乘法赋值 (`*=`)、除法赋值 (`/=`)、整除赋值 (`//=`)、取模赋值 (`%=`) 和幂赋值 (`**=`)。这些运算符允许您执行运算并立即重新赋值给变量。例如 `x ...
除了基本的赋值运算符,还有几种复合赋值运算符,它们结合了赋值和算术运算。例如,`+=`表示增加并赋值,`-=`表示减去并赋值,`*=`表示乘以并赋值,`/=`表示除以并赋值,`%=`表示取模并赋值。这些运算符可以简化代码...
然而,C语言还提供了复合赋值运算符,这些运算符结合了算术运算和赋值操作,使得代码更加简洁。复合赋值运算符包括: 1. 加赋值运算符“+=”:例如,`a += 3+1`等同于`a = a + (3+1)`,会先计算右侧的表达式,然后...
复合赋值运算符包括加法赋值(+=)、减法赋值(-=)、乘法赋值(*=)、除法赋值(/=)、模运算赋值(%=)、左移赋值(<<=)、右移赋值(>>=)、无符号右移赋值(>>>=)、按位与赋值(&=)、按位或赋值(|=)以及按位...
复合赋值运算符包括加法赋值`+=`、减法赋值`-=`、乘法赋值`*=`、除法赋值`/=`、模运算赋值`%=`以及位运算相关的赋值(这里未详细解释)。使用复合赋值运算符通常会使程序运行更快,尤其是在表达式涉及函数调用或复杂...
day01回顾: 数字 整数int, 浮点数float, 复数complex, 布尔型数bool(True/False) 运算符 算术运算符 + - * / // % ** is , is not 表达式 表达式一定会返回一个对象(数据) ... 复合赋值运算符 a += 10