#import <Foundation/Foundation.h>
#define kDeBug
//当一个变量只有固定几个取值的时候,可以定义一个枚举类型
//枚举类型声明了一组常数,将人能看懂的标示符和计算机能看懂的数字建立对应关系
//如果枚举类型不指定常数,默认从0开始, 依次加1
//enum season{
// spring = 1,
// summer,
// autumn = 4,
// winter
//};
typedef enum Season{
spring = 1 << 0,//1
summer = 1 << 1,//2
autumn = 1 << 2,//3
winter = 1 << 3 //4
}SEASON;
//typedef enum season SEASON;
int main(int argc, const char * argv[]) {
//按位 与 & ,有0为0,全1为1
//作用:把某些二进制位清0,需要清0的跟0与,需要保留的位跟1与
// int a = 0b11111111;
// int c = a & 0b00001111;
// printf("%d",c);
//按位 或 | ,有1为1,全0为0
//作用:把某些二进制位置1,
// int b = 0b0110100;
// int a = b | 0b00001111;
// printf("%d",a);
//按位 反 ~ ,有1为0,有0为1
// int a = 0b00000011;
// int b = ~a;
// printf("%d", b);
//按位 异或 ^ 相异为1,相同为0
//用来记录二进制之间的差异
//功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
// int a = 8,b = 7;
// printf("a = %d b = %d", a ^ (a ^ b), b ^ (a ^ b));
// int a = 8,b = 7;
// a = a ^ b;//a,b的差值
// b = a ^ b;//b = b 和 a,b的差值得到a的值
// a = a ^ b;//a = b(现在等于a的值)和a,b的差值得到b的值
// printf("a = %d b = %d", a, b);
//<<, >>左移,右移运算符
//<<,左移一位相当于乘2;
//>>,右移一位相当于除2;
// unsigned char a = 0b11000001;
// a = a << 1;
// unsigned char b = 0b11000001;
// b = b >> 1;
// printf("%d",b);
//预编译指令
//条件编译 作用:按不同条件,编译不同指令
//1.[#ifdef]2.[ifndef]3.[if]
// int a = 10;
//#ifdef kDeBug
// printf("%d", a);
//#else
// printf("%d", a + 5);
//#endif
//#ifndef kDeBug
// printf("hello");
//#else
// printf("world");
//#endif
//#if 2
// printf("a");
//#elif 1 + 2
// printf("b");
//#elif 0
// printf("c");
//#else
// printf("d");
//#endif
//枚举
// SEASON a = autumn | winter;
////printf("a = %d", a);
//
// switch ((int)a) {
//
//
// case spring | summer:
// printf("春天或者夏天");
// break;
// case spring | winter:
// printf("春天或者冬天");
// break;
// case spring | autumn:
// printf("春天或者秋天");
// break;
// case summer | autumn:
// printf("夏天或者秋天");
// break;
// case autumn | winter:
// printf("秋天或者冬天");
// break;
//
// case spring:
// printf("spring");
// break;
// case summer:
// printf("summer");
// break;
// case autumn:
// printf("autume");
// break;
// case winter:
// printf("winter");
// break;
//
// default:
// printf("sorry");
// break;
// }
//
//const 用于修饰一个变量不能被修改
// const int a = 5;
//const 修饰数组,数组里面的每个元素都不能修改
// const int a[3] = {1,2,5};
//int * const p 指针不可以重指向,但是通过指针可以修改指针指向的内容
// int a = 5, b = 9;
// int * const p = &a;
// *p = 8;
//// *p = &b;
// printf("%d",*p);
// int const * p 指针可以做重指向,但是通过指针不可以修改指向的内容
// int a = 5, b = 8;
// int const * p = &a;
// //*p = 5;//error
// p = &b;
// printf("%d",*p);
//const int * p 指针可以做重指向,但是通过指针不可以修改指向的内容
// int a = 5, b = 5;
// const int * p = &a;
//// *p = 8;
// p = &b;
//const int * const p 指针不可以做重指向,通过指针也不可以修改指向的内容
// int a = 5, b = 4;
// const int * const p = &a;
//int const * const p 指针不可以做重指向,通过指针也不可以修改指向的内容
// int a = 5, b = 4;
// int const * const p = &a;
//const在*前, 通过指针不可以修改指向内容,指针可以重指向
//const在*后, 指针不可以重指向,但是通过指针可以修改内容
return 0;
}
本文出自 “IOS--培训” 博客,谢绝转载!