作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [請益] 又一個Warning的問題
時間Tue Oct 7 19:31:40 2008
※ 引述《ric2k1 (Ric)》之銘言:
: ※ 引述《michael0728n (蒜˙遠古)》之銘言:
: : 我在compile時跑出[Warning]'\040'跟[Warning]'\241'
: : 本來以為是複製貼上的問題
: : (心理測驗的答案用複製的)
: : 結果把錯誤的地方重打還是一樣
: : 經過測試後"餐"這個字顯示不出來= =
: : 是M$輸入法的問題嗎??
: 因為根據我的測試, "餐" 這個字的 big5 code 是 -64 92,
: 而 92 所對應的 character 是 '\'... 所以會抱怨接下來的 escape 字元不認得...
: 你可以試試看:
: char c1 = -64;
: char c2 = 92;
: cout << c1 << c2;
: 就像 "功" 這個字的 code 是 -91 92 一樣... (功字事件)
: ---
: M$: 郎毋係挖台ㄟ... 裡那顆斯也是這樣D
寫個程式給大家參考一下:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
char ch;
do {
ch = getche();
cout << endl << "code = " << int(ch) << endl;
} while (ch != 'q');
system("pause");
}
你可以輸入中文字, 或者是按任何鍵...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.130.118
1F:→ saevia:不懂? 10/07 23:25
2F:→ ric2k1:執行看看就知道啦... 10/07 23:33
3F:推 BloodyDuke:輸入英文字母為什麼會留在螢幕上? 10/09 22:52
4F:→ ric2k1:因為你輸入英文字, 所以他會留在螢幕上啊! 10/10 00:48
5F:→ ric2k1:而中文字則是被拆兩半, 印出來的變成 ASC(-64),ASC(92)='\' 10/10 00:49
6F:推 BloodyDuke:喔,可是為什麼不是直接跑出而-64,endl,92 10/12 00:29
7F:→ BloodyDuke:而會多出一個不是int的\,才又跑出92呢? 10/12 00:31
8F:→ BloodyDuke:又為何又會再cout一個92(感覺92已被\吃掉了阿) 10/12 00:35
9F:→ ric2k1:你可以輸入一般的英文字母看看... 10/13 00:24
10F:→ ric2k1:你會看到的順序是: 輸入的英文字母先印出來 (因為你打的呀) 10/13 00:25
11F:→ ric2k1:然後 endl, 然後 再印出 code = (英文字母的 ASCII code) 10/13 00:26
12F:→ ric2k1:至於如果你輸入 '餐' 這個字的話, 就好像你在"鍵盤"上 10/13 00:27
13F:→ ric2k1:連續輸入 char(-64) 以及 char(92) = '\' 兩個字元. 10/13 00:28
14F:→ ric2k1:請多實驗幾種狀況, 我也不知道要怎麼說才能更明白了... 10/13 00:29
15F:→ ric2k1:不過建議大家一定要弄懂, 期中考一定會考這種觀念要弄清楚 10/13 00:30
16F:→ ric2k1:的東西 10/13 00:30
17F:推 BloodyDuke:恩瞭了,又原來這是重要觀念阿(還以為自己問的不重要) 10/13 21:55