C语言零基础手把手教学笔记17--数据存储1

本文介绍了C语言中的不同类型,包括内置类型、自定义类型(如数组、结构体、枚举和联合),以及指针类型。重点讲解了原码、反码和补码的概念,以及大小端存储模式在内存中的应用。通过实际代码示例展示了如何判断当前系统的字节序。
摘要由CSDN通过智能技术生成

目录

一、C语言类型

1、内置类型

2、自定义类型(构造类型)

整型家族:

构造类型

指针类型:

二、首先先了解四个概念:

原码 、反码、补码

 大小端介绍:

什么是大端小端:(从左到右是由低到高)

一、C语言类型

1、内置类型

2、自定义类型(构造类型)

类型的意义:

1、使用这个类型开辟内存空间的大小(大小决定了使用范围)

2、如何看待内存空间的视角

整型家族:

char :

          unsigned char

          signed char 

short :

          unsigned short [int]
          signed short [int]

int:

          unsigned  int

          signed   int

long:

             unsigned long [int]

             signed long[int]

构造类型

1、数组类型:

2、结构体类型:struct

3、枚举类型:enum

4、联合类型:union

指针类型:

int * pi;

char * pc;

float *pf;

void*pv;(空指针)

空类型:通常应用于函数的类型,函数的参数,指针类型。

#include <stdio.h>
void test(void)
{
    printf("hehe\n");
}
int main()
{
    test();
    return 0;
}

二、首先先了解四个概念:

原码 、反码、补码

三种方法均是由符号位和数值位两部分组成,符号位都是0表示正,1表示负,而数值位三种表示方法各不相同。

1、原码:直接将二进制按照正负数的形式翻译成二进制

2、反码:将原码的符号位不变,其他位按位取反就可以得到了。

3、补码:反码+1就能得到补码

正数的原码、反码、补码是相同的。

对于整型来说:数据存放内存中其实存放的是补码

 为什么?

因为在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值位域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码和原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

整数

1、有符号数

      正数:原码、反码、补码相同

      负数:原码、反码、补码不同,要进行计算

2、无符号数 

      原码、反码、补码相同

 大小端介绍:

什么是大端小端:(从左到右是由低到高)

大端(存储)模式(大端字节序存储模式):是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。

小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

设计一个程序来判断当前机器的字节序

#include <stdio.h>

int main()
{
    int a=1;
    char* p=(char*)&a;
    if(*p==1)
    {
        printf("小端\n");
    }
    else
    {
        printf("大端存储\n");
    }
    return 0;
}

那么我们再次对代码进行优化

#include <stdio.h>
int check_sys()
{
    int a=1;
    char* p=(char*)&a;
    return *p;
}
int main()
{
    //若函数返回1,小端
    //若函数返回0,大端
   int ret = check_sys();
   if(ret==1)
   {
       printf("小端\n");
   }
   else
   {
       printf("大端\n");
   }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小奶盖儿月月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值