《C语言程序设计:现代方法(第2版)(K.N.King 著)》学习笔记三:C语言基本概念(2)

版权声明:该文章由作者原创,未经许可请勿转载! https://blog.csdn.net/qq_29381145/article/details/82924125

2.3 注释


  1. 每一个程序都应该包含识别信息,即程序名、编写日期、作者、程序的用途以及其他相关信息。C语言把这类信息放在注释comment)中。
  2. 符号 /* 标记注释的开始,而符号 */ 则标记注释的结束。例如:
/* This is a comment */
  1. 注释几乎可以出现在程序的任何位置上。它既可以单独占行也可以和其他程序文本出现在同一行中。注释还可以占用多行。一旦遇到符号 /*,那么编辑器读入(并且忽略)随后的内容直到遇到符号 */
  2. 一般的注释形式如下:
/* Name: pun.c
    Purpose: Prints a bad pun.
    Author: K.N.King */
  1. 但是,上面这样的注释可能难于阅读,因为人们阅读程序时可能不易发现注释的结束位置。所以,单独把 */ 符号放在一行会很有帮助:
/* Name: pun.c
    Purpose: Prints a bad pun.
    Author: K.N.King
*/
  1. 更好的方法是用一个“盒形”格式把注释单独标记出来:
/**********************************
 * Name: pun.c                    *
 * Purpose: Prints a bad pun.     *
 * Author: K.N.King	          *
 **********************************/
  1. 有些程序员通过忽略3条边框的方法来简化盒形注释:
/*
 * Name: pun.c
 * Purpose: Prints a bad pun.
 * Author: K.N.King
 */
  1. 简短的注释还可以与程序中的其他代码放在同一行,这类注释有时也称作“翼型注释”:
int main(void)    /* Beginning of main program */
  1. 如果忘记终止注释可能会导致编译器忽略程序的一部分。例如下面这段代码,因为在第一条注释中遗漏了结束标志,所以编译器忽略掉了中间的两条语句,因此程序最终只打印了“My fleas”:
    printf("My ");    /* forgot to close this comment...
    printf("car ");
    printf("has ");    /* so it ends here */
    printf("fleas");
  1. C99提供了另一种类型的注释,以 //(两个相邻的斜杆)开始:
// This is a comment
  1. 这种风格的注释会在行末自动终止。如果要创建多于一行的注释,既可以使用以前的注释风格(/* ... */),也可以在每一行的前面加上 //
// Name: pun.c
// Purpose: Prints a bad pun.
// Author: K.N.King
  1. 新的注释风格有两个主要优点:首先,因为注释会在行末自动终止,所以不会出现未终止的注释意外吞噬部分程序的情况;其次,因为每行前面都必须有 //,所以多行的注释更加醒目。

2.4 变量和赋值


  • 大多数程序在产生输出之前往往需要执行一系列的计算,因此需要在程序执行过程中有一种临时存储数据的方法。和大多数编程语言一样,C语言中的这类存储单元被称为变量(variable)

2.4.1 类型

  1. 每一个变量都必须有一个类型(type)。类型用来说明变量所存储的数据的种类。C语言拥有广泛多样的类型。由于类型会影响变量的存储方式以及允许对变量进行的操作,所以选择合适的类型是非常关键的。数值型变量的类型决定了变量所能存储的最大值和最小值,同时也决定了是否允许在小数点后出现数字。
  2. int(即integer的简写)型变量可以存储整数。但是,整数的取值范围是受限制的。最大的整数通常是 2 147 483 647,但在某些计算机上也可能只有 32 767。
  3. float(即floating-point的简写)型变量可以存储比int型变量大得多的数值。而且,float型变量可以存储带小数位的数。但float型变量也有一些缺陷。进行算术运算时float型变量通常比int型变量慢;更重要的是,float型变量所存储的数值往往只是实际数值的一个近似值。如果在一个float型变量中存储 0.1,以后可能会发现变量的值为 0.099 999 999 999 999 87,这是舍入造成的误差。

2.4.2 声明

  1. 在使用变量之前必须对其进行声明(为编译器所做的描述)。为了声明变量,首先要指定变量的类型,然后说明变量的名字。例如,我们可能这样声明变量 height 和 profit:
int height;
float profit;
  1. 如果几个变量具有相同的类型,就可以把它们的声明合并。注意每一条完整的声明语句都要以分号结尾:
int height, length, width, volume;
float profit, loss;
  1. 当main函数包含声明时,必须把声明放置在语句之前。就书写格式而言,建议在声明和语句之间留出一个空行。但在C99中,声明可以不在语句之前。例如,main函数中可以先有一个声明,后面跟一条语句,然后再跟一个声明。

2.4.3 赋值

  1. 变量通过赋值assignment)的方式获得值。例如下面的三条赋值语句分别把数值 8、12 和 10 赋值给变量 height、length 和 width,8、12 和 10 称为常量constant):
height = 8;
length = 12;
width = 10;
  1. 变量在赋值前或以其他方式使用之前必须先声明。
  2. 赋给 float 型变量的常量通常都带小数点,即使小数部分为 0,比如说 24,也要写成 24.0。当我们把一个包含小数点的常量赋值给 float 型变量时,最好在该常量后面加一个字母f(代表 float),比如说 24.0f。不加f可能会引发编辑器的警告。
  3. 混合类型赋值(如把 int 型变量的值赋给 float 型变量或者把 float 型的值赋给 int 型变量)是可以的,但不一定安全。
  4. 在C语言中,符号 * 表示乘法运算。
  5. 通常情况下,赋值运算的右侧可以是一个含有常量、变量和运算符的公式(在C语言的术语中称为表达式)。

2.4.4 显示变量的值

  1. 用 printf 函数可以显示出变量的当前值。
  2. 语句 printf("Height: %d\n", height); 在屏幕上打印出变量 height 的当前值。占位符 %d 用来指明在显示过程中变量 height 的值的显示位置。由于在 %d 后面放置了 \n,所以 printf 函数在显示完变量 height 的值后会跳到下一行。
  3. %d 仅用于 int 型变量。如果要显示 float 型变量,需要用 %f 来代替 %d。默认情况下,%f 会显示出小数点后 6 位数字。如果要强制 %f 显示小数点后 p 位数字,可以把 .p 放置在 % 和 f 之间。例如,为了显示信息“Profit: $2150.48”,可以这样调用 printf 函数:
printf("Profit: $%.2f\n", profit);
  1. C语言没有限制调用一次 printf 函数可以显示的变量的数量。

[程序] 计算箱子的空间重量:dweight.c

/* Computes the dimensional weight of a 12" x 10" x 8" box */

#include <stdio.h>
int main(void)
{
    int height, length, width, volume, weight;

    height = 8;
    length = 12;
    width = 10;
    volume = height * length * width;
    weight = (volume + 165) / 166;    /* 在C语言中,如果两个整数相除,那么结果会被“截短”:小数点后的所有数字都会丢失。
    例如,12 × 10 × 8 = 960,960 ÷ 166 = 5(而不是 5.783)。这就使得结果向下取整。
    在本情境中,运输公司肯定希望结果向上取整,因此在 volume 除以 166 前,先给它加上 165。*/

    printf("Dimensions: %dx%dx%d\n", length, width, height);
    printf("Volume (cubic inches): %d\n", volume);
    printf("Dimensional weight (pounds): %d\n", weight);

    return 0;
}

2.4.5 初始化

  1. 当程序开始执行时,某些变量会被自动设置为零,而大多数变量则不会。没有默认值并且尚未在程序中被赋值的变量是未初始化的(uninitialized)。如果试图访问未初始化的变量,可能会得到不可预知的结果,在某些编译器中,可能会发生更坏的情况(甚至是程序崩溃)。
  2. 可以在变量声明中加入初始值,例如:
int height = 8;
  1. 按照C语言的术语,数值 8 是一个初始化式(initializer)。在同一个声明中可以对任意数量的变量进行初始化,但无法用一个初始化式初始化多个变量。例如下面这个变量声明,只有变量 width 拥有初始化式而被初始化:
int height, length, width = 10;

2.4.6 显示表达式的值

  1. printf 函数的功能不局限于显示变量中存储的数,它可以显示任意数值表达式的值。利用这一特性既可以简化程序,又可以减少变量的数量。例如:
volume = height * length * width;
printf("%d\n", volume);
// 可替换为:
printf("%d\n", height * length * width);
  1. printf 函数显示表达式的能力说明了C语言的一个通用原则:在任何需要数值的地方,都可以使用具有相同类型的表达式。

猜你喜欢

转载自blog.csdn.net/qq_29381145/article/details/82924125