C語言小細節2 分析字元的個數

2021-10-13 08:49:47 字數 559 閱讀 1437

char c = "ab\0123\\098";字元長度是多少,期末考試的題目容易出現這種題目。

再比如    char d = "ab'1'\\\1278"的字元長度

我們來分析字元長度先看c字元陣列,a b是兩個字元,\012得看成乙個字元,這代表八進位制數,也就是1*8^1+2*8^0=10,也就是10這個ascii碼對應的字元,3單獨算乙個字元,然後\\代表轉義字元\,最後098分別代表三個字元,最後還要加上字元『\0』,因為這是字串常量,有雙引號是代表字串常量。所以一共九個字元

再看字元陣列d,a b分別是兩個字元,',1,'這是三個字元,1的兩邊是單引號,後面三個///咋看呢,//代表轉義字元//,/127代表八進位制數與前面的/0123是一樣的分析方法,後面還有乙個單獨的8,注意不要搞成/1278看成了乙個字元。八進位制一般看前三位,後面多就不算了

總結轉義字元好理解,可能最不好理解的就是這裡的八進位制數,\127與\012這兩個都是八進位制,在字串**現「\」後面的數字預設八進位制與前面的有無0無關係。而一般的八進位制確實是以0開頭的。而這裡是在字串中可能就有點不同,而且\後面表示八進位制的數就只有3位,3位之後的就不算了。

C語言中的小細節

1.位溢位 int和long現在都是4個位元組,不過現在的c裡面都沒給出乙個越界溢位的api函式,得自己注意 a 0xffffffff,b 0xffffffff 然後 a b,或者a b都會溢位,但是這樣的一處float和double都會遇到 在asm裡面會用jo和jno來判斷溢位標誌位 2.uns...

C語言while的小細節

最近幾天在看 cpr imer plus c primer plus cprime rplu s 的第五章 運算子 表示式和語句,看到思考題第八題的時候,發現了乙個以前可能會忽略的點。題目如下 下面的程式將列印出什麼內容?problem include intmain return0 很顯然,列印1...

C 字串的小細節

char 為字元陣列 當存入相應的字元時,會分解成乙個個的字元存進陣列 char a 5 當想存hello的時候在字元陣列裡會拆成乙個個的字元生成,5為陣列長度 當如果你想存字串時,可用char char 為字串陣列 char a 3 當加上星號後,陣列裡存的不是hello,the和same,而是這...