//1、定义一个名为MIN2的宏,它给出两个值中的较小值。然后编写一个程序来测试这个宏定义。
//2、定义一个名为MAX3的宏,它给出三个值的最大值,然后编写一个程序来测试这个宏定义。
//3、编写一个名为IS_UPPER_CASE的宏,作用是如果字符是大写字母就给出非零值(可以尝试调用系统的Cocoa的过滤器NSPredicate)。
//4、编写一个名为IS_ALPHABETIC的宏,作用是如果一个字符是字母就给出非零值。使用IS_LOWER_CASE宏(自己实现)和练习3中的IS_UPPER_CASE宏。(宏调宏)
//5、编写一个名为ABSOLUTE_VALUE的宏,其作用是计算参数的绝对值。
//(可以尝试调用系统的求绝对值方法)
//1、定义一个名为MIN2的宏,它给出两个值中的较小值。然后编写一个程序来测试这个宏定义。
//2、定义一个名为MAX3的宏,它给出三个值的最大值,然后编写一个程序来测试这个宏定义。
//3、编写一个名为IS_UPPER_CASE的宏,作用是如果字符是大写字母就给出非零值(可以尝试调用系统的Cocoa的过滤器NSPredicate)。
//4、编写一个名为IS_ALPHABETIC的宏,作用是如果一个字符是字母就给出非零值。使用IS_LOWER_CASE宏(自己实现)和练习3中的IS_UPPER_CASE宏。(宏调宏)
//5、编写一个名为ABSOLUTE_VALUE的宏,其作用是计算参数的绝对值。
//(可以尝试调用系统的求绝对值方法)
#import <Foundation/Foundation.h>
#define MIN2(a,b) (a<b)?a:b
#define MAX2(a,b) (a>b)?a:b
#define MAX3(a,b,c) MAX2(MAX2(a,b),c)
#define IS_UPPER_CASE(canshu) [[NSPredicate predicateWithFormat:@"SELF MATCHES '[A-Z]'"] evaluateWithObject:canshu]
#define IS_LOWER_CASE(canshu) [[NSPredicate predicateWithFormat:@"SELF MATCHES '[a-z]'"] evaluateWithObject:canshu]
#define IS_ALPHABETIC(canshu) IS_UPPER_CASE(canshu)?1: (IS_LOWER_CASE(canshu) ? 1 : 0)
#define ABSOLUTE_VALUE(canshu) NSLog(@"%d",abs(canshu))
int main(int argc, const char * argv[])
{
@autoreleasepool {
//1、定义一个名为MIN2的宏,它给出两个值中的较小值。然后编写一个程序来测试这个宏定义。
NSLog(@"%d", MIN2(3, 6));
//2、定义一个名为MAX3的宏,它给出三个值的最大值,然后编写一个程序来测试这个宏定义。
NSLog(@"%d", MAX3(3, 7, 6));
//3、编写一个名为IS_UPPER_CASE的宏,作用是如果字符是大写字母就给出非零值(可以尝试调用系统的Cocoa的过滤器NSPredicate)。
NSString *astring = @"A";
if(IS_UPPER_CASE(astring))
NSLog(@"'astring' is an upper case.IS_UPPER_CASE = %d",IS_UPPER_CASE(astring));
//4、编写一个名为IS_ALPHABETIC的宏,作用是如果一个字符是字母就给出非零值。使用IS_LOWER_CASE宏(自己实现)和练习3中的IS_UPPER_CASE宏。(宏调宏)
if(IS_ALPHABETIC(astring))
NSLog(@"'astring' is an alphabetic.");
//5、编写一个名为ABSOLUTE_VALUE的宏,其作用是计算参数的绝对值。
ABSOLUTE_VALUE(-65);
}
return 0;
}