亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    PcrazyC的C語(yǔ)言總結(jié)

    原帖及討論:http://bbs.bccn.net/thread-129240-1-1.html

    總算把C語(yǔ)言又看了一遍,總結(jié)如下:

    1.    二制數(shù)中原碼.反碼.補(bǔ)碼以及進(jìn)制之間的轉(zhuǎn)換:

    原碼:由符號(hào)位和該數(shù)的絕對(duì)值的二進(jìn)制數(shù)組成.
    反碼:負(fù)數(shù)的反碼為除符號(hào)位以外所有位均取反的結(jié)果.正數(shù)
              的反碼與原碼相同,其補(bǔ)碼也一樣,后面不說(shuō)了.
    補(bǔ)碼:負(fù)數(shù)的補(bǔ)碼是在其反碼的基礎(chǔ)之上加1;
    下面以-123為例求其各碼:
    原碼:符號(hào)位為1,二進(jìn)制數(shù)為1111011,(其轉(zhuǎn)換參考下面進(jìn)制的轉(zhuǎn)換)所以其原碼為11111011.
    反碼:10000100
    補(bǔ)碼:10000101
    進(jìn)制的轉(zhuǎn)換:
    十進(jìn)制數(shù)轉(zhuǎn)其他:
    (1):整數(shù):以十進(jìn)制數(shù)123轉(zhuǎn)換為八進(jìn)制數(shù)為例:
        123/8=15……3    ———-最低位
        15/8=1………7
        1/8=0………1 ———–最高位
        結(jié)果就是173(從下到上),商為0止
    (2):小數(shù):0.325轉(zhuǎn)換為二制數(shù)為例:
            乘2                    純小數(shù)部分            整數(shù)部分
        2 * 0.375=0.750             0.750                    0
        2 * 0.750=1.5               0.5                      1
        2 * 0.5 =1.0                0                        1
    結(jié)果就為0.011(從上到下),純小數(shù)為0終止.否則一直進(jìn)行下去
    直到字節(jié)數(shù)已滿.
    其它轉(zhuǎn)十進(jìn)制:以十六進(jìn)制數(shù)A5FE轉(zhuǎn)換十進(jìn)制數(shù)為例:
        A5FE=A * 16^3+5 *16^2+F * 16^1+E=42494
    二進(jìn)制數(shù):
        十進(jìn)制數(shù)不用說(shuō)了,轉(zhuǎn)八進(jìn)制數(shù)時(shí),從低位起,每三位對(duì)一位,不足補(bǔ)0;轉(zhuǎn)十六進(jìn)制數(shù),從低位起每四位對(duì)一位,不足補(bǔ)0;其它轉(zhuǎn)二進(jìn)制數(shù)是一個(gè)相反的過(guò)程.
    下面舉兩個(gè)例子:
    (1);二進(jìn)制數(shù)10101101轉(zhuǎn)八進(jìn)制數(shù):
        010      101        101
        |      |        |
        2         5        5
        結(jié)果就是255
    (2):十六進(jìn)制A69E數(shù)轉(zhuǎn)二制數(shù):
        A    6    9    E
        |    |    |    |
        1010  0110   1001  1110
        結(jié)果就是1010011010011110

    2.    變量在內(nèi)在中的存放與轉(zhuǎn)換.

    (1)    存放:
    整型數(shù)據(jù)是轉(zhuǎn)換成相應(yīng)的補(bǔ)碼后直接存放在內(nèi)存中,而實(shí)型與整型的存放不同,它是以指數(shù)形式存放,即符號(hào)位+小數(shù)部分+指數(shù)部分.比如:12345在內(nèi)在中的存放形式是這樣的:第一位符號(hào)位是’+’,接下來(lái)存放的是小數(shù),即0.12345,最后是指數(shù)5,而小數(shù)部分和指數(shù)部分所占的位數(shù)因編譯系統(tǒng)的不同而不同,不必深究,
    (2)    轉(zhuǎn)換:
        所有可以轉(zhuǎn)換的數(shù)據(jù)類型之間的轉(zhuǎn)換都遵循一個(gè)規(guī)則:按存儲(chǔ)單元的存儲(chǔ)形式直接傳送,從低位開(kāi)始.比如:將十進(jìn)制數(shù)-123轉(zhuǎn)換為八進(jìn)制數(shù):    將其補(bǔ)碼原樣傳送由于八進(jìn)制數(shù)無(wú)符號(hào)(十六進(jìn)制數(shù)也一樣),所以最高位的1在八進(jìn)制數(shù)的內(nèi)在單元中已不代表符號(hào),而代表數(shù)值進(jìn)行運(yùn)算.不同的編譯器和機(jī)器所得的結(jié)果不一定相同,因?yàn)檎妥兞克嫉淖止?jié)數(shù)不同,現(xiàn)以十六位機(jī)(另外還與編譯器有關(guān),假如整型占兩個(gè)字節(jié))為例:-123的補(bǔ)碼為1111111110000101,將其換算成八進(jìn)制數(shù)為177605,而在32位機(jī)上(假如整形占4個(gè)字節(jié)),其結(jié)果就是37777777605.
    實(shí)型轉(zhuǎn)換成整型時(shí),得到的絕不是你想要的結(jié)果,因?yàn)閷?shí)型的存儲(chǔ)形式是按指數(shù)形式存儲(chǔ)的,低位中存儲(chǔ)的是指數(shù)部分,當(dāng)傳送的時(shí)候,只是將指數(shù)部分或指數(shù)部分加上小數(shù)部分的小部分傳送給整型變量,得到的結(jié)果不可能是你想要的結(jié)果.

    3.字符—–    ‘’的作用:

    與一些字母組成轉(zhuǎn)義字符,比如t、n之類的,與數(shù)字組成代表八進(jìn)制數(shù).比如:123代表八進(jìn)制數(shù)123即十進(jìn)制數(shù)83.另外說(shuō)明一下r,其作用是將當(dāng)前位置移到本行開(kāi)頭,后面再輸入字符時(shí),原有的字符將會(huì)被覆蓋,比如printf(“abcdr  n“);將會(huì)輸出”  cd”,而不是”  abcd”.還有b也是一樣.

    4.自增自減:

    (1).運(yùn)算符在前時(shí),先進(jìn)行運(yùn)算再進(jìn)行取值,運(yùn)算符在后時(shí),先進(jìn)行取值再進(jìn)行運(yùn)算.比如a=++i ;相當(dāng)于i=i+1;a=i ; ,而a=i++;則相當(dāng)于a=i;i=i+1;
    (2).自增自減運(yùn)算符不能用于常量 (表達(dá)式結(jié)果也是常量),只能用于變量.
    (3).警告:不要使用+++,—之類的運(yùn)算符,不同的編譯器有不同的結(jié)果,也不要在一個(gè)式子中對(duì)同一變量進(jìn)行多次++或–,比如:(i++)+(i++)+(i++),同樣不同的編譯器會(huì)得到不同的結(jié)果.

    5.逗號(hào)運(yùn)算符.

    結(jié)合方向是自左向右,結(jié)果為最后一個(gè)表達(dá)式的值,其優(yōu)先級(jí)最低.注意函數(shù)中的”,”一般是參數(shù)分隔符,不是逗號(hào)運(yùn)算符,詳情見(jiàn)44樓:
    http://bbs.bc-cn.net/dispbbs.asp?boardid=5&replyid=62343&id=124695&page=1&skin=0&star=3

    6.退出過(guò)程.

        (1)continue :用于結(jié)束某次循環(huán)繼續(xù)下一循環(huán).
        (2)break:    用于結(jié)束循環(huán)或結(jié)束switch語(yǔ)句.
        (3)return:    用于結(jié)束某函數(shù).
        (4)exit:        用于結(jié)束某一程序

    7.printf(“%*sn”,M,”字符串”+N)的用法說(shuō)明

    先看N的值,去掉字符串的左邊N個(gè)字符,再看字符串的位數(shù)與M的值的大小
    1.若字符串的位數(shù)比M大,然后輸出
    2.若字符串的位數(shù)比M小,就先在M的左邊補(bǔ)空格,使字符串的長(zhǎng)度等于M,然后輸出
    printf(“%-*sn”,M,”字符串”+N),
    先看N的值,去掉字符串的左邊N個(gè)字符,再看字符串的位數(shù)與M的值的大小
    1.若字符串的位數(shù)比M大,然后輸出
    2.若字符串的位數(shù)比M小,就先在M的右邊補(bǔ)空格,使字符串的長(zhǎng)度等于M,然后輸出

    8.scanf函數(shù)的用法和說(shuō)明

    (1),指定輸入列數(shù),系統(tǒng)自動(dòng)截取,比如:scanf(“%3d”,&a);輸入1234;a=123;
    (2).*的用法,跳過(guò)指定列數(shù).比scanf(“%2d%*3d%d”,&a,&b);輸入1234567,a=12,b=67;345被跳過(guò)
    (3).輸入時(shí)不能指定精度
    (4).輸入數(shù)據(jù)時(shí)要與格式控制保持一致,格式控制中用”,”分開(kāi),輸入時(shí)也要用”,”分開(kāi),格式控制中用”:”分開(kāi),輸入時(shí)也要用”:”分開(kāi), 否則結(jié)果不可預(yù)料.如果格式控制中沒(méi)有用任何字符隔開(kāi),你也不要用任何字符隔開(kāi),包括空格,比如:scanf(“%c%c”,&a,&b);如果輸入a b (中間有空格),此時(shí)a=’a’,b=’’,而b卻存入緩存中.另外格式控制后是變量地址,普通變量不要忘了取地址運(yùn)算符”&”.本來(lái)代表地址的也不要多加”&”.比如指針(數(shù)組名也是指針)不用加”&”.
    (5).清除緩存.當(dāng)緩存中有數(shù)據(jù)時(shí),使用scanf時(shí),不會(huì)提示輸入字符,而是直接將緩存中的數(shù)據(jù)(包括回車符)賦給變量,直到緩存中沒(méi)有變量.這樣就要在調(diào)用scanf之前清除緩存,用語(yǔ)句fflush(stdin);來(lái)清除緩存.另外用scanf(“ %c”,&a);在格式控制中多加一個(gè)空格可以清除一個(gè)字符,當(dāng)有多個(gè)字符時(shí)就不有完全清除,還可以用 * 來(lái)清除緩存,和空格作用差不多,比如:scanf(“%*5c%c”,&a);可以清除緩存中五個(gè)字符.最好是直接用fflush (stdin);

    9.易錯(cuò)點(diǎn)    

        (1).if (a=4)…; 相當(dāng)于a=4;if(4)…;
        (2).switch語(yǔ)句要注意break;
        (3).do {…} while; 要注意最后一個(gè)分號(hào)不能丟
        (4).不能定義動(dòng)態(tài)數(shù)組,比如:scanf (“%d”,&n); int a[n];

    10.void的說(shuō)明.

    Void代表空類型,在定義指針變量或函數(shù)時(shí)可以定義為void型,定義指針變量后可以在用的時(shí)候通過(guò)強(qiáng)制類型轉(zhuǎn)換使其指向任何類型的數(shù)據(jù).定義函數(shù)時(shí),只是說(shuō)明不能有返回值.如果函數(shù)中出現(xiàn)return就會(huì)報(bào)錯(cuò).

    11.局部變量.全局變量

    作用域:局部變量的作用域從定義處到該過(guò)程(可以是一個(gè)復(fù)合語(yǔ)句也可以是一個(gè)函數(shù))結(jié)束.全局變量的作用域從定義處到文件結(jié)束.
    存在性:局部變量(未聲明為static類型)當(dāng)所在過(guò)程被調(diào)用時(shí)存在,結(jié)束后釋放,如果定義為static就會(huì)一直存在直到程序結(jié)束,但其作用域不受影響.全局變量在被定義后就一直存在.直到程序結(jié)束.
    優(yōu)先級(jí):當(dāng)兩個(gè)相同變量的作用域重復(fù)(一個(gè)包含另一個(gè)),在較小的作用域范圍內(nèi),較大作用域的那個(gè)變量被屏蔽.比如:i被定義為一個(gè)全局變量,在其作用域內(nèi)又定義了一個(gè)局部變量i,在局部變量i作用域內(nèi),全局變量i被屏蔽.又如.在一個(gè)函數(shù)中定義了一個(gè)局部變量i,而在該函數(shù)的某個(gè)復(fù)合語(yǔ)句中又定義了一個(gè)變量i,則在該復(fù)合語(yǔ)句中局部變量i將被屏蔽.

    12.預(yù)編譯處理命令

    #define:宏定義只是在編譯前對(duì)代碼作簡(jiǎn)單的字符串替換,不會(huì)考慮任何錯(cuò)誤.宏定義不是語(yǔ)句,后面不要加”;”.
    #include:
        “ ”與< >之前的區(qū)別.” “是從用戶當(dāng)前目錄尋找包含文件,若找不到就會(huì)到庫(kù)函數(shù)所在目錄中尋找,再找不到就報(bào)錯(cuò),而< >則是直接在庫(kù)函數(shù)所在目錄中尋找,找不到報(bào)錯(cuò).

    13.指針:

    (1).指針的加減法:指針的加減法不是作簡(jiǎn)單的加減,而是以指針變量所占的字節(jié)數(shù)為單位進(jìn)行加減.
    (2).數(shù)組名是指針常量,不能改變其值,比如數(shù)組a[ ],如果進(jìn)行a++;就會(huì)報(bào)錯(cuò)
    (3). 雖然指針變量中存放的地址是整型數(shù)據(jù),但不能將整型數(shù)據(jù)直接賦值給指針變量,應(yīng)該這樣(假如p為int *型),p=(int *)1000;但禁用些法,因?yàn)槟悴恢?000這個(gè)單元有沒(méi)有被其它單元占用,后果不可預(yù)料,同樣也不能將一個(gè)指針變量的值直接賦給整形變量,也要進(jìn)行強(qiáng)制類型轉(zhuǎn)換.
    (4)定義指針后,在使用之前一定要先給它賦初值,切記
    (5).二維數(shù)組中指針問(wèn)題(int a[3] [4]),數(shù)組名a是一個(gè)指向行的指針(指向數(shù)組),而在其前面加一個(gè) * ,*a就是指向列的指針(指向無(wú)素).a與*都是指向a[0][0];但a+1(行指針)指向a[1][0];而*a+1(列指針,和*(a+0)+1一樣)卻指向a[0][1];同樣在a+1前加一個(gè)*就又變成列指針了,*(a+1)+2就指向a[1][2].
    (6),復(fù)雜類型的說(shuō)明:從變量名處起,根據(jù)運(yùn)算符優(yōu)先級(jí)結(jié)合,一步一步分析,下面以一個(gè)比較復(fù)雜的類型(  int * (*p(int))[ ]  )為例:
    第一步,p先與()結(jié)合,說(shuō)明是一個(gè)函數(shù),第二步,()內(nèi)有一個(gè)int,說(shuō)明函數(shù)有一個(gè)形參為int型,第三步與*結(jié)合,說(shuō)明返回的是一個(gè)指針變量,第四步與[ ]結(jié)合,說(shuō)明該指針變量指向數(shù)組,第五步再與*結(jié)合,說(shuō)明數(shù)組中的元素為指針型,第六步說(shuō)明數(shù)組中的指針元素的類型為int型,完畢,所以這是一個(gè)返回一個(gè)由整型指針變量組成的數(shù)組的指針變量的函數(shù).

    14枚舉類型:

        枚舉元素為常量,只有在定義的時(shí)候能對(duì)它們進(jìn)行賦值(不賦值時(shí),系統(tǒng)給它們賦值,從0開(kāi)始遞增),在其它時(shí)候均不能進(jìn)行賦值,

    大家有好的經(jīng)驗(yàn)發(fā)上來(lái),我加到里面去,如有錯(cuò)誤請(qǐng)指示

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)