當前位置:首頁 » 編程語言 » c語言charbyte

c語言charbyte

發布時間: 2022-12-25 17:29:01

1. 在c語言中,char類型數據所佔內存為多少byte

這個需要看編譯器的設置,VC、Dev C、VisualStudio等大部分編譯器的默認都是char佔一個位元組(Byte)。在C和C 中可用函數sizeof(char)求出char的位元組數。

2. C語言說char是16位,又說他是1位元組(byte)位元組和位有啥區別

C 語言 規定 char 型 是1 位元組整型。1位元組 等於 2進制8位, 2進制的一個位,中文叫「字元」,
英文叫 bit.
" C語言說char是16位" 這里可能有中英文 誤解。
有個 「字元集」的概念,例如,ASCII 字元集里,一個字元 是 8 字元,中文雙位元組編碼字元 是 2位元組 16字元。還有其它編碼的 里的 字元,可能 是 多少多少 位元組。
字元 英文叫 character。大概某些人混淆了 某 set 里 的 character 是16位,變成 char是16位了。
c 語言可以用 sizeof(char) 算得 char 占的內存位元組數,你輸出看看:
printf("%d", sizeof(char));

3. c語言中char的用法是什麼意思

C語言是計算機軟體領域非常經典的編程語言,C語言中char的作用有哪些你了解嗎。下面我就跟你們詳細介紹下c語言中char的用法,希望對你們有用。

c語言中char的用法:c語言中char的用法簡介
字元型(char)用於儲存字元(character),如英文字母或標點。嚴格來說,char 其實也是整數類型(integer type),因為 char 類型儲存的實際上是整數,而不是字元。計算機使用特定的整數編碼來表示特定的字元。美國普遍使用的編碼是 ASCII(American Standard Code for Information Interchange 美國信息交換標准編碼)。例如:ASCII 使用 65 來代表大寫字母 A,因此存儲字母 A 實際上存儲的是整數65。注意:許多IBM大型機使用另一種編碼--EBCDIC(Extended Binary-Coded Decimal Interchange Code 擴充的二進制編碼的十進制交換碼);不同國家的計算機使用的編碼可能完全不同。

ASCII 的范圍是 0 到 127,故而 7 位(bit)就足以表示全部 ASCII。char 一般佔用 8 位內存單元,表示ASCII綽綽有餘。許多系統都提供擴展ASCII(Extended ASCII),並且所需空間仍然在 8 位以內。注意,不同的系統提供的擴展 ASCII 的編碼方式可能有所不同!

許多字元集超出了 8 位所能表示的范圍(例如漢字字元集),使用這種字元集作為基本字元集的系統中,char 可能是 16 位的,甚至可能是 32 位的。總之,C 保證 char 佔用空間的大小足以儲存系統所用的基本字元集的編碼。C 語言定義一個位元組(byte)的位數為 char 的位數,所以一個位元組可能是 16 位,也可能是 32 位,而不僅僅限於 8 位。
c語言中char的用法: 聲明字元型變數
字元型變數的聲明方式和 其它 類型變數的聲明方式一樣:

char good;

char better, best;

以上代碼聲明了三個字元型變數:good、better,和 best。
c語言中char的用法:字元常量與初始化
我們可以使用以下語句來初始化字元型變數:

charch = 'A';

這個語句把ch的值初始化為 A 的編碼值。在這個語句中,'A' 是字元常量。C 語言中,使用單引號把字元引起來就構成字元常量。我們來看另外一個例子:

char fail; /* 聲明一個字元型變數 */

fail = 'F'; /* 正確 */

fail = "F"; /* 錯!"F" 是字元串字面量 */

把字元用雙引號引起來構成字元串字面量,所以第三個語句是錯誤的。我們會在後續的教程中討論字元串,現在暫且把它放下。

因為字元實質上是以數字的形式存儲的,所以我們可以直接使用數字來初始化字元變數,或者給字元變數賦值:

char ch = 65; /* 不好的風格 */

在 ASCII 中,A 的編碼是 65,所以對於使用 ASCII 的系統來說,這個語句等同於 char ch = 'A';。使用非 ASCII 的系統中,65 代表的不一定是 A,而有可能是其它任何字元,所以使用數字來初始化字元變數,或者給字元變數賦值是一種不好的風格,因為移植性太差了!但是,使用字元常量(例如 'A')來初始化字元變數,或者給字元變數賦值,字元變數得到的一定是我們所期待的字元的編碼值。例如:

charch = 'A';

無論在使用任何編碼的系統中,ch都能夠得到字元 A 所對應的編碼值。這是因為編譯器會自動把 'A' 轉化成 A 所對應的編碼值。因此,我們應該使用字元常量來初始化字元變數,或者給字元變數賦值;而不要用數字。

有趣的是,C 使用int類型來處理字元常量,而不是 char 類型。例如,在使用32位int的ASCII 系統中,以下代碼

charch = 'C';

'C' 的編碼值 67 被存儲於 32 位的內存單元中;不過ch仍然存儲於 8 位的內存單元中,只是它的值變成了 67。因此,我們可以定義形如 'good' 的古怪字元常量。因為每個字元的編碼值佔用 8 位的內存單元,所以這個常量剛好可以存儲於 32 位的內存單元。然而,用這種字元常量初始化字元變數,或者給字元變數賦值的話,導致的結果是,字元變數只能得到字元常量的最後 8 位。也就是說,以下代碼

charch = 'good';

ch得到的是 'd' 的值。

以後,在沒有特殊說明的情況下,我們討論的都是 ASCII。

ASCII值

控制字元 ASCII值控制字元 ASCII值控制字元 ASCII值控制字元

0 NUL 32 (space) 64 @ 96 `

1 SOH 33 ! 65 A 97 a

2 STX 34 " 66 B 98 b

3 ETX 35 # 67 C 99 c

4 EOT 36 ?$ 68 D 100 d

5 ENQ 37 % 69 E 101 e

6 ACK 38 & 70 F 102 f

7 BEL 39 ' 71 G 103 g

8 BS 40 ( 72 H 104 h

9 HT 41 ) 73 I 105 i

10 LF 42 * 74 J 106 j

11 VT 43 + 75 K 107 k

12 FF 44 , 76 L 108 l

13 CR 45 - 77 M 109 m

14 SO 46 . 78 N 110 n

15 SI 47 / 79 O 111 o

16 DLE 48 0 80 P 112 p

17 DC1 49 1 81 Q 113 q

18 DC2 50 2 82 R 114 r

19 DC3 51 3 83 S 115 s

20 DC4 52 4 84 T 116 t

21 NAK 53 5 85 U 117 u

22 SYN 54 6 86 V 118 v

23 ETB 55 7 87 W 119 w

24 CAN 56 8 88 X 120 x

25 EM 57 9 89 Y 121 y

26 SUB 58 : 90 Z 122 z

27 ESC 59 ; 91 [ 123 {

28 FS 60 < 92 \ 124 |

29 GS 61 = 93 ] 125 }

30 RS 62 > 94 ^ 126 ~

31 US 63 ? 95 _ 127 DEL

NUL 空字元 VT 垂直製表 SYN 同步

SOH 標題開始 FF 走紙控制 ETB 信息組傳送結束

STX 正文開始 CR 回車 CAN 作廢

ETX 正文結束 SO 移位輸出 EM 媒介結束 End of Medium

EOT 傳輸結束 SI 移位輸入 SUB 換置

ENQ 詢問字元 DLE Data Link Escape ESC Escape

ACK 確認 DC1 設備控制1 FS 文件分隔符

BEL 響鈴 DC2 設備控制2 GS 組分隔符

BS 退格 DC3 設備控制3 RS 記錄分隔符

HT 橫向製表 DC4 設備控制4 US 單元分隔符

LF 換行 NAK 否定 DEL 刪除
c語言中char的用法:不可列印字元(Nonprinting Characters)
有些 ASCII 字元是不可列印的。例如退格、另起一行、警報等。C 語言提供了兩種 方法 來表示這種不可列印字元。

第一種方法是使用 ASCII 編碼。例如,ASCII 編碼中,7 用於表示警報:

char beep = 7;

第二種方法是使用特殊符號序列,也就是所謂的轉義字元escape sequences)。參見下表:(

轉義字元含義

\a 警報( Alert (ANSI C) )

\b 退格(Backspace)

\f 換頁(Form feed)

換行(Newline)

回車(Carriage return)

\t 水平製表符(Horizontal tab)

\v 垂直製表符(Vertical tab)

\\ 反斜桿( Backslash (\) )

\' 單引號( Single quote (') )

\" 雙引號( Double quote (") )

\? 問號( Question mark (?) )

\0oo 八進制數( Octal value (o 代表一個八進制數字) )

\xhh十六進制數( Hexadecimal value (h 代表一個十六進制數字) )

給變數賦值的時候,轉義字元必須使用單引號引住。例如:

charnl = ' ';

下面我們詳細學習每個轉移字元的含義。

\a(警報)是 ANSI C89 添加的,用於產生可聽或者可視的警報。\a 產生的效果取決於硬體。一般來說,輸出 \a 會產生鳴響。但是在某些系統,輸出 \a 不會產生任何效果,或者僅僅顯示一個特殊字元。標准明確指出,\a 不應該改變當前活躍位置(active position)。所謂活躍位置,是指顯示設備( 顯示器 、打字機、列印機等等)顯示下一個字元的位置。以顯示器為例,活躍位置就是指游標所處的位置,輸出 \a 不會導致游標移動位置。

\b、\f、、、\t,以及 \v 都是輸出設備控制符。退格符(\b)使當前行的活躍位置後退一個位置。換頁符(\f)使活躍位置跳到下一頁的開端。註:換頁符可用於控制列印機換頁,但不會導致 PC 機的顯示屏換頁。換行符()使活躍位置跳到下一行的開端。回車符()使活躍位置返回當前行的開端。水平製表符(\t)使活躍位置移動若干個位置(通常是8個)。垂直製表符(\v)使活躍位置換若干行。註:\v可用於控制列印機換若干行,但是不會導致PC機的顯示屏換行。

\\、\',以及 \" 使我們可以把 \,' 和 " 用作字元常量。如果要列印以下 句子 :

"\ is called 'backslash'."

我們需要使用如下語句:

printf("\"\\ is called \'backslash\'.\"");

\0oo 和 \xhh是ASCII碼的兩種特殊表示形式。如果想用八進制ASCII碼表示字元,可以在八進制數前面加上 \ ,然後用單引號引起來。例如:

beep = '\007'; /* \007 代表 \a */

打頭的那些0可以省略,也就是說,寫成 '\07' 或者 '\7' 都一樣。無論有沒有打頭的0 ,7 都會被當成八進制數處理。

從 C89 開始,C提供了用十六進製表示字元常量的方法:在反斜桿後面寫一個 x ,然後再寫 1 到 3 個十六進制數字。例如:

nl = '\xa'; /* \xa代表 */

注意:使用ASCII碼時,要注意區分數字4的ASCII碼是52 ,'4' 代表字元 4 ,而不是數字4。此外,盡管 ' ' 和 '\xa' ,'\a' 和 '\007' 是等價的,但是我們應該盡可能使用 ' ' 和 '\a' ,而不要用 '\xa' 和 '\007' 。這是因為前者易懂、便於記憶,而且移植性更高。而後者只對使用ASCII碼的系統有效。和數字字元。例如:字元
c語言中char的用法:字元輸出
printf函數使用 %c 表示輸出字元。因為字元是以 1 位元組整數的形式存取的,所以,如果使用 %d 的話,輸出的會是整數。例如:

/* 這個程序輸出字元以及字元的整數編碼 */

#include

int main(void)

{

charch;

printf("Please enter a character. ");

scanf("%c", &ch); /* 由用戶輸入一個字元 */

printf("The code for %c is %d. ", ch, ch);

return 0;

}

請各位自行編譯執行此程序,查看其執行結果。輸入字元後記得要按回車鍵。

printf函數輸出ch的值兩次,第一次以字元的形式輸出(因為格式限定符為 %c),第二次以十進制整數的形式輸出(因為格式限定符是 %d)。注意:格式限定符只是用於指定數據的輸出形式,而不是用來指定數據怎麼存儲。
c語言中char的用法:字元類型的符號
某些編譯器中,char 默認是有符號的(signed)。對於這類型的編譯器來說,char 的表示範圍通常是 -128 到 127 。而另外一些編譯器中,char 默認是無符號的(unsigned)。對於這類型的編譯器來說,char 的表示範圍通常是 0 到 255 。一般來說,編譯器的使用說明會註明它默認把 char 當作有符號的還是無符號的。

從 C89 開始,我們可以使用關鍵字 signed 和 unsigned 來修飾 char 。這么一來,無論編譯器默認 char 是有符號的也好,無符號的也罷,我們都可以用 signed char 表示有符號 char ,也可以用 unsigned char 表示無符號 char 。

猜你喜歡:

1. c語言中邏輯或的用法

2. C語言程序中什麼是函數

3. c語言中%s的用法

4. c語言中fprintf的用法

5. c語言中switch的用法

4. 在C語言中byte與char的不同

c語言沒有內定的byte類型,起始byte就是 unsigned char;
就是沒有符號的char類型。

5. C語言中,char類型數據佔多少位元組

char 1個位元組

16位編譯器

拓展資料

C語言中的char數據類型

C語言中的char數據類型是一種整數類型(integer type),它的大小被定義為1個Byte。

亦即sizeof (char) ≡ 1

6. c語言字元串轉成byte數組

c語言中沒有byte這種類型,這是計算機中存儲信息的單位。

char 是字元型
byte 是位元組型(0 - 255)
在參與算術運算是char類型會自動轉為整型;如字元A會轉為對應ASCII碼65.

char是用來表示一個字元,而不是一個字,因為一個字要佔用兩個位元組。而存儲一個ANSI字元只需一個位元組。注意,強調是ANSI字元,而不是Unicode字元。因為Unicode要佔用兩個位元組。

byte類型是最自由的一種。它就佔用一個位元組,但沒有定義這個位元組拿來干什麼。char定義為一個Unsigned Byte類型。也就是無符號的一個位元組。它將一個位元組的8位全佔用了。可以表示的數據范圍是0到255之間。

如果你確定處理的字元串是標準的ANSI字元串,那不必轉換也可以直接一個位元組一個位元組地處理。如果要處理的字元串不定或是統一的Unicode字元串則要進行轉換後進行處理。

7. C語言中的char具體用法

char a[]如果從定義看就是存儲著char類型的數組,而char* b就是一個char類型的指針。我們把第一個叫做字元數組,第二個叫做字元指針。

用法是字元數組在初始化的時候,是把字元串裡面的元素復制到數組裡面,包括'',而字元指針則是指向一個常量,所以,不能用b[1] = 'c';這種方式修改b這個字元串,常量是不能更改的,不過可以讓它指向別的字元地址。

(7)c語言charbyte擴展閱讀

關於char占幾個位元組的問題

1、「位元組」byte,「位」是bit ;

2、1 byte = 8 bit ;

char 在Java中是2個位元組。Java採用unicode,2個位元組(16位)來表示一個字元。

char類型賦值

char a = 'a'; //任意單個字元,加單引號。

char a = '中';//任意單個中文字,加單引號。

char a = 111;//整數。0~65535。十進制、八進制、十六進制均可。輸出字元編碼表中對應的字元。

註:char只能放單個字元。

char運算

char類型卻是可以運算的因為char在ASCII等字元編碼表中有對應的數值。

在Java中,對char類型字元運行時,直接當做ASCII表對應的整數來對待。

熱點內容
伺服器機櫃屬於什麼輻射 發布:2024-05-05 18:02:10 瀏覽:335
存儲成本計算 發布:2024-05-05 18:02:10 瀏覽:583
如何把手機改安卓10 發布:2024-05-05 17:39:07 瀏覽:497
我的世界怎麼擴容伺服器內存 發布:2024-05-05 17:19:54 瀏覽:48
java讀取文件字元 發布:2024-05-05 17:15:18 瀏覽:11
三星怎麼應用加密 發布:2024-05-05 17:13:18 瀏覽:152
cad字體在那個文件夾 發布:2024-05-05 17:08:20 瀏覽:331
什麼時候用編譯器 發布:2024-05-05 17:08:20 瀏覽:766
應急救援腳本 發布:2024-05-05 17:08:17 瀏覽:338
我的世界搭建無正版驗證伺服器 發布:2024-05-05 17:03:48 瀏覽:819