Week1

作者: 余生i_de8d | 来源:发表于2018-09-15 21:48 被阅读0次

    周一笔记

    printf函数

    printf函数的格式

    %d          有符号10进制整型
    %i          有符号10进制整型
    %u          无符号10进制整型
    %o          无符号8进制整型
    %x(%X)      无符号16进制整型
    %f          单、双精度浮点数(默认保留6位小数)
    %e(%E)      以指数形式输出单、双精度浮点数
    %g(%G)      以最短输出宽度,输出单、双精度浮点数
    %c          字符
    %s          字符串
    %p          地址
    

    scanf函数

    // 利用fflush方法清空缓冲区(不是所有平台都能使用)
    fflush(stdin);
    // 利用setbuf方法清空缓冲区(所有平台有效)
    setbuf(stdin, NULL);
    

    类型转换

    C语言当中,大类型转换成小类型会丢失精度,直接去尾

    if语句

    在企业开发当中,如果用if与常量进行判断,要先常量再写变量

    if(num = 10) {} 
    // 在这个地方,本来是想判断num是否等于10的,应该这么写(if(num == 10))却少写了一个等号。而这样编译器是不会报错的。
    // 所以以后在用if判断变量是否等于一个常量的时候。就要把常量写在前面(if(10 == num))这样的话,就算少写一个等号,编译器就会立马报错。
    
    if(num == 3.14) {} 
    // 这种写法不好,与上面的原因是一样的。这里就不再赘述。
    if(3.14 == num) {} 
    // 用if判断变量是否等于一个小数的时候,不要直接与他做判断。
    // 因为与小数判断,小数很容易失去精度。最好转换成字符串进行对比,或者用大于等于(小于等于)的形式来处理会更稳妥。
    
    
    
    // if语句为了避免不必要的麻烦,即使是只有一条语句,也要写上大括号
    

    switch语句

        /*
            标准格式
            switch(num){
            case 1:
                printf("星期一\n");
                break;
            case 2:
                printf("星期二\n");
                break;
            default:
                printf("Other\n");
                break;
            }
    
             在case 语句后面最好不要定义变量,如果要定义的话就用大括号括起来
        */
    

    在企业开发中, 能用if就用if,if更适合对区间的判断, 或者对多条件的判断

    for循环

    注意点

    // 1.先编写循环结构的基本格式
    // 2.将需要重复执行的代码拷贝到循环体重({}里面我们就称之为循环体)
    // 3.确定循环结束的条件
    
    for(int num = 0;num < 5;num++) {
        int num = 20;
        printf("%i\n", num );   // 20
    }
    // 在这段代码当中在QT当中是可以编译的。
    // 内存当中,for类似于函数开辟了一个内存空间,然后for的大括号在for的内存空间当中又开辟了一个内存空间。
    
    // 然而我在公司用sublime + MinGW 是不可行的。了解就好。
    

    函数

    注意点

        函数定义的格式
        返回值类型 函数名称(形参列表){
             被封装到函数中的代码;
        }
    
        同名函数不可以有多个,只可以有一个。
        函数声明可以有多个
        不可以嵌套函数定义
    
        // 在C语言当中,函数定义是不能定义在其它函数内的。就算可以编译,也不要这么做。因为这不标准。
    
        // 函数的声明可以在调用函数之前的任何地方,而且函数的声明可以重复出现,但是并没有什么用处。
        // 函数的实现只可以出现一次,不可以定义相同函数名的函数。
    

    交换两个元素的值

        // 方式一
        int temp = a;
        a = b;
        b = temp;
    
        // 方式二
        a = a + b;
        b = a - b;
        a = a - b;
    
        // 方式三
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
    

    随机数

        // 首先要引入头文件
        #include <stdlib.h>
        #include <time.h>
        
        // 代码
        srand(time(NULL));
        int num1 = rand();  //  随机生成0 至 2147483647之间的数
        // 若想要生成0到n之间的随机数就用以下的方法
        int num2 = rand() % n;
        // 若想生成大于2,小于9的随机数,可以按如下思想
        int num3 = (rand() % 7) + 2;
    
    

    进制的代表

        在C语言中, 如果想用十六进制表示某个数, 前面需要加上0x
        在C语言中, 如果想用八进制表示某个数, 前面需要加上0
        在C语言中, 如果想用二进制表示某个数, 前面需要加上0b
    

    进制的转换

        十进制 --> 二进制
        规则: 除2取余, 余数倒叙
    
        二进制 --> 十进制
        规则: 系数 * 基数(索引)
    
        十进制转换八进制
        规则: 除8取余, 余数倒叙
    
        八进制转换十进制
        规则: 系数 * 基数(索引)
    
        十进制转换十六进制
        规则: 除16取余, 余数倒叙
    
        十六进制转换十进制
        规则: 系数 * 基数(索引)
    

    源码、反码、补码

    • 为什么会有源码、反码、补码这些东西呢?
    • 因为负数如果用源码在计算机中直接计算的话会出错。
    • 在计算机当中数据的运算都是补码的形式来处理的!!!

    例如1-1
    因为计算机只会做加法计算。所以在底层其实是这样的。
    1 + (-1)

    >           0000 0000 0000 0000 0000 0000 0000 0001
    >      +    1000 0000 0000 0000 0000 0000 0000 0001
    >  ---------------------------------------------------
    >           1000 0000 0000 0000 0000 0000 0000 0010
    >  最后它的值是-2,这就错了,所以引入的反码,补码的概念
    

    正数的原码、反码、补码

    正数的原码就是十进制转换成的二进制码
    正数的反码、补码和原码一样

    负数的原码、反码、补码

    负数的原码就是这个数的正数的二进制码的基础上。第一个符号位变成1

    > 1的源码: 0000 0000 0000 0000 0000 0000 0000 0001
    > -1的源码:1000 0000 0000 0000 0000 0000 0000 0001
    

    负数的反码就是在源码的基础上,符号位不变,其它位取反,1变0,0变1。

    > -1的源码:1000 0000 0000 0000 0000 0000 0000 0001
    > -1的反码:1111 1111 1111 1111 1111 1111 1111 1110
    

    负数的补码就是在反码的基础上加1

    > -1的反码:1111 1111 1111 1111 1111 1111 1111 1110
    > -1的补码:1111 1111 1111 1111 1111 1111 1111 1111
    

    位运算

    & 按位与
    | 按位或
    ~ 按位取反
    ^ 按位异或

    • 在C语言中0代表假, 1代表真
        & 按位与
        规则: 一假则假
    
        | 按位或
        规则: 一真则真
        
        | 按位或
        规则: 一真则真
    
        ~ 按位取反
        规则: 真变假, 假变真
    
        ^ 按位异或
        规则: 相同为假, 不同为真
    
    << 左移
    >> 右移
    

    内在分析

        变量的内存分析
        1.内存是连续的
        2.内存地址从大到小
        3.计算机会从内存地址大的开始分配内存(内存寻址从大到小)
        也就是说先定义的变量内存地址大于后定义的变量
    

    相关文章

      网友评论

          本文标题:Week1

          本文链接:https://www.haomeiwen.com/subject/vqcpwftx.html