c语言程序设计读书笔记:第二天

标签:
杂谈 |
分类: c语言 |
引:
记录第二天:
昨天详细读了一下第一章,感觉写的很详细,但我不知道书上的知识点是否全正确。
一、数据类型的基本概念
(1)数据类型规定了一个以值为其元素的集合。
(2)数据类型定义了一个运算集
(3)数据类型定义了数据在计算机内的存储及书写中的表示方式。
二、c语言的数据类型
数据包含常量和变量,他们都属于某个数据类型。
三、常量
常量是程序中其值不发生变化的量,常量有数、字符和字符串。在c中常量不需要类型说明就可以直接使用,除此之后c中还有一种表示常量的形式,称为符号常量。
(一)数
整数有十进制,八进制,十六进制,八进制以数字0开头,十六进制以0x开头,十进制以1-9中的一个开头。
整数有正负之分,分别在前面加上+,-符号,正数的符号+可以省略。
整数有短整数,整数,长整数之分,一般短整数16位,在我的机器上是short(16),int(32),long(32),对于整数的取值范围有符号的(-2的n位次方至2的n位次方减1),无符号的0到2的n位次方-1
长型数的书写方法:在数后面加一个L,如:0xffL
又叫浮点数,只有十进制的,实数有单精度和双精度之分,实数有两种表示形式,一种是小数,一种是指数。
小数:由整数部分,小数点,小数部分。
指数:由尾数(必须有),e/E,指数(必须是整数)
(二)字符常量
(三)字符串常量
(四)
一般的字符可以直接写出,但对于NULL,回车,新行,退格等字符如何书写?
对于这些字符我们可以用其它的方式表示出来,常用的有:
\n 新行
\r 回车
\t 水平制表
\v 垂直制表
\b 退格
\f 换页
\a 响铃
\" 双引号
\' 单引号
\0 NULL
\ddd 1到3位八进制数表示一个字符
\xdd 1到2位十六进制数表示一个字符
其实\ddd,\xdd就是字符的编码。
(五)符号常量
在c语言中可以对常量进行命名,即用符号代替常数值,该符号叫符号常量,符号常量一般用大写字母表示。
定义格式:
#define 符号常量名 常量
如:
#define NULL 0
#define EOF -1
#define PI 3.1415926
这里#define是预编译命令,每一个#define只能定义一个符号常量,且用一行书写,不用分号结尾。
例:
#include <stdio.h>
#define PI 3.1415926
int main(void)
{
float area,r;
printf("请输入圆的半径:");
scanf("%f",&r);
area = PI*r*r;
printf("这个圆的面积是:%f\n", area);
return 0;
}
使用符号常量的好处:
(1)增强程序的可读性。
如用PI,代表数学中的PI,用EOF代表文件尾,很直观。
(2)增强程序的可维护性
如果多处用到同一个常量,可以定义符号常量,维护时只修改一处即可。对于扩充和可移植一个程序时大有好处。
四、变量
变量是他的值可以发生变化的一种量,每一个变量都对应计算机中相应长度的存储单元,以存放变量所取的值。
如:
#include <stdio.h>
int main(void)
{
int x = 0; //x的初值为0
x = 5; //x的值发生了变化
x = 7*5;
x = x+1;
printf("%d\n",x);
return 0;
}
每一个变量都用一个名字(叫变量名)来表示,变量的名字实际上是内存单元的命名,变量的地址就是该内存单元的开始地址。变量的命名规则同用户自定义标识符。
任何一个变量都属于某一数据类型,如果他是整型量,则只能取整数值。
(一)基本数据类型
(1)、从长度上分有8位、16位、32位和64们珠。
(2)、从数据的符号来分,有无符号的,和有符号的。
(3)、按照数学性质来分,分为整型和实型。
c语言的基本数据类型表:
对于数的值域范围的算法:
有符号:[-2(位长度-1)次方到 2(位长度-1)次方-1]
无符号:[0到 2位长度次方]
-----------------------------------------------------------------
类型标识符
名字
长度
范围
char
字符型
8
ASCII字符代码
unsigned char
无符号字符型
8
0-255
signed char
有符号字符型
8
-127:127
int
整型
16(和环境有关)
范围算法
unsigned int
无符号整型
同上
同上
signed int
有符号整数
同上
同上
short int
短整型
16(和环境有关)
同上
unsigned short int
无符号短整型 同上
同上
signed short int
有符号短整型
同上
同上
long int
长整型
32位(和环境有关) 同上
unsigned long int
无符号长整型 同上
同上
signed long int
有符号长整型
同上
同上
float
单精度浮点型
32
double
双精度浮点型
64
void
空类型
-------------------------------------------------------------------
注:
(1)void类型有两种用法,一是指定函数的返回值的类型,一是用来设置类属指针。
(2)对于不同的环境,数据表示的范围不同,可以用sizeof(类型)来测试。
(二)变量的定义
变量的定义就是按照特定的方式为其指定标识,类型和长度等。程序中所用的每一个变量都必须先定义后引用,没有定义的变量是不能引用的。定义的目的是为编译程序提供所需的信息,以保证完成以下工作。
1、在编译时根据类型信息来检查程序中有无非法的数据结构。
2、根据类型信息来检查对变量施加的运算是否合理。如对两个浮点数不可以进行%运算。
3、编译时根据类型和长度信息对变量分配内存,确定数据在内存中的表示方式。
定义:
数据类型 变量或变量表;
如:
int year,date;
int x;
(三)变量的初始化
int x;
对于这样的变量只是指定了名字和数据类型,并没有给他初始值,但这并不表示变量没有值,他的值是当前内存单元中的数据,这个数据是没有意义的,引用时会产生莫名其妙的结果。
初始化:在定义时直接赋值,则称为初始化。
int x = 5;
double y = 3.4;
变量的初始化并不都是在编译阶段完成的,只有静态变量和外部变量是在编译阶段完成,而局部变量是在运行时初始化的。局部变量的初始化就是一个赋值语句。
int abc()
{
int a =3;
int b =4; //这是在运行时才初始化,而非编译时。
}
//补充
数据类型的转换
在c语言的表达式中,准许对不同类型的数值型数据进行某一操作,当不同类型的数据进行操作时,先将其转换成相同的数据类型,然后再进行操作。
有两种转换方式:隐式转换,显示转换。
一、隐式类型转换
隐式转换就是在编译时由编译程序按照一定规则自动完成。c语言规定的转换规则是由低级向高级转换,如果一个操作符带有两个不同类型的操作数,那么在操作之前先将较低的类型向高级转换,再进行运算。
注意:
1、所有的float类型都转换成double类型,提高运算精度。
2、在赋值语句中,如果=号左右两边的数据类型不同,则将赋值号右边的值转换为赋值号左边的数据类型。
3、在函数参数传递时,也发生数据类型转换。
4、char short自动转换成int再参与运算。
规则:
1、char short自动转换成int
2、float转换成double
3、低级到高级-> char short
->int ->unsigned->
long ->(float ->double)double
二、显式转换
显式转换又叫强制型转换,他不换默认规则,由程序员指定。
如:
int i;
i = i+3.124; //默认是i转成double,再运算,之后double转成int赋给i
显示转换: i = i+(int)3.124 //先把3.124转成int,再参与运算。
显示类型转换方法:(数据类型)表达式
如:(int) 3.14159; //把double -> int
...未完...
前一篇:c语言程序设计读书笔记:第一天
后一篇:ubuntu英文界面,输入中文