回覆列表
-
1 # muyoule
-
2 # EXCEL進階課堂
你的問題是:c語言中"/31"代表的是數字0嗎?
我的理解是:你想問的是,這個轉義符代表的是數字0嗎?
如果你的意思真的是這樣的話,你的這個轉義符寫法是錯的。
請看清楚:"/31"和"\31"這兩者之間有區別的,後者才是轉義符,前者在C語言當中是錯誤的寫法。
第一:什麼是轉義符?轉義符是指用特殊的符號來表示無法直接表示的符號,如回車符,退格符等。
注意:它是用反斜線開頭,後面可以跟上1~3個字元序列,來代表一個特殊字元。
第二:"\31"代表數字字元0嗎?轉義符"\31",後面跟的是兩個數字,透過上表我們可以知道,它代表的是八進位制31.
八進位制31,轉成十進位制為25,它代表的是哪個字元呢?
透過查詢ACSII表,我們可以知道,十進位制25,代表的是↓。
於是我們的結論是:"\31"不代表數字字元0。
第三:程式驗證第四:如果用轉義符表0字元應該如何寫?‘0’的ASCII值,用十進位制表示為 48 。 如果用轉義符來表示的話,可以用兩種方式來寫。
其一:表示為‘\60’
其二:表示為‘\x30’
程式驗證:
以上便是嚴Sir課堂對於這個問題的回答。
‘/31’ 是ASCII碼中的Unit Separator。是一個不可見字元。
這個字元的作用:作為文字檔案中欄位的分隔符。
CSV檔案一般用逗號或者Tab等可見字元來分隔,其有一個不好處就是很多文字中這些可見字元有可能是資料的一部分,所以在讀和寫的時候如果不轉義會有歧義,所以一般情況下我們會用逗號,雙引號的組合來區別欄位。但是讀取這種檔案一般比較複雜,而且當出現類似這種 “,”””,,”” 欄位的時候,我們也搞不清楚到底到哪算是一段。
而用’/31’ 我們可以非常清晰地指定欄位分割,因為它是不可見的,而且是專門定義的。配合’/30’(資料條分隔符)我們可以建立和讀取完全沒有歧義的文字資料。
ASCII中數字是從’/48’開始的,所以0是’/48’。
另外這個是獨立於語言的,也就是不僅在C語言,其它語言中這些char代表的都是一個意思。
有空可以看看ASCII表,就清楚了。