Board logo

标题: 你的編譯器識字嗎? [打印本页]

作者: bush     时间: 2005-1-28 00:00    标题: 你的編譯器識字嗎?

只需要看一看下面這個程序運行結果就知道了!——先別吱声(尤其是用TC的朋友),拿起你手中能找到的所有編譯器,都來編譯、運行一下。然后告訴我:你的結果、所使用的編譯器、所在操作系統。——還愣着干什么?趕快動手!
#include <stdio.h>
int main(void)
{
printf("hello world!——盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒.");
   return 0;
}
嘿嘿,保持點儿神祕感,等你做完了我再公布答案:


[ Last edited by bush on 2008-1-25 at 12:24 PM ]
作者: JonePeng     时间: 2005-1-28 00:00
呵呵,Bush大哥,我在Win98下用TC编译,输出“辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬.”
其实是printf()那行中的字符“\”作怪,“\”后面跟一个ASCII码的扩展字符,TC编译后便输出那个扩展字符,而“\”没有输出,因此一连串ASCII码的扩展字符连在一起又变成另外的中文。
作者: bush     时间: 2005-1-28 00:00    标题: 話題由來

這是我在看Watcom說明書時寫的一個測試程序。當時有個參數引起了我的注意:它可以把字符按
日韓或台灣字處理,具體解釋是亞洲字符是雙字節的,高位字符和低位字符共同拼接成為一個
「字」,因此要防止把某些「字」的低位字符誤認為(\)或("。我沒有日韓系統支持,就把GB字庫
中的所有低位字符為『\』的「字」挑出來,驗証此功能。順便檢測一下其它編譯器。
結果發現,Turbo C運行結果錯誤。原因是誤認了'\'作轉義符,相鄰漢字的高位字符重新組合
成新字(面目全非)。而Borland C++ 5.5、VC 6.0運行結果正確。……

[此贴子已经被作者于2005-1-28 22:38:38编辑过]



作者: JonePeng     时间: 2005-1-29 00:00
哦,原来如此,那就是说转义字符“\”的功能在Borland C++ 5.5和VC 6等高级版本中得到修正。毕竟,这些高版本的C编译器都是在Windows下运行,而TC是80年代DOS下的编译器,TC在那个年代还没考虑到对中文的支持性啊,尤其是GB大字符集里的繁体字和日韩字。
作者: yyz985     时间: 2005-1-29 00:00
正常自己做的CEditor解释器:cl 12.0链接器:linker 6.0