[問題] 新手關於字元的問題

看板C_and_CPP作者 (微風輕吹)時間13年前 (2011/04/22 13:13), 編輯推噓4(4018)
留言22則, 4人參與, 最新討論串1/2 (看更多)
請問為啥 #include<iostream> using namespace std; int main() { cout<<'10'<<endl; } 執行後會出現 12592 呢? 而 '10' 中的 10 如果改成 0~9 就是 0~9,@@? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.229.247.84

04/22 13:18, , 1F
"10" 兩個字元要用字串,字串要用雙引號。
04/22 13:18, 1F

04/22 13:49, , 2F
恩恩,我知道''裡面要一個字元才能正常顯示
04/22 13:49, 2F

04/22 13:50, , 3F
但是也想弄清楚為啥''裡面放多字元也會有值
04/22 13:50, 3F

04/22 13:51, , 4F
如果是 Dev C++, 請養成給編譯器 -Werror 選項的習慣
04/22 13:51, 4F

04/22 13:51, , 5F
別忽視任何警告
04/22 13:51, 5F

04/22 13:57, , 7F
我確信,95%以上的人,不會這樣寫
04/22 13:57, 7F

04/22 14:00, , 8F
我是用code::blocks 10.05
04/22 14:00, 8F

04/22 14:03, , 9F
有興趣可以翻翻規格書 6.4.4.4
04/22 14:03, 9F

04/22 14:03, , 10F
code::blocks 預設也是同樣編譯器
04/22 14:03, 10F

04/22 14:05, , 11F
補充 0.0 我說的是 C99
04/22 14:05, 11F

04/22 14:08, , 12F
在 6.4.4.4/10 你這樣的行為可以算是未定義的, 結果因
04/22 14:08, 12F

04/22 14:09, , 13F
實作而異, 沒人說得準
04/22 14:09, 13F

04/22 15:01, , 14F
為什麼要挑戰不合語法的程式 講出來的話不合語法也是沒人
04/22 15:01, 14F

04/22 15:02, , 15F
聽得懂 就各自解讀了阿 跟你寫的程式同義
04/22 15:02, 15F

04/22 15:03, , 16F
精確一點來說,這是符合syntax的,C的特色就是可以寫出
04/22 15:03, 16F

04/22 15:03, , 17F
一堆符合syntax,但很難讀懂的東西
04/22 15:03, 17F

04/22 15:21, , 18F
這包含了隱式轉型的動作, 由 int 降轉, 如果來源不夠
04/22 15:21, 18F

04/22 15:25, , 19F
大(因為cout只能處理窄字元)無法映射到合法字元, 就會
04/22 15:25, 19F

04/22 15:25, , 20F
未定義
04/22 15:25, 20F

04/22 16:22, , 21F
發現上面講錯, 它直接 call operator<< 整數版本了...
04/22 16:22, 21F

04/22 16:53, , 22F
晚點po實驗文
04/22 16:53, 22F
文章代碼(AID): #1DiGw7dK (C_and_CPP)
文章代碼(AID): #1DiGw7dK (C_and_CPP)