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

InA*_*ash 4 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;
}
Run Code Online (Sandbox Code Playgroud)

输出如下

Hello, World!
4.98111e+08
4.98111e+08
314.15
Run Code Online (Sandbox Code Playgroud)

我怀疑的是为什么是3.1415 * '10'*'10' 价值4.98111e+08.我想当我将一个字符串乘以一个数字时,数字将被转换为一个字符串,产生一个字符串.我在这里遗漏了什么?

编辑:根据评论重新提出问题,我理解单引号和双引号不相同.所以,'1'代表一个字符.但是,"10"代表什么

Bat*_*eba 9

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

通常它的值是'1' * 256 + '0'ASCII,(C++支持的常见编码)是49*256 + 48,即12592.

  • 读作:不依赖于可移植代码,或者在这种情况下,真的. (3认同)
  • @Bathsheba像往常一样准确答案+1 :) (3认同)