Логические операции и операции сравнения.
В С определены константы FALSE и TRUE, которые соответственно равны 0 и 1.
К логическим операциям относят
== - возвращает 1 если сравниваемые значения равны.
!= - возвращает 1 если сравниваемые значения не равны
> - 1, если левый операнд больше правого.
< - 1, если левый операнд меньше правого.
>= - 1, если левый операнд больше либо равен правого.
<= - 1, если левый операнд меньше либо равен правого.
&& - 1, если оба операнда не равны 0 (логическое И).
|| - 1, если один из операндов не равен 0 (логическое ИЛИ).
! – 1, если операнд равен 0 (логическое отрицание).
Примечание 1. Во избежание ошибок в логических выражениях, необходимо применять скобки.
Примечание 2. В С любое ненулевое значение интерпретируется как логическая истина.
Условные операторы.
В С имеется два условных оператора – if и switch.
Условный оператор if имеет следующий формат:
if{выражение}{
выражение_если_истина 1;
…
выражение_если_истина N;
}[else{
выражение_если_ложь 1;
…
выражение_если_ложь N;
}]
Пример:
if (a>10){
printf(“%d”,a);
a*=4;
}else{
a-=10;
}
Если в блоке if или else находится только одно выражение, то фигурные скобки можно опускать.
Допускается также вложение операторов if.
Оператор условного перехода switch имеет формат:
switch(выражение){
case константа1:
операторы1;
break;
case константа2:
операторы2;
break;
…..
default: операторы;
}
Оператор switch сравнивает результат выражения с константами, указанными после каждого ключевого слова case и, в случае равенства, выполняет соответствующий блок выражений, ограниченный ключевым словом break. В случае, если совпадений не было обнаружено, выполняется блок выражений, следующий за ключевым словом default. Пример:
|
switch ((a%d)*10){
case 20:
a = d/5;
break;
case 30:
a>>=1;
d-=35;
break;
default:
printf(“%d”,a);
}
Спецификатор типа в printf
Тип указывает не только на тип величины (с точки зрения языка программирования Си), но и на конкретное представление выводимой величины (например, числа могут выводить в десятичном или шестнадцатеричном виде). Записывается в виде одного символа. В отличие от остальных полей, является обязательным. Максимальный поддерживаемый размер вывода от единичной управляющей последовательности составляет по стандартам как минимум 4095 символов; на практике большинство компиляторов поддерживают существенно большие объёмы данных.
Значения типов:
· d, i — десятичное знаковое число, размер по умолчанию, sizeof(int). По умолчанию записывается с правым выравниванием, знак пишется только для отрицательных чисел.
· o — восьмеричное беззнаковое число
· u — десятичное беззнаковое число
· x и X — шестнадцатеричное беззнаковое число, x использует маленькие буквы (abcdef), X большие (ABCDEF)
· f и F — числа с плавающей запятой. По умолчанию выводятся с точностью 6, если число по модулю меньше единицы, перед десятичной точкой пишется 0. Величины ±∞ представляются в форме [-]infили [-]infinity, Величина Nan представляется как [-]nan или [-]nan(любой текст далее). Использование F выводит указанные величины заглавными буквами (-INF, NAN). Аргумент по умолчанию имеет размер double.
· e и E — числа с плавающей запятой в экспоненциальной форме записи (вида 1.1e+44); e выводит символ «e» в нижнем регистре, E — в верхнем (3.14E+0);
· g и G — число с плавающей запятой; форма представления зависит от значения величины (f или e);
|
· a и A — число с плавающей запятой в шестнадцатеричном виде;
· c — вывод символа с кодом, соответствующим переданному аргументу; переданное число приводится к типу unsigned char (или wchar t, если был указан модификатор длины l);
· s — вывод строки с нулевым завершающим байтом;
· S — то же самое, что и s
· p — вывод указателя, внешний вид может существенно различаться в зависимости от внутреннего представления в компиляторе и платформе
· n — запись по указателю, переданному в качестве аргумента, количества символов, записанных на момент появления командной последовательности, содержащей n;
· % — символ для вывода знака процента (%), используется для возможности вывода символов процента в строке printf, всегда используется в виде %%.
Операторы цикла.
В С имеются три набора операторов цикла: for, while, и do-while.
1)
for(инициализация; проверка условия; коррекция){
оператор 1;
…..
оператор N;
}
если в блоке имеется только одно выражение, то фигурные скобки можно опускать.
Пример:
for (i=0; i<5; i++){ printf(“%d”, i); }
for (i=0; i<5; i++) printf(“%d”, i);
Операция запятая позволяет использовать в одном цикле несколько индексов, а также несколько выражений.
Любой из трех операндов цикла for при необходимости можно пропускать.
Пример:
for (int i=3; i--;){
printf(«%d», i);//на экран выводятся цифры от 3 до 1
}
Данная часть программы выводит на экран числа от 3 до 1.
2) while имеет следующий формат:
while(условие){
блок_выражений_если_истина:
}
Пример:
c=0;
while(c<5){
c++;
printf(“%n”,c);
};
Так же как и для цикла for, если в цикле выполняется только один оператор, скобки после while можно не писать.
|
Если цикл while или for не содержат тела, то скобки также можно не писать. Пример:
Int i,h;
for (i=5; i<10; i++, h=i*i);
i=5; while (((i++)<10) && (h+=i*i));
3) Цикл с постусловием do{}whle имеет следующий формат:
do {
}while(условие);
Пример:
int c=5;
do{
c--;
}while(c);
Для того, чтобы прервать цикл и выйти из него используется оператор break. Для перехода к следующему циклу используется оператор continue. Пример:
for (int i=6;; i--){
if (!i){ continue;} //если i равен нулю
printf(“%d”, 34%i);
if (i<-6){ break; }
}
Функции exit() и atexit().
Для выхода из программы можно использовать функцию exit(). При помощи функции atexit() можно определить функции, которые будут вызваны при завершении работы программы