String a; int n;
int l=a.length();
C/C++
Подскажите, пожалуйста, что значит эта строка n+=l?a[--l]-'0':0 c++?
Это короткая запись
if (l) {
n = n + a[--l]-'0';
} else {
n = n + 0;
}
if (l) {
n = n + a[--l]-'0';
} else {
n = n + 0;
}
Ренат Фаррахов
Спасибо, пожалуйста, подскажите l кол-во символов числа а, тогда что под a[l] подразумевается ?
Это говнокод.
В те времена, когда создавался С, не было оптимизирующих компиляторов и поэтому в язык вставили возможность самому програмисту что то пооптимизировать. Сейчас это реликт и так писать лучше не надо - это путь выстрелить себе в ногу.
В те времена, когда создавался С, не было оптимизирующих компиляторов и поэтому в язык вставили возможность самому програмисту что то пооптимизировать. Сейчас это реликт и так писать лучше не надо - это путь выстрелить себе в ногу.
Это означает, что тебе нечем заняться))
n+=l?a[--l]-'0':0
Для того что бы понимать данную запись нужно неплохо разбираться в с++.
Первое вам объяснили что это короткая запись. Тут используются тернарный оператор и операторы типа +=.
Если посмотреть на уже разобраную запись то:
if (l) { //проверяет пустая ли строка или нет
//нужно знать что в си++ все что не ноль считается true то есть если строка не пустая, не ноль то попадет в эту ветку
n = n + a[--l]-'0'; //a[I] - это последний символ когда от него отнимают символ '0' то получают число равное символу числа. То есть например из символа '9' получаем число 9. Получается к n прибавляют последнее число строки а потом I уменьшается на один, видимо что бы на следующей итерации цикла уже прибавлять предпоследнее число
} else {
n = n + 0; // Если же строка пустая то к n прибавляем 0
}
короче такая строка считает сумму цифр строки если ее разместить в цикле
Только нужно убедится что перед циклом n равна нулю иначе вы получите не результат сложения, а "мусор". int n; - не гарантирует что в n будет ноль. Там может быть все что угодно.
Для того что бы понимать данную запись нужно неплохо разбираться в с++.
Первое вам объяснили что это короткая запись. Тут используются тернарный оператор и операторы типа +=.
Если посмотреть на уже разобраную запись то:
if (l) { //проверяет пустая ли строка или нет
//нужно знать что в си++ все что не ноль считается true то есть если строка не пустая, не ноль то попадет в эту ветку
n = n + a[--l]-'0'; //a[I] - это последний символ когда от него отнимают символ '0' то получают число равное символу числа. То есть например из символа '9' получаем число 9. Получается к n прибавляют последнее число строки а потом I уменьшается на один, видимо что бы на следующей итерации цикла уже прибавлять предпоследнее число
} else {
n = n + 0; // Если же строка пустая то к n прибавляем 0
}
короче такая строка считает сумму цифр строки если ее разместить в цикле
Только нужно убедится что перед циклом n равна нулю иначе вы получите не результат сложения, а "мусор". int n; - не гарантирует что в n будет ноль. Там может быть все что угодно.
Похожие вопросы
- Программа на c++ не работает. Написать структуру и прочее. Подскажите, пожалуйста, что я делаю не так.
- Помогите пожалуйста с задачей со строками на С++
- Решите пожалуйста !!! Дана действительная матрица размером n x m.
- Подскажите пожалуйста куда подставить данный элемент кода в С++
- С++, функция tolower не работает с кириллицей... Подскажите пожалуйста можно ли это исправить? если можно то как?
- C++ Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции bool
- В LINUX OS Написать программу, которая из командной строки получает целое число N и некоторый текст “Text”.
- Как передать матрицу размером n в процедуру? C++
- Заполнить двумерный массив 5*3 и найти строку с максимальным произведением элементов. C++
- Составьте программу удаления столбца, содержащего максимальный элемент матрицы A[N][N] НА ЯЗЫКЕ СИ