zoukankan      html  css  js  c++  java
  • 【C】Re03

    一、变量

    变量存储了两个东西:

    1、内存空间地址

    2、内存空间存放的值

    本质是给内存地址起了一个别名,允许我们通过别名对内存进行访问

    void variable01() {
        int a = 100;
        printf("a -> %d
    ", a);
    }
    
    int main() {
        variable01();
        return EXIT_SUCCESS;
    }

    1、不进行赋值调用问题

    void variable02UseWithoutAssign() {
        int a;
        printf("a -> %d
    ", a);
    }
    
    int main() {
        variable02UseWithoutAssign();
        return EXIT_SUCCESS;
    }

    CLion允许程序正常执行,编辑区域会显示淡黄警告提示

    如果是VS则不允许程序执行,没有赋值的变量不允许使用

    如果声明的这个变量不知道应该赋值多少,就和CLion一样默认赋值0

    2、变量声明前后问题

    C允许变量可以在调用的函数之后赋值,语法:

    void variable03EarlyUse() {
        extern int sss;
        printf("sss been early use with extern keywords -> %d
    ", sss);
    }
    
    int sss = 1000;
    
    int main() {
        variable03EarlyUse();
        return EXIT_SUCCESS;
    }

    在写的时候发现,即使extern不声明int 数据类型,也是可以执行的,但是编译器输出有看到错误提示:

    warning: type defaults to 'int' in declaration of 'ssss' [-Wimplicit-int]

    extern关键字的作用

    告诉编译器这个变量的定义在后面,如果提前使用了,引导程序先找到变量的定义

    再回到函数中继续执行下一行,如果寻找的变量不存在。程序终止

    error: 'sss' undeclared (first use in this function); did you mean 'ssss'?

    但是请不要这样使用,程序的可读性很差,书写混乱

    二、常量

    在程序运行中不可发生改变的值

    但是C语言的常量存在五种形式:

    1、字面值数值常量:

    我们命名的变量在进行赋值时所使用的字符数值

    除了整数100或者20这样的,同时实数也算常量,实数就是小数

    2、字面值字符常量

    字母,转义字符,都时字符常量

    3、字符串常量

    和字符常量一致,除了单引号和双引号的区别

    4、符号常量

    宏常量的定义

    5、Consti定义

    const int aa = 22200;

    三、关键字 & 标识符

    C程序预先对一些关键字做出了程序的预定义

    参考知乎

    https://zhuanlan.zhihu.com/p/77474834

    四、数据类型

    void dataType() {
        short varA = 100; // 32768
        int varB = 100;
        long varC = 100;
        long long varD = 100;
    
        printf("short -> %hd
    ", varA);
        printf("int -> %d
    ", varB);
        printf("long -> %ld
    ", varC);
        printf("long -> %lld
    ", varD);
    }

    1、有符号与无符号整型区别?

    void signedAndUnsigned() {
        signed short varA = 327680;
        unsigned short varB = 327680;
        printf("varA -> %d
    ", varA);
        printf("varB -> %d
    ", varB);
    }
    
    int main() {
        signedAndUnsigned();
        return EXIT_SUCCESS;
    }

    五、SizeOf使用

    可以直接对数据类型获取字节占用数

    void sizeofUsage() {
    //    sizeof 用来查看数据类型占用的字节大小
        printf("dataType int size is -> %llu
    ", sizeof(int));
        printf("dataType short size is -> %llu
    ", sizeof(short));
        printf("dataType long size is -> %llu
    ", sizeof(long));
        printf("dataType long long size is -> %llu
    ", sizeof(long long));
        printf("dataType float size is -> %llu
    ", sizeof(float));
        printf("dataType double size is -> %llu
    ", sizeof(double));
    }
    
    int main() {
        sizeofUsage();
        return EXIT_SUCCESS;
    }

    sizeof 也可以是一个变量来获取

    int s = 2222;
    printf("%d", sizeof(s));

    六、Char字符型

    void charDataType() {
        char newLine = '
    ';
        char oneCharacter = 'a';
        printf("ch -> %c 
    ", oneCharacter);
        printf("newLine -> %d 
    ", newLine); // 以整型查看会被强转输出
    }
    
    int main() {
        charDataType();
        return EXIT_SUCCESS;
    }

     大小写转换:

    void lowerAndUpperTransform() {
        char ch = 'e';
        printf("this character char -> %c but int -> %d
    ", ch, ch);
    //    int n = (int) ch;
        ch = ch - 32;
        printf("after change, char -> %c but int -> %d
    ", ch, ch);
    }
    
    int main() {
        lowerAndUpperTransform();
        return EXIT_SUCCESS;
    }

    七、浮点型

    void floatDataType() {
        printf("%d
    ", sizeof(3.14));
        printf("%d
    ", sizeof(3.14f));
    }
    
    int main() {
        floatDataType();
        return EXIT_SUCCESS;
    }

    格式化输出的一些操作:

    void floatDataType() {double aa = 12.123456789;
    
        printf("%f
    ", aa); // 单精度 %f
        printf("%lf
    ", aa); // 双精度  %lf
    
        printf("%.2f
    ", aa); // 单精度 %f 指定小数保留位,并具有四舍五入
        printf("%.4f
    ", aa); // 双精度  %lf 指定小数保留位
    }
    
    int main() {
        floatDataType();
        return EXIT_SUCCESS;
    }

    八、字符串类型

    void stringDataType() {
        printf("string -> %s
    ", "Hello String");
        printf("string -> %d
    ", sizeof("Hello String")); // 拆分单个字符进行字节占用计算
        // 虽然字符只有12个,但是实际上还有一个的标志 表示这个字符串的结束
        printf("string -> %s
    ", "HelloString"); // 从这里输入将只保留Hello后续的字符串不计入了
    }
    
    int main() {
        stringDataType();
        return EXIT_SUCCESS;
    }

    字符串变量:

    void stringDataType2() {
        // 字符串,就是字符组成的数组 (Strings)
        char str[] = "Strings";
        printf("(%s)
    ", str);
        // 等同于这样的数组,但是单独打印输出会发现多出这么一个东西 (Strings �)
        char str3[] = {'S','t','r','i','n','g','s'};
    
        // 现在的合并打印会一起看到这个:(StringsStrings)
        printf("(%s)
    ", str3);
    }
    
    int main() {
        stringDataType2();
        return EXIT_SUCCESS;
    }

    九、SCANF 输入:

    void scan01() {
        int num = 0;
        printf("num mem-addr -> %x
    num value -> %d
    ", &num, num);
        printf("Input Tips: balabala...");
        // 第二参数需要注入一个变量的地址,变量存储了值和地址,但是要获取地址的话,使用&前缀实现
        scanf("%d", &num);
        printf("num mem-addr -> %x
    num value -> %d
    ", &num, num);
    }

     

  • 相关阅读:
    Apache Ant 1.9.1 版发布
    Apache Subversion 1.8.0rc2 发布
    GNU Gatekeeper 3.3 发布,网关守护管理
    Jekyll 1.0 发布,Ruby 的静态网站生成器
    R语言 3.0.1 源码已经提交到 Github
    SymmetricDS 3.4.0 发布,数据同步和复制
    beego 0.6.0 版本发布,Go 应用框架
    Doxygen 1.8.4 发布,文档生成工具
    SunshineCRM 20130518发布,附带更新说明
    Semplice Linux 4 发布,轻量级发行版
  • 原文地址:https://www.cnblogs.com/mindzone/p/13931548.html
Copyright © 2011-2022 走看看