代码之家  ›  专栏  ›  技术社区  ›  P.W

为什么下面的代码片段会输出3?

c++
  •  -3
  • P.W  · 技术社区  · 6 年前

    为什么下面的代码片段会输出3?

    // Example program
    #include <iostream>
    #include <string>
    
    int main()
    {
      std::cout <<    + '+'    - '-'    * '*'    / '/'  << std::endl;
    }
    

    here. 同样的输出为叮当声以及。

    1 回复  |  直到 6 年前
        1
  •  5
  •   SergeyA    6 年前

    全部 '+' , '-' '*' '/' char 类型-这意味着它们是整数类型并支持算术运算。每一个都有数字表示,这是由编码定义的。在现在的大多数情况下,编码是 ASCII . 在ASCII编码中, * - 45岁, + 是43岁 / 是47岁。

    考虑到这一点,您的代码相当于

    std::cout << +43 - (45 * 42 / 47)  << std::endl;
    

    很明显,在整数运算中是3,当 (45 * 42 / 47)