1.1 整型数据
1.1.1整形常量
C中的整常数有三种表示形式:进制整数、八进制整数和十六进制整数
十进制数:最高位非零;八进制数:以数字零开头;十六进制:以数字零和字母x开头,a-不区分大小写
1.1.2 整型变量
C中的整型变量分为有符号和无符号两种
有符号整型变量细分为标准整型(int)、短整型(short)、长整型(long),值可正可负
无符号整型变量也可分为标准整型(unsigned int)、短整型(unsignedshort)长整型(unsigned long),其值不能为负
表示范围不同:short(2个字节)<=int(2个字节)<=long(4 个字节)
16位的有符号整数能表示的数的有效范围:-215~25-1=-32768~32767
1.1.3整型数据的存储表示
正整数:以原码形式存放在内存中,字长为16 时,整数范围取0-32767负整数:以补码形式存放在内存中
-5 的补码:16位0/1 代码的模10000000000000000(16个零)模-101(5)(1000000000000000)₂=(-32768)10(11111)=()1
1.2 字符型数据
1.2.1字符型常量
字符型常量是由一对单引号括起来的单个字符(可打印)
一个转义序列是一个反斜线后跟特定的字符,表示某些不可打印的字符(n换行符\t水平制表符\b退格符\r回车符I反斜线符10空字符\ddd位型ddd是1至3位八进制数字loxff位型ff是1至2位十六进制数字)ASCII码八位
1.2.2字符型变量char cl.c2;
每个字符型变量可存放一个字符
1.2.3字符型数据的存储表示
字符数据在计算机内部是以一个字节的二进制形式表示(ASCII码)
+printf:参数可以有多个,但第一个参数必须是字符串,称为格式串(format-string)
printf首先对格式串从左到右扫描,当遇到可显示字符时就在终端上原样输出,当遇到控制字符(如n响铃符等)就产生相应的动作(换行,响铃等),当遇到转换字符时,就将后面的实参依次按转换符的要求转换并输出,常用的转换符有:%d十进制整型、%c字符型、%f浮点型、%s 字符串型
C编译系统将字符型数据当成有符号整型还是无符号整型没有规定
将字符串“12345”转换成12345'1'0=15-0=5
1.2.4 字符串常量
字符串常量是用一对双引号括起来的零个或多个字符序列
。“”只充当字符串的分界符,而不是字符串的一部分;如果要在字符串中出现双引号,则必须经过转义序列,如The“a”is an indefart写成字符串为:“The \42a\42 is an indef art”字符串中所含的字符个数称为字符串的长度;字符串所占的空间为长度+1,增加的一个字节存放字符串的结尾标志'10例:字符串“10mn”的长度=0
·转义序列也可出现在字符串中,但只作为一个字符看待
1.3浮点型数据
1.3.1浮点型常量
浮点型常量有非指数型和指数型两种;指数型:e(E)之前必须有数字,之后的指数必须为整数,且不能插入空格!
1.3.2浮点型变量
浮点型变量通过保留字float来说明
1.3.3浮点型数据的存储表示
表示:二进制的浮点形式
任何一个二进制实数总可以表示成:N=Sx2°其中:pS都是有符号二进制整数,p称为阶码(8位),S称为尾数(24位),S中无小数点或小数点约定为在最前头。
p的字长为nl,S的字长为n2,则有-2"≤p≤2"--1-2"2≤S≤22-1-1,则一个实数的字长为:n1+n2
令n2=24,n1=8,则N=Sx2的取值范围是2-1≤N≤2约为103≤N≤103,N的
精度为7位有效数字。
1.4双精度型数据
字长比浮点型多一倍,一般占用8个字节;精度大约为17位有效数字,浮点型为7位精度。双精度型变量是由保留字double来说明的
1.5变量的初始化
1.6变量的存储类
变量的两个属性:存在性和可见性
存在性:是指变量都具有一个数据类型并以一定的方式存于内存之中可见性:是指在其作用域中是可见的(活动的),出了作用域就不可见了
变量的作用域:是指变量有定义的程序部分
变量的以上两个属性是由以下四个变量存储类决定的:
自动的(auto)静态的(static)寄存器(register) 外部的(extern)
1.6.1 自动变量
由保留字auto说明或定义的变量(autointa),auto可省略不写
自动变量是局部变量,其作用域局限于其所在的函数或块
自动变量每进入一次函数体,就赋一次指定的初值
1.6.2寄存器变量(register)
寄存器变量的用法和作用域规定与自动变量相同
寄存器变量无地址,无法对其进行求地址运算
器存器变量说明应尽量靠近其使用的地方,用完后尽快释放