栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

0706C语言简介2

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

0706C语言简介2

 C语言中以分好作为一行代码的结束,使用大括号划分区域

编译器

    负责把人能看得懂的记录着代码的文件,翻译成计算机能看得懂的二进制文件,由预处理器、编译器、链接器组成

    gcc是由GNU社区为例编译Linux内核代码而开发的一款免费的编译器

    gcc常用的编译参数:

        -E  只显示预处理结果到终端

        -std=gnu99  设置C99语法标准

        -c  只编译不链接

        -o  指定编译结果的名字  -oname -o name

        -S  只生产汇编代码

        -I  指定头文件的加载路径    -I  加 载路径

        -wall   尽可能多的产生警告

        -werror 把警告当错误处理

        -l      指定要加载的代码库  -lm 可以使用数学库

    C代码编程可执行文件的详细过程:

        1、预处理   把源文件翻译出预处理文件

            gcc -E code.c   显示预处理结果到终端

            gcc -E code.c -o code.i     生成以.i结尾的预处理文件

        2、编译     把预处理文件翻译成汇编文件

            gcc -S code.i   生成以.s结尾的汇编文件

        3、汇编     把汇编文件翻译成二进制文件的目标文件

            gcc -c code.s   生成以.o结尾的目标文件

        4、链接     把若干个目标文件合并成一个可执行文件

            gcc a.o b.o c.o 默认生成a.out的可执行文件

C语言的文件类型

    .c  源文件

    .h  头文件(头文件的编译结果文件  .h.gch  它会被优先使用)

    .i  预处理文件

    .s  汇编文件

    .o  目标文件

    .a  静态库文件

    .so 共享库文件

存储空间的单位:

    Bit     比特    一个二进制位,只能存储0或者1,计算机中存储数据的最小单位

    Byte    字节    八个二进制位,计算机中存储器的存储容量的基本单位

    KB  1024字节    

    MB  1024KB

    GB  1024MB

    TB  1024GB

    PB  1024TB

数据类型:

    为什么要对数据进行分类?

        1、现实生活中的数据本身就自带类别属性

        2、对数据进行分类可以节约存储空间、提高运行速度

    C语言中数据分类为两大类:自建(程序员自建设计的类型:结构、联合、类)和内建(C语言自带的类型)

        注意:运算符sizeof可以计算类型、变量的字节数

        整型:

            signed    有符号

                signed char     1   -128~127

                signed short    2   -32768~32767

                signed int      4   -2147483648~2147483647

                signed long     4/8

                signed long long    8   9开头的19位数

            unsigned  无符号

                unsigned char   1   0~255

                unsigned short  2   0~65535

                unsigned int    4   0~4294967295

                unsigned long   4/8

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

            注意:signed不加就代表了加

                由于定义无符号整型时比较麻烦,C标准库把这些类型重定义成一些新的简单的类型名:需要导入头文件

                uint8_t uint16_t uint32_t uint64_t

                int8_t  int16_t  int32_t  int64_t

        浮点型:    有小数部分的类型

            float   单精度   4

            double  双精度   8

            long double     12/16

            注意:小数点后六位有效

            注意:采用科学一定的算法对真实的浮点型数据到二进制数据进行转换,这个过程比存储、读取整型要慢得多,编程时尽量使用整型数据

            double num;

            if(num < 0.000001 && num > -0.000001);

        模拟型:

            字符型:char    %c  打印字符

                字符就是符号或图案,在内存中存储的依然是整数,需要显示出字符时,会根据ASCII表中对应的关系显示出对应的字符或图案

                48-'0'  65-'A'  97-'a'  0-''(特殊字符)

            布尔型:bool

                先有C语言后有的bool类型,所以C语言中不可能有真正的布尔类型,在头文件中对布尔类型进行了模拟

                    bool true false

变量和常量

    什么是变量:程序运行期间数值可以发生变化的叫做变量,相当于一个存储数据的盒子

    定义:  类型名 变量名;

            int num;

            取名规则:

            1、由字母、数字、下划线_组成

            2、不能以数字开头   _8_num8

            3、不能与C语言32个关键字重名0

            数据类型相关:

                内建类型:

                    char short int long void float double 7

                自建类型:

                    struct union enum sizeof 4

                类型限定符:

                    auto const static volatile register typedef extern

                    signed unsigned 9

            流程控制相关:

                分支:

                    if else switch case default 5

                循环:

                    for while do 3

                跳转:

                    break continue return goto 4

            4、见名知意(功能、类型、作用范围)

                int sum_s_i

    使用:

        赋值:变量名 = 10;

                num = 10;

        参与运算:  2+(变量名*10);

                2+(num*10);

        注意:C语言中变量的初始值是随机的,为了安全起见,一般在定义时初始化为0

            int num = 0; 初始化

            num = 0;   赋值

    变量的输出与输入:

        int printf(const char *format, ...);

        功能:输出数据

        format:"双引号包含的提示信息+占位符"

        ...:变量名列表

        返回值:输出字符个数

        类型占位符:C语言中通过类型占位符传递变量的类型

        signed      %hhd %hd %d  %ld %lld

        unsigned    %hhu %hu %u  %lu %llu

        float       %f

        double      %lf

        long double %LF

        字符型 char  %c

    练习1:定义各种类型的变量并初始化,使用printf显示它们各自的值

        int scanf(const char *format, ...);

        功能:输入数据

        format:"双引号包含的占位符"

        ...:   变量地址列表

        返回值:成功输入的变量的个数

        注意:scanf需要提供变量的地址  

            &变量名 == 变量地址

        练习2:定义各种类型的变量并初始化,使用scanf输入,使用printf显示

    什么是常量:程序运行期间数值不能改变的叫做常量

        100     默认int

        100l    long

        100ll   long long

        100u    unsigned int

        100lu   unsigned long

        100llu  unsigned long long

        3.14    默认double

        3.14f   float

        3.14l   long double

        #define SEC 3600*24*365*100u

格式化输入和输出

    %nd    显示n个字符宽度,不够则补充空格,右对齐

    %-nd   显示n个字符宽度,不够则补充空格,左对齐

    %0nd   显示n个字符宽度,不够则补0,右对齐

    %n.mf  显示n个字符宽度(小数点也算一位),不够则补充空格,m表示小数点后几位(四舍五入,不够补0),右对齐

    %g     不显示小数点后多余的0

运算符:

    自变运算符:++/--   使变量的值自动加1货减1

        前自变:++num/--num 立即生效

        后自变:num++/num-- 下一行语句才有效

        注意:一行代码内不要使用多次自变运算符

    算数运算符: + - * / %(求余)

        整数/整数   结果还是整数,没有小数点,只保留整数部分

            10/3 -> 3

            10%3 -> 1

        / % 除数不能为0,否则就会浮点数例外,(核心已转储),(用了除0后的结果才会出现),这个是运行报错,一旦产生程序立即停止,后面不在执行

    关系运算符:    >  <  >=  <=  ==  !=

        比较结果0(不成立)或1(成立),比较结果可以继续参与后续的运算

        int n = -100;

        if(10 < n < 100);    结果永远为真,与数学运算规则不同

        注意: == 建议常量放左边

    逻辑运算符:    &&  ||  !  

        先把运算对象转换成逻辑值,0转换为假,非0是转换为真

        A && B 一假即假  A || B 一真即真    !A  求反、

        && || 短路特性:

            当左边部分的值可以确定整个表达式的结果时,右边部分就不执行计算

    三目运算符:运算对象有三个部分

        A ? B : C  判断A的值如果为真则执行B,否则执行C

    赋值运算符:

        a = 10;

        a += 10;   a=a+10

        a -= 10;

        a *= 10;

        a /= 10;

        a %= 10;

    位运算符:  &   |   ~  ^    <<  >>

    运算符优先级:单目,双目,三目

分支语句

    单分支

        if(表达式) //单分支

        {

            //表达式为真(非0),则执行此处代码

        }

    双分支

        if(表达式) //双分支

        {

            //表达式为真(非0),则执行此处代码

        }

        else

        {

            //表达式为假,则执行此处代码

        }

    多分支

        if(表达式1) //多分支

        {

            //表达式为真(非0),则执行此处代码

        }

        else if(表达式2)

        {

            //表达式2为真,则执行此处代码

        }

        else if(表达式3)

        {

            //表达式3为真,则执行此处代码

        }

        ...

        else

        {

            //如果以上所有表达式都为假,则最后执行此处代码

        }

    1、输入三个整数,从小到大显示

    2、输入一个年份,判断是否闰年   四闰百不闰,四百闰

    3、输入一个年份和月份,判断该月有多少天

    4、输入一个成绩,判断等级  

    [90-100]A [80-89]B[70-79]C[60-69]D[0-59]E   other成绩有误













 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号