查看單個文章
舊 2006-08-23, 08:36 PM   #5 (permalink)
getter
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

我的解釋
-------------------------------------------------------
int I;
I = 5;
可以改寫成 int I = 5;
是因為 int 是整數宣告,以 DEV-C++ 的 int 整數是佔用 4 Bytes
可以表示數值範圍是 2147483647 ~ -2147483648 的範圍
而古老的 Turbo-C 的 int 整數是佔用 2 Bytes
可以表示數值範圍是 32767 ~ -32768
當 I = 5; 是把 I 的數值指定成 5,並未超過 int 的數值範圍,
所以OK。
-------------------------------------------------------
char I;
I = 'A';
可以改寫成 char I = 'A';
是因為 char 是字元宣告,以 DEV-C++ 的char 是字元是佔用 1 Bytes
以數值的表示範圍是 0 ~ 255,也是 ASCII 的範圍所在 (ASCII 碼是 0 ~127)
當 I = 'A'; 是把 I 的數值指定成 65 既是 A 字元,並未超過
char 的數值範圍,所以OK。
而 A 的 ASCII 碼的值為 65 剛好是 1 Bytes 的大小故可以。
一個英文字母或符號(半形)使用 1 Bytes 來表示,但是全形符號
就佔用 2 Bytes。
此外 I = 5; 跟 I = '5'; 是完全不一樣的
I = 5; 給是數值的 5
I = '5'; 給是字元的 5 (ASCII 碼為 53)
-------------------------------------------------------
char J[100] = "Hello";
一開始宣告 J[100] 並給予初值 "Hello";
因為 char J[100] 指的是 J 字元變數陣列容量有 100 個字元,
編號從 J[0] ~ J[99] 共佔 100 Bytes,當 J[100] = "Hello";
是依序從 J[0] 開始放自元把 Hello 放完並在最後自動補上 '\0'
示意如下︰
以自元來看是
J[0]='H',J[1]='e',J[2]='l',J[3]='l',J[4]='o',J[5]='\0'
如果是 ASCII 碼
J[0]=72, J[1]=101,J[2]=108,J[3]=108,J[4]=111,J[5]=0

'\0' 在 C/C++ 中表示字串得結尾,表示該字串到該自元結束。

所以 J[100] = "Hello"; 的 J 用了 100 Bytes 但是 "Hello"; 在這
J 變數中只用了 6 Bytes

當下達 cout << J; 是把整個 J 印出來,固畫面得到 Hello,
但是 cout << J[1]; 是把 J[1] 的位置內的字元印出來,固畫面得到 e。

但是
char J[100];
J[100] = "Hello";
就不行了,因為 char J[100]; 之前解釋過了,但是 J[100] = "Hello";
此時就錯了因為 J[100] = "Hello"; 的 J[100] 是指 J 的 第101個位置
,而且只能給一個字元。

實際上 char J[100]; 後的 J 範圍是從 0 ~ 99 共 100 個,既是 J[0]
~ J[99] 那 J[100]可是會只到別的記憶體位置,導致程式出錯的。

這時只好一個字元個字元給︰
char B[100];
B[0] = 'H';
B[1] = 'e';
B[2] = 'l';
B[3] = 'l';
B[4] = 'o';
B[5] = '\0';

才能給進去。給字元的時候一定要用 'H' 而不是 "H",因為
'' 表示是裡面是字元,"" 表示字串,此外'Hw'時,也些編譯
器會只抓 H 或是 w 所以 '' 以一個半形符號為安全。

除了一個一個字元給之外,可以用字串函數 strcpy(); 來解決
語法 strcpy(目的,來源);
例 :
char C[100];
strcpy(C,"Hello");

這樣就行了,字串函數 strcpy(); 是標頭檔 string.h 裡的函數指令
要用 strcpy(); 時加在以下的地方:
#include <stdio.h>
#include <string.h>
__________________
在「專業主討論區」中的問題解決後,要記得按一下 http://forum.slime.com.tw/images/stamps/is_solved.gif 按鈕喔,
這是一種禮貌動作。

一樣是在「專業主討論區」中發問,不管問題解決與否,都要回應別人的回答文喔。
不然搞 [斷頭文],只看不回應,下次被別人列入黑名單就不要怪人喔。

天線寶寶說再見啦~ ... 天線寶寶說再見啦~

迪西:「再見~ 再見~」

Otaku Culture Party 關心您 ...
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖