国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言學(xué)習(xí):8、深入數(shù)據(jù)類型

這篇具有很好參考價(jià)值的文章主要介紹了C語言學(xué)習(xí):8、深入數(shù)據(jù)類型。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

數(shù)據(jù)超過類型規(guī)定的大小怎么辦

C語言中,如果需要用的整數(shù)大于int類型的最大值了怎么辦?

我們知道int能表示的最大數(shù)是2147483647,最小的數(shù)是-2147483648,為什么?

因?yàn)樽?2位系統(tǒng)中,寄存器是32位的,寄存器中最高位表示符號(hào)位,0表示整數(shù),1表示負(fù)數(shù);

所以32位系統(tǒng)中int的最大值可以表示為0111 1111 1111 1111 1111 1111 1111 1111,這個(gè)二進(jìn)制的數(shù)就是2147483647

程序示例1:

#include <stdio.h>

int main()
{
	int i = 2147483647;
	short s = 32767;

	printf("i = %d\n",i);
	printf("s = %d\n", s);

	i = i + 1;
	s = s + 1;

	printf("i = %d\n", i);
	printf("s = %d\n", s);
	
	return 0;
}

輸出結(jié)果:

i = 2147483647
s = 32767
i = -2147483648
s = -32768

結(jié)果是不是很奇怪,最大的數(shù)加1之后怎么都有個(gè)負(fù)號(hào)了,不可能,絕對(duì)不可能。

但是事實(shí)擺在面前了,什么原因?就是因?yàn)閿?shù)據(jù)在內(nèi)存中是怎么存儲(chǔ)的問題了,前面說了,數(shù)據(jù)在內(nèi)存中存儲(chǔ),默認(rèn)最高位是符號(hào)位,默認(rèn)存的數(shù)據(jù)就是有符號(hào)的;還有一個(gè)原因,正整數(shù)在內(nèi)存中存的是源碼,負(fù)整數(shù)在內(nèi)存中存的是補(bǔ)碼。數(shù)據(jù)到頭之后再加1,你的數(shù)據(jù)極性就發(fā)生了翻轉(zhuǎn)。

也就是說我們寫的int ,編譯器默認(rèn)的是signed int;

signed int的數(shù)據(jù)范圍是:-2147483648 ----?2147483647

我們也可以主動(dòng)聲明數(shù)據(jù)類型,unsigned int無符號(hào)整型,內(nèi)存里面的32位全部是數(shù)據(jù),沒有符號(hào)位了,那數(shù)據(jù)的范圍就是:0 -- 4294967295

同理也就有了unsigned short、unsigned char。

收到啟發(fā),把

程序示例1的代碼修改一下,加個(gè)unsigned進(jìn)去

程序示例2:

#include <stdio.h>

int main()
{
	unsigned int i = 2147483647; //無符號(hào)int
	unsigned short s = 32767; //無符號(hào)short

	printf("i = %d\n",i);
	printf("s = %d\n", s);
	i = i + 1;
	s = s + 1;
	printf("i = %d\n", i);
	printf("s = %d\n", s);
	
	return 0;
}

輸出的結(jié)果感覺還是錯(cuò)的,

i = 2147483647
s = 32767
i = -2147483648
s = 32768

而且是short的數(shù)據(jù)是對(duì)的,int的數(shù)據(jù)是錯(cuò)的,怎么回事?

這是因?yàn)榇蛴〕隽藛栴},我們打印的格式是%d,默認(rèn)還是有符號(hào)的整型,那為什么short類型的數(shù)據(jù)是對(duì)的呢,因?yàn)閟hort數(shù)據(jù)太小了,內(nèi)存里面存數(shù)據(jù)是32位的,short類型數(shù)據(jù)還沒有溢出。

程序需要進(jìn)一步修改,打印數(shù)據(jù)類型改為%u,就是輸出無符號(hào)整型了,

程序示例3:

#include <stdio.h>

int main()
{
	unsigned int i = 2147483647;
	unsigned short s = 32767;

	printf("i = %d\n",i);
	printf("s = %d\n", s);
	i = i + 1;
	s = s + 1;
	printf("i = %u\n", i); //打印數(shù)據(jù)類型是%u
	printf("s = %d\n", s);
	
	return 0;
}

輸出的結(jié)果終于正常了

i = 2147483647
s = 32767
i = 2147483648
s = 32768

在單片機(jī)開發(fā)中,無符號(hào)的整型用得比較多。

數(shù)據(jù)在內(nèi)存中的表現(xiàn)

char? ?占一個(gè)字節(jié)? 數(shù)據(jù)范圍? ?-128--127

short? 占兩個(gè)字節(jié)? 數(shù)據(jù)范圍? -32768--32767

int? ? ? 占4個(gè)字節(jié)? ?數(shù)據(jù)范圍? ?-2147483648 ----?2147483647

要想知道變量或者類型所占用的內(nèi)存大小,也就是占用幾個(gè)字節(jié),可以使用sizeof函數(shù)來查詢,用法如下:

sizeof(變量);
sizeof(類型);
sizeof 變量;

程序示例4:

#include <stdio.h>

int main()
{
	int s = sizeof(short);//short 類型占2個(gè)字節(jié),s=2;
	int n = sizeof s;

	printf("s = %d\n", s); //s的值是2,類型是int
	printf("n = %d\n", n); //n的值是4,
	
	return 0;
}

輸出結(jié)果:

s = 2
n = 4

把常見的類型所占內(nèi)存的情況都可以打印出來看看

程序示例5:

#include <stdio.h>

int main()
{
	printf("char類型變量占用 %d個(gè)字節(jié)\n", sizeof(char)); 
	printf("short類型變量占用 %d個(gè)字節(jié)\n", sizeof(short));
	printf("int類型變量占用 %d個(gè)字節(jié)\n", sizeof(int));
	printf("float類型變量占用 %d個(gè)字節(jié)\n", sizeof(float));
	printf("double類型變量占用 %d個(gè)字節(jié)\n", sizeof(double));
	
	return 0;
}

輸出結(jié)果:

char類型變量占用 1個(gè)字節(jié)
short類型變量占用 2個(gè)字節(jié)
int類型變量占用 4個(gè)字節(jié)
float類型變量占用 4個(gè)字節(jié)
double類型變量占用 8個(gè)字節(jié)

程序示例6:

#include <stdio.h>

int main()
{
	printf("無符號(hào)char類型變量占用 %d個(gè)字節(jié)\n", sizeof(unsigned char)); 
	printf("無符號(hào)short類型變量占用 %d個(gè)字節(jié)\n", sizeof(unsigned short));
	printf("無符號(hào)int類型變量占用 %d個(gè)字節(jié)\n", sizeof(unsigned int));
	
	
	return 0;
}

輸出結(jié)果:

無符號(hào)char類型變量占用 1個(gè)字節(jié)
無符號(hào)short類型變量占用 2個(gè)字節(jié)
無符號(hào)int類型變量占用 4個(gè)字節(jié)

以上說明無符號(hào)整數(shù)與有符號(hào)整數(shù)所占的內(nèi)存是一樣的。

奇怪的數(shù)據(jù)類型

有short就有l(wèi)ong,但是這個(gè)long在不同的編譯器里面結(jié)果卻是不一樣的

long一般是占4個(gè)字節(jié),但也可能占8個(gè)字節(jié);

還用奇葩的類型,long long,也就是long long int的簡(jiǎn)寫,占8個(gè)字節(jié);

程序示例7:

#include <stdio.h>

int main()
{
	printf("long類型變量占用 %d個(gè)字節(jié)\n", sizeof(long)); 
	printf("long long類型變量占用 %d個(gè)字節(jié)\n", sizeof(long long));
	
	return 0;
}

輸出結(jié)果:文章來源地址http://www.zghlxwxcb.cn/news/detail-700122.html

long類型變量占用 4個(gè)字節(jié)
long long類型變量占用 8個(gè)字節(jié)

到了這里,關(guān)于C語言學(xué)習(xí):8、深入數(shù)據(jù)類型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語言入門教程,C語言學(xué)習(xí)教程(第三部分:C語言變量和數(shù)據(jù)類型)二

    C語言入門教程,C語言學(xué)習(xí)教程(第三部分:C語言變量和數(shù)據(jù)類型)二

    前面我們多次提到了字符串,字符串是多個(gè)字符的集合,它們由 \\\" \\\" 包圍,例如 \\\"http://c.biancheng.net\\\" 、 \\\"C語言中文網(wǎng)\\\" 。字符串中的字符在內(nèi)存中按照次序、緊挨著排列,整個(gè)字符串占用一塊連續(xù)的內(nèi)存。 當(dāng)然,字符串也可以只包含一個(gè)字符,例如 \\\"A\\\" 、 \\\"6\\\" ;不過為了操作方

    2024年01月17日
    瀏覽(21)
  • 【JAVA】數(shù)據(jù)類型與變量(主要學(xué)習(xí)與c語言不同之處)

    【JAVA】數(shù)據(jù)類型與變量(主要學(xué)習(xí)與c語言不同之處)

    ?作者簡(jiǎn)介:大家好,我是橘橙黃又青,一個(gè)想要與大家共同進(jìn)步的男人???? ??個(gè)人主頁:橘橙黃又青-CSDN博客 目標(biāo): 1. 字面常量 2. 數(shù)據(jù)類型 3. 變量 在上節(jié)課 HelloWorld 程序中, System.Out.println(\\\"Hello World\\\") ; 語句,不論程序何時(shí)運(yùn)行,輸出的都是 Hello World,其實(shí) \\\"Hello Wo

    2024年03月28日
    瀏覽(23)
  • 學(xué)習(xí)筆記-數(shù)據(jù)查詢語言DQL

    學(xué)習(xí)筆記-數(shù)據(jù)查詢語言DQL

    1.基本語法 2.數(shù)據(jù)準(zhǔn)備 3.簡(jiǎn)單查詢 4.條件查詢 (1)比較查詢 (2).范圍查詢 (3).邏輯查詢 (4).模糊查詢 (5).非空查詢 5.排序查詢 ASC 升序 (默認(rèn)) DESC 降序 6.聚合查詢 7.分組查詢 having與where的區(qū)別: 1).having是在分組后對(duì)數(shù)據(jù)進(jìn)行過濾,where是在分組前對(duì)數(shù)據(jù)進(jìn)行過濾 2).having后面可以使用分

    2024年02月02日
    瀏覽(38)
  • 100天精通Golang(基礎(chǔ)入門篇)——第5天: Go語言中的數(shù)據(jù)類型學(xué)習(xí)

    100天精通Golang(基礎(chǔ)入門篇)——第5天: Go語言中的數(shù)據(jù)類型學(xué)習(xí)

    ?? 博主 libin9iOak帶您 Go to Golang Language.? ?? 個(gè)人主頁——libin9iOak的博客?? ?? 《面試題大全》 文章圖文并茂??生動(dòng)形象??簡(jiǎn)單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍》學(xué)會(huì)IDEA常用操作,工作效率翻倍~?? ?? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬請(qǐng)批

    2024年02月08日
    瀏覽(34)
  • 【大數(shù)據(jù)】Hive SQL語言(學(xué)習(xí)筆記)

    【大數(shù)據(jù)】Hive SQL語言(學(xué)習(xí)筆記)

    1)數(shù)據(jù)庫結(jié)構(gòu) 默認(rèn)的數(shù)據(jù)庫叫做default,存儲(chǔ)于HDFS的:/user/hive/warehouse 用戶自己創(chuàng)建的數(shù)據(jù)庫存儲(chǔ)位置:/user/hive/warehouse/database_name.db 2)創(chuàng)建數(shù)據(jù)庫 comment:數(shù)據(jù)庫的注釋說明語句 location:指定數(shù)據(jù)庫在HDFS存儲(chǔ)位置,默認(rèn)/user/hive/warehouse/dbname.db with dbproperties:用于指定一些數(shù)

    2024年02月07日
    瀏覽(21)
  • R語言學(xué)習(xí)筆記--列表list、數(shù)據(jù)框

    1-列表 列表 可以包含不同類型的 對(duì)象 ,也就是說,列表不是將某些具體的值組織起來,而是組織R對(duì)象。列表將數(shù)據(jù)組織在一個(gè)一維集合中。 列表非常好用,因?yàn)樗梢匝b任何類型的對(duì)象,不要求數(shù)據(jù)之間是同質(zhì)的。 創(chuàng)建列表 list() ?以上代碼,創(chuàng)建了一個(gè)列表,其中第一個(gè)

    2024年02月15日
    瀏覽(90)
  • R語言學(xué)習(xí)筆記之?dāng)?shù)據(jù)清洗與整理(三)

    R語言學(xué)習(xí)筆記之?dāng)?shù)據(jù)清洗與整理(三)

    提高 1.查看數(shù)據(jù)前三行 head(df,3)或 slice_head(n=3) 2.查看每列數(shù)據(jù)缺失情況 is.na(df)#適用于小數(shù)據(jù) sum(is.na()) table(is.na())#只能知道缺失值的個(gè)數(shù)并不知道每一列(即每個(gè)變量)缺失數(shù)據(jù)的情況 (1)miss-function(x){sum(is.na(x)/length(x)*100)} apply(數(shù)據(jù)集,2,rate)#2是按列算rate的意思 (2)libr

    2023年04月19日
    瀏覽(19)
  • 【教程】MySQL數(shù)據(jù)庫學(xué)習(xí)筆記(三)——數(shù)據(jù)定義語言DDL(持續(xù)更新)

    【教程】MySQL數(shù)據(jù)庫學(xué)習(xí)筆記(三)——數(shù)據(jù)定義語言DDL(持續(xù)更新)

    寫在前面: 如果文章對(duì)你有幫助,記得點(diǎn)贊關(guān)注加收藏一波,利于以后需要的時(shí)候復(fù)習(xí),多謝支持! 第一章 《認(rèn)識(shí)與環(huán)境搭建》 第二章 《數(shù)據(jù)類型》 第三章 《數(shù)據(jù)定義語言DDL》 DDL(Data Definition Language,數(shù)據(jù)定義語言) 是用于定義和管理數(shù)據(jù)庫對(duì)象(如表、視圖、索引等

    2024年02月20日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)(c++語言版) 鄧俊輝 第五章:二叉樹學(xué)習(xí)筆記

    數(shù)據(jù)結(jié)構(gòu)(c++語言版) 鄧俊輝 第五章:二叉樹學(xué)習(xí)筆記

    5.1二叉樹及其表示 ????????樹是由節(jié)點(diǎn)和邊組成的。 1.有根樹 ??????? 樹是由頂點(diǎn)(vertex)和邊(edge)組成。樹的每個(gè)頂點(diǎn)也叫節(jié)點(diǎn)(node)。 2.深度與層次 ????????由樹的連通性,每一節(jié)點(diǎn)與根都有一條路徑相連:根據(jù)樹的無環(huán)性,由根通往每個(gè)節(jié)點(diǎn)的路徑必然唯一。 ?

    2024年02月13日
    瀏覽(26)
  • 【數(shù)據(jù)庫·關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL·學(xué)習(xí)筆記】Microsoft SQL Server數(shù)據(jù)庫的建立和刪除

    【數(shù)據(jù)庫·關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL·學(xué)習(xí)筆記】Microsoft SQL Server數(shù)據(jù)庫的建立和刪除

    開發(fā)環(huán)境:SQL Server Management Studio(SSMS) 利用數(shù)據(jù)庫對(duì)象資源管理器創(chuàng)建數(shù)據(jù)庫 (1)右擊對(duì)象資源管理器中的數(shù)據(jù)庫,選擇新建數(shù)據(jù)庫 (2)在新建數(shù)據(jù)庫界面輸入數(shù)據(jù)庫名稱 ,并選擇確定 利用CREAT DATABASE命令在SSM工具的新建查詢中創(chuàng)建數(shù)據(jù)庫 1.語法格式 CREATE DATABASE dat

    2024年02月08日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包