按照运算符的优先级,有括号先算括号,先执行i++ + 1,结果2,i变成2,在计算i++ * 2,结果4,i变成3,但是实际结果打印3和3,不是3和4,为什么
时间: 2024-04-23 11:22:32 浏览: 21
这个问题涉及到 Java 中的后缀自增运算符与前缀自增运算符的区别。
在表达式 `i++ + 1` 中,`i++` 是后缀自增运算符,它的执行顺序是先取值再自增,所以表达式的值为 `1 + 1 = 2`,同时 `i` 的值也会自增变为 `2`。
在表达式 `i++ * 2` 中,同样是后缀自增运算符,所以表达式的值为 `2 * 2 = 4`,同时 `i` 的值也会自增变为 `3`。
但是,在打印语句中,`System.out.println(i++ + "," + ++i);` 中的 `++i` 是前缀自增运算符,它的执行顺序是先自增再取值,所以在打印语句中,`i` 的值首先被自增变为 `3`,然后才被打印出来,所以输出的结果是 `3,3`。
因此,对于这个问题,在打印语句中使用了前缀自增运算符,而且后缀自增运算符的执行顺序也需要注意,才能得出正确的结果。
相关问题
<<跟+=运算符优先级
在C++中,+=是赋值运算符,其优先级较低,比算术运算符的优先级要低。因此,如果一个表达式中既包含+=又包含算术运算符,那么算术运算符会先被计算,然后再执行赋值运算符。
例如,表达式a += b * c会先计算b * c,然后将结果赋值给a。相当于a = a + (b * c)。
如果想要改变优先级,可以使用圆括号明确指定计算顺序,例如(a += b) * c会先执行a += b,然后再将结果乘以c。
verilog运算符优先级
Verilog运算符优先级定义了不同运算符之间的计算先后顺序,保证了表达式的正确性和准确性。Verilog运算符优先级从高到低依次为:
1.一元运算符(包括逻辑非、位取反、符号取反等):这些运算符是最高优先级的,因为它们只作用于一个操作数。
2.乘法、除法、取模运算符:这些运算符优先级次于一元运算符,但比加减运算符优先级高。
3.加法、减法运算符:这些运算符优先级低于乘法、除法、取模运算符,但比移位运算符优先级高。
4.逻辑移位运算符、位移位运算符:逻辑移位运算符和位移位运算符的优先级较低,位运算符的优先级高于逻辑运算符。
5.比较运算符:比较运算符的优先级最低,比较运算的结果为布尔类型。
在Verilog中,优先级可以通过括号来改变,括号内的运算先于括号外的运算。如果不确定表达式的计算顺序,最好使用括号明确表达式的计算顺序,避免出现错误。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)