设为首页 加入收藏

TOP

iOS开发之c语言基础 扩展知识点 及 企业面试题(一)
2019-09-03 02:39:00 】 浏览:103
Tags:iOS 开发 语言基础 扩展 知识点 企业 试题

文章转载自:http://www.pythonheidong.com/blog/article/2537/

 1 //
 2 // main.m  3 // LessonScale  4 // 6 // Copyright (c) 2015年 Ashen. All rights reserved.  7 //  8 
 9 #import <Foundation/Foundation.h>
 10 //当程序编译时,只会编译.m文件,不会编译.h文件  11 //#import 比 #include ,要略胜一筹,等通过#import多次导入头文件时,只会将内容拷贝一次
 12 #import "Header.h" //导入意味着,将文件中得内容全部拷贝  13 
 14 
 15 //#define 宏名 要替换的内容  16 //宏的作用,只做替换,所有使用N的地方,都替换成20
 17 #define N 20  //无参数宏
 18 
 19 #define MUL(A,B) ((A) * (B)) //带参数的宏
 20 
 21 //#define kMaxValue(A, B) A > B ? A : B//比较两个数的最大值
 22 #define kMaxValue1(A, B) ({typeof(A) __a = A; typeof(B) __b = B; __a > __b ? __a : __b;})
 23 /*
 24  宏的注意事项:  25  1.宏名一般都是大写, 并且参数名大写  26  2.参数要加括号。  27  3.宏替换的内容不能有分号;  28  4.宏名和参数之间不能出现空格。  29  */
 30 
 31 int main(int argc, const char * argv[]) {  32     
 33     
 34     
 35     ///////////////////C语言补充课程 进制,位运算符 上课笔记 ///////
 36     
 37     //一、进制  38     //*************************  39     
 40     
 41     // 9 十进制 , 09 八进制, 0x9 十六进制, 0b9 二进制  42     // %d %o %0x 二进制输不出来  43     
 44     //栈区的内存分配原则:从高到底分配,从低到高存取。  45     //地址:内存单元的编号。  46     // int a = -5; //计算机中存取数据,是去数据的补码;负数的补码:绝对值取反加1  47     // int b = 20;  48     // printf("%p\n%p", &a, &b);  49     
 50     // int a[5] = {10, 20 ,30, 40, 50}; //20个字节, 第一个元素的地址最低(从低到高存取原则)  51     //    //数组名,代码数组的首地址,同时也是数组中第一个元素的地址,数组名是一个常量地址,因此不能赋值,既不能参与运算。  52     // printf("%p\n%p", a, a + 1);  53     
 54     
 55     //二、位运算符  56     //*************************  57     // ,将数转变成二进制数之后的每一位进行运算  58     //    //1.按位与 & , 作用清 0 操作  59     // int a = 5 & 7; // 5 0101,  60     //    //&7 0111, 同为 1 则为 1 ,否则为 0  61     //    //=5 0101  62     // printf("a = %d\n", a);  63     //    //2.按位或 |,  64     // int b = 5 | 7;  65     //    // 5 0101,  66     //    //|7 0111, 同为 0 则为 0 ,否则为 1  67     //    //=7 0111  68     // printf("b = %d\n", b);  69     //
 70     //    //2.按位异或 ^,  71     // int c = 5 ^ 7;  72     //    // 5 0101,  73     //    //^7 0111, 相同为 0 , 不同为 1  74     //    //=2 0010  75     // printf("c = %d\n", c);  76     //
 77     //    //2.按位取反 ~  78     // char d = ~5;  79     //    // 5 0000 0101  80     //    //~ 1111 1010 负数, 求补码, 取反加1,  81     //    // 1000 0101 + 1  82     //    // 1000 0110  83     //    // -6  84     // printf("d = %d\n", d);  85     //
 86     //    //2.左移运算符, 将二进制数左移, 每左移一位相当于 * 2  87     // char e = 1 << 1; //1 0000 0001  88     //    // 0000 0010  89     // printf("e = %d\n", e);  90     //
 91     //    //2.右移运算符, 将二进制数右移, 每右移一位相当于 / 2  92     // char f = 16 >> 3; //16 0001 0000  93     //    //2 0000 0010  94     // printf("f = %d\n", f);  95     //
 96     //    //三、无符号和有符号的区别  97     //    //有符号的数,将会把最高位拿出来作为符号位,用来计数的位数就少了一位。 0000 0000 最大 127  98     //    //无符号的数,则所有的位数,都可以用来计数 0000 0000 最大 255  99     //    //unsigned char 无符号, char 有符号; 默认是有符号 100     //
101     // /*不同数据类型取值范围 102     // 有符号: 103     // char: -2^7 ~ 2^7 - 1. 104     // short: -2^15 ~ 2^15 - 1. 105     // int: -2^31 ~ 2^31 - 1. 106     // 无符号: 107     // unsigned char: 0 ~ 2^8 - 1; 108     // unsigned short 0 ~ 2^16 - 1; 109     // unsigned int : 0 ~ 2^32 - 1; 110     // */ 111     //
112     //    //交换两个变量 113     // int aa = 10, bb = 20; 114     //
115     //    //Method one: 利用异或 116     // aa = aa ^ bb;//aa与bb的不同点存到aa中。 117     // bb = aa ^ bb;//aa代入aa,的aa,存入bb中 118     // aa = aa ^ bb; 119     //
120     //    //    //Method two: 121     //    // aa = aa + bb; 122     //    // bb = aa - bb; 123     //    // aa = aa - bb; 124     //
125     //    //    //Method Three第三方变量temp略 126     // printf("%d\n ", aa); 127     //
128     //
129     //
130     //三、面试题: 131     //************************* 132     //
133     //    //1. 高四位和低四位互换 134     // unsigned char a1 = 0b10010011; 135     //    //把低四位移动到左边。左移 4 位 136     // unsigned char left1 = a1 << 4; 137     // unsigned char right1 = a1 >> 4; 138     // a1 = left1 | right1; 139     // printf("%d\n", a1); 140     //
141     //
142     //    //2. 奇偶互换 143     // unsigned char a2 = 0b10010011; //10010011 >>> 0110 0011 144     //    //奇数位移动到偶数位 145     // unsigned char left2 = a2 << 1; 146     //    //保留偶数位, 将奇数位清0 ,
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇使用函数返回字符串,自动变量被.. 下一篇科大讯飞语音芯片xfs5152CE,分享..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目