В языке программирования Си, существуют различные операторы. Самым главным является оператор присваивания, который обозначается символом =. Он используется в любой программе, кроме простейших, типа нашей первой программы, выводящей на экран Hello world. Как вы уже помните из урока программирования посвященного типам данных, с помощью него мы присваиваем переменной находящейся слева от оператора присваивания, значение выражения находящегося справа от него. Например:
Листинг 4.1
int a,b;
a=7;// переменной a присвоить значение 7
b=2;// переменной b присвоить значение 2
Также есть операторы, отвечающие за простейшие арифметические действия, такие как сложение, вычитание, умножение и деление.
«+» - сложение
«-» - вычитание
«*» - умножение
«/» - деление
Кроме четырех основных есть еще такая операция как получение остатка от деления «%».
Их можно использовать совместно с оператором присваивания. Например:
Листинг 4.2.
int a;
a=7+3;// переменной a присвоить результат выражения 7+3, т.е.в неё запишется 10
a=a-2;// переменной a присвоить результат выражения a-2
Обратите внимание на последнюю строчку. С точки зрения математики такая запись не имеет смысла. Это надо понимать следующим образом. Сначала берется значение переменной a, из него вычитается 2 и после этого результат этого выражения записывается снова в переменную a. В результате работы программы Листинг 4.2, в переменной a будет значение 8. ( Во второй строке мы присвоили её значение 10. Потом, в третей строке, мы берем 10 вычитаем 2, получаем 8, и записываем этот результат снова в переменную а.)
Кстати, очень важное замечание.
После того как мы объявили переменную, её значение не определено, в ней содержится какой-то мусор, не стоит считать, что её значение после объявления равно 0.
Т.е. пока мы в переменную a не сохранили значение 10, там был непонятный мусор.
Еще один важный момент. Посмотрите на листинг 4.3
Листинг 4.3
int a,b;
a=10;// переменной a 10
b=a-2;// переменной b присвоить результат выражения a-2
Когда мы используем переменную в каком-то выражении мы работаем не с самой переменной, а только со значением, которое в ней сохранено. Т.е. когда мы переменной b присваиваем значение выражения a-2, в переменной a так и остается значение 10. Оно на 2 не уменьшается. Компьютер в выражение a-2 подставляет значение переменной a, т.е. он заменяет a-2, на 10-2.
Теперь рассмотрим простейшую программу
Листинг 4.4
#include <stdio.h>
int main(){
int a,b;
float c;
a=7;
b=2;
c=a+b; // в переменную с записать сумму переменных a и b
printf("summa %f\n", c);
c=a-b;
printf("raznozt' %f\n", c);
c=a*b;
printf("proizvedenie %f\n", c);
c=a/b;
printf("delenie %f\n", c);
c=a%b;
printf("ostatok ot deleniya %f\n", c);
return (0);
}
Вот результат её работы:
Программа иллюстрирующая работу стандартных арифметических операторов.
Если вы были внимательны, то заметили, наверное, что при делении получился неправильный ответ. 7 поделить на 2 равняется 3.5.
Это одна из особенностей языка программирования Си.
При делении целочисленной переменной на целочисленную переменную остаток от деления теряется. Поэтому 7/2 получилось 3.
Чтобы получить правильный ответ нужно делитель или делимое преобразовать к вещественному типу float. Для этого, перед переменной в скобочках нужно написать тип, к которому она преобразуется.
Листинг 4.5
c=(float)a/b;
c=a/(float)b;
Такая операция называется явным преобразованием типа.Таким образом можно привести и переменную типа float к типу int. Но тогда мы потеряем всю дробную часть, которая стоит после точки. О преобразовании типов в языке Си, мы ещё будем говорить в следующих уроках.