详解C语言中的符号常量、变量与算术表达式

2020-01-06 14:07:08王旭

while循环语句的执行方式是这样的:首先测试圆括号中的条件;如果条件为真(fahr<=upper),则执行循环体(括在花括号中的 3 条语句);然后再重新测试圆括号中的条件,如果为真,则再次执行循环体;当圆括号中的条件测试结果为假(fahr>upper)时,循环结束,并继续执行跟在 while 循环语句之后的下一条语句。在本程序中,循环语句后没有其它语句,因此整个程序的执行终止。

while 语句的循环体可以是用花括号括起来的一条或多条语句(如上面的温度转换程序),也可以是不用花括号包括的单条语句,例如:


while (i < j)
 i = 2 * i;

在这两种情况下,我们总是把由 while 控制的语句缩进一个制表位,这样就可以很容易地看出循环语句中包含哪些语句。这种缩进方式突出了程序的逻辑结构。尽管 C 编译器并不关心程序的外观形式,但正确的缩进以及保留适当空格的程序设计风格对程序的易读性非常重要。我们建议每行只书写一条语句,并在运算符两边各加上一个空格字符,这样可以使得运算的结合关系更清楚明了。相比而言,花括号的位置就不那么重要了。我们从比较流行的一些风格中选择了一种,读者可以选择适合自己的一种风格,并养成一直使用这种风格的好习惯。

在该程序中,绝大部分工作都是在循环体中完成的。循环体中的赋值语句:


printf(" %dt%dn", fahr, celsius);

用于打印两个整数 fahr 与 celsius 的值,并在两者之间留一个制表符的空间(t)。

printf 函数的第一个参数中的各个%分别对应于第二个、第三个、……参数,它们在数目和类型上都必须匹配,否则将出现错误的结果。

顺便指出,printf 函数并不是 C 语言本身的一部分,C 语言本身并没有定义输入/输出功能。printf 仅仅是标准库函数中一个有用的函数而已,这些标准序函数在 C 语言程序中通常都可以使用。但是,ANSI 标准定义了 printf 函数的行为,因此,对每个符合该标准的编译器和库来说,该函数的属性都是相同的。

上述的温度转换程序存在两个问题。比较简单的问题是,由于输出的数不是右对齐的,所以输出的结果不是很美观。这个问题比较容易解决:如果在 printf 语句的第一个参数的%d 中指明打印宽度,则打印的数字会在打印区域内右对齐。例如,可以用语句