C primer plus 学习笔记
第3章 数据和C
关键字:int 、short、long、unsigned、char、float、double、_Bool、
_Complex、_Imaginary
运算符:sizeof()
函数:scanf()
3.1 一个示例程序
/* platinum.c -- your weight in platinum */
#include <stdio.h>
int main(void)
{
float weight; /* 你的体重 */
float value; /* 相等重量的白金价值 */
printf("Are you worth your weight in platinum?\n");
printf("Let's check it out.\n");
printf("Please enter your weight in pounds: ");
/* 获取用户的输入 */
scanf("%f", &weight);
/* 假设白金的价格是每盎司$1700 */
/* 14.5833用于把英镑常衡盎司转换为金衡盎司[1]*/
value = 1700.0 * weight * 14.5833;
printf("Your weight in platinum is worth $%.2f.\n", value);
printf("You are easily worth that! If platinum prices drop,\n");
printf("eat more to maintain your value.\n");
return 0;
}
提示错误与警告:
如果输入程序时打错(如,漏了一个分号),编译器会报告语法错误消息。
即使输入正确无误,编译器也可能给出一些警告,如“警告:从double类型转换成float类型可能会丢失数据”。错误消息表明程序中有错,不能进行编译。而警告则表明,尽管编写的代码有效,但可能不是程序员想要的。警告并不终止编译。(Linux 下 gcc 编译器不会警告 所以 一定要小心)
3.1.1 程序中的新元素
浮点数类型(float)的变量: 处理更大范围、精度更高的数据 float 类型可以储存带小数的数字。
打印float类型数据,在printf()中使用**%f来处理浮点值。%.2f**中的.2用于精确控制输出,指定输出的浮点数只显示小数点后面两位。
scanf()函数用于读取键盘的输入。%f说明scanf()要读取用户从键盘输入的浮点数,&weight告诉 scanf()把输入的值赋给名为 weight 的变量。scanf()函数使用&符号表明找到 weight变量的地点。
本程序最突出的新特点:交互性。计算机向用户询问信息,然后用户输入数字。与非交互式程序相比,交互式程序用起来更有趣。更重要的是,交互式使得程序更加灵活。
scanf()和printf()函数用于实现这种交互。scanf()函数读取用户从键盘输入的数据,并把数据传递给程序;printf()函数读取程序中的数据,并把数据显示在屏幕上。把两个函数结合起来,就可以建立人机双向通信。
3.2 变量与常量数据
有些数据类型在程序使用之前已经预先设定好了,在整个程序的运行过程中没有变化 (比如 #define P 3.14),这些称为常量(constant)。其他数据类型在程序运行期间可能会改变或被赋值,这些称为变量(variable)。
3.3 数据:数据类型关键字
C通过识别一些基本的数据类型来区分和使用这些不同的数据类型。如果数据是常量,编译器一般通过用户书写的形式来识别类型(如,1 是整数,1.100是浮点数)。但是,对变量而言,要在声明时指定其类型。
最初K&R给出的关键词 | C90标准添加的关键字 | C99标准添加的关键字 |
---|---|---|
int | signed | _Bool |
long | void | _Complex |
short | _Imaginary | |
unsigned | ||
char | ||
float | ||
double |
在C语言中,用int关键字来表示基本的整数类型的 。
为了能够储存更大的数或较小的数或表示的更精确的数就引入了long 、long long ; short 、char;float 、double等类型
为了表示正数就引入了 signed
后3个关键字(long、short和unsigned)和C90新增的signed用于提供基本整数类型的变式。
例如unsigned short int和long long int。char关键字用于指定字母和其他字符(如,#、$、%和)*。另外,char类型也可以表示较小的整数。float、double和long double表示带小数点的数。_Bool类型表示布尔值(true或false),_complex和 _Imaginary分别表示复数和虚数。
通过这些关键字创建的类型,按计算机的储存方式可分为两大基本类型:整数类型和浮点数类型。