Неинициализированные примитивные типы данных в C / C ++
Как вы думаете, что происходит, когда вы используете неинициализированный примитивный тип данных?
Что ж, вы можете предположить, что компилятор должен присвоить вашей переменной примитивного типа значимые значения, такие как 0 для int, 0.0 для float. А как насчет типа данных char?
Давайте найдем ответ на этот вопрос, запустив код в IDE.
#include <iostream> using namespace std; int main() { // The following primitive data type variables will not // be initialized with any default values char ch; float f; int i; double d; long l; cout << ch << endl; cout << f << endl; cout << i << endl; cout << d << endl; cout << l << endl; return 0; } |
Вывод в GFGs IDE:
5,88052e-39 0 6.9529e-310 0
Вывод в Codechef IDE:
0 0 0 0
Вывод на моей машине:
1.4013e-045 0 2.96439e-323 0
Почему компилятор C / C ++ не инициализирует переменные значениями по умолчанию?
«Одна из вещей, которая сохранила жизнеспособность C ++, - это правило нулевых накладных расходов: то, что вы не используете, вы не платите». -Stroustrup.
Накладные расходы на инициализацию переменной стека обходятся дорого, поскольку снижают скорость выполнения, поэтому эти переменные могут содержать неопределенные значения. Рекомендуется инициализировать переменную примитивного типа данных перед ее использованием в коде.