【IOS开发】C语言知识总结(2)

选择结构-if

if(表达式) {}

{}为作用域

多重if-else  例如:

#include <stdio.h>
int main(){
  int amount = 888888;
  if(amount<=0){
    printf("没有购物不能获奖");
  }else if(amount%888==0){
    printf("恭喜你获得一等大奖!");
  }else if(amount%88==0){
    printf("恭喜你获得二等奖");
  }else if(amount%8==0){
    printf("恭喜你获得鼓励奖");
  }else{
    printf("谢谢参与");
  }
  return 0;
}

嵌套if-else  例如:

#include <stdio.h>
int main(){
  double speed = 10.71;  //百米速度
  int male = 1; //1代表男,0代表女
  if(speed<12){
    if(male){
      printf("进入男子组决赛");
    }else{
      printf("进入女子组决赛");
    }
  }else{
    printf("没有进入决赛,继续努力!");
  }
  return 0;
}

选择结构-switch

switch(表达式) {case 数值1: break; … default: break;}

#include <stdio.h>
int main(){
  int day = 4;
  switch(day){
    case 1:
        printf("星期一吃青菜\n");
        break;
    case 2:
        printf("星期二吃鱼\n");
        break;
    case 3:
        printf("星期三吃肉\n");
        break;
    case 4:
        printf("星期四吃面条\n");
        break;
    default:
        printf("平时只能喝汤\n");
        break;
  }
  return 0;
}

注意:每个case后面是否有break

循环结构-while

  • while(表达式) { }
  • continue:用于跳过本次循环体剩余语句,进入下一次循环的条件判断,continue只是跳过当前的循环体,并没有跳出整个循环。
  • break的使用:某次的时候停止循环。

循环结构-do while

一定会执行一次循环体

while 和 do while 比较

inti=0;
while(i<0){
i++;
}
// i = 0
inti=0;
do{
i++;
}while(i<0);
// i = 1

循环结构-for

for(参数初始化;条件判断;参数更新){
  //循环操作
}

for(;;)  这个是个死循环

for括号内的三个语句都是表达式,执行次序如下:

  1. 运行表达式1(参数初始化)
  2. 运行表达式2(条件判断),判断是否为真,若为真执行循环操作,若为假则结束循环
  3. 运行表达式3(参数更新),更新参数,进入步骤2执行下一轮循环

查看一个整数的二进制可用如下函数:

// 输出整数的二进制形式
void putBinary(int n)
{
int bits = sizeof(n) * 8;
while (bits-->0) {
printf("%d", n>>bits&1);
if (bits%4==0) printf(" ");
    }
printf("\n");
}

1个字节等于8bit

  • 可以连续使用2个long,也就是long long。一般来说,long long的范围是不小于long的,比如在32bit编译器环境下,long long占用8个字节,long占用4个字节。不过在64bit编译器环境下,long long跟long是一样的,都占用8个字节。
  • 还有一点要明确的是:short int等价于short,long int等价于long,long long int等价于long long

signed 和 unsigned

1>首先要明确的:signed int等价于signed,unsigned int等价于unsigned

2> signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数。

  • signed:表示有符号,也就是说最高位要当做符号位,所以包括正数、负数和0。其实int的最高位本来就是符号位,已经包括了正负数和0了,因此signed和int是一样的,signed等价于signed int,也等价于int。signed的取值范围是-231 ~ 231 - 1
  • unsigned:表示无符号,也就是说最高位并不当做符号位,所以不包括负数。在64bit编译器环境下面,int占用4个字节(32bit),因此unsigned的取值范围是:0000 0000 0000 0000 0000 0000 0000 0000 ~ 1111 1111 1111 1111 1111 1111 1111 1111,也就是0 ~ 232 - 1

位运算

1、&按位与

1>功能:  只有对应的两个二进位均为1时,结果位才为1,否则为0。

2>举例:  比如9&5,其实就是1001&101=1,因此9&5=1

3>规律:  二进制中,与1相&就保持原位,与0相&就为0

2、|按位或

1>功能:  只要对应的二个二进位有一个为1时,结果位就为1,否则为0。

2>举例:  比如9|5,其实就是1001|101=1101,因此9|5=13

3、^按位异或

1>功能:  当对应的二进位相异(不相同)时,结果为1,否则为0。(二进制加法判断)

2>举例:  比如9^5,其实就是1001^101=1100,因此9^5=12

3>规律:

  • 相同整数相^的结果是0。比如5^5=0
  • 多个整数相^的结果跟顺序无关。比如5^6^7=5^7^6
  • 因此得出结论:a^b^a = b

4、~ 取反

对整数a的各二进位进行取反,符号位也取反(0变1,1变0)

5、<< 左移

  • 把整数a的各二进位全部左移n位,高位丢弃,低位补0。左移n位其实就是乘以2的n次方
  • 由于左移是丢弃最高位,0补最低位,所以符号位也会被丢弃,左移出来的结果值可能会改变正负性

6、>> 右移

  • 把整数a的各二进位全部右移n位,保持符号位不变。右移n位其实就是除以2的n次方
  • 为正数时,符号位为0,最高位补0
  • 为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定

运算符的优先级(从高到低)


优先级


描述


运算符


1


括号


()、[]


2


正负号


+、-


3


自增自减,非


++、--、!


4


乘除,取余


*、/、%


5


加减


+、-


6


移位运算


<<、>>、>>>


7


大小关系


>、>=、<、<=


8


相等关系


==、!=


9


按位与


&


10


按位异或


^


11


按位或


|


12


逻辑与


&&


13


逻辑或


||


14


条件运算


?:


15


赋值运算


=、+=、-=、*=、/=、%=


16


位赋值运算


&=、|=、<<=、>>=、>>>=

ASCII对照表

时间: 2024-11-02 23:25:50

【IOS开发】C语言知识总结(2)的相关文章

iOS开发多线程基础知识

--------------------------多线程概念基础------- 进程:正在运行的程序 内存:每个进程所占的存储空间 线程:1个进程要像执行任务,必须得有线程,线程是进程的基本执行单元, 线程的串行: ·1个线程中人物的执行是串行的 ·0同一个时间内,1个线程只能执行1个任务 0·线程是进程的一条执行路径 --------多线程 ·一个进程中可以开启多条线程,每条线程可以并行(同时)同时执行不同的任务 ·进程->车间 线程->车间工人 线程的并行: ·进程内多个线程同时执行,可

李洪强漫谈iOS开发[C语言-043]-判断较早日期

李洪强漫谈iOS开发[C语言-043]-判断较早日期

Android &amp;Swift iOS开发:语言与框架对比

转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_source=infoq&utm_medium=articles_link&utm_content=link_text 从Android到Swift iOS开发:语言与框架对比 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还

李洪强漫谈iOS开发[C语言-041]-计算月份天数

李洪强漫谈iOS开发[C语言-041]-计算月份天数 

李洪强漫谈iOS开发[C语言-044]-翻译数字

 李洪强漫谈iOS开发[C语言-044]-翻译数字

iOS开发多线程基础知识 NSOperation

-------NSOperation简介---- 1.NSOperation的作用 ·配合使用NSOperation和NSOperationQueue也能实现多线程编程 2.NSOperation和NSOperationQueue实现多线程的具体步骤 ·先将需要执行的操作封装到一个NSOperation对象中 ·然后将NSOperation对象添加到NSOperationQueue中 ·系统会自动将NSOperation中封装的操作放到一条新线程中执行 ---------NSOperation的

李洪强漫谈iOS开发[C语言-037]-if else 语句

李洪强漫谈iOS开发[C语言-037]-if else 语句

李洪强漫谈iOS开发[C语言-038]-if else if语句

李洪强漫谈iOS开发[C语言-038]-if else if语句

李洪强漫谈iOS开发[C语言-039]-剪刀石头布

 李洪强漫谈iOS开发[C语言-039]-剪刀石头布

iOS开发笔记 - 语言篇之Swift

?2014年的苹果全球开发者大会(WWDC),当Craig Federighi向全世界宣布"We have new programming language"(我们有了新的编程语言)的时候,全场响起了最热烈和持久的掌声,伴随着掌声到来的语言叫Swift.接下来Craig Federighi更是毫不掩饰的告诉大家,Swift将成为主宰iOS和Mac开发的新语言,甚至是整个软件行业中最举足轻重的语言. ??Swift正如它的名字那样迅速.敏捷,但这并不是它的全部.Swift是一个博采众长的