首页 > 解决方案 > 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' value 4.98111e+08。我想当我将一个字符串乘以一个数字时,数字将被转换为一个产生一个字符串的字符串。我在这里遗漏了什么吗?

编辑:根据评论改写问题,我知道单引号和双引号是不一样的。因此,'1' 表示单个字符。但是,“10”代表什么

标签: c++

解决方案


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

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


推荐阅读