0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

c語言中一些花里胡哨的寫法

strongerHuang ? 來源:嵌入式Linux ? 作者:嵌入式Linux ? 2020-09-25 14:39 ? 次閱讀

轉(zhuǎn)自:嵌入式Linux

我覺得這是一個(gè)送分題,奈何知乎人才太多了,給出了各種古怪的寫法,如果是做項(xiàng)目的話,我比驕建議一些正常的寫法,就是大家都能看得懂的,不要搞什么花里胡哨,不過你要是交流的話,既然是交流,我不覺得要多正規(guī),即使你的觀點(diǎn)有問題,我覺得也可以拿出來說說,畢竟是交流,各抒己見,發(fā)表自己的觀點(diǎn)是最重要的。

---- 為什么不建議大家花里胡哨

我覺得花里胡哨之前首先是你基礎(chǔ)非常好了再去花里胡哨,不要自己很多基礎(chǔ)的東西還搞不清楚就去花里胡哨。

---- 看這個(gè)代碼,題外話

看看基礎(chǔ)搞不明白的殺傷有多大。

voidstart_f(intfirst_start) { chartime_buf[512]; charbuf[512]; if(!first_start) { sprintf(time_buf,"%s",get_time()); intlen=strlen(time_buf); time_buf[len-1]=0; printf("time_buf:%s ",time_buf); } }

這個(gè)是在網(wǎng)上看到的一個(gè)代碼,比較典型的基礎(chǔ)不牢靠,對(duì)strlen 理解不夠。

常規(guī)解題代碼

我覺得對(duì)于這個(gè)題目,使用for是非常常規(guī)的思考方式,所以我看了所有的回答之后,寫了一個(gè)常規(guī)的代碼。

---- 代碼如下

#include"stdio.h" voidmain(void) { inti=0; for(i=1;i<=100;i++) ?{ ??printf("%d?",i); ?} ?for(i=99;i>=1;i--) { printf("%d",i); } }

---- 代碼輸出

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100999897969594939291908988878685848382818079787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321 -------------------------------- Processexitedafter0.04664secondswithreturnvalue2 請(qǐng)按任意鍵繼續(xù)...

---- 為什么是 void main ,而不是int main ,題外話

這個(gè)是一個(gè)知乎留言提到的,很多人也對(duì)這個(gè)有疑惑,main 的寫法有幾種,有的被認(rèn)為是正規(guī)的,有的被認(rèn)為是不正規(guī)的。

main是一個(gè)函數(shù),既然是一個(gè)函數(shù),就遵從函數(shù)的規(guī)則就好。

所以,這樣寫輸出并沒有什么問題

#include char*main() { printf("hhh "); return(char*)NULL; }

我們還要知道比較常見的幾種

intmain(intargc,char**argv){} intmain(intargc,char*argv[]){} intmain(void){}

---對(duì)于返回值的認(rèn)知

main 函數(shù)是被操作系統(tǒng)調(diào)用的,既然是被操作系統(tǒng)調(diào)用的,操作系統(tǒng)會(huì)判斷函數(shù)的返回值,通過返回值來判斷程序是否正確運(yùn)行,所以main函數(shù)的返回值是有意義的,我示例中的寫法并不規(guī)范。

對(duì)main的解讀

比較玄乎的寫法

#include"stdio.h" voidfun(intn) { if(n<100) ?{ ??printf("%d?",n);? ??fun(n+1); ?}? ?printf("%d?",n); } int?main(void) { ?fun(1); ?return?0; }

---- 程序輸出

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100999897969594939291908988878685848382818079787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321 -------------------------------- Processexitedafter0.05336secondswithreturnvalue0 請(qǐng)按任意鍵繼續(xù)...

這里涉及到遞歸,如果沒有這個(gè)概念的人,腦子可能彎不過來

大概是這樣執(zhí)行順序的

fun(1) ->fun(2) --->fun(3) ........ ---->fun(99)

---- 把上面的代碼修改下

#include"stdio.h" voidfun(intn) { if(n<100) ?{ ??printf("fun(%d)?",n);? ??fun(n+1); ?}? ?printf("fun(%d)?",n); } int?main(void) { ?fun(1); ?return?0; }

---- 代碼輸出

fun(1)fun(2)fun(3)fun(4)fun(5)fun(6)fun(7)fun(8)fun(9)fun(10)fun(11)fun(12)fun(13)fun(14)fun(15)fun(16)fun(17)fun(18)fun(19)fun(20)fun(21)fun(22)fun(23)fun(24)fun(25)fun(26)fun(27)fun(28)fun(29)fun(30)fun(31)fun(32)fun(33)fun(34)fun(35)fun(36)fun(37)fun(38)fun(39)fun(40)fun(41)fun(42)fun(43)fun(44)fun(45)fun(46)fun(47)fun(48)fun(49)fun(50)fun(51)fun(52)fun(53)fun(54)fun(55)fun(56)fun(57)fun(58)fun(59)fun(60)fun(61)fun(62)fun(63)fun(64)fun(65)fun(66)fun(67)fun(68)fun(69)fun(70)fun(71)fun(72)fun(73)fun(74)fun(75)fun(76)fun(77)fun(78)fun(79)fun(80)fun(81)fun(82)fun(83)fun(84)fun(85)fun(86)fun(87)fun(88)fun(89)fun(90)fun(91)fun(92)fun(93)fun(94)fun(95)fun(96)fun(97)fun(98)fun(99)fun(100)fun(99)fun(98)fun(97)fun(96)fun(95)fun(94)fun(93)fun(92)fun(91)fun(90)fun(89)fun(88)fun(87)fun(86)fun(85)fun(84)fun(83)fun(82)fun(81)fun(80)fun(79)fun(78)fun(77)fun(76)fun(75)fun(74)fun(73)fun(72)fun(71)fun(70)fun(69)fun(68)fun(67)fun(66)fun(65)fun(64)fun(63)fun(62)fun(61)fun(60)fun(59)fun(58)fun(57)fun(56)fun(55)fun(54)fun(53)fun(52)fun(51)fun(50)fun(49)fun(48)fun(47)fun(46)fun(45)fun(44)fun(43)fun(42)fun(41)fun(40)fun(39)fun(38)fun(37)fun(36)fun(35)fun(34)fun(33)fun(32)fun(31)fun(30)fun(29)fun(28)fun(27)fun(26)fun(25)fun(24)fun(23)fun(22)fun(21)fun(20)fun(19)fun(18)fun(17)fun(16)fun(15)fun(14)fun(13)fun(12)fun(11)fun(10)fun(9)fun(8)fun(7)fun(6)fun(5)fun(4)fun(3)fun(2)fun(1)

重點(diǎn)在于只有if 判斷為假后,才結(jié)束遞歸,但是遞歸不能無限大,太大了會(huì)撐爆棧空間的哦

遞歸的文章

C 語言,你真的懂遞歸了嗎?

比如這樣

再看看一個(gè)高贊的奇葩寫法

#include intmain(){ printf("1"); printf(""); printf("2"); printf(""); printf("3"); printf(""); printf("4"); printf(""); printf("5"); printf(""); printf("6"); printf(""); printf("7"); printf(""); printf("8"); printf(""); printf("9"); printf(""); printf("10"); printf(""); printf("11"); printf(""); printf("12"); printf(""); printf("13"); printf(""); printf("14"); printf(""); printf("15"); printf(""); printf("16"); printf(""); printf("17"); printf(""); printf("18"); printf(""); printf("19"); printf(""); printf("20"); printf(""); printf("21"); printf(""); printf("22"); printf(""); printf("23"); printf(""); printf("24"); printf(""); printf("25"); printf(""); printf("26"); printf(""); printf("27"); printf(""); printf("28"); printf(""); printf("29"); printf(""); printf("30"); printf(""); printf("31"); printf(""); printf("32"); printf(""); printf("33"); printf(""); printf("34"); printf(""); printf("35"); printf(""); printf("36"); printf(""); printf("37"); printf(""); printf("38"); printf(""); printf("39"); printf(""); printf("40"); printf(""); printf("41"); printf(""); printf("42"); printf(""); printf("43"); printf(""); printf("44"); printf(""); printf("45"); printf(""); printf("46"); printf(""); printf("47"); printf(""); printf("48"); printf(""); printf("49"); printf(""); printf("50"); printf(""); printf("51"); printf(""); printf("52"); printf(""); printf("53"); printf(""); printf("54"); printf(""); printf("55"); printf(""); printf("56"); printf(""); printf("57"); printf(""); printf("58"); printf(""); printf("59"); printf(""); printf("60"); printf(""); printf("61"); printf(""); printf("62"); printf(""); printf("63"); printf(""); printf("64"); printf(""); printf("65"); printf(""); printf("66"); printf(""); printf("67"); printf(""); printf("68"); printf(""); printf("69"); printf(""); printf("70"); printf(""); printf("71"); printf(""); printf("72"); printf(""); printf("73"); printf(""); printf("74"); printf(""); printf("75"); printf(""); printf("76"); printf(""); printf("77"); printf(""); printf("78"); printf(""); printf("79"); printf(""); printf("80"); printf(""); printf("81"); printf(""); printf("82"); printf(""); printf("83"); printf(""); printf("84"); printf(""); printf("85"); printf(""); printf("86"); printf(""); printf("87"); printf(""); printf("88"); printf(""); printf("89"); printf(""); printf("90"); printf(""); printf("91"); printf(""); printf("92"); printf(""); printf("93"); printf(""); printf("94"); printf(""); printf("95"); printf(""); printf("96"); printf(""); printf("97"); printf(""); printf("98"); printf(""); printf("99"); printf(""); printf("100"); printf(""); printf("99"); printf(""); printf("98"); printf(""); printf("97"); printf(""); printf("96"); printf(""); printf("95"); printf(""); printf("94"); printf(""); printf("93"); printf(""); printf("92"); printf(""); printf("91"); printf(""); printf("90"); printf(""); printf("89"); printf(""); printf("88"); printf(""); printf("87"); printf(""); printf("86"); printf(""); printf("85"); printf(""); printf("84"); printf(""); printf("83"); printf(""); printf("82"); printf(""); printf("81"); printf(""); printf("80"); printf(""); printf("79"); printf(""); printf("78"); printf(""); printf("77"); printf(""); printf("76"); printf(""); printf("75"); printf(""); printf("74"); printf(""); printf("73"); printf(""); printf("72"); printf(""); printf("71"); printf(""); printf("70"); printf(""); printf("69"); printf(""); printf("68"); printf(""); printf("67"); printf(""); printf("66"); printf(""); printf("65"); printf(""); printf("64"); printf(""); printf("63"); printf(""); printf("62"); printf(""); printf("61"); printf(""); printf("60"); printf(""); printf("59"); printf(""); printf("58"); printf(""); printf("57"); printf(""); printf("56"); printf(""); printf("55"); printf(""); printf("54"); printf(""); printf("53"); printf(""); printf("52"); printf(""); printf("51"); printf(""); printf("50"); printf(""); printf("49"); printf(""); printf("48"); printf(""); printf("47"); printf(""); printf("46"); printf(""); printf("45"); printf(""); printf("44"); printf(""); printf("43"); printf(""); printf("42"); printf(""); printf("41"); printf(""); printf("40"); printf(""); printf("39"); printf(""); printf("38"); printf(""); printf("37"); printf(""); printf("36"); printf(""); printf("35"); printf(""); printf("34"); printf(""); printf("33"); printf(""); printf("32"); printf(""); printf("31"); printf(""); printf("30"); printf(""); printf("29"); printf(""); printf("28"); printf(""); printf("27"); printf(""); printf("26"); printf(""); printf("25"); printf(""); printf("24"); printf(""); printf("23"); printf(""); printf("22"); printf(""); printf("21"); printf(""); printf("20"); printf(""); printf("19"); printf(""); printf("18"); printf(""); printf("17"); printf(""); printf("16"); printf(""); printf("15"); printf(""); printf("14"); printf(""); printf("13"); printf(""); printf("12"); printf(""); printf("11"); printf(""); printf("10"); printf(""); printf("9"); printf(""); printf("8"); printf(""); printf("7"); printf(""); printf("6"); printf(""); printf("5"); printf(""); printf("4"); printf(""); printf("3"); printf(""); printf("2"); printf(""); printf("1"); printf(""); return0; }

原文標(biāo)題:c語言各種古怪的寫法

文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7613

    瀏覽量

    137247
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3633

    瀏覽量

    93853

原文標(biāo)題:c語言各種古怪的寫法

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    EE-62:在C語言中訪問短字內(nèi)存

    電子發(fā)燒友網(wǎng)站提供《EE-62:在C語言中訪問短字內(nèi)存.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 14:02 ?0次下載
    EE-62:在<b class='flag-5'>C</b><b class='flag-5'>語言中</b>訪問短字內(nèi)存

    EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù)

    電子發(fā)燒友網(wǎng)站提供《EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù).pdf》資料免費(fèi)下載
    發(fā)表于 01-07 13:48 ?0次下載
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的DSP:從<b class='flag-5'>C</b>調(diào)用匯編類成員函數(shù)

    C語言中申請(qǐng)的堆內(nèi)存能不能自動(dòng)釋放

    C語言中申請(qǐng)的堆內(nèi)存能不能自動(dòng)釋放?每次都要手動(dòng) free 太麻煩,也容易忘記。 學(xué)過 C++ 的同學(xué),應(yīng)該首先能想到智能指針。 但是這是C語言
    的頭像 發(fā)表于 11-27 09:33 ?145次閱讀

    C語言中的socket編程基礎(chǔ)

    Socket編程簡(jiǎn)介 Socket是種通信機(jī)制,允許程序之間進(jìn)行通信。在C語言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過使用socket,程序可以發(fā)送和接收數(shù)據(jù),實(shí)現(xiàn)不同計(jì)算機(jī)之間的通信
    的頭像 發(fā)表于 11-01 16:51 ?386次閱讀

    C語言中最常見的宏定義寫法

    如果讓你用C語言寫個(gè)宏定義,我相信大部分同學(xué)順手就能寫出define。
    的頭像 發(fā)表于 10-28 11:12 ?333次閱讀

    c語言中從左到右結(jié)合怎么看

    :左結(jié)合(Left-Associative)或右結(jié)合(Right-Associative)。 左結(jié)合(Left-Associative) 左結(jié)合操作符是指當(dāng)操作符連續(xù)出現(xiàn)時(shí),它們從左向右與操作數(shù)結(jié)合。這意味著表達(dá)式從左到右進(jìn)行求值。C
    的頭像 發(fā)表于 08-20 11:42 ?998次閱讀

    c語言怎么做可視化界面

    介紹如何使用C語言開發(fā)可視化界面,包括所需的庫、工具和開發(fā)步驟。 選擇合適的圖形庫 為了在C語言中創(chuàng)建可視化界面,我們需要選擇個(gè)合適的圖形
    的頭像 發(fā)表于 06-06 10:46 ?2468次閱讀

    嵌入式系統(tǒng)中C語言結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用

    C語言中的數(shù)組只能允許程序員定義存儲(chǔ)相同類型數(shù)據(jù)。但是結(jié)構(gòu)是C語言編程中允許您存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)。
    發(fā)表于 03-12 14:29 ?528次閱讀
    嵌入式系統(tǒng)中<b class='flag-5'>C</b><b class='flag-5'>語言</b>結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用

    C語言中的typedef的應(yīng)用

    C 語言提供了 typedef 關(guān)鍵字,您可以使用它來為類型取個(gè)新的名字。下面的實(shí)例為單字節(jié)數(shù)字定義了個(gè)術(shù)語 BYTE。
    發(fā)表于 03-06 11:34 ?413次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的typedef的應(yīng)用

    C語言#define的應(yīng)用

    C/C++ 編程語言中,當(dāng)程序被編譯時(shí),被發(fā)送到編譯器,編譯器將程序轉(zhuǎn)換為機(jī)器語言,然后完成編譯并執(zhí)行該程序。預(yù)處理器也稱為宏預(yù)處理器。
    發(fā)表于 03-06 11:29 ?393次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>#define的應(yīng)用

    C語言的指針用法

    C語言編程中善用指針可以簡(jiǎn)化一些任務(wù)的處理,而對(duì)于一些任務(wù)(比如動(dòng)態(tài)內(nèi)存分配),必須要有指針才行的。也就是說精通C指針編程是很有必要的,幫助
    發(fā)表于 03-05 14:22 ?381次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的指針用法

    介紹C語言中錯(cuò)誤處理和異常處理的一些常用的方法和策略

    C語言種低級(jí)的、靜態(tài)的、結(jié)構(gòu)化的編程語言,它沒有提供像C++或Java等高級(jí)語言中的異常處理
    的頭像 發(fā)表于 02-28 14:25 ?648次閱讀

    C語言中的可變參數(shù)介紹

    C 語言為這種情況提供了個(gè)解決方案,它允許您定義個(gè)函數(shù),能根據(jù)具體的需求接受可變數(shù)量的參數(shù)
    發(fā)表于 02-28 14:00 ?344次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的可變參數(shù)介紹

    plc編程語言c語言的聯(lián)系 c語言和PLC有什么區(qū)別

    語言,主要用于開發(fā)各種應(yīng)用程序。盡管PLC編程語言C語言一些相似之處,但它們之間也存在一些
    的頭像 發(fā)表于 02-05 14:21 ?4280次閱讀

    枚舉有多大?c語言枚舉end的作用是什么?

    枚舉有多大?c語言枚舉end的作用是什么? 枚舉在C語言中種常見的數(shù)據(jù)類型,用于定義組相互
    的頭像 發(fā)表于 01-19 14:19 ?642次閱讀