c语言-环境与数据类型

vscode常用插件:
    chinese
    c/c++
    Doxygen Documentation Generator
    Bracket Pair Colorizer2
    Remote - SSH


secureCRT远程连接虚拟机
    菜单->快速连接
    协议:SSH2
    主机名: 就是Ubuntu的IP地址(使用指令ifconfig)
    用户名: china


linux常用指令
    cd  切换路径
        格式:
            cd  路径名(或叫文件夹或叫目录)
            例: 
            cd  /mnt/hgfs/
            cd  share/
        路径说明:
            在linux中,文件系统以目录树的结构组织
            目录树的根就是一个  /, 所有的路径都从这个根目录开始
            把这种以/开始的路径,称为绝对路径,例: /mnt/hgfs/share/
            不是以/开始的路径,称为相对路径,例: share/
            在路径中,除了第一个/叫根目录,其他的/称为路径分隔符

            有一些路径用特殊的符号表示:
            ~   表示家目录,例: cd /home/china
            .   表示当前目录,例: cd ./
            ..  表示上一级目录,例:cd  ../
            -   表示上一次所在目录 例: cd -
    
    pwd 打印当前的路径名

    ls 列举指定目录下的文件名
        格式: 
            ls 
            ls 路径名 
            ls -l   (-l选项 用于列出文件的详细信息)

    clear 清屏(ctrl+l)

    使用指令man, 可以查看指令或函数的详细情况。
    查指令:
        man -f 指令名
        例: 
        man ls 

    查函数
        man -f 函数名   (-f用来查看函数在手册的哪一节)
        man  [章节名] 函数名    ([]里面的内容表示可选)

    


测试环境
    编写代码
        windows+vscode ,假设文件名为 hello.c ,保存于共享目录
    编译代码
        ubuntu18.04 + gcc 
        切换到linux,进入共享目录,用ls找到hello.c , 编译 
        cd /mnt/hgfs/share      (进入共享目录)
        gcc hello.c -o hello    (编译)

    执行程序 
        ./hello
    
    编译说明:
        C和C++属于编译型语言,代码编写完成后,必须使用编译器进行编译。
        所谓编译,就是把人能看懂的程序代码,翻译成 机器能看懂的 机器语言(二进制)
        担任"翻译"角色的工具,就是所谓的编译器
        我们在linux中主流使用的C语言编译器是gcc 
        gcc 编译C程序的最一般的指令:
            gcc  点C文件名  -o  二进制可执行文件名
        例: 
            gcc hello.c -o hello 


编码规范
    1、一条语句占一行
        int a;
        int b;
    2、代码块之间要有空行隔开
        #include <stdio.h>
        // 此处有空行
        int main()
        {
            for() {}
            // ...
            for() {}
        }
    3、{}代码块要有缩进,缩进使用一个tab键(4个空格)
        if (...) 
        {
            // 往右缩进
        }
    4、括号要成对写,且每个大括号要单独占一行,且垂直与关键字对齐
        for ()
        {
            for ()
            {
                if ()
                {

                }
            }
        }
        
    5、代码要写注释,C支持两种注释方式
        // 注释
        /*注释*/

    6、代码中的类型名、变量名、函数名 要做到 "见名知其义"

    7、关于空格
        运算符两边建议有空格
        逗号、分号后面建议有一个空格
        for (int i = 0; i < 100; i++)
        {

        }
    
    ....


练习:
    写一个C程序,求1-100之间所有的偶数的和。


数据类型
    计算机是用来解决实现生活中问题的工具
    计算机通过把"问题域"中的数据按某种方式保存起来,然后对保存的数据进行各种操作,从而得出结果。

    计算机首先要解决数据的保存问题,在数据保存之前,得知道这个数据的大小、取值范围、支持的操作...
    那么,数据的大小、取值、支持的操作 等属性,就是 数据类型 所要讨论的问题。


1、数据类型
    在C语言中,有如下类型
    1、基本类型(内置类型)
        整数类型
            char    /   unsigned char 
            short   /   unsigned short
            int     /   unsigned int 
            long    /   unsigned long 
        以上类型都是用来保存整数的,区别如下
        1、signed 和 unsigned
            signed表示有符号符数
                有符号既能表示正数,也能表示负数
            unsigned表示无符号数
                只能表示正数,但能表示更大的数
        2、所占空间大小不同
            char 占一个字节
            unsigned char 也占一个字节
            ...
            一般来说,类型所占大小,由操作系统和编译器共决定
            如果是在x86(即32位编译环境)平台下,一般:
            一个short占用2个字节,一个int占用4个字节,一个long也占用4个字节
            标准C提供了一个运算符sizeof(), 用来计算某种类型的值所占用的存储空间字节数
                sizeof(char) == 1
                sizeof(short) == 2
                sizeof(int) == 4
                sizeof(long) == 4
            C标准规定如下:
                sizeof(long) >= sizeof(int) >= sizeof(short) >= sizeof(char)

            注:
                我们使用的ubuntu18.04是64位的系统,其中内置的gcc编译器,是64位的编译器
                sizeof(long) == 8
                sizeof(char*) == 8

            练习:  
                char、short、int、long 有符号和无符号的取值范围分别是多少?
                例: 
                    unsigned char: 0-255
                    unsigned short: 0-65535
                    unsigned int : 0-2^32-1

            

        浮点数类型
            float           单精度浮点数
            double          双精度浮点数
            long double     长双精度浮点数
            以上浮点数类型的区别
            1、所占空间不同
                sizeof(float) == 4
                sizeof(double) == 8
                sizeof(long double) == ? (写代码验证)
            2、保存的精度不同
                C标准规定:
                    float必须至少能表示6位有效数字
                    double必须至少能表示10位有效数字
                    long double要保证至少一double类型的精度一致。

                在C语言中,浮点数默认使用的是double类型
                例:
                    3.14    默认就是double
                    3.14f   这才是float
                    
    2、构造类型
        数组
            一组相同元素的集合
            例: 
            double scores[70];

        结构 struct
            当单个变量和数组都无法满足需求时,可以使用struct来自定义数据类型
            例: 
            struct Student
            {
                char name[20];
                double score;
            };

        联合(共用体) union
            联合是一种数据类型,它能在同一块内存空间中存储不同的数据类型,但不是同时存储,同一时刻只能用其中一种解释。
            例: 
                union Type
                {
                    double d;
                    int a;
                    char c;
                };

        枚举 enum 
            主要用于提高程序的可读性,它能声明一组符号来表示整型常量。
            例: 
                enum Color {RED=0XFF0000, GREEN=0X00FF00, BLUE=0X0000FF};

            
    3、指针类型
        指针是一个值为内存地址的变量,指针变量的类型,就是指针类型
        例: 
            int a = 10;
            int* p = &a;

    4、void类型
        void在C语言中有三种用途
        1、任意指针/通用指针/万能指针
            void* 
        2、做为函数参数,表示该函数不接受任何参数
            int foo(void)
            {

            }
            foo(1); // error

        3、做为函数返回类型,表示该函数不返回任何数据
            void bar()
            {

            }
            int r = bar();  // error


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值