0 / 0 / 0
Регистрация: 08.10.2021
Сообщений: 2
|
||||||
1 | ||||||
Почему не инициализируются переменные08.10.2021, 12:27. Показов 1699. Ответов 19
Метки нет (Все метки)
по учебе пишу небольшие коды, не могу допетрить почему не инициализируются переменные: D, x2, g
0
|
08.10.2021, 12:27 | |
Ответы с готовыми решениями:
19
Только начал изучать с++, подскажите, почему не Инициализируются переменные? Переменные класса не инициализируются Не инициализируются две переменные Зачем переменные инициализируются нулем? Не инициализируются переменные в констукторе класса |
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
|
|
08.10.2021, 13:10 | 2 |
Не инициализирована только одна переменная x2 в 44 строке
а вот написания типа вызывают вопросы. Почему это не 1./3. ???? И в целом, у Вас все выражения должны выполняться с действительными числами. Зачем Вы в них пишете целочисленные константы, а не действительные? И почему float, а не double?
1
|
0 / 0 / 0
Регистрация: 08.10.2021
Сообщений: 2
|
|
08.10.2021, 16:02 [ТС] | 3 |
дискриминант помечен как не инициализированная переменная, и g - аналогично
а вот написания типа Цитата Сообщение от NooB_C Посмотреть сообщение ( float ) 1/3 вызывают вопросы. пишу по образцу который дан в лекции вуза.
0
|
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,358
|
||||||
08.10.2021, 17:04 | 4 | |||||
NooB_C, так инициализируй же их )
для чего вообще такую колбасу делать? Переменные нужно определять поближе к месту первого использования
1
|
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
|
|
08.10.2021, 17:18 | 6 |
Раньше тож так делал, но как-то быстро переучился. Потому что реально удобнее (субъективно, конечно). Вроде как так Сам(!) Страуструп завещал(вообще точно не помню, мож и не он, но источник был авторитетный ).
0
|
3272 / 1491 / 469
Регистрация: 01.06.2021
Сообщений: 5,038
|
|
08.10.2021, 17:24 | 7 |
тогда уже нужно советовать 1.f / 3.f, ибо ТС хотел получить float, а не double
NooB_C, в вашем коде очень много кастингов (float). Если вы не хотите отказаться от float в коде (переход на double, как вам советуют выше, было бы разумным решением), то тогда хотя бы используйте static_cast<float>.
0
|
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,358
|
||||||
08.10.2021, 17:27 | 8 | |||||
мама Стифлера, простейшее форматирование кода делает его красивше, а ещё выявляет аж три ошибки:
переменные в данном месте не определены, а, значит, если бы осталась колбаса в начале, то тут использовалось бы неинициализированное значение. Теперь ТС нужно подумать, как это исправить Добавлено через 1 минуту + ещё cbrt заюзал вместо pow(x,1./3)
0
|
3272 / 1491 / 469
Регистрация: 01.06.2021
Сообщений: 5,038
|
|
08.10.2021, 17:36 | 9 |
я тоже так делаю, хотя не так категорично отношусь к тем, кто объявляет колбасой в начале (их код - их правила).
Например, бывает так, что убирается кусок из кода, но забываешь удалить неиспользуемую переменную из колбасы. А если код длинный, то очень сложно понять область видимости переменных, если они колбасками торчат на разных уровнях. Добавлено через 4 минуты добавлю, что алгоритмы sqrt и cbrt быстрее, чем pow(x, 1./2) и pow(x, 1./3)
0
|
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,358
|
|
08.10.2021, 17:37 | 10 |
компилятор/анализатор расскажут, если переменная не используется. Также они расскажут, какие переменные не были инициализированы
0
|
3272 / 1491 / 469
Регистрация: 01.06.2021
Сообщений: 5,038
|
|
08.10.2021, 17:38 | 11 |
0
|
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,358
|
|
08.10.2021, 17:46 | 12 |
Royal_X, я не знаю, какой у тебя компилятор, да и флаги к ним я не знаю
студийный компилятор и mingw (использую в QtCreator) - пишут в выводе (с дефолтными настройками) про неиспользуемые переменные. в студии можно запустить анализатор, в QtCreator тоже можно запустить анализатор - вот они уже поинтереснее грабли отыскивают, включая и отсутствие инициализации Добавлено через 1 минуту Не по теме: я принёс из студии 2008 старый большой проект в 2019 и попробовал натравить на него анализатор - мы с анализатором оба были в шоке :D
0
|
3272 / 1491 / 469
Регистрация: 01.06.2021
Сообщений: 5,038
|
|
08.10.2021, 17:49 | 13 |
Алексей1153, тогда может быть это не компилятор, а просто IDE предупреждает о неиспользуемых переменных? Вот для Java использую Eclipse, который подчеркивает неиспользуемые переменные. Но для C++ использую редактор MS Visual Code, который молчит.
0
|
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,358
|
|
08.10.2021, 17:52 | 15 |
Royal_X, IDE ничего не знает о коде, предупреждать может компилятор или анализатор. IDE может запускать анализатор в фоне, вот и появляются подчёркивания
если не создавать проект, а использовать только как редактор, то компилятор и анализатор вряд ли что-то покажут
0
|
3272 / 1491 / 469
Регистрация: 01.06.2021
Сообщений: 5,038
|
|
08.10.2021, 18:02 | 17 |
как это делается? У меня, в Visual Code выбирается папка проекта, в которой находятся *.cpp файлы и автоматически создается папка .vscode с файлами *.json. Компилятор и отладчик настроены. Я не знаю, что тут еще можно делать.
Добавлено через 1 минуту какие флаги, если не секрет? возможно, просто Visual Studio по-дефолту ставит какие-то флаги, а вот в Visual Studio Code все флаги прописываются вручную. Добавлено через 3 минуты мама Стифлера, ладно, методом тыка нашел, что это -Wall предупреждает
0
|
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,358
|
|
08.10.2021, 18:04 | 18 |
если получается скомпилировать, то, значит, проект уже создан. Либо создать проект можно так (а потом добавить в него файлы)
анализатор можно запустить через верхнее меню -
0
|
3272 / 1491 / 469
Регистрация: 01.06.2021
Сообщений: 5,038
|
|
08.10.2021, 18:27 | 19 |
оказывается, что -Wall прописан дефолтно и в Code::Blocks)
Добавлено через 4 минуты код компилируется, отладка тоже работает. Наверное, в Code просто нет фонового анализатора. За проверку кода при написании (не компиляции) отвечает только расширение "C/C++ IntelliSense, debugging, and code browsing.". Добавлено через 6 минут кстати, Code подчеркивает неиспользуемую переменную только уже после компиляции с опцией -Wall и получения предупреждения от компилятора. Видимо, это для того, чтобы оперативно найти в коде указанную переменную. А вот Studio наверное умеет это показывать в ходе написания благодаря фоновому анализу. Добавлено через 9 минут Алексей1153, в Visual Studio по-умолчанию в новом проекте стоит -Wextra (это типа доп. предупреждения) или только -Wall? Настраиваю сейчас tasks.json проекта в Code, хочу сделать как в Studio.
0
|
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,358
|
|
08.10.2021, 18:48 | 20 |
Royal_X, я не в курсе, какая там полная строка настроек, потому что вручную никогда этим не занимался. В студии окно настроек, там все эти ключи в виде таблицы.
Я думаю, вот этот ключ нужен
0
|
08.10.2021, 18:48 | |
08.10.2021, 18:48 | |
Помогаю со студенческими работами здесь
20
Почему не инициализируются массивы Указатели. Почему именно так инициализируются в даном случае? Одномерные массивы, функции не инициализируются переменные Почему не инициализируются переменные в шаблоне? Почему глобальные переменные сразу инициализируются "в ноль"? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |