<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在VS編譯器裡有release和debug兩種形式,debug包含偵錯資訊,release不包含偵錯資訊,並會對程式進行優化
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("hehen"); } return 0; }
執行這個程式,結果是死迴圈列印hehe,為什麼呢?
我們看記憶體
在迴圈到第13次時,把儲存變數i的地方改為0,i<=12仍成立,形成死迴圈
這是debug下出現的情況,但是如果是release的設定下,就不會出現上面死迴圈的情況,原因在下面這個圖裡
在debug設定下,儲存i變數的地址比儲存arr陣列的地址高,可能會越界到i的地址導致死迴圈
在release設定下,儲存i變數的地址比儲存arr陣列的地址低,不會出現越界到i導致死迴圈
(如果你非寫一個死迴圈那就真的死迴圈了,release優化沒有那麼萬能)
型別 | 大小(單位為位元組) |
---|---|
char (字元資料型別) | 1 |
short (短整型) | 2 |
int (整形) | 4 |
long (長整型) | 4或8 |
long long (更長的整形) | 8 |
float (單精度浮點數) | 4 |
double (雙精度浮點數) | 8 |
long long是在C99增加的
long的大小和環境有關,32位元平臺上是4個位元組,64位元平臺上是8個位元組
這些都是C中內建的資料型別
型別的意義:
使用這個型別開闢記憶體空間的大小(大小決定了使用範圍)
看待記憶體空間的視角
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]
在C99後又加了long long
long long
unsigned long long [int]
signed long long [int]
這些都是整型家族裡的資料型別,都分有符號和無符號型別
為什麼說字元資料型別也是整型呢?
因為字元的本質其實是ASCII 碼值,是整型,所以劃分到整型家族
一般我們都預設不加unsigned或signed的預設為是有符號的,但是char就有點特殊
char裡有三個
signed char就是有符號的char,unsigned char就是無符號的char,但是什麼都不加的char是有符號的還是無符號的標準是未定義的,取決於編譯器的實現,跟編譯器有關
其他都不加的int,short,long等都是預設為有符號的
那麼為什麼會有unsigned和signed之分呢?
因為生活中本來就有很多資料是沒有負數的,比如身高,體重,長度
也有很多資料是有正負之分的,比如溫度,放出或吸收熱量
所以我們需要用unsigned和signed來區分是否有正負之分
舉例子
int a = 10;
a是整型,有符號的整型,一個整型4個位元組,即32個bit
0000 0000 0000 0000 0000 0000 0000 1010 (原碼)
int a = -10;
1000 0000 0000 0000 0000 0000 0000 1010(原碼)
符號位上,0表示正數,1表示負數,而且符號位不算有效位,只表示正負
有符號的int可以存 (-231)~(231-1)大小的數位
unsigned int a = -10;
1111 1111 1111 1111 1111 1111 0110(-10的二補數)
無符號的int可以存0~232大小的數
因此,對於有正負的數,我們就用有符號的signed
對於沒有正負之分的數,我們就用無符號的unsigned
(只要表示小數就可以使用浮點型)
float
double
float精度低,儲存的數值範圍較小
double精度高,儲存的數值範圍較大
陣列型別
例如:
型別
int arr1[5]; ——> int [5]
int arr2[8]; ——> int [8]
char arr3[5] ——> char [5]
結構體型別
struct
列舉型別
enum
聯合型別
union
int *pi; char *pc; float* pf; void* pv;
void 表示空型別(無型別)
通常應用於函數的返回型別、函數的引數、指標型別
舉一個例子
void test(void); //第一個void 表示函數不會返回值 //第二個void 表示函數不需要傳任何引數 void* //void用於指標型別,以後會詳細講解
以上就是深度解析C語言中資料的儲存的詳細內容,更多關於C語言資料儲存的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45