печать данных преобразования типов в C lang - PullRequest
0 голосов
/ 12 февраля 2019

In C

int n=100;
printf("%d", (int)(sqrt((double)n)));

Когда я использую этот код, он печатает правильный ответ (10).

Но следующий код всегда печатает 0

int n; 
int max = (int)(sqrt((double)n));
printf("%d", max);

Почемуответы разные?

1 Ответ

0 голосов
/ 12 февраля 2019
int n=100;
printf("%d", (int)(sqrt((double)n)));

В этом случае значение n известно, т. Е. 100. Поэтому sqrt((double)n) возвращает правильное значение.

int n; 
int max = (int)(sqrt((double)n));
printf("%d", max);

Здесь переменная n неинициализирована.Переменная может содержать неопределенное значение в зависимости от того, объявлено ли оно локально (внутри блока, в этом случае значение n будет значением нежелательной почты) или глобально (вне блока, в этом случае значение n будет равно нулю).Всегда инициализируйте свои переменные, чтобы избежать таких ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...