ch3 数据和C
C基本数据类型中的两大系列:整数类型和浮点类型。
整数没有小数部分,浮点数可以有小数部分。
浮点数可以表示比整数范围大得多的书,使用浮点数会损失更多的精度。
最小的存储单位成为位 bit。
字节byte是常用的计算机存储单位。
1个字节为8位。一个汉字等于两个字节。
1整形
int类型:是有符号整数 值必须为整数 正负皆可或者是0。取值范围 -32678~32767。
不同计算机上可能是16位或32位,一般都为32位。
单个变量声明方法 int 变量名;也可以为其赋值,int 变量名=整数值;
多个变量声明方法 int 变量名1,变量名2,变量名3;也可以为多个变量赋值,
int 变量名1 = 整形值1, 变量名2 = 整形值2;
打印int值使用%d格式说明符如:printf("a=%d",a);
整型常量的表示:十进制法、八进制(以数字0开头,如012)、十六进制(以0x开头,如0x12)
long int类型:简写为long类型,为32位,取值范围比int大:-2147483647~2147483647。声明变量及初始化变量的方法和int类似,使用%ld格式说明符。
long long int类型,简写为longlong类型,64位,取值范围比long大。声明变量及初始化变量的方法和int类似,使用%lld。
关键字short只可用来修饰int类型的整形,可写成:short int或short都是可以的,
short的取值范围为-32767~32767,使用%d格式化符来输出。
有符号类型signed:可用来修饰int类型,short int 类型,long类型和long long类型。
当一个整形类型前未加关键字signed其默认为有符号型。
有符号型是指,在取值范围时,可以是负数,零和正数。修饰方法:signed 整形类型 变量名;
关键字unsigned修饰后表示该类型为无符号型。无符号型指在取值范围时,只能是正数或零,而不能是负数。但这个在正数区间内的取值范围要比有符型正数下的取值范围大。
无符号类型比有符号类型在正数条件下限值的范围更大。
Char类型:char类型用于存储字母和标点符号之类的字符,也是最小的整数类型。
实际上char类型实际存储的是整数而不是字符。(为了这一实现而采用的是编码,通常用的是ASCII)。
例:
char one;
one='a';
one=a;
one="a";
如果不使用单引号,编译器会将a视为一个变量名,如果使用双引号,编译器会将其视为一个字符串,使用单引号表示是取数值,a的ASC值是65。
使用%d格式说明符打印char变量,使用%c打印一个字符,%s打印字符串。
_Bool类型:_Bool是C99新增的类型。用来表示逻辑值真或假的,即true与false的,了解即可。
2浮点型
float类型,double类型,long double类型。
float类型和double类型都是用%f来打印,%e是打印指数记数法的;%Lf、%Le用来打印long double的
C标准规定,float至少可以表示6位有效数字,double至少可以表示10位有效数字。
当计算结果是一个大得不能表达的数时,会发生上溢。
下溢通常是在做除法时,由于位移的原因,运算结果失去了有效位数。在程序中发生浮点运算的上溢和下溢都是非常危险的。
一般的,使用int或float类型表示数字,使用char类型
字符转义字符:/n,/b,/r,/t,/a,/v,//,/',/",/? 等等,需要再查询。
计算机内存中用数值编码来表示字符,美国最常用的数值编码是asc码,C也支持其他编码的使用。
// 整个总结写下来对书本的知识更有了一个系统性认识,没写之前对于两大类型总是混沌模糊的概念,整体写了下来使得知识更为清晰.本章有些草率,不足还请点评。
/* long long 的定义*/
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
long long llong_a=9999999999;
int int_a=1111111;
printf("llong_a=%lld./n",llong_a);
printf("llong_a is hexadecimal =%llx./n",llong_a);
printf("int_a is hexadecimal=%x./n",int_a);
return 0;
}