3.1 数据的表现形式及其计算
3.1.1 常量和变量
常量: 程序运行过程中,其值不能变的量
变量: 代表一个有名字的、具有特定属性的一个存储单元。在程序运行期间,变得的值是可改变的。
1、常量
常量分为: 整型常量、实型常量、字符常量、字符串常量、符号常量
这里特别要注意符号常量:#define PI 3.1416
符号常量,指定用一个符号名称表示一个常量。符号常量不占内存只是一个临时符号。所以不能对符号常量赋值。
2、 变量
变量要遵循 先定义后使用的原则。有类型,占存储单元。
常变量 const int a=3; 常变量有变量的基本属性,有类型,占存储单元。 由于常变量的存在,可以大部分代替符号常量的使用。
3.1.2 数据类型 (由变量引申)
类型: 对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。
3.2.3 整型数据
基本整型int ,短整型short int ,长整型long int , 双长整型long long int
变量值在存储单元中都是以补码的形式存在
3.2.4 字符型数据
1. 字符与字符代码
字符时以整数形式(字符的ASCII代码)存放在内存单元。在C中1个字节(8位)存放一个字符。
由于字符时以ASCII存储,整数是以补码形式存储,所以能区分字符和整数
2. 字符常量
字符变量: 用类型符char定义字符变量
在负数,signed 和unsigned方面要重新理解
3.2.5 浮点型数据
浮点型数据是用来表示具有小数点的实数
3.2.6 怎样确定常量的类型
整型常量和浮点型常量
浮点型常量这里面主要讨论了精度损失的问题
3.2.7 运算符和表达式
1. 基本的算术运算符
对于除/ 而言,得到结果的值与被除数符号相同
对于取余而言,操作数必须为整数。
2. 自增、自减运算符
自增、自减运算符只能用于变量。
变成时最好减少前++和后++的区别,增强可读性
3. 算术表达式和运算符的优先级和结合性
结合性的问题是C语言所特有的。要在实际运用中体会。
4.不同数据类型间的混合运算
注意: %f, %d, %c 是让计算机里面的数据按照某种格式输出
5. 强制类型运算符
(类型名)(表达式)
一般使用强制类型转换时,是为了将编译系统内部的转换呈现给读者。加强可读性。
6. c运算符
3.2 C语句
3.2.1 C语句的作用和分类
1.控制语句
2.函数调用语句
3.表达式语句
4.空语句
5.复合语句
一般来说,一个表达式加上一个;就是一个语句。
这里面,printf();是函数调用语句
3.2.2 最基本的c语句——赋值语句
1.赋值运算符
2.复合的赋值运算符
特别要注意: x%=y+3
等价于 x=x%(y+3)
3.赋值表达式
由运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”
变量 赋值运算符 表达式
4. 赋值过程中的类型转换
在这里面主要是可能出现的精度不同从而导致数据丢失的状况。
3.3 数据的输入输出
3.3.1 输入输出举例
一元二次方程
在这里面当用到除法的时候,要考虑到数据类型的一致,(-b) / (2.0*a)
3.3.2 有关数据输入输出的概念
1.所谓输入输出时以计算机主机为主体而言的。计算机向输出设备(打印机,显示器)为输出,从输入设备(键盘、磁盘、扫描仪)这些向计算机提供数据的为输入。
2.C语言本身是不提供输入输出语句的。printf 和scanf 只是一个库函数名字,而不是输入输出语句。
3. 在使用系统库函数的时候,要在程序的开头用预处理指令#inlcude 把有关头文件放在本程序中。
对于预处理指令的两种格式的区别,<> 和""不同,<>是按照标准方式查找文件,而""则是按照先在用户的当前目录,后标准形式的方式查找。
3.3.3 用printf函数输出数据
在运用printf 和scanf两个函数的时候,必须指定输入输出数据的格式!
一般用%f的格式只能输出6位小数,而一个双精度数只能保证15位有效数字的精确度,也就是15位小数!
/* 2013年5月21日22:25:53 目的:如何使用scanf和printf函数 */ # include <stdio.h> int main(void) { /* printf("%12d\n", 123); */ /*char a = 'a'; printf("%c\n", a);*/ /*printf("%s\n", "china"); // 这样的话,用%s 输出字符串的时候,后面要用"" 这个要特别注意*/ /* float a = 3; printf("%f\n", a/4.0); //在运用%f的格式时,系统一般的处理方法是,实数中的整数部分全部输出,小数部分输出6位,这也就牵扯到如何判断1个数是不是0的问题。*/ /*float a = 3; printf("%9.5f\n", a/4);*/ double a = 1000; printf("%20.15f\n", a/3); return 0; }
3.3.4 用scanf函数输入数据
scanf(格式控制,地址表列);
在格式控制的后面应该是地址,所以用到的应该是&符
3.3.5 字符数据的输入输出
1.用putchar函数输出一个字符
2.用getchar函数输入一个字符