int(c) 和 c-'0' 之间的区别。C++
Difference between int(c) and c-'0'. C++
考虑以下代码片段:
char c = 'a';
std::cout << int(c) << " " << c - '0' << std::endl;
这里我的输出是97 49
。
有人能告诉我他们之间有什么区别吗
例如,如果我试图查找字符串中重复字符的数量:
int duplicates[256];
//.. run over string
1. duplicates[c]++;
2. duplicates[c-'0']++;
那么我应该选择哪一个,它们之间有什么区别
提前谢谢。
这应该可以回答您的问题:
char c = 'a';
std::cout << int(c) << " "<< int('0') << " " << c - '0' << std::endl;
如果运行它,输出是97 48 49
,因为97 -> 'a'
是48 -> '0'
,所以49 -> '0'
也可以写成97 - 48 -> '0'
。
引擎盖下的字符是整数,所以你可以用算术运算符来遍历它们。(勾选此项(。
这意味着,如果你有一个string
或char *
,并且你想统计每个字符的所有出现次数,你应该使用
int duplicates[256];
duplicates[c]++;
因为例如,如果您的字符串出于某种原因是"1"
,而您执行duplicates[c-'0']++;
,则数组索引将是负数,因此是未定义的行为(假设您在增量之前不进行任何检查,例如检查是否在特定绑定内(
数字零和字符符号"0"是两个完全不同的东西。他们唯一的共同点是符号"0"有时被用作表示数字零的一种方式。
std::cout << int(c) << " " << c - '0' << std::endl;
这将减去平台用来表示字符"0"的任何代码。几乎可以肯定,它不是零。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 这 4 个 lambda 表达式之间有什么区别?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- (double) 和 double() 之间的区别
- & 和 * 之间的区别
- std::is_convertible 和 std::convertible_to 之间的区别(在实践中)?
- 析构函数和'delete'之间的区别
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- OpenMP #pragma omp for v/s #pragma omp parallel for 之间的区别?
- S() 与 S{} 之间的区别?