Книга: Язык Си - руководство для начинающих
Операция "запятая"
Операция "запятая"
Операция "запятая" увеличивает гибкость использования цикла for, позволяя включать в его спецификацию несколько инициализирующих или корректирующих выражений. Например, ниже приводится программа, которая выводит на печать величины почтовых тарифов первого класса обслуживания. (Во время написания этой книги почтовые тарифы были такими: 20 центов за первую унцию и по 17 центов за каждую следующую.)
/* почтовые тарифы*/
#define FIRST 20
#define NEXT 17
main( )
{
int ounces, cost;
printf(" унциистоимостьn");
for(ounces = 1, cost = FIRST; ounces <= 16; ounces++, cost+ = NEXT)
printf(" %3d %7dn" , ounces, cost);
}
Первые четыре строки результата работы программы будут выглядеть следующим образом:
унции стоимость
1 20
2 37
3 54
Мы воспользовались операцией "запятая" в первом и третьих выражениях: в первом случае она позволяет инициализировать переменные ounces и cost; во втором - на каждой итерации увеличивать значение ounces на 1, а cost на 17 (величину константы NEXT). Все вычисления осуществляются в спецификации цикла for. Применение операции "запятая" не ограничено только циклами for но именно в них она используется особенно часто. Операция обладает одним дополнительным свойством: при ее использовании гарантируется, что выражения, к которым она применяется (т. е. выражения, разделенные запятой), будут вычисляться слева направо. Поэтому переменная ounces будет инициализирована до переменной cost. В данном примере это не имеет значения, но порядок инициализации мог бы оказаться существенным, если выражение, соответвующее cost, содержало бы переменную ounces. Символ "запятая" также используется как разделитель. Поэтому запятые в операторах: char ch, date;
РИС. 8.4. Операция "запятая" и цикл for
ИЛИ
printf(" %d %dn", chimps, chumps);
являются разделителями, а не знаками операции "запятая".
- Восстановление "безнадежных" баз данных. InterBase Surgeon
- Основные "рычаги" управления производительностью
- Удобная операция объединения строк
- Using Double Quotes to Resolve Variables in Strings with Embedded Spaces
- 1. Унарная операция выборки
- 2. Унарная операция проекции
- 3. Унарная операция переименования
- 1. Операция выборки.
- 2. Операция проекции.
- 3. Операция переименования.
- 1. Операция объединения.
- 2. Операция пересечения.