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

时间:2018-06-08 10:05:58

标签: c++

我写了以下代码

#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的原因。我想当我将一个字符串乘以一个数字时,数字将被转换为一个字符串,产生一个字符串。我在这里遗漏了什么?

编辑:根据评论重新提出问题,我理解单引号和双引号不一样。所以,&#39; 1&#39;代表一个字符。但是,&#39; 10&#39;代表

1 个答案:

答案 0 :(得分:9)

'10'多字符文字;请注意使用单引号。它的类型为int,其值为实现定义。参看"10"这是const char[3]类型的文字,该数组的最后一个元素设置为NUL

通常其值为'1' * 256 + '0',其中ASCII(C ++支持的常见编码)为49 * 256 + 48,即12592。