
- •1.1. Элементы Языка си
- •1.1.1. Используемые символы
- •1.1.2. Константы
- •1.1.3. Идентификатор
- •1.1.4. Ключевые слова
- •1.1.5. Использование комментариев в тексте программы
- •1.2. Типы данных и их объявление
- •1.2.1 Категории типов данных
- •1.2.2. Целый тип данных
- •1.2.3. Данные плавающего типа
- •1.2.12. Инициализация данных
- •1.3. Выражения и Операции
- •1.3.1. Выражения
- •1.3.2. Операции
- •1.3.3. Операции унарный минус, отрицание и дополнение
- •1.3.4. Операции разадресации и адреса
- •1.3.5. Операция sizeof
- •1.3.6. Мультипликативные операции
- •1.3.7. Аддитивные операции
- •1.3.8. Логические операции
- •1.3.9. Операция последовательного вычисления
- •1.3.10. Условная операция
- •1.3.11. Операции увеличения и уменьшения
- •1.3.12. Составное присваивание
- •1.3.13. Приведение типов
- •1.3.14. Приоритеты операций и порядок вычислений
- •1.4. Операторы
- •1.4.1. Оператор выражение
- •1.4.2. Пустой оператор
- •1.4.3. Составной оператор
- •Ввод с клавиатуры осуществляется оператором scanf()
- •1.4.4. Оператор if
1.4.4. Оператор if
Оператор if имеет две формы:
if (выражение) оператор-1;
и
if (выражение) оператор-1; else оператор-2;
Выражение - любое выражение целого или плавающего типа,
Оператор-1 и оператор-2 – любые операторы С. В частности, они могут быть пустыми или составными.
Выполнение оператора if начинается с вычисления выражения.
Далее выполнение осуществляется по следующей схеме:
в первой форме:
- если выражение истинно (т.е. отлично от 0), то выполняется оператор-1.
- если выражение ложно , то выполняется следующий за if оператор.
во второй форме:
- если выражение истинно (т.е. отлично от 0), то выполняется оператор-1.
- если выражение ложно (т.е. равно 0),то выполняется оператор-2.
После выполнения оператора if значение передается на следующий оператор программы, если последовательность выполнения операторов программы не будет принудительно нарушена использованием операторов перехода.
Пример:
if (i < j) i++;
else { j = i-3; i++; }
Допускается использование вложенных операторов if. Оператор if может быть включен в конструкцию if или в конструкцию else другого оператора if. Чтобы сделать программу более читабельной, рекомендуется группировать операторы и конструкции во вложенных операторах if, используя фигурные скобки. Если же фигурные скобки опущены, то компилятор связывает каждое ключевое слово else с наиболее близким if, для которого нет else.
Примеры:
int main ( )
{
int t=2, b=7, r=3;
if (t>b)
{
if (b < r) r=b;
}
else r=t;
return (0);
}
В результате выполнения этой программы r станет равным 2.
Если же в программе опустить фигурные скобки, стоящие после оператора if, то программа будет иметь следующий вид:
int main ( )
{
int t=2,b=7,r=3;
if ( a>b )
if ( b < c ) t=b;
else r=t;
return (0);
}
В этом случае r получит значение равное 3, так как ключевое слово else относится ко второму оператору if, который не выполняется, поскольку не выполняется условие, проверяемое в первом операторе if.
Следующий фрагмент иллюстрирует вложенные операторы if:
char ZNAC;
int x,y,z;
:
if (ZNAC == '-') x = y - z;
else if (ZNAC == '+') x = y + z;
else if (ZNAC == '*') x = y * z;
else if (ZNAC == '/') x = y / z;
else ...
Из рассмотрения этого примера можно сделать вывод, что конструкции использующие вложенные операторы if, являются довольно громоздкими и не всегда достаточно надежными. Другим способом организации выбора из множества различных вариантов является использование специального оператора выбора switch.
Рассмотрим еще несколько примеров.
Что будет выведено на экран?
#include <stdio.h>
int main(void)
{
float x=2.;
if (x==1)
printf("\n x=%f",x);
else
printf("\n y=%f",x+4);
return 0;
}
Ответ: y=6.
Даны два числа x, y. Выбрать наибольшее из них и вывести на экран.
#include <stdio.h>
int main(void)
{
float x,y;
printf("\n Input x=");
scanf("%f",&x);
printf("\n Input y=");
scanf("%f",&y);
if (x>y) printf("\n max=%f",x);
else printf("\n max=%f",y);
return 0;
}
Найти максимальное из трех чисел.
#include <stdio.h>
#define PR(Z) printf("\n max=%f",Z)
int main(void)
{
float x,y,z,max;
printf("\n Input x,y,z→");
scanf("%f%f%f",&x,&y,&z);
max=x;
if (max<y)
max=y;
if (max<z)
max=z;
printf("\n max=%f",max)
return 0;
}