【发布时间】:2018-06-08 10:05:58
【问题描述】:
我写了以下代码
#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。我想当我将一个字符串乘以一个数字时,数字将被转换为一个产生一个字符串的字符串。我在这里遗漏了什么吗?
编辑:基于 cmets 改写问题,我知道单引号和双引号是不一样的。因此,'1' 表示单个字符。但是,“10”代表什么
【问题讨论】:
-
'10'不是字符串?! -
@InAFlash 启用更多编译器警告。
-
@DimChtz,我刚刚打印了,'10',它显示的值是 12592,你能帮我理解 c++ 是如何评估这个值的吗
-
旁注:
circleArea()作为函数而不是宏会好得多。 -
@InAFlash:我个人不理解反对意见。您提供了一个可编译的示例,清楚地说明了您不理解的领域。数值不明显。我已经升级了。
标签: c++