掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
代碼0:

創(chuàng)新互聯(lián)建站自成立以來(lái),一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都做網(wǎng)站、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開(kāi)發(fā)等基于互聯(lián)網(wǎng)的全面整合營(yíng)銷(xiāo)服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開(kāi)發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開(kāi)發(fā)工程師團(tuán)隊(duì)及專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。
- #include
- int main(void)
- {
- int c = 5;
- switch(c)
- {
- case 0 ... 10:
- printf("0-->10\n");
- break;
- case 11 ... 20:
- printf("11-->20\n");
- break;
- default:
- printf("other\n");
- }
- return 0;
- }
輸出結(jié)果:
- 0-->10
以上特性被常見(jiàn)編譯器支持,但是標(biāo)準(zhǔn)中并未提到。
代碼1
- #include
- int main(void)
- {
- printf("%m\n");
- return 0;
- }
輸出結(jié)果:
- Success
等價(jià)于:
- printf("%s\n",stderr(errno));
由于你的代碼前面并沒(méi)有執(zhí)行出錯(cuò)設(shè)置errno,因此errno會(huì)是0,而對(duì)應(yīng)的描述信息就是Success。
代碼2
- #include
- int main(void)
- {
- int i = 10;
- printf("%zu\n",sizeof(i++));
- printf("%zu\n",sizeof(++i));
- printf("%d\n",i);
- return 0;
- }
輸出結(jié)果:
- 4
- 4
- 10
sizeof實(shí)際作用的對(duì)象是類(lèi)型。sizeof中的表達(dá)式本身并不會(huì)被執(zhí)行。
代碼3
- #include
- #include
- int main(void)
- {
- while(1)
- {
- fprintf(stdout,"公眾號(hào)");
- fprintf(stderr,"編程珠璣");
- sleep(10);
- }
- return 0;
- }
輸出結(jié)果:
- 編程珠璣編程珠璣編程珠璣
為什么不會(huì)輸出公眾號(hào)呢?原因在于標(biāo)準(zhǔn)輸入默認(rèn)是行緩沖,而標(biāo)準(zhǔn)錯(cuò)誤是無(wú)緩沖。這在《那些奇奇怪怪的緩沖問(wèn)題》中已經(jīng)有解釋了。
代碼4
- #include
- int main(void)
- {
- int a = 10;
- switch(a)
- {
- int b = 20;
- case 10:
- printf("%d\n",a + b);
- break;
- default:
- printf("%d\n",a + b);
- break;
- }
- return 0;
- }
輸出結(jié)果:
- 10
switch中的int b = 20,并不會(huì)被執(zhí)行,你編譯時(shí)就會(huì)發(fā)現(xiàn)有警告。
代碼4
- #include
- int main(void)
- {
- printf("%c\n",4["hello 公眾號(hào)編程珠璣"]);
- return 0;
- }
輸出結(jié)果:
- o
等價(jià)于:
- char *str = "hello 公眾號(hào)編程珠璣";
- printf("%c\n",str[4]);
代碼5
- //來(lái)源:公眾號(hào)編程珠璣
- //https://www.yanbinghu.com
- #include
- int main(void)
- {
- char arr[] = {'h','e','l','l','o'};
- printf("%s\n",arr);//災(zāi)難!,可能會(huì)崩潰
- return 0;
- }
代碼6
沒(méi)啥用,還會(huì)core dump的超短代碼,可以編譯運(yùn)行:
- main=0;
代碼7
- #include
- int main(void)
- {
- int arr[] = {5,4,3,2,1};
- for(int i = -1; i < sizeof(arr)/sizeof(int) - 1; i++)
- {
- printf("%d\n",arr[i+1]);
- }
- printf("end\n");
- return 0;
- }
輸出結(jié)果:
- end
原因也很簡(jiǎn)單,sizeof(arr)/sizeof(int)的結(jié)果是unsigend, int類(lèi)型的i 和unsigned比較,被轉(zhuǎn)換為一個(gè)很大的unsigned數(shù),所以for循環(huán)的條件不滿足。
代碼8
- #include
- test()
- {
- long b = 12345678987654321;
- return b;
- }
- int main(void)
- {
- long a = test();
- printf("%ld\n",a);
- return 0;
- }
輸出結(jié)果:
- 1653732529
代碼9
- #include
- int main(void)
- {
- float a = 3;
- int b = 2;
- printf("%d\n",a/2);
- return 0;
- }
輸出結(jié)果:
- 1199094392
原因:浮點(diǎn)數(shù)在計(jì)算機(jī)中按照IEEE754標(biāo)準(zhǔn)存儲(chǔ)

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流