關於C語言中的char



贊助商連結


流浪者~MIT
2002-11-21, 09:48 PM
請問
我宣告
char ch;
ch=0;跟
ch='0';
這兩ㄍ有一樣ㄇ??

贊助商連結


琥珀
2002-11-21, 09:52 PM
char i='a';

a當作字元。

流浪者~MIT
2002-11-22, 02:15 PM
那我問ㄉ題目
char ch;
ch=0;
ch='0';
這兩ㄍ有一樣ㄇ??

zcecil
2002-11-22, 03:21 PM
最初由 流浪者~MIT 發表
那我問ㄉ題目
char ch;
ch=0;
ch='0';
這兩ㄍ有一樣ㄇ??

建議你 先把C 的基本資料類別意義搞清楚一點。

不過答案是沒有一樣。

gwochern
2002-11-22, 06:33 PM
最初由 流浪者~MIT 發表
那我問ㄉ題目
char ch;
ch=0;
ch='0';
這兩ㄍ有一樣ㄇ??

''在c的語法是字元的意思
""在c的語法是字串的意思
沒有的話是數值的意思
所以你要先搞清楚字元字串數值在c的語法是什麼,及表代什麼意義

而char是1byte大小
'0'是字元在acsii為30 16進制,所以ch='0' 其ch內含真正的值是0011 0000
而ch=0,其ch內含真正的值是0000 0000 其ascii 0為null,所以ch為null

不信你可以試試下面的程式

#include <stdio.h>
main()
{
char ch;
ch=0;//數值
printf("%x\n",ch);//%x 是16進制表示法
printf("%c\n",ch);
ch='0';//字元
printf("%x\n",ch);
printf("%c\n",ch);
}

流浪者~MIT
2002-11-22, 10:30 PM
------------------------
if(kbhit())
ch=getch();
else
ch=0;
while(ch=='0')
{
xxxxx
break;
}
------------------------
意思是說(假設程式是無限迴圈會回到最上面)
當我按下鍵盤上面的0
就會進入while迴圈
接下來可是我沒有按下任何鍵所以ch=0
可是ch=0不符合while條件判斷(ch=='0')
所以不會進入while迴圈

>>>我這樣解釋對ㄇ???

gwochern
2002-11-22, 10:57 PM
最初由 流浪者~MIT 發表
------------------------
if(kbhit())
ch=getch();
else
ch=0;
while(ch=='0')
{
xxxxx
break;
}
------------------------
意思是說(假設程式是無限迴圈會回到最上面)
當我按下鍵盤上面的0
就?..

if(kbhit())
ch=getch();
else
ch=0;
while(ch=='0')
{
xxxxx
break;
}
這樣是沒錯,但我通常不會在令ch=0,因為就算沒else ch=0;也不會進入while
廻圈,這是會使compile後程式碼加大,浪費時間,與儲存空間,但這是你的思想,我不會說什麼,只能建議
最後給你建議,以後寫程式作業或其它,先自己寫好,在跟看同學如何寫,比較那一種寫的好,這會使你功力大增,你會發別人的想法是什麼,自己的想法是什麼
因為我自己碰過,寫一個大程式,我自己RUN的時間要2小時,別人只10分鐘,
所以學程式不單只是學語法,還要學如何寫是最好,最高級的程式...

carage
2002-11-23, 03:58 PM
ch=0? 請查一下ASCII表
這應該會把ch的值定為表中0的值(a好像是65, 65以前好像都是符號)

wenyic
2002-11-23, 10:07 PM
最初由 carage 發表
ch=0? 請查一下ASCII表
這應該會把ch的值定為表中0的值(a好像是65, 65以前好像都是符號)
沒錯

#include<iostream.h>
void main()
{
char ch;
ch=65;
cout<<ch;
}

跑出來的結果會是a