Юрий Васильевурок 2.2 - а разве в объявленную переменную (но не присвоенную не записывается 0 (для целых), false для булевых переменных?
Нет. В спецификации C++ не определено действие, которое должно производиться при объявлении переменной с самими значениями в памяти. Чаще всего они просто остаются неизменными — такими, какие были до выделения. Часто может вести, и эти значения окажутся нулевыми. Но если вы прочитаете значение из неинициализированной переменной, никто вам не гарантирует, что это будет нуль: оно может быть любым (иногда совсем что-то почти случайное).
✨ Ю
Ха, что ж. Сейчас он действительно в сравнении с другими языками может быть близок к зависимому от платформы исполнения ассемблеру или казаться таким. Но на самом деле есть ещё очень много языков между C++ и ассемблером, машинным кодом. Кроме того, если знать, какие концепции присутствуют в C++ (шаблоны, метапрограммирование, модули, ...), окажется, что он не так уж близок к уровню железа и на самом деле очень абстрактен. Просто в C++ большой диапазон этих самых 'уровней', на которых находятся разные конструкции и инструкции, и с помощью некоторых нестандартных инструментов можно даже встраивать инструкции ассемблера в код на C++. Но всё равно большая часть кода у вас будет завязана на классах из ООП и подобном, если только у вас нет цели любыми способами оптимизировать ваш код.
Юрий Васильевурок 2.2 - а разве в объявленную переменную (но не присвоенную не записывается 0 (для целых), false для булевых переменных?
нашел )) более поздно разъясняется (не знаю надо ли разъяснять заранее)
Это задача с кодом, не тестовый вопрос с кратким или развёрнутым ответом.
Могу раскрыть секрет: в это задаче используется следующий шаблон кода:
::c++
::header
#include <typeinfo>
#include <iostream>
using namespace std;
int main()
{
::code
// Здесь не нужны main и include
// В ответе всего 1 строчка
// Объяви здесь переменную number
// ↓↓↓
::footer
(void)123; // Не забывай ;, иначе будет синтаксическая ошибка
number; // Переменная должна называться number!
const type_info& ti = typeid(number);
cout << ti.name();
}
Везёт, что в C++ есть элементы метапрограммирования, и с помощью typeid мы можем получить информацию о типе переменной number. Однако в C++ невозможно из самого кода обращаться к текстовому содержимому кода программы. Разве что, я мог бы обернуть видимую вам секцию ::code в сырую многострочную строку ( R"( ... )" ), а потом обработать всё регулярными выражениями, но это было бы очень хрупко.
А, и кроме того, если поощрять дополнительные действия, то придётся поднимать баллы за задачу. Тогда получится, что просто объявить переменную будет недостаточно, чтобы получить все баллы за задачу — это уже будет означать, что основная суть задачи — объявить и инициализировать переменную, а не только объявить её.
Как-то так. На Stepik нет особых поощрений за доп. действия. Ну, есть только текст, выводящийся при решении задачи, но у него свои особенности. Но вообще такая внимательность к деталям — это очень хороший подход к созданию курсов и заданий; очень хорошо, что у вас появляются такие идеи.
V Здравствуйте! Для модуля 4.4 вторая задача на получение количества положительных чисел из общего числа поданных на вход, нашел неточность в части проверок задания: 17 -8 21 -30 2 10 -20 4 8 -26 -9 4 -26 -9 -1 -22 -6 20 В данном наборе чисел 8 положительных, при этом валидатор задания говорит что их здесь 7.