rothers , brides, brothers);
转换说明符按顺序被printf()函数的第二个参数brides和第三个参数brothers的值取代:变量brides的值对应第一个%d,变量brothers的值对应第二个%d。如果将设置变量值的语句改为如下所示,将会更清楚:
brothers = 8; // Store 8 in the variable brothers
brides = 4; // Store 4 in the variable brides
在这个比较明确的例子中,printf()语句会清楚地显示变量和转换说明符的对应关系,因为输出如下所示:
4 brides for 8 brothers
为了演示变量名是区分大小写的,修改printf()函数,使其中一个变量名以大写字母开头,如下所示:
// Program 2.3A Using more variables
#include
int main(void)
{
int brothers; // Declare a variable called brothers
int brides; // and a variable called brides
brothers = 7; // Store 7 in the variable brothers
brides = 7; // Store 7 in the variable brides
// Display some output
printf(%d brides for %d brothers , Brides, brothers);
return 0;
}
编译这个版本的程序时,会得到一个错误信息。编译器把brides和Brides解释为两个不同的变量,所以它不理解Brides这个变量,因为没有声明它。这是一个常见的错误,如前所述,打字和拼写错误是出错的一个主要原因。变量必须在使用之前声明,否则编译器就无法识别,将该语句标识为错误。
2.3.1 变量的使用
前面介绍了如何声明及命名变量,但这和在第一章学到的知识相比并没有太多用处。下面编写另一个程序,在产生输出前使用变量的值。
试试看:作一个简单的计算
这个程序用变量的值做简单的计算:
// Program 2.4 Simple calculations
#include
int main(void)
{
int total_pets;
int cats;
int dogs;
int ponies;
int others;
// Set the number of each kind of pet
cats = 2;
dogs = 1;
ponies = 1;
others = 46;
// Calculate the total number of pets
total_pets = cats + dogs + ponies + others;
printf(We have %d pets in total , total_pets); // Output the result
return 0;
}
执行程序的结果如下:
Wehave 50 pets in total
代码的说明
与前面的例子一样,大括号中的所有语句都有相同的缩进量,这说明这些语句都包含在这对大括号中。应当仿效此法组织程序,使位于一对大括号之间的一组语句有相同的缩进量,使程序更易于理解。
首先,定义5个int类型的变量:
int total_pets;
int cats;
int dogs;
int ponies;
int others;
因为这些变量都用来存放动物的数量,它们肯定是整数,所以都声明为int类型。
下面用4个赋值语句给变量指定特定的值:
cats = 2;
dogs = 1;
ponies = 1;
others = 46;
现在,变量Total_Pets还没有设定明确的值,它的值是使用其他变量进行计算的结果:
total_pets= cats + dogs + ponies + others;
在这个算术语句中,把每个变量的值加在一起,计算出赋值运算符右边的所有宠物数的总和,再将这个总和存储到赋值运算符左边的变量Total_Pets中。这个新值替代了存储在变量Total_Pets中的旧值。
printf()语句显示了变量Total_Pets的值,即计算结果:
printf(Wehave %d pets in total , total_pets);
试着改变某些宠物的值,或增加一些宠物。记住要声明它们,给它们设定数值,将它们加进变量Total_Pets中。
2.3.2 变量的初始化
在上面的例子,用下面的语句声明每个变量:
intcats; //The number of cats as pets
用下面的语句设定变量Cats的值:
Cats = 2;
将变量Cats的值设为2。这个语句执行之前,变量的值是什么?它可以是任何数。第一个语句创建了变量Cats,但它的值是上一个程序在那块内存中留下的数值。其后的赋值语句将变量Cats的值设置为2。但最好在声明变量时,就初始化它,语句如下所示:
int Cats = 2;
这个语句将变量Cat声明为int类型,并设定初值为2。声明变量时就初始化它一般是很好的做法。它可避免对初始值的怀疑,当程序运作不正常时,它有助于追踪错误。避免在创建变量时使用垃圾值,可以减少程序出错时计算机崩溃的机会。随意使用垃圾值可能导致各种问题,因此从现在起,就养成初始化变量的好习惯,即使是0也好。
上面的程序是第一个真正做了些事情的程序。它非常简单,仅仅相加了几个数字,但这是非常重要的一步。它是运用算术语句进行运算的一个基本例子。下面介绍一些更复杂的计算。
1. 基本算术运算
在C语言中,算术语句的格式如下:
变量名= 算术表达式;
赋值运算符右边的算术表达式指定使用变量中存储的值和/或明确给出的数字,以及算术运算符如加(+)、减(-)、乘(*)及除(/)进行计算。在算术表达式中也可以使用其他运算符,如后面所述。
前面例子中的算术语句如下:
total_pets= cats + dogs + ponies + others;
这个语句先计算等号右边的算术表达式,再将所得的结果存到左边的变量中。
在C语言中,符号“=”定义了一个动作,而不是像数学中那样说明两边相等。它指定将右边表达式的结果存到左边的变量中。因此可以编写下面的语句:
total_pets= total_pets + 2;
以数学的观点来看,它是很荒唐的,但对编程而言它是正确的。假定重新编写程序,添加上面的语句。添加了这个语句的程序段如下:
total_pets = cats + dogs + ponies + others;
total_pets =total_pets + 2;
printf(The total number of petsis: %d, total_pets);
在执行完第一个语句后,Total_Pets的值是50。之后,第二行提取Total_Pets的值,给该值加2,再将结果存储回变量Total_Pets。因此最后显示出来的总数是52。
注意:
在赋值运算中,先计算等号右边的表达式,然后将结果存到等号左边的变量中。新的值取代赋值运算符左边的变量中的原值。赋值运算符左边的变量称为lvalue,因为在这个位置可以存储一个值。执行赋值运算符右边的表达式所得的值称为rvalue,因为它是计算表达式所得的一个值。
计算结果是数值的表达式称为算术表达式,下面都是算术表达式:
3 1 + 2 total_pet