1樓:巨之說
問題1:
while (*t!=0) 等價於while (*t!='\0')
因為'\0'的ascii碼是整數0,所以'\0'寫成整數形式時,就是整數的0。
問題2:
字元的0表示為'0',整數的0表示為0。
'\0'的ascii碼是0,所以'\0'與整數0有時候等價。正如'a'當做整數用時,就是65一樣。
'0'的ascii碼是49,所以'0'當作整數用時,等價於整數49。
字串結束標記就是'\0'。
null代表空指標,是一個符號常量。有的書上,用'\0'代表空指標,實際上不規範。
有問題,再追問。
追加回答:
邏輯的0就是「假」,因為c語言無專門邏輯型資料,故用整數的0來代表。
'/0'是錯誤的寫法,'\0'才是正確的。
2樓:不啷個行些
以上這個程式,ss,aa表示的是兩個陣列,*t 和*s 分別是指向這兩個陣列的指標。
樓主記住,在陣列裡面 \0表示結束,只要這個指標指向了它,指標就跳出了,就不再指向這個陣列了。 ,\0後的字元也就不再輸出了。你說的串結束標誌也就是 \0
在你這個while迴圈中,whlie(*t!=0)並不會永久迴圈,因為這是在邏輯中,0表示假,當while中判斷出是假,那就會跳出迴圈,繼續執行下面的語句。
你們老師說的字元0 它是一個字元,在c語言中用char定義,ascii中它的值是48,就跟a的值是97一個道理;但數字0它是一個數字,用int定義的。只有用char定義的字元才有ascii碼值。
3樓:手機使用者
我才5年級 ok?
在c語言中字元與數字的有關問題:0與『0』的區別
4樓:匿名使用者
一、資料型別不同
1、0:代表數字0。
2、『0』:代表字元0。
二、計算能力不同
1、0:具有計算能力。
2、『0』:是不具計算能力的文字資料型別。
三、記憶體儲存不同
1、0:由數字、小數點、正負號和字母e組成,用字母n表示。數值型資料的取值範圍是:
-0.9999999999e+19+到0.9999999999e+20,包括正負號、小數點和字母e在內,其長度最大20位。
2、『0』:包括中文字元、英文字元、數字字元和其他ascⅱ字元,其長度(即字元個數)範圍是0-255個字元,即0x00至0xff。
5樓:
請注意 ascii的編碼
字元 對應的ascii碼(10進位制)
'0' 48
'1' 49
'2' 50
'3' 51
......
'8' 56
'9' 57
輸入是字串"32486",
要把這個字串裝換為數字
3*10000 + 2*1000 + 4*100+8*10+6個十百千萬 位上的 數字 怎麼來?
例如 萬位 的3
要把字元'3' 轉為 數字 3
ascii表裡 '0' 到 '9'是相鄰、連著的'1' 比 '0' 大 1
'2' 比 '1' 大 1 '2' 比 '0' 大 2所以 '3' - '0' 就得到'3'對應的數字3,再來看'3' - 0是多少 ,'3' 的ascii碼是 51 ,51 - 0 等於 51顯然 不對
注意 字元 在記憶體中是數字 字元型是 特殊的整形
6樓:
肯定不同呀,0的值還是0 而'0'的值是按它的ascii碼值來算的,注意ascii表示的都是字元
7樓:
0是數值型,而『0』是字元型,兩者在資料型別上不同
如果都用十六進位制表示,數值0表示為0x00,字元'0'表示0x30(可以查ascii碼)
在c語言中,會檢查資料的型別並有專門的關鍵字,數值型的如int、long,浮點型的如float、double,字元型的如char,區分這些型別是瞭解c的第一步。
8樓:匿名使用者
**貼多一點吧。你的意思倒是明白了。
9樓:匿名使用者
一個是數字0,一個字元0。
10樓:小八
'0'表示字元0
0表示整數0
他們的ascll碼不同
11樓:虎光牆
0就是數字,'0'是字元
c語言中字串中,0和\0什麼區別
12樓:印信詹胭
0和'\0'
的字面值都為整數0;
可以用來表示字串結束標誌,注意和'0'的區別
13樓:充連枝饒亥
因為c語言中沒有字串這種資料型別,只有char字元型別,在c語言中所謂的字串其實是char陣列,陣列最後一個元素加上「\0",表示字串結束,這是一種字串的表達方式。
14樓:太叔秀雲邵鶯
c語言中
『0』和
'\0'沒有關係
1,字串『0』代表字元的0
2,'\0'代表數陣列或者
字串的結束字元
15樓:沙寄竹荀茶
0是數值型,而『0』是字元型,兩者在資料型別上不同
如果都用十六進位制表示,數值0表示為0x00,字元'0'表示0x30(可以查ascii碼)
在c語言中,會檢查資料的型別並有專門的關鍵字,數值型的如int、long,浮點型的如float、double,字元型的如char,區分這些型別是瞭解c的第一步。
請問 c語言中「\0」與null 的區別
16樓:百度使用者
\0是字串後面自動新增的字元,佔一個位置。
而null作為c語言中的保留字,使用來對迴圈等進行判斷的。例如if ***=null
end明白了麼,如果有疑問你可以給我發郵件,[email protected] 我儘量解答。
17樓:超超
對於宣告以後未賦值的數值型別變數則它們的預設值為0
null關鍵字被用來作為variant子型別,它說明變數不包含有效資料。null是將null值顯式地賦值給一變數的結果,也可能是包含null的表示式之間的任何運算的結果謝謝
18樓:百度使用者
\0 \為轉義符,後跟數字為八進位制,\0就是表示數字0null在標頭檔案的定義也是0,沒區別。
它們指的都是ascii字符集中的第一個字元,標誌「空」的一個狀態字。
while(*pf)
while(*pf!=0)
效果也一樣,都是判斷指標為空(假)做為終止迴圈的條件。
指標這種用法一般是在呼叫函式中,會傳遞一個指標,然後返回已指向目標的指標,使用者通過該指標就可以操縱所需功能了。如果調函式失敗,返回的就是空指標。
這可指導使用者,對失敗情況做另外的處理。
19樓:橡皮
一般null實際是 (void *)0,經常用於指標初始化,代表不指向任何有效儲存區。
'\0'是一個字元,代表空的字元,如此而已,呵呵。
補充點,注意區分null和nul
20樓:
\0表示字串的結束符
null表示空常用於資料結構的數....->..=null
c語言中字串結束符'\0'就是0. 這句話有什麼依據嗎
21樓:
'\0'就是8位的00000000,因為字元型別中並沒有對應的這個字元,所以這麼寫。在數值型別裡就代表數字0。
補充:這個你要去學下基礎的,數值型別儲存時,最高位決定正負號,其他位都為0可不就是0了麼?
'\0'是轉譯字元,意思是告訴程式,這不是字元0,我要的是數字0的2進位制直接放進來,因為acsii碼的0可不是00000000
22樓:傲世修羅王
當然有依據,這是c語言設計者規定的。已成事實,沒什麼好爭辨的,就像飛機要在天上飛一樣。
23樓:匿名使用者
當然有,這是ascii值為0的特殊字元,別跟null混了就行 0.0
24樓:長巷煙雨
\0』的ascii碼值為0.
c語言裡這個空格鍵跟'\0'到底啥區別啊?
25樓:自我程式設計
空格是空格,結束符0是結束符0,兩者不對等。
你貼的那個圖是不是講的scanf輸入,scanf這個函式預設是將空格作為分割符號,所以你輸入
「how are you」它是當做三個字串來識別的分別以空格來分割。
至於你說的二維字元陣列初值,用大括號巢狀每一行套一個括號,和只用一個大括號,都是一樣的。只不過用大括號把每行分開,可以單獨對某一行區域性賦值。
實際上二維陣列是給你看的,在計算機眼裡都是一維陣列。a[5][5]在記憶體中其實就是連續的25個地址(從地址分佈上來說和a[25]沒區別)。你可以試試取首地址&a[0][0],然後依次++,可以一直取到最後一位。
所以直接用一個大括號,就是按照連續地址賦值。
你可以試試下面**,列印就是一樣。(重點是printf語句輸出字串是找到第一個結束符號0為終止,沒有0就會一直往後面輸出直到越界)。
char a[2][5]=;
char b[2][5]=,};
printf("%s\n",a[0]);
printf("%s\n",b[0]);
26樓:半田明月
'\0'的ascii碼值是0,不顯示任何東西。
空格' '的ascii碼值是32,顯示一個空。
scanf讀取字串會考慮空格,但是gets不會。
27樓:
「這兩個陣列輸出是一樣的」?
不知道你是怎麼輸出的。
作為字串時它們是不一樣的,一個是結尾標誌,一個就是空格符號。
作為字元顯示時它們都是看不見的圖形,比如printf("%c",' ');和printf("%c",'\0');它們顯示在螢幕上是看不見的,所以你就認為它們一樣。
它們是不一樣的,是不可以替換的。
字元0和整數0有區別麼???求高手 求詳解
28樓:八哥說科技
1、型別符號不同:
字元『0』用字元變數儲存,需要使用型別符號 char 來表示,而整數0用整型變數來儲存時,使用 int 型別符號來申明。
2、儲存單元不同:
字元「0」在記憶體單元中佔用 1 個位元組即8位來表示,而整型變數儲存 0 在16位字長的機器上,基本整型的長度也為16位,即用 2 個位元組**儲存。
3、內部儲存數值不同:
char用於c或c++中定義字元型變數,只佔一個位元組,取值範圍為 -128 ~ +127(-2^7~2^7-1),字元「0」對應的ascii 碼為 0011 0000即 48。而,整型 0 的內部儲存的值為 0x0000。
c語言中在字串的結尾加0還是'\0'?有區別嗎?
29樓:匿名使用者
有區別,在c中'\0'為轉義字元,為字串結束標誌。在我們輸入字串時,其實當輸入結束時,編譯器會自動加上'\0'。
30樓:匿名使用者
加'\0',是有區別,其中的'\0'為轉義字元,其ascii值為0,
而數字 0(字元型) 的ascii值為0+48=48 ,可以用printf("%d %d %d",'\0','0',0);
語句來檢視
31樓:匿名使用者
兩者bai是相同du的。
例:zhichar *str="abcd";
memset(str+3, 0, 1) ==> str="abc"
memset(str+3,'\0',1) ==> str="abc" 此二
者等價dao
但memset(str+3,'0',1) ==> str="abc0"
從另一專
個角度屬
(int)(0) = 0
(int)('\0') = 0
(int)('0') = 48
C語言0X0X0X0X0X0X怎麼運算可以變成0X0X0X0X0X0X
16進位制轉換為十進位制數字,然後 16n n 3位上的數 2,這樣就能做到 無畏無知者 不明白你要什麼,什麼3位 2位的 按 0x31 0x32 0x33 0x41 0x42 0x43,變成0x21 0x22 0x23 0x21 0x22 0x23 0x31 and 0x0f 0x20 請問c語言...
C或C 語言結束時會有“return 0”這個結尾,為什麼一定要return0呢?return1或2不行嗎
如果是程式的返回值,沒有renturn 0 語句也不會提示編譯錯誤,不過按規範還是加上好。但如果是編寫函式的話,要求有返回值則要加上return 變數名 這是main 函式執行完時告知系統是否執行成功。一般用return 0表示 執行成功。 可以的,因為主函式main也是一個函式。若main定義為i...
在C語言中,a為0時,表示式a 0和a 0的值為 真 嗎為什麼
a 0 是一個賦值語句 a 0是一個邏輯表示式,a為0時,說明的是後者。 一個等號和兩個等號意義不一樣的,第一個 是賦值,a的值會變,第二個 是判斷,他是邏輯運算子,意思是 如果a等於0是真的話,一般會在if等帶選擇性的語句 現。 不太明白你的問題。a 0是賦值操作 a 0是判斷 a是否等於0 的表...