C语言_day03

目录

一:关键词

二:数据类型:

eg:验证每一个类型的长度,

2. unsigned 和 signed

1.无符号数:unsigned 

2.有符号数:signed 默认一般省略

3.其他关键词


c语言定义不同的数据类型目的:合理的利用内存空间;

计算机采用二进制输入,内部只识别0 1,一个位只能是0 or 1 

1B字节=8b位,(范围00000000~11111111)

1B=8b,1KB=1024B,1MB=1024KB;1GB=1024MB,1TB=1024GB

一:关键词

1.数据型关键字:

char short int long float double unsigned signed struct union enum void 

2.控制语句关键字:

if else switch case default for do while break continue goto return 

3. 存储类关键字:

auto自动类型 extern外部可用 register寄存器变量 static静态变量 const只读变量 

4. 其他

sizeof测类型大小 typedef为已有类型重新取一个别名 volatile防止编译器优化

二:数据类型:

  • 在32位的平台中

char :字符类型。占1字节的空间,8位

short:短整型。占2字节的空间,16位

int :整型。占4字节的空间,32位

long:长整型。占4字节的空间,32位

float:浮点型。占4字节的空间,32位

double:双精度浮点型。占8字节的空间,64位

sizeof() 计算每一个数据类型的长度;

  • 在64位的平台中

char :字符类型。占1字节的空间,8位

short:短整型。占2字节的空间,16位

int :整型。占4字节的空间,32位

long:长整型。占8字节的空间,32位

float:浮点型。占4字节的空间,32位

double:双精度浮点型。占8字节的空间,64位

sizeof() 计算每一个数据类型的长度;

eg:验证每一个类型的长度,

2. unsigned 和 signed

1.无符号数:unsigned 

数据没有符号位,自身的所有二进制位 都是数据位
如:unsigned char 0000 0000~1111 1111

2.有符号数:signed 默认一般省略

二进制的最高位符号位,其他位都是数据位

signed char 0xxx xxxx   最高位0为正,1为负  如:-10==1000 1010

范围 1111 1111 ~ 0111 1111

eg: 输入代码   

#include<stdio.h>
int main(int argc,char *argv[]) 
{
    //计算机编程中,默认是带符号的数据
    //signed 可以省略不写(默认输入)
    sigend int num1=10;
    int num2=10; 
    //但无符号数申明时,一定要写明unsigned
    unsigned int num3=11; 
    return 0;
}


3.其他关键词

1.结构体 struct  :结构体的成员拥有独立的空间;

struct data1{

        char a;

        short b;

        int c;

}

a b c 就是结构体data1的成员,各自拥有独立的空间;

2.共用体union:共用体中的成员共享同一份空间;

union data1{

        char a;

        short b;

        int c;

}

a b c 共享同一块空间;

3. enum枚举: 将变量要赋值的值一 一 列举出来

enum BOOL{false,true};

enum BOOL bool=false;

4.void 无类型:不能用void定义变量

int num;  // 正确的定义

void num; // 错误的定义,系统无法定义给void定义的num开辟多大的空间

5. register寄存器变量:

当放入内存的变量被频繁的使用时,计算机会将此变量放入寄存器中,从CPU的寄存器读取数据比从内存读取要快很多

register int num; //当定义一个变量时,如果预先知道要频繁使用,就尽量将此变量放入寄存器中

总结:

1.如果没显示标明register,就类似int num ;如果num 被高频繁使用,系统也会自动放入寄存器中

2.register int num; //显示将num放入寄存器中;

3.寄存器的变量C语言中不能取地址,而c++可以;

#include<stdio.h>
int main(int argc,char *argv[]) 
{
    register int num=10;
    // %p输出地址
    printf("%p/n",&num);  
    //c++语言可以将地址操作符用于寄存器变量,而c语言会报错。
    return 0;
}


6. typedef : 为已有的类型取个别名

eg:代码演示

#include<stdio.h>
typedef int INT32;  //给已有的变量 int取一个别名叫 INT32; 
void test01()   //定义一个无类型的变量作为结果输出; 
{
    int num1=10;
    INT32 num2=20;    //int 与 INT32 等价
    printf("num1=%d\n",num1);  // 结果是num1=10
    printf("num2=%d\n",num2);  // 结果是num2=20
}
int main(int argc,char *argv[])  // int main 定义一个整型结果输出 
{
    test01();
    return 0;
} 

7. volatile: 防止高频繁的变量编译器优化放入寄存器中,强制CPU每次访问内存操作;与 register恰好相反;

不允许将volatile的变量放入寄存器,只能放在内存中;

要实时监测变量的变化,而不是放入最开始的值到寄存器,内存变量发生变化后,而寄存器还是最开始的值;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪财的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值