筆記 從一道筆試題看字元型資料

2021-07-23 21:03:06 字數 2025 閱讀 3616

//求輸出結果

int main()

printf(「%d\n」,strlen(a)) ;

return

0;

}//a[i]為char型資料,取值範圍: -128 ~ +127

//所以:經過128次迴圈後 a[127] = -128,再次迴圈此時(-128 - 1) = +127即 a[128]=127。再迴圈到a[255]=0;(0對應ascii碼的'\0')。

//strlen()的機制是計算到第乙個'\0'之前的長度,所以輸出255。

//會做這個題目,需要對c語言的資料型別有很深的理解

c語言的字元常量是用單撇號括起來的乙個字元。如』a』、』x』、』d『、』?』、『$』等都是字元常量。

除了以上形式的字元常量外,c還允許用一種特殊形式的字元常量,就是以乙個字元「\」開頭的字串行。

//例:

#include

int main()

//輸出:

123456780123456

12345612

//結論:7輸出後輸出1,1要退一格把7覆蓋

0034567

//結論:游標移到本行開頭,輸入後面內容,覆蓋原先內容

1234567

12//結論:乙個水平製表符佔8列

123456781

12a //八進位制141即為97對應ascll碼表a

? //十六進製制3f即為63對應ascll碼表?

//例:

int main()

//結果:

12345678901234567890

fab c gde

h j k

字元變數的定義形式如下:

char c1, c2;

c1=『a』; c2=『b』;

在所有的編譯系統中都規定以乙個位元組來存放乙個字元,或者說乙個字元變數在記憶體中佔乙個位元組。

將乙個字元常量放到乙個字元變數中,並不是把該字元本身放到記憶體單元中去,而是將該字元的相應的ascii**放到儲存單元中。

例如字元』a』的ascii**為十進位制數97,』b』的ascii**為十進位制數98。

在記憶體中字元資料以ascii碼儲存,它的儲存形式就與整數的儲存形式類似。這樣使字元型資料和整型資料之間可以通用。

乙個字元資料既可以以字元形式輸出,也可以以整數形式輸出。

以字元形式輸出時,需要先將儲存單元中的ascii碼轉換成相應字元,然後輸出。

以整數形式輸出時,直接將ascii碼作為整數輸出。

也可以對字元資料進行算術運算,此時相當於對它們的ascii碼進行算術運算。

//向字元變數賦予整數

#include

void main()

//輸出結果:

a b

9798

//大小寫字母的轉換

#include

void main()

//小寫字母和大寫字母之間差:32

//輸出結果:a b

#include

void main()

//結果:

! //空,沒有響應的字元對應

2080

有沒有符號要結合開發平台。

在嵌入式開發中,考慮到**的移植性,對於有符號(signed)與無符號(unsigned)一定要留心系統預設的是無符號還是有符號;

為了解決此問題,通常使用typedef來重新指定宣告無符號還是有符號;

typedef int sig_int;

typedef unsigned int un_int;

一道筆試題

看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...

一道筆試題

上次去筆試的時候,有一道題,怎麼也沒做出來,當時也是很緊張,有些思路,但卻沒有做出來。有四個人要過乙個獨木橋,因為天比較黑,而且橋只能允許兩個人同時通過,並且他們只有乙個手電筒。四個人單獨同時橋的時間是1,2,5,8分鐘。問最短的時間是多少?當時我的答案 1和8,1回來,1 5,1回來,1 2 8 ...

一道筆試題

題目是這樣的 判斷乙個小於1000的正整數是否為素數。素數的定義就不說了,以下直接分析解法,畢竟是在寫與專業相關的東西,是給本專業的人看得,所以看的人應該有點基礎吧?求素數的問題是乙個數學上的難題,這是常識,但是本題目限制了最大範圍是在1000以內,所以就可以嘗試找出乙個足夠好的解了。首先給出乙個最...