請問AnsiCompare的 0/1 問題,跟if的true/false的對映問題 |
答題得分者是:Stallion
|
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
C++的if ( expression ) 條件式,其中的 expression 只要不為0,不管是正值或負值,結果都為真。
查了一下 int __fastcall AnsiCompare(const AnsiString& rhs) const; De scription Compares this AnsiString to rhs, with case sensitivity. The compare operation is controlled by the current Windows locale and is not necessarily the same as using the AnsiString comparison operators. AnsiCompare is based on a locale-specific collating order. The return value is shown below: Condition Return Value S1 > S2 > 0 S1 < S2 < 0 S1 = S2 = 0 因此原書的寫法應該有誤謬~要寫成 if ( orgStr.AnsiCompare(deststr) == 0 ) { ShowMessage("orgStr equals deststr); } ===================引 用 neoart 文 章=================== 各位先進大家好 敝人最近在摸bc6, 有一個新手級的疑問: AnsiCompare的結果為"0"的話,表示兩字串相等, 可是一般if的條件來說,非0為true,0者為false 書上的例子是 if(orgStr.AnsiCompare(deststr){ ShowMessage("orgStr equals deststr); } 這兩者是不是有衝突?各位先進對這點的看法如何? 先在此說一感謝了
編輯記錄
Stallion 重新編輯於 2007-06-03 22:25:42, 註解 無‧
|
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
其實。它有它的用法。
這是有歷史的。 通常我們寫都會 if (true)..... 那我們換個角度。如果說有個 flag 它叫做 end. 也就是 bool end 當 走到檔案結束時 end == true 那這時候。我們是不是都會想用 while (!end) or if (!end) 這種做法? 而 strcmp 也是用這種想法產生的。 有時候去想當年的歷史,就會知道為什麼這樣玩了。只是新加入者會比較累一點。 ===================引 用 neoart 文 章=================== 各位先進大家好 敝人最近在摸bc6, 有一個新手級的疑問: AnsiCompare的結果為"0"的話,表示兩字串相等, 可是一般if的條件來說,非0為true,0者為false 書上的例子是 if(orgStr.AnsiCompare(deststr){ ShowMessage("orgStr equals deststr); } 這兩者是不是有衝突?各位先進對這點的看法如何? 先在此說一感謝了 |
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |