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