【发布时间】:2022-01-23 01:48:07
【问题描述】:
我是编程新手,有时会看到这样的表达式
...
for (int i=0; i<str1.length(); i++)
{
int sum = ((str1[i]-'0')+(str2[i]-'0'));
str.push_back(sum%10 + '0');
}
...
所以这里是“0”?是某种转换还是什么?
【问题讨论】:
-
如果
str2[i]是某个数字,比如'5'或'9'然后str2[i]-'0'返回它的整数值:'3' -> 3等 -
这是一种将 0 到 9 之间的值转换为等效字符的技巧。我怀疑这来自 C++ 代码,因为在任何 .NET 容器中都没有
push_back,更糟糕的是,要从这些字符中获取字符串,您必须在内存中分配一个新字符串。您可能从黑客攻击中获得的任何好处都将丢失 -
你确定这是 C#,而不是 to C++?
-
更有可能这实际上是 C++ 代码,将字符附加到
std::string。该课程确实有一个push_back。 -
@RandRandom 逻辑保持不变。它适用于任何将
char与string区分开来并使用ASCII 表的强类型语言。它适用于 C、C++、C#,可能还有 Java,当然还有许多其他语言