加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2010-11-15 21:26:37)
标签:

杂谈

分类: c语言
引:
    我有一本c语言程序设计书,已经静静的躺着好长时间了,前几天朋友说,你这本书有些发黄了,看来是好长时间没有翻过了。
    其实这本书是我初学电脑时朋友给的,但只看了几页就放在那儿了,那时没有自己的电脑,看起来很吃力。在朋友的提醒下,现在可以找一点时间去翻一翻,虽然没有什么价值,但学习也是一种乐趣......


记录第二天:
昨天详细读了一下第一章,感觉写的很详细,但我不知道书上的知识点是否全正确。

一、数据类型的基本概念
(1)数据类型规定了一个以值为其元素的集合。
(2)数据类型定义了一个运算集
(3)数据类型定义了数据在计算机内的存储及书写中的表示方式。

二、c语言的数据类型
数据包含常量和变量,他们都属于某个数据类型。
        
三、常量
常量是程序中其值不发生变化的量,常量有数、字符和字符串。在c中常量不需要类型说明就可以直接使用,除此之后c中还有一种表示常量的形式,称为符号常量。
(一)数
 1、c中数有整数和小数
  (1)整数
整数有十进制,八进制,十六进制,八进制以数字0开头,十六进制以0x开头,十进制以1-9中的一个开头。
整数有正负之分,分别在前面加上+,-符号,正数的符号+可以省略。
整数有短整数,整数,长整数之分,一般短整数16位,在我的机器上是short(16),int(32),long(32),对于整数的取值范围有符号的(-2的n位次方至2的n位次方减1),无符号的0到2的n位次方-1
长型数的书写方法:在数后面加一个L,如:0xffL
  (2)实数
又叫浮点数,只有十进制的,实数有单精度和双精度之分,实数有两种表示形式,一种是小数,一种是指数。
小数:由整数部分,小数点,小数部分。
指数:由尾数(必须有),e/E,指数(必须是整数)

(二)字符常量
  字符常量是用一对''括起来的单一字符,一个字符常量在计算机中占一个字节(8位),字符常量的值就是这个字符在所属字符集中的编码(如:ASCII码)。
  字符常量中的单引号用作定界符,所以对于单引号的表示方法就得用另外一种方法表示:'\'' 用一个斜杠加一个'来转义一个单引号,对于斜框用\\来转义。
  字符常量在计算机中是以编码的方式存放,所以说他实际是一个字节的整数,可以参与各种运算,如+,-,*,/,比较等。

(三)字符串常量
  字符串常量是用双引号护起来的一串字符,字符的个数称其长度,字符串常量简称为字符串。
  长度为n的字符串在计算机的存储中占用n+1个字节,最后多出来的那个存放一个NULL字符,ASCII编码是0,我们可以用'\0'来表示这个字符。
  任何一个字符串在机器内都是以\0结尾。如:abc,其实是'a','b','c','\0'的存储格式。
  对于"这个双引号,由于用作定界符了,所以只能转义表示:\"。
  注意: 'A' , "A"这是两个不同的存储方式,一个是65,一个是65,0

(四)
一般的字符可以直接写出,但对于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


...未完...

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有