c++ - 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”代表什么
解决方案
'10'
是一个多字符文字;注意单引号的使用。它有一个类型int
,它的值是实现定义的。参照。"10"
这是一个 类型的文字,const char[3]
该数组的最后一个元素设置为NUL
。
通常它的值是'1' * 256 + '0'
,在 ASCII(C++ 支持的常见编码)中是 49 * 256 + 48,即 12592。
推荐阅读
- python - 如何将字典列表添加到另一个字典?
- shopify - 使用 Shopify Liquid 的数千个分离过滤器
- android - 如何将文本和链接从 android 应用程序共享到 Messenger?
- c# - 在 Unity3d 中无法按名称找到对象 - 导致 NRE
- datagrid - 如何从清晰数据网格中隐藏 selectAll 复选框?
- kubernetes - Pod 安全策略未按预期工作
- python - python opencv准确获取系统时间的相机帧时间戳
- android - Android 中不使用希腊语
- java - CheckStyle 不会在接口方法上标记缺少的 JavaDoc
- python - 查找并打印其子元素具有相似值的所有行