文章目录
数据
变量和常量数据
数据类型
数据类型关键字
int | long | short | unsigned |
---|---|---|---|
char | float | double | signed |
void | _Bool | _Complex | _Imaginary |
按计算机的存储方式可分为两大基本类型 :整数类型和浮点数类型
一下有几点说明
- char 类型是整数类型,因为char类型实际上存储的是整数而不是字符。
- 描述计算机数据单元或存储单元的术语
(1)位,最小的存储单元,可以存储0或者1,是计算机内存的基本构建方式
(2)字节,是常用的计算机存储单位,1字节均为8位
(3)字,是设计计算机时给定的自然数存储单位
如果数据是常量,编译器一般通过用户书写形式来识别类型
- 如果常量是的整数,一般会被认为是int 类型,但是也会根据整数的大小来依次增大
- 如果常量是浮点数,默认情况下,编译器假定浮点型常量是double类型
- 如果是字符,就是char 类型
如果数据是变量,这就要在声明时指定其类型
整型
整型的存储方式
计算机以二进制数字存储整数
常见的整数类型
int
short(short int)
long(long int)
long long(long long int)
unsigned(unsigned int)
int类型 ()
- 系统给定基本整数类型,int的取值范围最小为-32768~32768,C语言规定int类型不小于16位
- int类型的声明,赋值初始化。
int erns;
int hogs,cows,goats; //声明
cows = 112;
scanf("%d",erns) //赋值
int hogs = 21;
int cows = 32.goats = 14;
Int dogs,cats = 94; /*有效,但是这种格式很糟糕*/ //初始化变量
- 打印 int值,用%d
- 可以写成八进制或十六进制,但不会影响被储存的方式
其他整数类型
short
short int 类型,最大的short类型整数小于或等于最大的int 类型整数,C语言规定至少占16位
long
long int类型,该类型可表示的整数大于等于最大的int类型整数,C语言规定至少占32位
long long
long long int 类型,该类型可以表示的整数大于等于最大的long类型整数,C语言规定至少占64位
无符号整型
无符号整型可表示的正整数比有符号整型的大
打印
short | long | long long | unsigned |
---|---|---|---|
%hd | %ld | %lld | %u |
char 类型
- char 类型用于储存字符,但从技术层面看,char是整数类型,因为char类型实际存储的是整数而不是字符
- 计算机通常用ASCII编码表示特定字符
- 标准ASCII码的范围是0~127 ,只需要7位二进制数即可表示,通常,char类型被定义为8位的存储单元
- char类型的声明,字符常量,和初始化。
char response;
char itable.latan; //声明
char grade = 'A' ; //正确赋值 字符用单引号括起来
char grade = A ; //错误
char grade = "A" ; //错误
char grade = 65 ; //可以但是是不好的编程风格
- 非打印字符
有些字符打印不出来,例如,一些代表行为的字符(如,退格,换行有,终端响铃或蜂鸣)
提供两种表示方法:
(1)char beep = 7; //蜂鸣字符的ASCII值是7;
char beep = ‘\007’; 八进制表示
cahr beep = ‘\x10’或’\X010’; 十六进制表示
(2) .使用特殊的符号序列表示一些特殊的字符。这些符号序列叫做转义序列
转义序列 | 含义 |
---|---|
\a | 警报 |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\\ | 反斜杠 |
’ | 单引号 |
" | 双引号 |
? | 问号 |
\0oo | 八进制值 |
\xhh | 十六进制值 |
写法:
char = '\n';
注意:使用ASCII码时,注意数字和数字字符的区别。例如,字符4对应的ASCII码是52.'4’表示字符4,而不是数值4.
6. %c 是char 类型的转换字符
7. 有符号和无符号
有些c编译器把char实现为有符号的,可表示的范围是-128~127,也有些C编译器把char实现为无符号类型,可表示的范围是0 ~255.
—Bool类型
c语言用值1表示true,值0表示false,也是一种整数类型,原则上占用1位储存空间
C99提供了stdbool.h头文件,该文件让bool成为—Bool的别名,而且还把true和false分别定义为1和0的符号常量
浮点型
浮点型的存储方式
- 计算机把浮点数分为小数部分和指数部分来表示,而且分开存储这两部分。
例如 7.00和7在数值上相同,但是它们的存储方式不同 - 浮点数通常只是实际值的近似值
浮点型的基本类型
- float
可精确表示至少六位有效数字 - double
能表示比float类型更多的有效数字(至少10位)和更大的指数 - long double
能表示比double类型更多的有效数字和更大的指数
浮点型的三种表示方法
数字 | 科学记数法 | 指数记数法 |
---|---|---|
1000000000 | 1.0 * 10 9 | 1.0e9 |
123000 | 1.23 * 105 | 1.23e5 |
322.56 | 3.2256 * 102 | 3.2256e2 |
0.000056 | 5.6 * 10-5 | 5.6e-5 |
浮点型变量的声明
float noah,jonah;
double trouble;
float planck = 6.63e-34; //初始化
long doublegnp;
浮点型常量
- 浮点型常量的基本形式的是:有符号的数字(包括小数点),后面紧跟e或E,最后是一个有符号数表示10的指数。
例如: -1.56E+12,2.87e-3 - 正号可以省略
- 可以没有小数点或指数部分,但两者不能同时省略
- 可以省略小数部分或者整数部分,但是两者不能同时省略
- 默认情况下编译器会把浮点型常量假定为double类型 //运算速度较慢,运算精度较高
- 可以在后面加上F或f,编译器会把浮点型常量看成float类型,例如:2.3发,9.11E9F //运算速度较快
- 可以在后面加上l或L,编译器会把浮点型常量看成long double类型
- C99添加了一种新的浮点型常量,即在十六进制数前面加上十六进制前缀(0X,0x),用P和p分别代替e和E,用2的幂代替10的幂 例如;0xa.1fp10(十进制 10364.0)
打印浮点值
转换说明 | 浮点数类型 |
---|---|
%f | float |
%f | double |
%e | 打印指数计数法的浮点数 |
%a,%A | 可以打印十六进制的浮点数 |
%lf | long double |
%le | long double类型的指数 |
%la | longdouble类型的十六进制浮点数 |
printf() ,传递参数时,C编译器会把float类型的值自动转换成double类型
浮点值的上溢和下溢
上溢:当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢,C语言规定,在这种情况下,会给toobig赋一个表示无穷大的特定值,而且printf(),显示该值为inf或infinity
下溢:简单的来说就是计算过程中,损失了原末尾有效位上的是数字。(说的有点不具体)
类型大小
sizeof
sizeof是c语言的内置运算符,以字节为单位给出指定类型和变量的大小,%zd或者%u或者%lu匹配sizeof的返回类型
int a;
sizeof(int) //返回类型大小必须用括号括起来
sizeof a //返回变量类型的大小 可以不用括号括起来
几点注意:
- 正确使用数据类型,特别是在初始化,赋值,打印时一定注意。
- printf时,要保证转换说明的数量,类型,与后面参数的数量,类型相匹配。
- 在打印时,用错转换说明,有些也是可以正常运行的,但是用%d,显示浮点数(float,double,long double),其值不会被转换成int类型。
这是小编第一次总结c语言的知识,后续还会更新
如果有错的地方,可以及时给我指出来,谢谢!
不喜勿喷
感谢大家观看!