最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深度解析C語(yǔ)言中數(shù)據(jù)的存儲(chǔ)

 更新時(shí)間:2022年05月24日 14:24:02   作者:愛彈吉他的小奔同學(xué)  
本文詳細(xì)介紹了C語(yǔ)言中數(shù)據(jù)的存儲(chǔ),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

在VS編譯器里有release和debug兩種形式,debug包含調(diào)試信息,release不包含調(diào)試信息,并會(huì)對(duì)程序進(jìn)行優(yōu)化

int main()
{
	int i = 0;
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

	for (i = 0; i <= 12; i++)
	{
		arr[i] = 0;
		printf("hehe\n");
	}
	
	return 0;
}

運(yùn)行這個(gè)程序,結(jié)果是死循環(huán)打印hehe,為什么呢?

我們看內(nèi)存

在循環(huán)到第13次時(shí),把存儲(chǔ)變量i的地方改為0,i<=12仍成立,形成死循環(huán)

這是debug下出現(xiàn)的情況,但是如果是release的配置下,就不會(huì)出現(xiàn)上面死循環(huán)的情況,原因在下面這個(gè)圖里

在debug配置下,儲(chǔ)存i變量的地址比儲(chǔ)存arr數(shù)組的地址高,可能會(huì)越界到i的地址導(dǎo)致死循環(huán)

在release配置下,儲(chǔ)存i變量的地址比儲(chǔ)存arr數(shù)組的地址低,不會(huì)出現(xiàn)越界到i導(dǎo)致死循環(huán)

(如果你非寫一個(gè)死循環(huán)那就真的死循環(huán)了,release優(yōu)化沒有那么萬(wàn)能)

數(shù)據(jù)類型介紹

類型 大?。▎挝粸樽止?jié))
char (字符數(shù)據(jù)類型)1
short (短整型)2
int (整形)4
long (長(zhǎng)整型)4或8
long long (更長(zhǎng)的整形)8
float (單精度浮點(diǎn)數(shù))4
double (雙精度浮點(diǎn)數(shù))8

long long是在C99增加的

long的大小和環(huán)境有關(guān),32位平臺(tái)上是4個(gè)字節(jié),64位平臺(tái)上是8個(gè)字節(jié)

這些都是C中內(nèi)置的數(shù)據(jù)類型

類型的意義:

使用這個(gè)類型開辟內(nèi)存空間的大?。ù笮Q定了使用范圍)

看待內(nèi)存空間的視角

1就是不同類型可以開辟不同大小的內(nèi)存空間

對(duì)于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]

在C99后又加了long long

long long
   unsigned long long [int]
   signed long long [int]

這些都是整型家族里的數(shù)據(jù)類型,都分有符號(hào)和無符號(hào)類型

為什么說字符數(shù)據(jù)類型也是整型呢?

因?yàn)樽址谋举|(zhì)其實(shí)是ASCII 碼值,是整型,所以劃分到整型家族

一般我們都默認(rèn)不加unsigned或signed的默認(rèn)為是有符號(hào)的,但是char就有點(diǎn)特殊

char里有三個(gè)

  • char
  • signed char
  • unsigned char

signed char就是有符號(hào)的char,unsigned char就是無符號(hào)的char,但是什么都不加的char是有符號(hào)的還是無符號(hào)的標(biāo)準(zhǔn)是未定義的,取決于編譯器的實(shí)現(xiàn),跟編譯器有關(guān)

其他都不加的int,short,long等都是默認(rèn)為有符號(hào)的

那么為什么會(huì)有unsigned和signed之分呢?

因?yàn)樯钪斜緛砭陀泻芏鄶?shù)據(jù)是沒有負(fù)數(shù)的,比如身高,體重,長(zhǎng)度

也有很多數(shù)據(jù)是有正負(fù)之分的,比如溫度,放出或吸收熱量

所以我們需要用unsigned和signed來區(qū)分是否有正負(fù)之分

舉例子

int a = 10;

a是整型,有符號(hào)的整型,一個(gè)整型4個(gè)字節(jié),即32個(gè)bit

0000 0000 0000 0000 0000 0000 0000 1010 (原碼)

int a = -10;

1000 0000 0000 0000 0000 0000 0000 1010(原碼)

符號(hào)位上,0表示正數(shù),1表示負(fù)數(shù),而且符號(hào)位不算有效位,只表示正負(fù)

有符號(hào)的int可以存 (-231)~(231-1)大小的數(shù)字

unsigned int a = -10;

1111 1111 1111 1111 1111 1111 0110(-10的補(bǔ)碼)

無符號(hào)的int可以存0~232大小的數(shù)

因此,對(duì)于有正負(fù)的數(shù),我們就用有符號(hào)的signed

對(duì)于沒有正負(fù)之分的數(shù),我們就用無符號(hào)的unsigned

浮點(diǎn)數(shù)家族

(只要表示小數(shù)就可以使用浮點(diǎn)型)

 float
 double

float精度低,存儲(chǔ)的數(shù)值范圍較小

double精度高,存儲(chǔ)的數(shù)值范圍較大

構(gòu)造類型

數(shù)組類型

例如:

                      類型
int arr1[5];    ——>  int [5]
int arr2[8];    ——>  int [8]
char arr3[5]    ——>  char [5]

結(jié)構(gòu)體類型

struct

枚舉類型

enum

聯(lián)合類型

union

指針類型

int *pi;
char *pc;
float* pf;
void* pv;

空類型

void 表示空類型(無類型)

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

舉一個(gè)例子

void test(void);
//第一個(gè)void  表示函數(shù)不會(huì)返回值
//第二個(gè)void  表示函數(shù)不需要傳任何參數(shù)

void*
//void用于指針類型,以后會(huì)詳細(xì)講解

以上就是深度解析C語(yǔ)言中數(shù)據(jù)的存儲(chǔ)的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言數(shù)據(jù)存儲(chǔ)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解析C++編程中的bad_cast異常

    解析C++編程中的bad_cast異常

    這篇文章主要介紹了C++編程中的bad_cast異常,bad_cast異常通常出現(xiàn)于表達(dá)式中類型轉(zhuǎn)換錯(cuò)誤時(shí)等一些場(chǎng)景,需要的朋友可以參考下
    2016-01-01
  • C++實(shí)現(xiàn)簡(jiǎn)易圖書館管理系統(tǒng)

    C++實(shí)現(xiàn)簡(jiǎn)易圖書館管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)易圖書館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 一篇文章帶你了解C++特殊類的設(shè)計(jì)

    一篇文章帶你了解C++特殊類的設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C++特殊類的設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C語(yǔ)言中的八大排序算法詳解

    C語(yǔ)言中的八大排序算法詳解

    這篇文章主要介紹了C語(yǔ)言中的八大排序算法詳解,所謂排序,就是使一串記錄,按照其中的某個(gè)或某些關(guān)鍵字的大小,遞增或遞減的排列起來的操作,需要的朋友可以參考下
    2023-07-07
  • 用C++編寫擴(kuò)展node.js(node-ffi版)

    用C++編寫擴(kuò)展node.js(node-ffi版)

    今天小編就為大家分享一篇關(guān)于用C++編寫擴(kuò)展node.js(node-ffi版),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C?語(yǔ)言輸入輸出庫(kù)函數(shù)講解(最新推薦)

    C?語(yǔ)言輸入輸出庫(kù)函數(shù)講解(最新推薦)

    輸入輸出函數(shù)能夠讓程序和用戶或者文件進(jìn)行交互,這篇文章主要介紹了C?語(yǔ)言輸入輸出庫(kù)函數(shù)講解,需要的朋友可以參考下
    2025-04-04
  • C++實(shí)現(xiàn)LeetCode(59.螺旋矩陣之二)

    C++實(shí)現(xiàn)LeetCode(59.螺旋矩陣之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(59.螺旋矩陣之二),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 模擬實(shí)現(xiàn)C語(yǔ)言中的內(nèi)存管理

    模擬實(shí)現(xiàn)C語(yǔ)言中的內(nèi)存管理

    這篇文章主要內(nèi)容是模擬C語(yǔ)言中的內(nèi)存管理,需要的朋友可以參考下
    2015-07-07
  • C++實(shí)現(xiàn)隨機(jī)生成迷宮地牢

    C++實(shí)現(xiàn)隨機(jī)生成迷宮地牢

    這篇文章主要介紹了C++實(shí)現(xiàn)隨機(jī)生成迷宮地牢的相關(guān)資料及代碼分享,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • VScode配置cuda開發(fā)環(huán)境的實(shí)現(xiàn)步驟

    VScode配置cuda開發(fā)環(huán)境的實(shí)現(xiàn)步驟

    本文主要介紹了VScode配置cuda開發(fā)環(huán)境的實(shí)現(xiàn)步驟,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07

最新評(píng)論

闵行区| 鄂托克前旗| 开封县| 襄汾县| 泽普县| 海宁市| 留坝县| 乌拉特后旗| 芜湖县| 马边| 曲松县| 册亨县| 夏河县| 蒲城县| 宜君县| 额济纳旗| 梅州市| 定西市| 大同市| 新宾| 界首市| 红河县| 盈江县| 紫云| 吴川市| 金堂县| 济南市| 阿尔山市| 新闻| 威信县| 岑溪市| 宁津县| 张家港市| 喀喇沁旗| 甘泉县| 商丘市| 鹿泉市| 霞浦县| 盐边县| 澄城县| 左权县|