【问题标题】:Output of int i = 10 + + 11 - - 12 + + 13 - - 14 + + 15; and how?int i = 10 + + 11 - - 12 + + 13 - - 14 + + 15 的输出;如何?
【发布时间】:2019-01-11 00:49:15
【问题描述】:

无法确定输出是如何产生的? 我运行了这段代码,答案是 75: 请说出其中的逻辑。

public class MainClass{

    public static void main(String[] args)
    {
        int i = 10 + + 11 - - 12 + + 13 - - 14 + + 15;

        System.out.println(i);
    }
}

【问题讨论】:

  • - - 产生 + ,你基本上是在做所有数字的总和。
  • 您期望的数字是多少,为什么?
  • 这甚至不是一道java题,而是一道基础数学题,1 - - 2是什么?

标签: java int operators


【解决方案1】:
public class MainClass   {

  public static void main(String[] args)
   {
    int i = 10 + + 11 - - 12 + + 13 - - 14 + + 15;

    System.out.println(i);
   }
}

这里发生了什么? 就是 10 + (+ 11) 我们能看到什么 10 + + 11 从这个操作中,它会得到 21 的值

然后来到第二个 21 - (-12) 但我们将其视为 10 + + 11 - - 12 = 33

然后是第三种情况 33 + + 13 但它是 10 + + 11 - - 12 + + 13 = 46

然后来到第四个 46 - (-14) 但我们将其视为 10 + + 11 - - 12 + + 13 - - 14 = 60

然后来到第五个 60 + (+14) 但我们将其视为 10 + + 11 - - 12 + + 13 - - 14 + + 15=75

这一切都发生了,因为 - - 是加法

【讨论】:

    【解决方案2】:

    我在 C++ 中执行了这个,我找到了相同的答案,即 75。 我得出的结论是, 它检查运算符 - - 如果我们将符号相乘,则它变为 + 加号,因此它将所有数字相加。 我为您尝试了一个反例

    int i = 10 + +11 - -12 + +13 - +14 + +15;
    

    它的输出是 47,即 10 + 11 + 12 + 13 - 14 + 15。这意味着在这种情况下 (-,+) 与 14 变为 - 因此它根据规则从左侧开始的金额计算中减去 14。

    感谢您提高知识。

    【讨论】:

      【解决方案3】:

      在 Java 中,a - - b 被解析为 a - ( -b )。第一个- 是减法。第二个是否定。但是(来自高中数学)减去负数与添加正数相同......

      同样,a + + b 被解析为 a + ( +b ) .... 等等。


      警告:如果你在现实生活中写过这样的代码,速龙会抓住你:https://xkcd.com/292/

      【讨论】:

        【解决方案4】:

        你必须了解运营商是如何工作的;

        int i = 10 + +11 - -12 + +13 - -14 + +15;
                10 + 
                     11 (- - =>) +
                                   12 (+ + =>) +
                                                 13 (- - =>) +
                                                               14 (+ + =>) + 
                                                                             15
        

        最终结果是:

        int i = 10 + 11 + 12 + 13 + 14 + 15;//===> 75
        

        【讨论】:

          【解决方案5】:

          这里--充当+++充当+(基本数学逻辑)

          所以基本上你是在对所有数字求和。

          逻辑上

           int i = 10 + + 11 - - 12 + + 13 - - 14 + + 15; // i=75
          

          变成:-

           int i = 10 + 11 + 12 + 13 + 14 + 15;   // i = 75
          

          【讨论】:

            猜你喜欢
            • 2019-07-23
            • 2018-02-11
            • 1970-01-01
            • 2017-11-01
            • 2016-06-30
            • 2018-03-13
            • 1970-01-01
            • 2016-03-16
            • 1970-01-01
            相关资源
            最近更新 更多