→ hilorrk:(1)c2 + '0' == c3 04/25 15:03
→ hilorrk:(2)char和int只差在儲存資料的大小 內容是啥不歸他管 04/25 15:04
→ ccs5271:(1)有些編譯器會說資料長度不同 轉型後就不會有訊息了 04/25 15:06
→ m13m13m:請問h大 為什麼(1) 是資料轉型嗎? 規則是甚麼阿... 04/25 15:09
→ hilorrk:也會有資料轉型的問題 有些compiler會報warning 04/25 15:10
→ hilorrk:不過之所以可以這樣比是因為char存文字是以ASCII碼存的 04/25 15:10
→ m13m13m:所以c2 + '0' 東西是 char資料型態嗎? (頭昏...) 04/25 15:11
→ hilorrk:不是哦 如果以(1)這個例子來看 他會先把'0'(char:48) 04/25 15:13
→ hilorrk:提升成(int 48) 然後跟c2加起來變成(int 51) 04/25 15:13
→ hilorrk:把c3的'3'(char:51)提升成(int:51) 兩個再拿來比 04/25 15:14
→ hilorrk:最後就是(int:51)和(int:51)比了 04/25 15:14
→ m13m13m:挖~ 怎麼提升的阿? 只要加上int資料型態的變數 就可以了 04/25 15:14
→ m13m13m:+ (變數) ps:int 變數 04/25 15:15
→ hilorrk:轉換的規則可以查一下手上的書或cplusplus 應該都會寫 04/25 15:15
→ hilorrk:這是C/C++的隱式轉換 有他一定的規則 04/25 15:16
→ m13m13m:請問如果我要把c2裡頭的3 拿出來成int 來用可以嗎? 04/25 15:16
→ hilorrk:不懂? c2不是本來就是int嗎..|| 04/25 15:20
→ m13m13m:說錯 是c3 因為我得用char來存integer可是我卻需要計算 04/25 15:22
→ m13m13m:integer的資料 (int)c3 好像不行? 04/25 15:22
→ m13m13m:thank you 我正在念 implicit type conversion. 04/25 15:38
→ hilorrk:如果是要把c3的'3'存成整數的3 那就反過來c3 - '0'就行了 04/25 15:57
→ hilorrk:至於是用int還是char存 僅在資料長度不同的差別而已 04/25 15:57
→ hilorrk:你char a=3; char b=3;和 int a=3;int b=3;算出來除了資料 04/25 15:58
→ hilorrk:型態一個是char一個是int外 裡面存的東西是一樣的 04/25 15:58
→ wudidog:事實上,你只要把這兩個變數想成不同長度的int就好了 04/25 19:38
→ wudidog:不同長度的int互相比較,有什麼危險?應該不難想到 04/25 19:40
→ wudidog:一個只能表示0和1的型態,和一個能表示1到100的變數 04/25 19:41
→ hilorrk:的確 比起char、int這種東西 FP的轉換相對比較容易出錯 04/25 19:42
→ hilorrk:最容易犯的錯就是拿double來比較相等..這是不精準的 04/25 19:42
→ wudidog:的確可以比較,但轉型後,也幾乎沒有比較的價值 04/25 19:43
→ hilorrk:尤其是在做過乘、除法運算之後 04/25 19:43