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);
    }

     

  • 相关阅读:
    angular4升级angular5问题记录之this.location.back()
    angular4升级angular5问题记录之No NgModule metadata found for 'AppModule'
    Angular4图片上传预览路径不安全问题
    Angular4.0引入laydate.js日期插件方法
    Angular4.0用命令行创建组件服务出错
    IE10以下的img标签问题
    关于for循环删除数组内容出现的问题
    关于onmouseover和onmouseout的bug
    纯lua实现Base64加密与解密
    SciTE如何修改背景色
  • 原文地址:https://www.cnblogs.com/mindzone/p/13931548.html
Copyright © 2011-2022 走看看