Да - в C и C ++ char
- это просто маленький целочисленный тип (обычно в диапазоне от -128 до +127). Когда вы выполняете математику, она обычно автоматически конвертируется в int
, поэтому вам даже не нужен ваш состав.
Кроме того, вы действительно не хотите использовать strlen(s)
внутри условия остановки для цикла for. По крайней мере, с большинством компиляторов это заставит его переоценивать strlen(s)
каждую итерацию, поэтому ваш линейный алгоритм просто стал квадратичным.
size_t len = strlen(s);
for (int i=0; i<len; i++)
Sum += s[i];
Или, если s
на самом деле std::string
, как предполагает тип параметра:
for (int i=0; i<s.size(); i++)
Sum += s[i];
Пока еще одна возможность:
Sum = std::accumulate(s.begin(), s.end(), 0);