代码之家  ›  专栏  ›  技术社区  ›  rawwar

C++中的字符串与整数乘法

c++
  •  4
  • rawwar  · 技术社区  · 7 年前

    我写了下面的代码

    #include <iostream>
    
    #define  circleArea(r) (3.1415*r*r)
    int main() {
        std::cout << "Hello, World!" << std::endl;
        std::cout << circleArea('10') << std::endl;
        std::cout << 3.1415*'10'*'10' << std::endl;
        std::cout << 3.1415*10*10 << std::endl;
    
        return 0;
    }
    

    结果如下

    Hello, World!
    4.98111e+08
    4.98111e+08
    314.15
    

    我怀疑的是为什么 3.1415 * '10'*'10' 价值 4.98111e+08 . 我想当我把一个字符串乘以一个数字时,数字会被转换成一个产生字符串的字符串。

    编辑:根据评论改写问题,我明白单引号和双引号是不一样的。所以,“1”代表一个字符。但是,10代表什么

    1 回复  |  直到 7 年前
        1
  •  9
  •   Bathsheba    7 年前

    '10' 是一个 多字符文字 注意单引号的用法。它有一种类型 int ,其值为 实现定义 . 囊性纤维变性。 "10" 它是类型的文本 const char[3] ,数组的最后一个元素设置为 NUL .

    通常它的价值是 '1' * 256 + '0' ,在ascii中 编码 由C++支持,为49×256+48,为12592。