从零开始学习C语言(3)

19 篇文章 0 订阅
本文介绍了C语言代码从预处理到链接形成可执行程序的步骤,包括预处理、编译、汇编和链接。同时,讲解了gcc编译器的常用参数,C语言的数据类型,变量命名规则,输入输出操作,运算符以及类型转换。此外,还探讨了跳转语句如goto、break、continue和return的使用,以及数组的定义、使用和初始化。文章强调了数组越界的风险和处理异常时goto的适用性。
摘要由CSDN通过智能技术生成

复习:

1、C代码变成可执行程序的过程

    预处理:查看宏函数的替换结果,检查宏函数

        gcc -E 

    编译:理解C代码的底层原理,函数重载

        gcc -S

    汇编:生成代码库,静态库、共享库

        gcc -c

    链接:是多文件编程的基础

        gcc a.o b.o c.o...

2、gcc编译器常用参数

    -E -S -c -std=gnu99 -o -I -l -Wall -Werror -D(命令行定义宏)

    

3、C语言文件类型

    .h  .h.gch .c .i .s .o .a(静态库) .so(共享库) 

4、数据类型

    signed char         1   %hhd    -128~127

    signed short        2   %hd     -32768~32767

    signed int          4   %d      正负20亿

    signed long        4/8  %ld

    signed long long    8   %lld    正负9开头的19位数

    unsigned char         1   %hhu    0~255

    unsigned short        2   %hu    0~65535

    unsigned int          4   %u     0~40亿

    unsigned long        4/8  %lu

    unsigned long long    8   %llu   0~1开头的20位整数

    float           4       %f

    double          8       %lf

    long double   12/16     %LF

    小数点后6位有效

    问:有float x; 如何判断x与零值是否相等

    if(x < 0.000001 && x > -0.000001)

5、C变量名取名规则

    1、必须由字母、数字、下划线组成

    2、必须由字母或下划线开头

    3、不能与32个关键字重名

    4、见名知意

6、变量输入输出

    printf 提示信息+占位符+变量名列表

    scanf  占位符 + 变量地址列表  

    %nd  %-nd %0nd %n.mf(5舍6入) %g

7、运算符

    / % 除数不能为0,浮点数例外(核心已转储)

    ==  变量尽量放在右边

    ++/--   尽量不要在一行内多次使用

    && ||   具有短路特性

    注意:运算符也是有优先级的

8、类型转换

    自动类型转换:不同类型的数据之间需要先转换为相同的类型数据才能进行运算

        1、字节少的向字节多的转

        2、有符号的向无符号的转

        3、整型向浮点型转

    注意:以不丢失数据为基础,适当地牺牲空间

    强制类型转换:

        (新类型)数据  有丢失数据风险,谨慎使用


 

----------------

一、跳转语句

    goto    可以在函数内任意跳转

    它可能会破坏已经设计好的分支、循环语句,因此绝大多数公司禁止使用

    但是它在驱动编程时特别适合用于处理异常

    标签名:

        ...

        goto 标签名;

    

    break

        1、配合switch使用,关闭执行开关

        2、跳出循环,只能跳一层

    

    continue

        结束本次循环,直接进入下一次循环

    

    return

        1、返回一个数据给函数的调用者

        2、立即结束函数的执行

   

二、数组

    什么是数组:变量的组合,是一种批量定义变量的方式

    定义:类型 数组名[数量];

    int arr[5];

    使用:数组名[下标];

        下标:从零开始 范围:0~数量-1

    

    遍历:与for循环配合,使用循环变量i当做数组的下标

    初始化: 类型 数组名[数量] = {1,2,3,4...};

        1、数组与普通变量一样默认值是随机的,为了安全要对数组进行初始化

        2、这种初始化语法只能在定义数组时使用,并且只能逐个赋值,不能整体赋值

        3、初始化数据过多,编译器会产生警告并丢弃

        4、初始化数据不足,编译器会自动补0

        5、初始化的数据可以省略,只写大括号,相当于给所有成员赋0

        6、初始化数组时,长度可以省略,编译器会自动统计数据的个数然后告诉数组

        数组的长度 = sizeof(arr)/sizeof(arr[0])

    

      

    数组越界:为了程序的运行效率是不会检查数组的下标

        数组越界的后果:

        1、一切正常

        2、段错误

        3、脏数据

    

    

    



 

    

   













 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值