美文网首页
iOS开发之C语言实用概述

iOS开发之C语言实用概述

作者: WarmLikeYou | 来源:发表于2016-10-17 12:06 被阅读33次

    一、常量和变量:
    常量的定义:const int a = 10;

    常量:
    整型常量
    实型常量
    字符型常量
    字符串常量

    变量:
    整型变量
    实型变量
    字符型变量
    字符串变量

    变量定义:

    1. 先声明,后赋值
      int a;
      a = 10;
      2)边声明,边赋值
      int a = 10;

    变量的属性:
    1、变量的类型
    说明变量存放什么类型的数据
    2、变量的名称,变量名
    根据变量名来存取变量的值
    3、变量的值
    变量所占的内存中实际存放的值
    4、变量的地址
    如何获取变量的地址?
    int a = 10;
    &a // 获取到了变量啊的地址

    二、注释的使用

    1. // 单行注释
    2. /*
      多行注释
      */

    注意点: 多行注释的嵌套,以/* 开始, 以*/结束。如果嵌套,会有问题。因此多行注释不能嵌套使用。

    三、printf函数,scanf函数。
    1)、printf(“格式控制字符串”,输出项列表);
    %d 十进制整型
    %lu 十进制无符号长整型
    %f 浮点类型
    %c 输出字符
    %s 输出字符串

    注意点
    %f——》保留两位小数,%.2f

    %5d 右对齐

    %-5d 左对齐 ,如果位数不够,用空格来顶位。

    %05d 右对齐,如果位数不够,以0来顶位。

    输出项列表中包含格式控制字符串中要输出的对应类型的变量。
    (类型要和格式控制一致,位置一一对应)

    2)、scanf(“格式控制字符串”,输入项列表);
    输入项列表使用的是变量的地址。
    int a ;
    scanf("%d",&a);
    注意:
    连续使用scanf函数做输入,会出现跳过用户输入,直接执行的问题。
    原因:
    scanf函数的缓冲区。
    解决:
    清除缓冲区里的内容。吸收'\n'。
    getchar()

    scanf();
    getchar();

    四、关键字和标示符
    关键字:
    就C语言已经占用的单词,我们不可以再重新定义。我们自己定义的标示符,不能和关键字重名。
    表示符的命名规则:
    1、只能能以字母、数字、下划线、美元符号命名
    2、不能数字开头
    3、大小写区分
    4、不能和关键字重名

    五、运算符
    算数运算符:+-*/ % 左结合性
    赋值运算符 := 结合性:右结合性
    复合赋值运算符 += -= *= /= .... x += 1;相当于 x = x+1;
    关系运算符 比较大小的,>, >= ,< ,<= 优先级高于 ,== ,!= ,左结合性
    sizeof运算符 看在当前编译环境下,某个类型在内存中占几个字节。
    sizeof(常量)、sizeof(变量)、sizeof(数据类型)。
    自增、自减运算符 ++ ,--。 如果++a(前缀),先加一,在使用; a++(后缀) ,先使用,在加一。逻辑运算符 && ,||, !.优先级:!> && > ||
    && 都真才真
    || 一真就真
    ! 真假颠倒
    逻辑短路:
    与短路: 表达式1 && 表达式2,短路条件:表达式1的值:假,就不去计算表达式2的值了。
    或短路: 表达式1 || 表达式2, 短路条件:表达式1的值 : 真,就不去计算表达式2的值了。
    逗号运算符
    ,优先级最低。
    结合性:左结合性,(a+b,a+c,d+a); 从左往右计算。
    逗号表达式返回值:是最右边的表达式的值。
    位运算符
    & | ~,^ >> ,<<

    六、进制转换
    10-2 互转
    10 -8,10 -16

    x进制 基:X,从右数第n位:n;第n位的位权:x^(n-1)。
    x进制转换成10进制的万能公式:
    x进制数是:abcd,从有数的每一位上的数字乘以该位的位权后的值相加即等于十进制的值。
    十进制值 = dx^0+cx1+b*x2+ax^3
    2->10 :
    16 8 4 2 1对应的位权
    1 0 0 1 1=1
    1 + 12 + 04 +08+116=18

    2->16: 四合一
    16->2 :一拆四
    2-》 8 : 三合一
    8-》2:一拆三

    七、位运算
    位运算符:
    &(按位与,两位同时为一,结果才是一) ,|(按位或,两位有一个是一结果就是1),(安位异或,两位不相同的时候结果才为1),~(0->1,1->0,符号位跟着一起变,和求反码不一样),<<(左移,向左移动n位,相当于乘以2n,有可能改变数值的正负,不够补0),>>(右移,向右移动n位,相当除以2^n,不够的补符号位,它不会改变一个数的正负,)

    八、三目运算符:、
    一般格式:表达式1?表达式2 : 表达式3
    执行过程: 先求表达式1的值,如果是真:计算表达式2,否则计算表达式3.
    三目运算符的嵌套:能不用就不用。

    九、结果化编程思想
    告诉我们任何功能的程序都可以由 顺序结构、选择结构和循环结构三种最基本的程序控制结构来构成。不使用goto,目的:提高程序的易读性,提高开发效率。

    十、三种节本的程序控制结构:
    顺序结构:按照代码书写的顺序来顺序执行。
    选择结构:按照某个条件是否成立来选择执行不同的代码块。也叫分支结构。
    if 语句
    switch语句
    循环结构:重复执行某些功能的代码。
    while循环
    do。。。while循环语句
    for循环

    十一、选择结构的if语句:
    1)if语句的一半形式:
    单分支
    if(a >0 ){
    // a是正数
    }
    双分支
    if(a > 0){

    } else{
    // a 不是一个正数
    }
    多分支
    if(a > 0){
    // a 正数
    } else if(a < 0){
    // a负数
    }else{
    // a = 0
    }
    if 语句只能选择其中的一条逻辑分支,每个分支之间时互斥的。
    2)if语句的嵌套
    if(a > 0){

    }else{// a <= 0
    if( a < 0){
    // a 负数
    }else{
    // a = 0
    }
    }
    3)if语句使用的注意事项:
    c语言的逻辑判断:在对一个结果进行逻辑判断的时候,认为0 代表假,非0代表真。
    c语言进行逻辑结果返回:0 代表假,1代表真。
    if(表达式),可以放任何的表达式。if(1) //永真
    if(a > 0) printf("---"); // if语句后面如果没有{},那么if的作用域就只有它后面的那一行代码。
    if(a > 0) int b = 9; // 编译器会报错。如果想通过编译,加上{}
    if(a > 0) {int b = 9;}// 编译通过。
    if(a > 0){
    int b = 9;
    }
    printf("b= %d",b);// 编译不通过,报错:没有声明的变量标示符b。

    十二、switch语句
    switch一般格式:
    switch (表达式1){
    case 表达式2:
    // 功能代码;
    break;
    default:
    break;
    }
    执行流程:
    先计算表达式1的值,然后比较表达式1的值和表达式2的值是否相等,如果相等,进入该条case 语句,并且向下顺序执行代码,直到遇到break,结束switch语句。

    switch语句注意点:
    1)swtich语句后面的表达式1,允许的值:int类型的变量,常量或着结果为int类型的表达式;可以向上转型为int类型的变量,常量或表达式。(char ,short,枚举类型)2)case语句可以任意多条;3)case语句后面可以加{},也可以不加,执行效果一样。4)default位置:可以在switch{}内部的任意位置。5)break语句可以省略。
    case语句的注意点:1)case 语句的格式,空格和冒号都不可省略。2)case语句后面表达式2的值:整型常量:int类型。也可以是一个常量表达式(3+3),其他类型的常量(可以向上转型为int类型的)。(char ,short,枚举)。3)case 语句的作用域:直到遇到break 关键字。4)case 后面不能在第一行代码定义一个变量,编译不通过;如果说非要在case语句的代码块中定义一个变量,1加上{};2把变量的定义,不要放在第一行。switch(表达式){
    case 1:int a = 1;// 放在第一行定义,编译不通过,printf("");int b = 2;break;
    case 2:printf("b = %d",b );
    break;default:

    break;

    分区 第四天 的第 2 页

    }

    break;

    5)编译器的bug,使用了前面没有满足条件的分支中定义的变量,但是没有使用其中定义的变量值,而是一个垃圾值。
    switch(2){case 1:
    printf("");int b = 2;break;
    case 2:printf("b = %d",b );
    break;default:
    break;
    }6)default语句如果在最后,可以省略break;如果不在最后,break不能随变省略,否则会造成逻辑错误。
    8、if和siwtch语句的选择结论:
    if的判断比较灵活,如果判断范围的话用if简单。
    switch只能判断值是否相等,但是它能够将多条逻辑分支通过case语句的穿透执行来合并执行。9、if和switch的转换
    通过整除的方式,将分数范围转换成数值。

    相关文章

      网友评论

          本文标题:iOS开发之C语言实用概述

          本文链接:https://www.haomeiwen.com/subject/wofedttx.html