1、数据类型:
基本数据类型:
整型 :(unsigned)int(32位系统下占4个字节) (unsigned)short(2) (unsigned)long(4)
字符型:(unsigned)char(1个字节)
实 型:
单精度 float(4)
双精度 double(8)
构造数据类型:
数组 int a[10]
结构体 struct
联合体 union
枚举类型 enum
指针类型 基本类型 *
空类型 void
a)void * 通用指针
b)void 函数返回值 不能返回数值
c)void 函数参数 调用不需要传入任何实参
2.常量与变量
2.1.常量:
在运行过程不可改变的量
整型常量:123
1)以0开头的一系列数字组成8进制:例:0123 3*1+2*8+1*8*8
0 1 2 3 4 5 6 7
2)以0x开头的一系列数字 16进制 例:0xff 15+15*16
0 1 2 3 4 5..9 A(a) B(b) C(c) D(d) E(e) F(f)
ex.用254转换成16进制
ex.0100 1111 1111 1101 2进制化成16进制数 -----》0x4ffd
3)其他的都是十进制
字符型常量:
在计算机中字符型常量是以ASCII存储,
ASCII:每一个字符对应一个唯一的整数
1)可打印输出的
'a' 'b'....
2)不可打印输出的
以\开始的特殊转义字符
'\n':换行符 ex.以10进制、8进制、16进制输出'\n'
'\r':回车符
'\t':横向制表符 一个TAB
'\v':纵向制表符
'\?':一个问号
'\'':输出单引号
'\"':输出双引号
'\\':输出\
'\ooo'(一个o代表一位8进制数):输出这个8进制数对应的ASCII对应的符号
A 65 101
'\xhh'(一个h代表一个16进制数):输出这个16进制数对应的ASCII对应的符号
字符串常量:例子"123"以'\0'结束
'123'//error
浮点常量:
以小数或者指数形式出现的实数
a)以f(F)结束的float类型的小数 1.0f
b)以l(L)结束的 long double 的小数 1.12L
c)其他的都默认处理为double 12.1
指数形式:
12.2e5 ====》12.2*10的5次方
e/E后面的数表示以10为底的指数 -12.4E-25 =====>-12.4*10(-25)
2.2变量
在运行中可以改变的量
定义变量:数据类型 变量名;
数据类型:合法的类型即可
变量名:合法标识符(以字母数字下划线组成,必须以字母、下划线开头)
int 3#a;//error
先定义,后使用
变量名:每一个变量名都会对应一个一个地址,在程序编译运行时,内存会给每个变量分内存空间
int a=5;
使用变量的情况:
1)取值:通过变量名找到它对应的内存空间,然后把存储的内容取出来 b=a;
2)存值:通过变量名找到它对应的内存空间,然后把值存储进相应的内存空间 b=5;
每个变量名都有2种含义
1)左值:作为存储地址
2)右值:作为存储的内容 printf("%d",a);
整型变量:
定义:int a;short a;long a;
1.存储:以2进制的补码形式存储
原码:
正数:最高位是符号位(0),其余为二进制数值位
负数:最高位是符号位(1),其余为二进制数值位
反码:
正数:就是原码
负数:符号位不变,其余取反0->1 1->0
补码:
正数:就是原码
负数:符号位不变,其余在原码形式上取反+1
以8位来表示存储:
13 -13
原码: 0 000 1101 1 000 1101
反码: 0 000 1101 1 111 0010
补码: 0 000 1101 1 111 0011
ex.以8bit的形式计算127的原码、反码、补码
ex.以16bit的形式计算-127的原码、反码、补码
原码、反码、补码:1000 0000-1=0111 1111
-128补码 1000 0000
2.有符号数和无符号数
用8位表示有符号数和无符号数
无符号数的最高位表示数值位
有符号数的最高位表示符号位
-13 1 111 0011:用32位表示一个负数的补码
char类型数据的表示范围:
最大值:0 111 1111
最小值:1 000 0000
-128 - 127
unsigned char:
最大值:1111 1111 255
最小值:0000 0000 0
short类型数据表示范围
最大值:0 111 1111 1111 1111 printf("%d",0x7fff);32767
最小值:1000 0000 0000 0000 -32768
unsigned short:
最大值:1111 1111 1111 1111 65535
最小值:0000 0000 0000 0000 0
ex.
int a=-13;
unsigned int b=a;
printf("%u",b);
3.赋值
长的赋值给短的:int --> char
低字节直接拷贝,高字节不要啦
int a=0x12345678;
char b;
b=a;
printf("%0x",b);//
短的赋值给长的:
无符号数:高字节扩展成0 ,低字节直接拷贝
有符号数:高字节扩展成符号位,低字节直接拷贝
char c=-3;
printf("%d",c);
printf("%u",c);
4.浮点数的存储 float a;/double a;