2014-10-02 29 views
1

下面兩行,約islower判斷()isupper(),由Mike Banahan (Link: Section 9.3)在在C書同款給出:在C中,對於islower()和isupper(),一個(實現定義的?)字符參數可能有多真?書上說這樣

islower判斷(INT C)

如果c是小寫字母的字母,則爲true。同樣對於 執行定義的字符集不會返回 真實結果來自任何iscntrl,isdigit,ispunctisspace。在 C語言環境中,這些額外的字符集是空的。

isupper(INT C)

真,如果c是一個大寫字母字符。另外 對於實現定義的字符集不爲真 返回來自中的任何一個的真實結果iscntrl,isdigit,ispunctisspace。 在C語言環境中,這些額外的字符集是空的。

你能解釋一下怎麼能一個字符,如果它不從任何iscntrl判斷,ISDIGIT的返回true結果,ispunct判斷isspace爲,導致了兩者的功能真正的結局?據我所知,一個角色可以是小寫字母,也可以是大寫字母,而不是兩個字符(假設我們談論的字符集具有這樣的區別......大多數歐洲語言都這麼做)。

+0

我更吃驚,如果它沒有* *爲iscntrl判斷,ISDIGIT之一返回true的字符,,ispunct或isspace爲用於islower判斷或isupper返回真以及! – 2014-10-02 08:54:32

+0

@PeterSchneider @PeterSchneider這部分我明白了,因爲如果一個字符爲你提到的任何函數返回true,它將不會是一個字母表... – Thokchom 2014-10-02 08:58:48

回答

4

書中的引用不會聲稱isupper和islower會同時返回同一個符號。他們只是說,如果使用比C語言環境更多的其他語言環境,則可以使用其他符號,其中isupper或islower(或兩者)都可以返回true。

考慮到的是,C標準定義isupper和islower判斷方面因而isalpha

對於這isupper或 islower判斷是真實的任何字符isalpha功能測試,

雖然它似乎同一地區特定符號可能同時被認爲是上限和下限。這是所有四種組合都是可能的。例如

isupper: false, islower: false 
isupper: true, islower: false 
isupper: false, islower: true 
isupper: true, islower: true 

C標準具有腳註:

200)islower判斷真或假的功能和isupper測試分別 爲每個這些附加字符;所有四種組合是 可以

+0

請稍微詳細一點,尤其是對於「isalpha」最後一行在你的答案。 – Thokchom 2014-10-02 08:59:52

1

它可以爲比「C」區域以外的區域設置,其可以定義附加的字符返回true(到兩個功能): -

在這種情況下: -

isalpha,isupper和islower返回非零(假定字符導致iscntrl,isdigit,ispunct和isspace返回零)。

僅供參考,你可以瞭解這個依賴關係在這裏更好地: - http://www.qnx.com/developers/docs/6.4.0/dinkum_en/cpp/ctype.html

+0

感謝您的鏈接。 – Thokchom 2014-10-03 02:00:15

相關問題