java - 运算符优先级

标签 java operator-precedence

我试图将其计算为 i=i*++i 因此 i=56*57 给出了 3192 但我的程序显示该值为 2162:

class Demo {
    public static void main(String args[])  {
        short i=056;  
        i*=++i;  
        System.out.println(i);  
    }
}

最佳答案

问题在乘法之前 - 它在这里:

short i=056;  

这是一个八进制字面量,十进制值为 46。所以您实际上得到的结果是 46 * 47,这确实是 2162。

不过,我强烈建议您不要使用像i *=++i 这样的代码。对于所有相关人员来说,使用 i *= i + 1 会更简单。我还建议您不要使用八进制文字。

关于java - 运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17917353/

相关文章:

java - 使用 jsoup 从下拉列表中获取所选项目的值

php - 我该如何理解嵌套? : operators in PHP?

c++ - 序列点 && 运算符

PHP 字符串数字连接搞砸了

operator-precedence - 控制验证注释顺序?

java - 简单日期格式解析

java - 使用外部 Intent/应用程序打开文件

Java 在流中丢失国际字符

java - 新的 ChromeOptions()` is preferred to ` DesiredCapabilities.chrome()

c++ - 为什么它只收到 1 个整数?