Руководство полного чайника по программированию на языке Си


Задача: напечатать корни из чисел от 1 до 100 - часть 2


Точно так же, как в операторе x = 12 + 34; 12 и 34 не хранятся ни в каких переменных, а оператор

printf("%d\n", 12);

печатает ЧИСЛО 12, а не переменную.

Точно так же, как можно писать

double z;

z = sqrt(12) + sqrt(23);

где значение, вычисленное каждой функцией, НЕ хранится в своей собственной переменной (такая переменная на самом деле существует в компьютере, но программисту она не нужна и недоступна). Или

z = sqrt( sqrt(81));

(корень из корня из 81 --> даст 3)

Далее, что означает конструкция (double) n ? Функция sqrt() требует аргумента типа double. Мы же предлагаем ей целый аргумент

int n;

Целые и действительные числа представлены в памяти машины ПО-РАЗНОМУ, поэтому числа

12 и 12.0 хранятся в памяти ПО-РАЗНОМУ.

Машина умеет преобразовывать целые числа в действительные и наоборот, надо только сказать ей об этом. Оператор (double) x называется "приведение типа к double".

Заметим, что часто преобразование типа выполняется автоматически.

Так, например, при сложении int и double int автоматически приводится к double, и результат имеет тип double.

int var1; double var2, var3;

var1 = 2; var2 = 2.0; var3 = var1 + var2;

что означает на самом деле

var3 = (double) var1 + var2;

var3 станет равно 4.0

Более того, к примеру тип char - это тоже ЦЕЛЫЕ ЧИСЛА из интервала 0...255. Каждая буква имеет код от 0 до 255.

*/




- Начало -  - Назад -  - Вперед -