
Объявление переменных
Все переменные должны объявляется перед использованием. Ниже показана стандартная форма объявления:
тип список_переменных;
Здесь тип должен быть корректным типом данных С, а список_переменных может содержать одно или более имён идентификаторов, разделённых запятыми. Ниже показаны некоторые виды объявлений:
int i, j, k;
short int si;
unsigned int ui;
double balance, profit, loss;
Помните, что в С имя переменной ничего не делает со своим типом.
Имеется три основных места, где объявляются переменные: внутри функций, при определении параметров функции и вне функций. Эти переменные называются соответственно локальными переменными, формальными параметрами и глобальными переменными.
Локальные переменные
Переменные, объявляемые внутри функций, называются локальными переменными. С локальными переменными могут работать только операторы, находящиеся в блоке, где данные переменные объявлены. Вне этого блока локальные переменные неизвестны. Блок кода начинается с открытия фигурной скобки и заканчивается закрытием фигурной скобки.
Пример
void f(void)
{
int t;
scanf(“%d”, &t);
if(t == 1) {
char s[80];
printf(“enter name:”);
gets(s);
puts(s);
}
/* s здесь неизвестна */
}
Поскольку локальные переменные уничтожаются при выходе из функции, в которой они объявлялись, то эти переменные не могут хранить значение между вызовами функций. (Как будет видно, имеется возможность заставить компилятор сохранять значения путём использования модификатора static.)
Формальные параметры
Если функция использует аргументы, то в ней должны объявляться переменные, которые будут принимать значения аргументов. Данные переменные называются формальными параметрами функции. Они ведут себя, как любые другие локальные переменные в функции. Как показано в следующем фрагменте программы, они объявляются в круглых скобках, следующих за именем функции.
int is_in(char *s, char c)
{
while(*s)
if(*s == c) return 1;
else s++;
return 0;
}
Как и с локальными переменными, формальным параметрам можно присваивать значения или использовать их в любых допустимых выражениях С. Даже если эти переменные играют особую роль для некоторых задач по получению значений аргументов, переданных в функцию, то они могут использоваться, как и остальные локальные переменные.
Глобальные переменные
В противоположность локальным переменным глобальные переменные видны всей программе и могут использоваться любым участком кода. Они хранят свои значения на протяжении всей работы программы, Глобальные переменные создаются путём объявления вне функции. К ним можно получить доступ в любом выражении, независимо от того, в какой функции находится данное выражение.
В следующей программе программа count объявлена вне функций. Общепринятым является объявление глобальных переменных в начале программе.
#include <stdio.h>
void func1(void), func2(void);
int count;
int main(void)
{
count = 100;
func1();
return 0;
}
void func1(void)
{
func2();
printf(“count is %d”, count); /* выведет 100 */
}
void func2(void)
{
int count;
for(count=1; count<10; count++)
putchar(‘ ‘);
}
Хотя ни main(), ни func1() не объявляют переменную count, но они оба могут её использовать, func2() объявляет локальную переменную count. Когда func2() обращается к count, она обращается только к локальной переменной, а не к глобальной.
Оператор присваивания
Общий вид оператора присваивания следующий:
имя_переменной = выражение;
где выражение может быть как простой одиночной константой, так и сложной комбинацией переменных, операторов и констант.
Преобразование типов при присваивании
Преобразование типов предназначено для ситуации, в которой переменные одного типа смешиваются с переменными другого типа. Когда возникает подобная ситуация в операторе присваивания, используется следующее правило: значение справа от оператора присваивания преобразуется к типу объекта, стоящего слева.
Константы
Константы в С – это фиксированные значения, которые не могут изменяться программой. Они могут быть любых типов, как показано в таблице
Тип данных |
Пример константы |
char int long int short int float double |
‘a’ ‘\n’ ‘9’ 1 123 21000 -234 35000L -34L 10 -12 90 123.23F 4.34e-3F 123.23 12312.333 -0.987654 |
Контрольные вопросы:
-
Какой общий вид программ на языке С?
-
Какие есть основные типы данных на языке С?
-
Какие есть основные типы данных на языке С++?
-
Что такое локальная переменная?
-
Что такое глобальная переменная?
-
Что такое формальный параметр функции?
Задание
Номер варианта |
Задание |
1, 10, 19, 28 |
Создать программу, производящую вычисления по формуле:
Используйте для переменных сначала тип данных int, потом double. Если в результате вычислений получились расхождения, объясните их. |
2, 11, 20, 29 |
Создать программу, производящую вычисления по формуле:
Используйте для переменных сначала тип данных int, потом double. Если в результате вычислений получились расхождения, объясните их. |
3, 12, 21, 30 |
Создать программу, производящую вычисления по формуле:
Используйте для переменных сначала тип данных int, потом double. Если в результате вычислений получились расхождения, объясните их. |
4, 13, 22 |
Создать программу, производящую вычисления по формуле:
Используйте для переменных сначала тип данных int, потом double. Если в результате вычислений получились расхождения, объясните их. |
5, 14, 23 |
Создать программу, вычисляющую площадь поверхности цилиндра с радиусом основания r и высотой h, где эти величины вводятся с клавиатуры при помощи функции scanf(). Используйте для переменных сначала тип данных int, потом double. Если в результате вычислений получились расхождения, объясните их. |
6, 15, 24 |
Создать программу, вычисляющую площадь поверхности конуса с радиусом основания r и высотой h, где эти величины вводятся с клавиатуры при помощи функции scanf(). Используйте для переменных сначала тип данных int, потом double. Если в результате вычислений получились расхождения, объясните их. |
7, 16, 25 |
Создать программу, вычисляющую площадь поверхности параллелепипеда с длиной а, шириной b и высотой c, где эти величины вводятся с клавиатуры при помощи функции scanf(). Используйте для переменных сначала тип данных int, потом double. Если в результате вычислений получились расхождения, объясните их. |
8, 17, 26 |
Создать программу, вычисляющую площадь поверхности сферы с радиусом r, который вводится с клавиатуры при помощи функции scanf(). Используйте для переменных сначала тип данных int, потом double. Если в результате вычислений получились расхождения, объясните их. |
9, 18, 27 |
Создать программу, вычисляющую объём шара с радиусом r, который вводится с клавиатуры при помощи функции scanf(). Используйте для переменных сначала тип данных int, потом double. Если в результате вычислений получились расхождения, объясните их. |