我写了以下代码
#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"代表什么
'10'是一个多字形文字 ; 请注意使用单引号.它有一个类型int,其值是实现定义的.参看 "10"这是一个类型的文字,const char[3]该数组的最后一个元素设置为NUL.
通常它的值是'1' * 256 + '0'ASCII,(C++支持的常见编码)是49*256 + 48,即12592.