В прошлом уроке мы написали Hello, World на Си и поняли, что это круто. А сегодня мы будем рассматривать саму суть любой программы — переменные. А их в Си over9000 много видов, но сегодня мы рассмотрим пока только численные.
Из целочисленных:
char — один байт, обычно 8 бит. В неё можно впихнуть целый символ. Не спрашивайте, как.
short — короткое число, чаще всего в 2 раза короче, чем int.
int — обычное число, на x86 32 бита.
long — длинное число, на x86 32 бита, но на 64-битных x86-системах в зависимости от компилятора может быть как 32 бита, так и 64.
Числа с плавающей точкой:
float — 32 бита.
double — 64 бита.
Перед объявлением любой из вышеперечисленных переменных можно поставить слово signed или unsigned. Что нам это даст? Переменная будет содержать только неотрицательные числа. И их будет больше. К примеру, int в состоянии по умолчанию — signed — будет представлять значения от −2147483648 (-2^31) до 2147483647 ((2^31)−1), а в unsigned — от 0 до 4294967295. Конечно, на разных платформах эти значения могут меняться.
И void — нуль. Не совсем нуль, но нуль. Пока хватит.
Что интересно, когда функция возвращает значения, она должна указать их тип, например функция void abc(a, b, c){ … не возвратит вам ничего, даже кода ошибки, если таковая имеется.
В качестве наглядного примера напишем функцию вычисления корней квадратного уравнения. Если кто плохо учился в школе, напомню, что с её помощью можно решить уравнение вида ax^2+bx+c=0.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include math.h /* включаем библиотеку математики для возведения в степень и получения квадратного корня */ #include stdio.h /* включаем стандартную библиотеку ввода-вывода */ float quadrat(float a, float b, float c) /* объявляем функцию quadrat и её входные данные типа float */ { float d; d = powf(b, 2) - (4.0*a*c); /* powf - функция из math для возведения в степень */ if (d >= 0) c = ((-b) + sqrt(d)) / (2.0 * a); /* sqrt - функция извлечения квадратного корня */ d = ((-b) - sqrt(d)) / (2.0 * a); return c, d /* возвращаем значения */ else return 0, 0 } |
Спасибо за внимание. Часть 1.