我想寫宏觀IS_ALPHABETIC
,給出了一個非零值,如果一個字符是字母字符的宏。在這裏面我指的是我定義的IS_LOWER_CASE
宏和uppercase
宏我之前定義的。寫來檢查,如果一個字符是字母
以下是我有:
#include <stdio.h>
#define uppercase(n) ((n) <= 'Z' && (n) >= ('A'))
#define IS_LOWER_CASE(n) (((n) >= 'a') && ((n) <= 'z'))
#define IS_ALPHABETIC(n) (uppercase(n) || IS_LOWER_CASE(n) ? (n) : 5)
int main()
{
char letter = "4";
printf("%d\n", IS_ALPHABETIC(letter));
}
所以基本上IS_ALPHABETIC
宏應該給值5,如果該參數是一個字母,因爲它會檢查它是否是一個大寫或小寫字母,但是無論參數如何,它每次給出5次。
例如,在我的情況,我進入4所以它不應該給的值5.應該只有當我輸入的字母值。
uppercase
和IS_LOWER_CASE
宏只是分別檢查參數是大寫還是小寫。
我不是100%肯定,如果我構建了我的IS_ALPHABETIC
正確宏。哪裏不對?
我試圖做嚴格使用這些特定的宏。
那麼標準['isalpha'](http://en.cppreference.com/w/c/string/byte/isalpha)怎麼了? –
isalpha可通過包含ctype.h – Riskhan
我將對我的文章進行編輯。我正在努力嚴格使用這些特定的宏。不過謝謝。 –