第二章数据类型、运算符、表达式
一.数据类型
基本类型:是C语言数据类型的基本型,其值不可再分解为其他类型。
构造类型:一种由单种或多种数据类型构造而成的数据类型。 数组 结构 共用体 枚举类型
指针类型:一种特殊的数据类型,其值为某个量的内存地址。
空类型:一种无返回值函数的数据类型。 void
1.基本类型
基本类型: 数值类型 :整型int 。浮点型 float
字符类型:char
1.整数类型: short 2个字节 数值范围 -32768~+32767 %hd
i int 4个字节 - 21亿~+21亿之间 %d
long 4个字节 与int 没有差别 %ld
unsigned short int 2个字节 数值范围 0~+65535 %hd
i unsigned int 4个字节 0+42亿之间 %d
unsigned long int 4个字节 0+42亿之间
对于有符号来讲,二进制位中的第一位是符号位, (0,表示正数。1,表示负数。其它位就是数值位。)
计算短整型的数值范围是多少?
最大值为 : 0111 1111 1111 1111
先加1 0111 1111 1111 1111 + 1 =1000 0000 0000 0000=pow(2,15)=32768
在减1 最大值=32768-1=32767
最小的值是多少呢?
最小值 1000 0000 0000 0000
先求 1000 0000 0000 0001
先减去1 (减1) 1000 0000 0000 0000
然后取反 ,得到源码 (取反) 1111 1111 1111 1111 读出:-32767
最小值 = - 32768 = 1000 0000 0000 0000
那么无符号的短整型的数据范围是啥呢?
无符号的意思是所有二进制位都应该看成是数值位。
最大值应该是: 1111 1111 1111 1111
人为加1得到 1 0000 0000 0000 0000 = pow(2,16)=65536
然后减去1, 65535
最小值应该是: 0000 0000 0000 0000 =0.
2.小数类型: float 4个字节 数值范围 10^38~10^-38之间 %f
double 8个字节 10^308~10^-308之间 %lf
3.字符类型 char 1个字节 c标准中字符一共有128个 %c / %d
char 1个字节 -128 ~127之间。
最大值 = 0111 1111 = pow(2,7)= 127.
最小值 = 1000 0000 = -128
c语言为啥定义这么多数据类型啊?
答:经济实惠,根据你业务数值范围的特点,定义相应类型的内存空间,这样就可以节省内存。
2.构造类型
在实际应用中,对于复杂问题的解决,C语言还提供了新的数据类型,这些数据类型的元素或成员的数据类型仍然是基本数据类型。
C语言中构造类型共有四种:数组、结构体、共用体(联合体)、枚举。
3.指针类型
C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位。这里,数据对象是指存储在内存中的一个指定数据类型的数值或字符串,它们都有一个自己的地址,而指针便是保存这个地址的变量。也就是说:指针是一种保存变量地址的变量。
4.空类型
一类函数调用后并不需要向调用者返回函数值, 这种函数可以定义为“空类型”。其类型说明符为void,不需要向调用者返回函数值 。
void的语义有多种: 1、作为参数表示无参数 2、作为返回值代表无返回值 3、修饰指针变量代表未知类型的指针
二 常量、变量
-常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。(如果修改常量值(1)程序编译时会发现 报错(2程序崩溃))
C语言中的常量: -整型常量 -浮点型常量 -字符型常量 -字符串常量 -地址常量 -定义常量
1.整形常量
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
常量加前缀:代表不同的进制表现
常量加后缀:代表常量的类型
不加后缀 默认为int类型的常量 L 表示常量为long类型 U 表示常量为无符号的int UL 无符号的long类型(无符号 unsigned 代表没有负数 只有正)
后缀 不区分大小写
%u 以有符号类型输出;
2 浮点型常量
浮点常量由整数部分、小数点、小数部分和指数部分组成(十进制),可以使用小数形式或者指数形式(科学计数法)来表示浮点常量。 当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时,字母E/e前必须有数字, 而E后面的阶码必须为整数。
两种表现形式
(1)指数(科学计数法)
(2)十进制小数形式
如果要写一个合法的科学计数法表示的浮点数,必须满足两条
(1),e前面必须有数字。
(2),e后面必须有整型数。
例如:1234.56 数学中 可以写成 1.23456*10^3
C语言中 1.23456e+003
-0.0012345 -1.2345E-3
+ 可以省 00也可以省,
E前面必须有数字 E后面必须是整数
输出时 默认保留六位小数 并且 四舍五入
输出小数时 % .n f 就代表保留n个小数输出
3,字符常量:
语法:char ' x ' ; 字符常量是括在单引号中,存储在 char 类型的简单变量中。
注意:(1)字符常量可以是一个普通的字符(例如 'x')、一个转义序列(例如 ' '),或一个通用的字符(例如 'u02C0’)。
(2)在内存中,字符常量以ASCII码存储,一个字符占一个字节。
` (3)由于字符常量是按整数存储的,可以像整数一样在程序中参与相关的运算。、
如: //练习字符
#include <stdio.h>
void main()
{
char ch='A';
printf("%d %c
",ch,ch+32);
}
数据类型不同的平台可能占用内存大小不一样(分配的空间)
sizeof :测字节运算符 单位是 字节 bytes
sizeof() 括号中 可以跟变量名 类型 常量
例如:
#include <stdio.h>
void main()
{
printf("%d
",sizeof(double));
}
库中定义好的数值:宏定义(符号常量)
https://blog.csdn.net/clever101/article/details/8053510
例如:
#include <stdio.h>
#include <float.h>
#include <limits.h>
void main()
{
printf("%c
",SCHAR_MAX);
}
转义字符
\’ 表示输出一个反斜杠符
” 表示输出一个双引号
后跟数字 是八进制数字 要将八进制数字变为十进制数字 再比照ascii表查看对应字符(ddd (ddd表示八进制的ASCII码) xhh (hh表示十六进制的ASCII码))
最多只识别三个数字 如果遇到非八进制数字 结束匹配
以8的倍数补空格
‘ ’或‘ 00’是代表ASCII码为0的字符,即空字符(NULL), 表示整数0。、
如:
#include <stdio.h>
void main( )
{
printf(“a b cd100x40 ”);
}
输出到显示屏: ab d@@
4,字符串常量
字符串常量: 用双引号包括的字符序列 叫字符串
编码:在ASCII中 一个字符占一个字节,中文字符 属于 utf-8/Unicode/gbk 一个中文字符占两个字节
字符串长度:从首地址开始到