亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解C語言中數(shù)據(jù)的存儲

 更新時間:2021年11月19日 11:16:28   作者:C宇言  
這篇文章主要為大家介紹了C語言中數(shù)據(jù)的存儲,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

一、類型歸類

對于基本的c語言數(shù)據(jù)類型的基本歸類

1、整形家族

char (內(nèi)存存儲的為ascall碼值,存儲為整數(shù))
  unsigned char//   unsigned為無符號關(guān)鍵字 
     signe char//
short 
   unsigned short (int)// (int )表示int可以省略不寫
     signed short  (int)
int
    unsigned int
     signed int
long
    unsigned  long (int)
     signed long   (int)

2、浮點型家族

float
double

3、指針類型

int* ptr;
char* pa;
float* pf;
void* pv;

4、空類型

void 表示空類型(無類型)

通常應(yīng)用于函數(shù)的返回類型,返回參數(shù),指針類型

二、類型的意義

1.占據(jù)的內(nèi)存大小

2.作為數(shù)據(jù)時所操作的大?。礊閿?shù)據(jù)看待類型的視角)

三、數(shù)據(jù)在類型中存儲(以整形和浮點型為例子)

1. 關(guān)于 存儲的基本概念

計算機的(整形)有符號數(shù),有三種表示方法,原碼,反碼,補碼

三種表示方法 均存在 符號位 和 數(shù)值位 兩部分,符號位的‘0'表正,‘1'表示負,數(shù)值位表示方法有差異(對于無符號數(shù):原,反,補表示相同)

原碼:直接將數(shù)字按照正負,用二進制方法翻譯表示;

反碼:將原碼的符號位不變,其他位按位取反;

補碼:反碼+1;

對于正數(shù)而言,原,反,補相同:

int a=20;
// 00000000 00000000 00000000 00010100 原碼
// 00000000 00000000 00000000 00010100 反碼
// 00000000 00000000 00000000 00010100 補碼

對于負數(shù)而言

int a=-1;
// 10000000 00000000 00000000 00001010 原碼
// 11111111 11111111 11111111 11110101 反碼
// 11111111 11111111 11111111 11110110 補碼

對于整形數(shù)據(jù)而言再內(nèi)存存儲的是補碼

2.存儲模式

1.大端模式(大端字節(jié)序模式):較高的有效字節(jié)存儲在較低的存儲器地址,較低的有效字節(jié)存儲在較高的存儲器地址。

2.小端模式(小端字節(jié)序模式):較低的有效字節(jié)存儲在較低的存儲器地址,較高的有效字節(jié)存儲在較高的存儲器地址。

地址的視圖

低-------------------------------->--------高

關(guān)于設(shè)計判斷當(dāng)前機器的字節(jié)序

int check_sys(void)
{
    int a=1;
    char* p=(char*)&a;//訪問第一個字節(jié)序看是     01.....0  還是 0...01
    return *p;
}
int main()
{
    int ret=check_sys();
    if(ret==1)
        printf("小端");
    else
        printf("大端");
}

在這里強制轉(zhuǎn)化成(char*)利用他只訪問一個字節(jié)的視角進行觀測

指針類型的意義

1.指針類型決定了指針類型解引用操作符能訪問幾個字節(jié)

2.指針+類型決定了指針+1跳過幾個字節(jié)

四.應(yīng)用

應(yīng)用前應(yīng)掌握的基本概念 整形提升

1.

char a=-1;
//  -1作為整形數(shù)在內(nèi)存中以補碼形式存儲
// 10000000 00000000 00000000 0000001-原碼
// 11111111 11111111 11111111 1111110 - 反碼
// 11111111 11111111 11111111 1111111 -補碼
// 當(dāng)被賦予a時 a為char型只能存儲8個字節(jié) 就要發(fā)生 截斷
// 即 a 存儲為 1111111
signed char b=-1;
// sigend為默認(rèn)關(guān)鍵字 聲明和聲明都默認(rèn)為有符號
// 同理 b 1111111
unsigned char c=-1;
// c 1111111將高位當(dāng)做數(shù)值位對待
printf("%d %d %d ",a,b,c);
//       -1  -1  255
// 當(dāng)要打印為%d 應(yīng)當(dāng)發(fā)生整形提升 
//  負數(shù)為有符號型 整形提升高位補1;
// 無符號型提升高位補0,將原高位看作數(shù)值位
//  將 計算過程的  補碼   轉(zhuǎn)換為原碼后即為所求結(jié)果

2.

char a=-128;
printf("%u\n",a);

char a=-128;
//10000000 00000000 00000000 10000000
//11111111 11111111 11111111 01111111
//11111111 11111111 11111111 10000000
// 截斷10000000
// char a 有符號 按符號位提升
//整形提升  11111111 11111111 11111111 10000000
作為 無符號數(shù) 原反補相同
//11111111 11111111 11111111 10000000-轉(zhuǎn)換為對應(yīng)的十進制數(shù)

對于char范圍的討論

有符號的(以下均為補碼)

有符號char范圍 -128 --127

例題

char a[1000];
int i;
for(i=0;i<1000;i++)
{
a[i]=-1-i;
}
printf("%d",strlen(a));

對于 a[i]的計算結(jié)果 從 -1......-128..127....1 0

所以所得結(jié)果為 128+127=255

無符號(同補碼)

最高位視為數(shù)值位則 范圍為 0 ---255

例題

unsigned char i=0;
for(i=0;i<255;i++)
{
   printf(" hello\n");
}

思路同上

程序陷入死循環(huán)

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C語言實現(xiàn)宿舍管理系統(tǒng)課程設(shè)計

    C語言實現(xiàn)宿舍管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)宿舍管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言學(xué)生成績管理系統(tǒng)課程設(shè)計

    C語言學(xué)生成績管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細介紹了C語言學(xué)生成績管理系統(tǒng)課程設(shè)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Qt實現(xiàn)TCP客戶端和服務(wù)器通訊程序

    Qt實現(xiàn)TCP客戶端和服務(wù)器通訊程序

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)TCP客戶端和服務(wù)器通訊程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言?棧與數(shù)組的實現(xiàn)詳解

    C語言?棧與數(shù)組的實現(xiàn)詳解

    棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入?;驂簵?,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素
    2022-04-04
  • C++實現(xiàn)線程池的簡單方法示例

    C++實現(xiàn)線程池的簡單方法示例

    這篇文章主要給大家介紹了關(guān)于C++實現(xiàn)線程池的簡單方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • C++中fork函數(shù)的使用及原理

    C++中fork函數(shù)的使用及原理

    這篇文章主要介紹了C++中fork函數(shù)的使用及原理,在C++中,fork函數(shù)用于創(chuàng)建一個新的進程稱為子進程,該進程與原始進程幾乎完全相同,需要的朋友可以參考下
    2023-05-05
  • C++編譯器無法捕捉到的8種錯誤實例分析

    C++編譯器無法捕捉到的8種錯誤實例分析

    這篇文章主要介紹了C++編譯器無法捕捉到的8種錯誤,是深入學(xué)習(xí)C++所必須加以掌握的排錯技能,需要的朋友可以參考下
    2014-09-09
  • C++ std::shared_mutex讀寫鎖的使用

    C++ std::shared_mutex讀寫鎖的使用

    本文主要介紹了C++ std::shared_mutex讀寫鎖的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java?C++?算法題解拓展leetcode670最大交換示例

    Java?C++?算法題解拓展leetcode670最大交換示例

    這篇文章主要介紹了Java?C++算法題解拓展leetcode670最大交換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 簡介C/C++預(yù)處理器的一些工作

    簡介C/C++預(yù)處理器的一些工作

    這篇文章主要介紹了C/C++預(yù)處理器的一些工作,有助于理解編譯器底層的工作流程,需要的朋友可以參考下
    2015-07-07

最新評論