C的关键字共有32个
1.数据类型关键字(12个)
char,short,int,long,float,double
unsigned,signed ,struct,union,enum,void
【知识点1·数据类型】
数据的不同类型 目的 合理的利用空间
计算机储存的是二进制。一位二进制 只能存放0或1 1b
1字节 == 8b(八位二进制) 0000 0000 ~ 1111 1111
1B == 8b
1KB == 1024B 10月24日程序员节日
1MB == 1024KB
1GB == 1024MB
1TB == 1024GB
1PB == 1024TB
1EB == 1024PB
------------------------在32位平台------------------------------
char 字符类型 占1字节的空间(8位二进制位)
short 短整型 占2字节的空间(16位二进制位)
int 整型 占4字节的空间(32位二进制位)
long 长整型 占4字节的空间(32位二进制位)
long long 占8字节的空间 (64位二进制位)
flaot 单精度浮点型 占4字节的空间(32位二进制位)
double 双精度浮点型 占8字节的空间(64位二进制位)
------------------------在32位平台------------------------------
------------------------在64位平台------------------------------
long 长整型 占8字节的空间(64位二进制位)
------------------------在64位平台------------------------------
案例:验证数据类型的长度
sizeof测量类型的长度
#include <stdio.h>
int main(int argc,char *argv[])
{
printf("sizeof(char) = %d\n",sizeof(char));
printf("sizeof(short) = %d\n",sizeof(short));
printf("sizeof(int) = %d\n",sizeof(int));
printf("sizeof(long) = %d\n",sizeof(long));
printf("sizeof(float) = %d\n",sizeof(float));
printf("sizeof(double) = %d\n",sizeof(double));
return 0;
}
运行结果:
sizeof(char) = 1
sizeof(short) = 2
sizeof(int) = 4
sizeof(long) = 4
sizeof(float) = 4
sizeof(double) = 8
Press any key to continue
【知识点2·unsigned 和 signed】(重要)
1.无符号数 unsigned
数据没有符号位,自身所有二进制位 都是数据位
比如:snsigned char 0000 0000 ~ 1111 1111
2.有符号数 signed 默认一般省略
二进制最高位 为符号位,其他位 为数据位
signed char xxxx xxxx(x:0~1)
最高位为1表示负数,最高位为0表示正数
负数:1xxx xxxx 正数:0xxx xxxx
signed char 他的表示范围:1111 1111 ~ 1000 0000 ~ 0000 0000 ~ 0111 1111
案例:一个字节:-10 == 1000 1010
代码案例:
#include<stdio.h>
int main(int argc,char *argv[])
{
//定义一个有符号的int
signed int num1 = 10;//num1有+符号的int
//signed 默认是省略(省略)
int num2 = 10;//num2也是有符号int
//unsigned 表示无符号数 不能省略
unsigned int num3 = 10;
return 0;
}
【知识点3· 结构体struct和共用体union】
1.struct 结构体 中的成员 拥有独立的空间
struct data1{
char a;
short b;
int c;
}
a、b、c就是结构体data1中的成员
2.union共有体 中的成员 共享同一份空间、
union data2{
char a;
short b;
int c;
}
【知识点4· enum和void】(初步了解)
1.enum枚举,将变量要赋值的值一一列举出来
enum BOOL{flase,true};
enum BOOL bool = false;
2.viod 无类型(重要)
不能用viod定义变量
int num;//√
void num;//×,系统不能确定给num开辟多大的空间
2.控制语句关键字(12个)
if,else,switch,case,default
for,do,while,break,continue,goto,return
3.储存类关键词(5个)(初步了解)
auto,extern,register,static,const
auto 自动类型
register 寄存器变量
总结:如果没有明显标明register,就类似int num,如果num被高频使用,系统也会放入寄存器中
register int num;//显示将num放入寄存器中,只能是尽量放入寄存器,存在寄存器不足的情况
不能对寄存器变量取地址
案例:
#include<stdio.h>
int main(int argc,char *argv[])
{
register int num = 10;
//%p输出地址
printf("%p\n",&num);//错误,不能对寄存器变量取地址
return 0;
}
报错提示:main.c(7) : error C2103: '&' on register variable
static 静态变量
const 只读
4.其他关键词(3个)(初步了解)
sizeof,typedef,volatile
sizeof 测类型大小
typedef 为已有的类型 重新取一个别名:
案例:
#include<stdio.h>
typedef int INT32;
int main(int argc,char *argv[])
{
int num1 = 10;
INT32 num2 = 20;
printf("num1 = %d\n",num1);
printf("num2 = %d\n",num2);
return 0;
}
结果:
num1 = 10
num2 = 20
Press any key to continue
volatile 防止编译器优化,强制访问内存操作:
|