- •Язык высокого програмирования “с”
- •Переменные и типы переменных.
- •2.1 Типы данных в си
- •Подробное описание типов данных в языке си
- •Комплексные числа в си
- •Логический тип данных в си
- •Операторы объявлений
- •Константы в си
- •Оператор создания типов данных в си
- •Неявное приведение типа
- •Явное приведение типа в языке c
- •1.1. Арифметические операции
- •2.4 Побитовые операции в си
- •№3 Циклические алгоритмы.
- •Операция присваивания
- •Операции отношения
- •Арифметические операции
- •Логические операции
- •Сдвиговые операции
- •3.2 Цикл с предусловием while
- •Цикл с постусловием do...While
- •Цикл с постусловием
- •Параметрический цикл for
- •Рекомендации по выбору цикла
- •Операторы break и continue
- •Оператор безусловного перехода goto
- •Синтаксис
- •Синтаксис
- •Заметки
- •Синтаксис
- •Заметки
- •Тернарные операции
- •Оператор ветвления switch (оператор множественного выбора)
- •№5 Указатели и массивы.
- •Объявление и инициализация массивов
- •Многомерные массивы
- •Инициализация многомерных массивов
- •Передача массива в функцию
- •5.2 И 5.3
- •5.1 Указатели и адреса
- •5.2 Указатели и аргументы функций
- •5.3 Указатели и массивы
- •5.4 Адресная арифметика
- •5.5 Символьные указатели функции
- •5.6 Массивы указателей, указатели на указатели
- •5.7 Многомерные массивы
- •5.8 Инициализация массивов указателей
- •5.9 Указатели против многомерных массивов
- •5.10 Аргументы командной строки
- •5.11 Указатели на функции
- •5.12 Сложные объявления
- •5.4 Указатели типа void
Явное приведение типа в языке c
Для явного приведения типов некоторой переменной перед ней следует указать в круглых скобках имя нового типа, например:
int X; int Y = 200; char C = 30; X = (int)C * 10 + Y;//переменная С приведена к типу int.
Если бы в этом примере не было выполнено явное приведение типов, то компилятор предположил бы, что выражение С * 10 + У переменной Х было бы присвоено значение 640, а не корректное 3200. В результате приведения типа переменная С распознается компилятором как 16-ти разрядная, и описанной выше ошибки не возникает.
2.3
1.1. Арифметические операции
Основными арифметическими операциями являются: сложение (‘+’), вычитание (‘-‘), умножение (‘*’) и деление (‘/’). Порядок выполнения операций в выражении соответствует их приоритету. Операции с одинаковым приоритетом в выражении выполняются слева направо.
Операция деления (‘/’) выполняется согласно типу ее операндов. Если оба операнда являются целыми числами, то деление будет целочисленным. Если один из операндов является вещественным, то и результат будет вещественным. Например, пусть переменная xимеет целочисленный тип, аyдействительный тип. Следующая таблица демонстрирует результаты деления для различных операндов:
операция |
результат |
x = 7 / 3; |
x= 2 |
y= 7 / 3; |
y= 2.000000 |
y= 7.0 / 3; |
y= 2.333333 |
y= (double)7 / 3; |
y= 2.333333 |
Рассмотрим второй пример. При выполнении операции присваивания значения выражения переменной, сначала вычисляется значение выражения, а потом оно присваивается переменной. Поскольку операнды во втором примере являются целыми, то результатом деления 7 / 3 будет 2. Потом целочисленное значение 2 преобразовывается в действительное значение 2.000000 и присваивается действительной переменной y.
В четвертом примере перед выполнением операции деления происходит преобразование типа делимого из целого в вещественный. Поэтому деление будет производиться без потери точности.
Пример 1.1.1.Найти среднее арифметическое двух целых чиселaиb.
Результатом вычисления выражения (a+b) / 2 может быть действительное число. Поэтому деление должно выполняться с сохранением точности. А для этого один из операндов необходимо преобразовать в действительный тип. Например, результат можно вычислить так:res= (a+b) / 2.0. Программа имеет вид:
#include <stdio.h>
int a,b;
double res;
void main(void)
{
scanf("%d %d",&a,&b);
res = (a + b) / 2.0;
printf("%lf\n",res);
}
Операция вычисления остатка в Си обозначается символом ‘%’. При этом остаток при делении отрицательного числа на положительное является отрицательным (хотя математически остаток при делении на число nдолжен лежать в промежутке от 0 доn– 1 включительно).
Операция |
результат |
x = 6 % 3 |
x= 0 |
x= 8 % 3 |
x= 2 |
x= -6 % 3 |
x= 0 |
x= -8 % 3 |
x= -2 |
В языке Си при выполнении операций возможны синтаксические сокращения. Например, вместо i=i+ 1 можно писатьi++. Если <op> – некоторая бинарная операция, то вместоi=i<op>a можно писатьi<op>=a. Примеры сокращений приведены ниже в таблице:
операция |
сокращение |
i=i+ 1 |
i++ |
i=i– 1 |
i-- |
i=i+a |
i+=a |
i=i%a |
i%=a |