日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言事实上不简单:sizeof

發(fā)布時(shí)間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言事实上不简单:sizeof 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問:C語言中一共同擁有多少個(gè)keyword?

答:32個(gè)。

答不上來的沒關(guān)系。非常正常。我們玩的是程序的藝術(shù)。而不是背數(shù)字。

只是這個(gè)特殊的數(shù)字1<<5也是非常好記的-.-。


問:sizeof是函數(shù)還是keyword?

第一次看到這個(gè)問題,你可能會(huì)認(rèn)為有點(diǎn)莫名其妙,sizeof當(dāng)然是函數(shù)了,由于sizeof后面都跟了個(gè)括號(hào),這顯然是函數(shù)的象征。

可是既然我這么問了。你可能也猜到了,sizeof不是個(gè)函數(shù),它是個(gè)keyword!長(zhǎng)期以來由于sizeof的"標(biāo)準(zhǔn)使用方法",導(dǎo)致sizeof極easy被理解為一個(gè)函數(shù)。

嘗試執(zhí)行以下的代碼:

#include <stdio.h>int main() {int num = 5;printf("%d\n", sizeof(num));printf("%d\n", sizeof(int));printf("%d\n", sizeof num);getchar();return 0; }sizeof num竟然也能正確輸出4,可見它真的不是函數(shù)。

只是sizeof int就是錯(cuò)誤的了。它會(huì)產(chǎn)生例如以下錯(cuò)誤:

error: expected primary-expression before "int"由于int前面僅僅能跟auto、unsigned等,況且sizeof int要怎么來理解?是想計(jì)算大小呢?還是想表示"sizeof"類型的int變量呢。

查閱相關(guān)文檔后總結(jié)例如以下:

當(dāng)要計(jì)算變量的大小,比如基本類型(int、double)的變量,結(jié)構(gòu)體變量(實(shí)例)時(shí)。能夠不用括號(hào)。

當(dāng)要計(jì)算一個(gè)類型時(shí),不能省略括號(hào)。

無論什么場(chǎng)合都加上個(gè)括號(hào),一是統(tǒng)一,而是能使程序可讀性更強(qiáng)。且不易出錯(cuò)。我的目的并非為了省略這個(gè)括號(hào),省略了并不會(huì)讓事情變得更好。我所想要表達(dá)的是sizeof的還有一方面:由于如今我們知道了sizeof不是函數(shù)而是keyword,所以其本質(zhì)也就全然不同了。函數(shù)是在執(zhí)行時(shí)確定的,而keyword是在編譯時(shí)確定的。差別的話。嘗試執(zhí)行例如以下程序:

#include <stdio.h>int main() {int cc[10];printf("%d\n", sizeof cc[999999999]);getchar();return 0; }

上面的程序并不會(huì)出錯(cuò)。而是正確輸出了4。

并非由于sizeof真的去找相對(duì)于cc首地址偏移999999999個(gè)位置的那個(gè)內(nèi)存,正如上文所述。sizeof在編譯時(shí)確定。所以它依據(jù)cc[X]的類型來確定大小。由于sizeof沒有去訪問這些地址,所以上面程序語法上沒有不論什么問題,僅僅只是邏輯上來說好像沒什么實(shí)際意義。你能不能想到一個(gè)能證明sizeof真的沒去"執(zhí)行"括號(hào)中的東西呢?事實(shí)上挺簡(jiǎn)單,試試執(zhí)行例如以下代碼:

printf("%d\n", sizeof(printf("hactrox")));其結(jié)果為4,并且"hactrox并沒有被輸出!

沒被輸出說明sizeof真的沒有去調(diào)用括號(hào)中的東西。可是為什么是4呢?由于sizeof是依據(jù)類型來確定的,對(duì)于printf或者是函數(shù),sizeof以其返回值類型來確定。由于printf返回輸出字符的數(shù)量。這個(gè)數(shù)量是int類型的,所以就相當(dāng)于sizeof(int),所以是4。可能你還不知道printf的這個(gè)特性。試試執(zhí)行下面代碼:

#include <stdio.h> int main() {int num = printf("hactrox\n");printf("%d\n", num);getchar();return 0; }一個(gè)更直接的樣例例如以下:

#include <stdio.h>int fun() {printf("hactrox");return 5; }int main() {printf("%d\n", sizeof(fun())); // 函數(shù)沒有被運(yùn)行,依據(jù)其返回值類型從而輸出4getchar();return 0; }

關(guān)于sizeof另一個(gè)須要注意的地方。試試在腦海中執(zhí)行以下的程序。得出一個(gè)結(jié)果以后再去執(zhí)行它:

#include <stdio.h>#define SIZE_OF_ARRAY (sizeof(array) / sizeof(array[0]))int main() {int array[] = {1, 2, 3, 4, 5};for(int d = -1; d < (SIZE_OF_ARRAY-1); d++)printf("%d\n", array[d+1]);printf("END\n");getchar();return 0; } 是不是跟你想的不太一樣?為什么數(shù)組一個(gè)都沒輸出?原因就在于sizeof返回的是unsigned int。當(dāng)int與unsigned int比較的時(shí)候,int是要轉(zhuǎn)成unsigned int的,當(dāng)int <0的時(shí)候,這樣的強(qiáng)制轉(zhuǎn)換自然也就悲劇了,其結(jié)果是MaxValue(unsigned int)-abs(int),那么當(dāng)d = -1的時(shí)候,自然就轉(zhuǎn)變成一個(gè)相當(dāng)巨大的數(shù)了,for循環(huán)當(dāng)然也就不運(yùn)行了。

#include <stdio.h>int main() {int a = -1;unsigned int b = 10000;if(a > b)printf("a > b\n");elseprintf("a < b\n");a = (unsigned int)a;printf("%u\n", a); // unsigned int要用%u輸出而不要習(xí)慣地寫成%dgetchar();return 0; }
最后,由于剛才提到了unsigned int的最大值。C語言中想要輸出int或是unsigned int的最大值要怎么辦呢?有個(gè)簡(jiǎn)單的小技巧:

#include <stdio.h>int main() {printf("Max value of unsigned int is: %u\n", ~(unsigned int)0); // 結(jié)果僅僅能用%u表示printf("Max value of int is: %d\n", ~(unsigned int)0 >>1); // 結(jié)果用%d, %u表示均可 getchar();return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/mfrbuaa/p/5420224.html

總結(jié)

以上是生活随笔為你收集整理的C语言事实上不简单:sizeof的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人妻丝袜一区二区三区 | 粗大的内捧猛烈进出 | 久久人人爽人人人人片 | 免费看欧美黄色片 | 无码国产69精品久久久久同性 | 视频一区免费 | 国产免费看黄 | 99re久久| 91成人国产综合久久精品 | 麻豆影视 | av观看网站 | 国产性久久| 免费在线国产视频 | 精品66 | 美女啪啪免费视频 | 乱子伦一区二区 | 69视频网址 | 超碰精品在线 | 茄子香蕉视频 | 中文在线观看高清视频 | 欧美极品少妇xxxxⅹ裸体艺术 | 肌肉猛男裸体gay网站免费 | 11一12免费毛片 | 丰满人妻老熟妇伦人精品 | 免费毛片一区二区三区 | 成人短视频在线观看 | 欧美视频在线一区二区三区 | 日韩免费高清视频网站 | 午夜精品一区二区三区在线 | 已满十八岁免费观看全集动漫 | 青草青视频 | 成人在线免费网站 | 男人天堂av网站 | av在线天堂网 | 麻豆精品91| 国产在线xxxx| 国产妞干网| 在线观看国产成人 | 国产亚洲精品久久久久久久久动漫 | 免费人成又黄又爽又色 | 人人上人人干 | 美女久久久久久久 | 午夜网站在线 | 久久视频热| 素人av在线 | 日本黄xxxxxxxxx100| 性一交一乱一伧国产女士spa | 日韩电影中文字幕 | 特黄网站 | 国产女教师一区二区三区 | 色男人网| 亚洲午夜剧场 | 91一区二区三区在线 | www.污视频| 亚洲自拍偷拍图 | 欧美性在线视频 | 国产精品自拍第一页 | 99精品久久久久久久 | 天堂va蜜桃一区二区三区 | 亚洲精品视频在线观看免费 | 国产乱码77777777 | 91香蕉国产在线观看软件 | 成人免费久久 | 中文久久字幕 | 欧美极品videos精品 | 欧美乱码精品一区二区三区 | 99在线视频免费观看 | 色多多视频在线观看 | 天天做天天爱天天爽综合网 | 欧美一本 | 无码一区二区 | 久久黄色网址 | 亚洲天堂第一页 | 91精品国产一区二区 | 动漫艳母在线观看 | 国产精品96久久久久久 | 在线观看黄av | 欧美熟妇另类久久久久久不卡 | 夜夜草网| 亚洲va久久久噜噜噜无码久久 | 国产精品伦子伦 | 亚洲色图美腿丝袜 | 免费在线看黄色 | 无码人妻精品一区二区三区不卡 | 国产亚洲综合精品 | 国产精品尤物视频 | 亚洲成人77777 | 国产欧美日韩精品一区二区三区 | 成人香蕉视频在线观看 | 国产精品99久久久久久人 | 黑巨茎大战欧美白妞 | 亚洲乱子伦 | 91在线网址 | 美国一级黄色大片 | 极品白嫩的小少妇 | 韩国成人理伦片免费播放 | 免费看成人av | 黄色无遮挡 | 成人a毛片久久免费播放 |