初始C语言(2)

# include <stdio.h>
# include<string.h>

int main()
{
    /*
    // 1、四种常量
    //(1)字面常量
    3;
    100;
    3.14;
    */
    

    /*
    //(2)const 修饰的常变量
    const int num = 4; //const具有常属性,但仍然是变量;
    printf("num = %d\n",num);
    //此时num的值不能被修改了
    //num = 8;
    //printf("%d\n",num);
    */


    /*
    //(3)#define 定义的标识符常量
#define MAX 10

    int arr[MAX] = {0};
    printf("MAX = %d\n",MAX);
    */

    /*
    //(4)枚举常量
    //枚举就是一一列举的意思;枚举关键字-enum
    enum Sex
    {
        MALE,
        FEMALE,
        SECRET
    };

    enum Sex s = FEMALE; //其中s可以改变,但是FEMALE不能改变的,默认是1
    printf("%d\n",MALE);
    printf("%d\n",FEMALE);
    printf("%d\n",SECRET);
    */


    // 2、字符串,转义字符,注释
    /*
    // (1)字符串
    //“”双引号里面的是字符串,字符串的结束标志是‘\0’,但是'\0'不能算字符串内容。
    char arr1[] = "abc"; // 数组的形式储存
    // “abc”= 'a', 'b', 'c', '\0' ('\0'的值是0(阿斯克码)) ('\0'是字符串的结束标志)
    //ASCII编码,因为电脑只能识别二进制的数字,故需要将每个字母符号等对应数字;
    char arr2[] = {'a', 'b', 'c', '\0'}; //此种形式需要主要添加0表示字符串的结束标志;
    char arr22[] = {'a', 'b', 'c', 0};
    char arr23[] = {'a', 'b', 'c'};


    printf("%s\n",arr1);
    printf("%s\n",arr2);
    printf("%s\n",arr22);

    printf("%d\n",strlen(arr1));// strlen 字符串的长度
    printf("%d\n",strlen(arr2));
    printf("%d\n",strlen(arr23));// 此时字符串没有结束标志,长度为随机值
    */

    /*
    //(2)转义字符
    //转义字符-转变原来的意思
    // \n换行;\t水平制表符;\\反斜杠,防止他被解释为一个转义序列符;
    // \ddd ddd表示1-3个八进制的数字。如\130 130是八进制转化为十进制是88,ASCII对应的是X;
    // \xdd dd表示2个十六进制数字。如\x30 同理对应的是0;

    printf("%c\n",'\130');
    printf("%c\n",'\x30');
    */

    
    //(3)注释
    //
    /* */ 

    /*
    //3、选择语句(分支语句)
    int input = 0;

    printf("加入比特\n");
    printf("你要好好学习吗?(1/0)>:");
    scanf("%d",&input);
    if(input == 1)
        printf("恭喜你,好offer\n");
    else
        printf("回家卖红薯吧!\n");
    */


    /*
    // 4、循环语句
    int line = 0;
    printf("加入比特\n");

    while(line <= 2000)
    {
        printf("第%d行代码\n",line);
        line++;
    }
    if (line>=2000)
        printf("恭喜你,好offer");
    */
    

    /*
    //5、函数
    int a = 1;
    int b = 2;
    
int Add(int x, int y)
{
    int z = x + y;
    return z;
}
    printf("%d\n",Add(a, b));
    */
    
    
    //6、数组: 一组相同类型元素的集合;
    /*
    int arr1[10] = {1,2,3,4,5,6,7,8,9,10}; //定义一个存放10个整数数字的数组;
    //char arr2[20];
    //float arr3[15];
    //printf("%d\n",arr1[4]);//用下标的方式访问数组的元素,下标从0开始;

    int i = 0;
    while(i<10)
    {
        printf("%d ", arr1[i]);
        i++;

    }
    */


    //7、操作符
    //(1)算术操作符: +(加)  -(减)  *(乘)  /(除,只取商的整数)  %(只取余)
    //(2)移位操作符:<<左移    >>右移  //移动的是二进制位
    /*int a = 1;
    int b = a << 1;
    int c = a << 2;
    printf("%d\n",b);
    printf("%d\n",c);*/

    //(3)位(二进制)操作   &按位与  |按位或  ^按位异或
    /*
    int a= 3;      //011
    int b= 5;      //101 
    int c = a&b;   //001 与操作就是同时为1才是1
    int d = a|b;   //111 或操作就是只要有1就是1
    int e = a^b;   //110 异或:对应的二进制位相同就是0,相异就是1;

    printf("%d\n",c); // 此时c为001
    printf("%d\n",d); // 此时d为111
    printf("%d\n",e); // 此时e是110
    */

    //(4)赋值操作符 =  +=  -=  *=  /=  %=  &=  |=  ^=  >>=  <<=
    /*
    int a = 5;
    int b = 5;
     a = a+10;
     b += 10; // 以上此两种写法是一样的;


     printf ("%d\n%d\n",a,b);
    */


    //(5)单目操作符 双目操作符 三目操作符
    // c语言中,0表示假,其他一切非0表示真;
    
    // ! 逻辑反操作
    // - 负值
    // + 正值
    // & 取地址
    // sizeof 操作数的类型长度(以字节为单位)
    // ~ 对一个数的二进制按位取反
    // -- 前置、后置(后置++,先赋值,再++,)(前置++,先++,再赋值)
    // ++ 前置、后置(同上)
    // (类型) 强制类型转换  eg: int a = (int)3.14; 将3.14转换为int类型; 
    
    /*
    int a = 0;  //000000000000000000000000
    int b = ~a; //111111111111111111111111 按位取反,原来是0就是1;
    int c = 5;
    int d = c++; //此时d=5;c=6
    int e = ++d; //此时d=6,e=6

    int arr1[5] = {1, 2, 3, 4, 5};
    int arr2[] = {1, 2, 3, 4, 5};


    printf("%d\n",a);
    printf("%d\n",!a);// ! 逻辑反操作
    printf("%d\n",b); // 打印的是这个数的原码
    //(原码 反码 补码)只要是整数,内存中存储的都是二进制的补码
    //对于正整数,原码反码补码三码统一,负数存储的是补码,转换规则如下;
    //补码 111111111111111111111111 补码减1得到反码
    //反码 111111111111111111111110 符号位不变,其他位相反得到原码
    //原码 100000000000000000000001 (第一位为符号位,1位负,0位正)得到-1
    
    printf("c = %d\n",c);
    printf("d = %d\n",d);
    printf("e = %d\n",e);
    printf("数组大小是%d\n",sizeof(arr1)); //数组元素个数 * int的字节数4
    printf("数组arr2有%d个元素\n",sizeof(arr2)/sizeof(arr2[0]));
    */

    //(6)关系操作符
    // >大于  <小于  >=大于等于  <=小于等于 !=用于测试不相等 ==用于测试相等

    //(7)逻辑操作符
    //(C语言中表示真假:0表示假;一切非0表示真;)
    // && 逻辑与
    // || 逻辑或
    
    /*
    int a = 0;
    int b = 5;
    int c = 3;

    int d = a && b;//a为假 b为真 d=0
    int e = a || b;//a为假 b为真 e=1

    int f = b && c;//b为真 c为真 f=1
    int g = b || c;//b为真 c为真 g=1


    printf("d=%d\n",d);
    printf("e=%d\n",e);
    printf("f=%d\n",f);
    printf("g=%d\n",g);
    */


    //(8)条件操作符
    //exp1 ? exp2 : exp3    (三目操作符)
    /*
    int a = 10;
    int b = 20;
    int max = 0;

    max = (a > b ? a : b);
    printf("max = %d\n",max);
    */

    //(9)逗号表达式
    // exp1,exp2,exp3 .....


    // (10)下标引用,函数调用和结构成员;
    // []下标引用  ()函数调用     .      ->
    //比如数组里面访问元素就是用下标


    //(8)关键字

    return 0;
}

上一篇:2021-09-27


下一篇:leetcode刷题第一天