Re: [問題]問個c語言問題

看板Electronics作者 (everlasting)時間19年前 (2007/02/25 16:50), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串5/7 (看更多)
※ 引述《adddream (哆啦A孟)》之銘言: : 了解 : 真是太感謝您囉 : 不過想再追問一下 : (1)為捨'\0'是表示false阿 更精確一點,在C/C++及一些其他語言中 'x'代表的型態是int (不是char*) 所以應該要說"\0"比較適當一點 "\0"的意思就是使該字元的ascii code值為\後面的數字 C/C++中也有一些方便記憶的序列,例如\n,\r,\b... 最早的C是沒有boolean的型別的 所以用int來代表真假 0為假,非0為真 : (2)還有就是通常在陣列裡頭結尾(不管是指哪種陣列)不都是會加上'\0'嗎? : 還是說是我記錯了@@' 這只有C-like string才是這樣 這只是為了方便以最小的記憶體操作字串的技巧 你高興自創一個不用\0的string也可以 只是就不能用string.h裡面的函式啦 另外"\0"可以想成是signature,通常用來代表特定區塊的邊界 譬如說FAT32分割區中會以0xAA55代表分割區的開始 要注意的就是通常只有"文字"資料才會"只"利用signature來切割 (FAT32其實還有其他欄位去進行辨認) 如果你的資料是binary形式的 通常就會使用類似HTTP協定加註資料長度的方式來辨別區塊的邊界 要不然就要使用strip的方式,將衝突的signature先替換掉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.204.89 ※ 編輯: invalid 來自: 61.231.204.89 (02/25 16:58)

02/25 17:20, , 1F
可是我用gcc compile: if("\0") printf("y");
02/25 17:20, 1F

02/25 17:21, , 2F
會印出『y』。
02/25 17:21, 2F

02/25 17:21, , 3F
用:if('\0') printf("y");就不會印出y。
02/25 17:21, 3F

02/25 17:21, , 4F
所以'\0'應該才是false。
02/25 17:21, 4F

02/25 17:30, , 5F
C_and_CPP 那裡討論會比較合適喔!
02/25 17:30, 5F
文章代碼(AID): #15uKtl_0 (Electronics)
討論串 (同標題文章)
文章代碼(AID): #15uKtl_0 (Electronics)