存储相关,数据类型,常量,变量,变量的存储方式

1】存储大小的单位
bit 只能用来存储0或1
byte (字节)= 8bit 1 byte == 8 bit
Kb 1024 byte
Mb 1024 Kb
Gb 1024 Mb
Tb 1024 Gb
【2】数据类型(32位操作系统)
基本类型
字符类型
char 1 字节 默认是 有符号类型
unsigned char 无符号字符型
signed char 有符号类型
整型
短整型 2 字节
short
unsigned short
signed short
整型 4字节
int
长整型 4字节
long
长长整型 8字节
longlong
实型(浮点型)
float 单精度的浮点型类型 4字节
double 双精度的浮点型 8字节
枚举类型
enum (后面课程讲)
构造类型
数组
char buf【100】
结构体
struct (后面讲)
共用体
union (后面课程讲)
指针类型*
char *
int *
fioat *
void *
空类型
void
【3】常量
字符常量 man ascii
‘A’ ‘!’ ‘1’
记忆 ‘\0’ ‘0’ ‘\n’ ‘A’ ‘a’
0 48 10 65 97
整型常量
3 6 10 100 -19(是)0 十进制 0~9
0b1000 0b标志2进制数 0 1
0664 0标志8进制 0~7
0下23f 0x标志16进制 0~15(9以后为abcdef)不用区分大小写
实型常量(浮点)
3.14 1.5 3.14e8(3.14X10的8次方)3.14e-2(3.14X10的-2次方) e是10的次方
字符串常量
“hello world”
“c program”
“welcome”
标识常量(define 宏) (重点)
标识常量 define
1、#define M 10

 * 1、含义:使用M替代10这个数字
 * 2、它可以让数据具备对应的含义,减少魔鬼数字的出现
 * 3、改变宏的值,相关的内容就会都跟着改变
 * 4、原则上定义的时候大小写都可以,但是我们一般用大写
 * 5、define后面没有分号
 * 6、宏是在预处理阶段完成的
 *7、宏只进行简单的替换,不进行任何运算
2、
#define N M+10
printf("N * N = %d\n",N*N); //120 = M + 10 * M + 10

#define N (M+10) 
printf("N * N = %d\n",N*N); //120 = (M + 10) * (M + 10)


 
3、利用宏定义函数
#define ERR_LOG(err_log) printf(err_log);return -1;
//#define ERR_LOG(err_log) {printf(err_log);return -1;}
//#define **ERR_LOG(err_log) do{printf(err_log);\
	return -1;}while(0)**
	//"\"进行换行时忽略换行(在#define中),使用do-while(0)包裹 #define定义的函数(可以参考学习(https://www.cnblogs.com/sinferwu/articles/6902746.html))//

//open(file)                                                                
//ERR_LOG("open failed\n");
ERR_LOG("*********\n");
//printf("open failed\n");
//return -1;

【3】变量
<存储类型 > <数据类型> 变量名
1.存储类型
auto register static volatile const extern
1)变量名只能由数字,字母,下划线组成,不能以数字开头
on(√) _h(√) -w(x)
2)不能和关键字重名(32)个关键字
3)见名思意(一般英文简写)
max min
4)严格区分大小写
on On 不是一个变量
【4】数据的存储能力
char -128~127
int -2^31 ~ 2^31-1
short -2^15 ~ 2^15-1
unsigned short 0 ~ 2^16-1
long -2^31 ~ 2^31-1
unsigned long 0 ~ 2^32-1
char c (-128~127)
unsigned char (0~255)
int
unsigned int
char char_a = 10;
8bit位
1B
KB = 1024B kb = 1024b
MB = 1024KB Mb = 1024kb
8GB
无符号
10
0000 1010
0000 0000 ~1111 1111 127+1*26+125+…+1*20 =255
0~255
-5
0000 0101
1 000 0101
1000 0000 ~1111 1111 ~ 0000 0000 ~ 0111 1111
-128 -127 127

符号位
1代表- 0代表 +
【5】变量的存储方式(数据是以补码来存储的) 存储时:看数据本身 读取时:看数据类型
负数:
原码:数据的二进制
反码:原码的符号位不变、其他位取反
补码:反码+1

正数:
原码、反码、补码不变

unsigned char char_c = 5;	
存储时:
原码:0000 0101
反码:0000 0101
补码:0000 0101

读取时:
补码:0000 0101
反码:0000 0101
原码:0000 0101

unsigned char char_d = -5;
存储时:(看数据本身)
原码:1000 0101
反码:1111 1010
补码:1111 1011
	
读取时:(看变量的数据类型)
补码:1111 1011
反码:1111 1011
原码:1111 1011

char char_c = -5;
存储时:(看数据本身)
原码:1000 0101
反码:1111 1010
补码:1111 1011	

读取时:(看变量的数据类型)
补码:1111 1011
反码:1111 1010
原码:1000 0101

char char_b = 129;
存储时:(看数据本身)
原码:1000 0001
反码:1000 0001
补码:1000 0001

读取时:(看变量的数据类型)
补码:1000 0001
反码:1000 0000
原码:1111 1111  -127

char char_b = 128;

读取时:
补码:1000 0000
反码:1111 1111
原码:1000 0000 -128

**【2】数据的打印格式**
char char_a = 10; 
unsigned char char_c = 65; 
int int_a = -20;
unsigned int int_b = 20;                                                    
long long_a = 45; 
double double_a = 4.14;
float float_a = 3.14;

printf("char_a = %d\n",char_a);
printf("char_c = %c\n",char_c);
printf("int_a = %d\n",int_a);
printf("unsigned int_b = %u\n",int_b);
printf("long_a = %ld\n",long_a);
printf("double_a = %lf\n",double_a);
printf("float_a = %f\n",float_a);

暂时学了这么多 后面有机会再完善

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值