• 02.初识C语言2


    目录

    一、语句

    1.选择语句

    2.循环语句

    3.函数

    二、数组

    1.数组的定义

    2.数组的下标 

    3.数组的使用

    三、操作符

    1.算术操作符

    2.移位操作符 

    3.位操作符 

    4.赋值操作符 

    5.单目操作符

    ​编辑

    6.关系操作符

    7.逻辑操作符

    ​编辑

    8.条件操作符

    ​编辑

    9.逗号表达式

    10.下标引用、函数调用和结构成员 

    11.常见关键字

    1) 关键字typedf

    2)关键字static

    12. #define 定义常量和宏


    一、语句

    1.选择语句

    EG:

    如果你好好学习,你就可以去看张艺兴的演唱会

    如果你不好好学习,你就只能去看张翰

    if(条件1){ 条件语句}

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. int main()
    4. {
    5. int study = 0;
    6. printf("你会好好学习吗?(选择1 or 0):>");
    7. scanf("%d", &study);
    8. if (study==1)
    9. {
    10. printf("好好学习,看张艺兴\n");
    11. }
    12. else
    13. {
    14. printf("不好好学习,罚你看张翰\n");
    15. }
    16. return 0;
    17. }

    2.循环语句

    C语言循环结构(while循环,for循环,do…while循环) (biancheng.net)

    学习天数大于100天可以看张艺兴

    学习天数小于100天看张翰

    1. #include
    2. int main() {
    3. int day = 0;
    4. while (day < 100) {
    5. day++;
    6. printf("看张翰");
    7. }
    8. if (day >= 100)
    9. printf("看张艺兴吧");
    10. }

    3.函数

    特点:是简化代码,代码复用。

    1. #include
    2. int main()
    3. {
    4. int num1 = 0;
    5. int num2 = 0;
    6. int sum = 0;
    7. printf("输入两个操作数:>");
    8. scanf("%d %d", &num1, &num2);
    9. sum = num1 + num2;
    10. printf("sum = %d\n", sum);
    11. return 0;
    12. }
    13. //上述代码,写成函数如下:
    14. #include
    15. int Add(int x, int y)
    16. {
    17. int z = x+y;
    18. return z;
    19. }
    20. int main()
    21. {
    22. int num1 = 0;
    23. int num2 = 0;
    24. int sum = 0;
    25. printf("输入两个操作数:>");
    26. scanf("%d %d", &num1, &num2);
    27. sum = Add(num1, num2);
    28. printf("sum = %d\n", sum);
    29. return 0;
    30. }

    二、数组

    数组的定义:一组相同类型元素的集合

    数组的概念:数组中可以存放一组同类型的元素

    数组的创建和初始化

    \\int arr[10]={0,1,2,3,5,6}\\不完全初始化,剩余的默认初始化为0

    \\char arr[10={"a","b","c"}]\\不完全初始化,剩余的默认初始化为\0

    1.数组的定义

    int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素

    2.数组的下标 

    3.数组的使用

    1. #include
    2. int main()
    3. {
    4. int i = 0;
    5. int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    6. for (i = 0; i < 10; i++)
    7. {
    8. printf("%d ", arr[i]);
    9. }
    10. printf("\n");
    11. return 0;
    12. }

    变量可以是数组的下标

    1. #include
    2. int main()
    3. {
    4. int i = 0;
    5. int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    6. for (i = 0; i < 10; i++)
    7. {
    8. printf("%d\n", arr[i]);
    9. }
    10. return 0;

    三、操作符

    1.算术操作符

    2.移位操作符 

    3.位操作符 

    4.赋值操作符 

    5.单目操作符

    //后置++,表示先使用,后+

    • 表达式i++增加i,但返回的前一个值i。
    • 表达式++i递增i,并返回赋值后的新值 i
      1. int main()
      2. {
      3. int a = 0;
      4. int t = a++;
      5. printf("%d\n", t);
      6. }
      1. int main()
      2. {
      3. int a = 0;
      4. int t = ++a;
      5. printf("%d\n", t);
      6. }
    • 表达式i = i + 1将1加到i,将其写入i,然后返回赋值后的新值,就像。i ++i 

    6.关系操作符

    错误格式

    if(18<=a<=29)不能这样书写;

    因为是从右到左考试的,当a=88,则从右开始,第一部分成立,答案为1;其次为第二部分,仍成立,则为1;

    但实际判断结果应该为0】

    7.逻辑操作符

    // &&同时为真,则为真

    // ||有一个为真就是真

    8.条件操作符

    exp1成立,结果为exp2

    exp1不成立,结果为exp3

    9.逗号表达式

    exp1,exp2,exp3,...,expN

    10.下标引用、函数调用和结构成员 

    11.常见关键字

    //C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的。

    //变量不能是关键字 

    //register寄存器

    寄存器字节
    高速缓存xxM
    内存8G/16G
    硬盘500G
    网盘2T

    从小往上,速度越来越快,造价就越来越高,空间越来越小 (前三个)

    寄存器与CPU中央处理器的联系

    ///register int a=10//建议把a的值放入寄存器

    C语言中32个关键字详解 - 知乎 (zhihu.com)

    1) 关键字typedf

    typedef 顾名思义是类型定义,这里应该理解为类型重命名

    2)关键字static

    在C语言中: static是用来修饰变量和函数的

    1. 修饰局部变量-称为静态局部变量

    //一般情况下,局部变量出大括号会销毁

    //加入static不会销毁

    2. 修饰全局变量-称为静态全局变量

    3. 修饰函数-称为静态函数

    1.修饰局部变量

    1)无static状况

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. void test()
    4. {
    5. int a = 0;
    6. int t=a++;
    7. printf("%d\n", t);
    8. }
    9. int main()
    10. {
    11. int i = 0;
    12. while (i<10)
    13. {
    14. test();
    15. i++;
    16. }
    17. return 0;
    18. }

    //a进入就创建,出去就销毁

    2)有static状况

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. #include
    4. void test()
    5. {
    6. //static修饰局部变量
    7. static int i = 0;
    8. i++;
    9. printf("%d\n", i);
    10. }
    11. int main()
    12. {
    13. int i = 0;
    14. for (i = 0; i < 10; i++)
    15. {
    16. test();
    17. }
    18. return 0;
    19. }

    //普通的局部变量是放在栈区上的,这种局部变量进入作用域创建,除了作用域就释放了。

    //但是局部变量被static修饰后,这种变量就放在静态区,放在静态区的变量,创建好后,直到程序结束才释放。

    //本质上:static的修饰改变了局部变量的存储位置,因为存储位置的差异,使得执行效果不一样。

    //被static修饰不影响作用域

     2.修饰全局变量

    1)无static状况

    工程中的一个源文件

    int g_val = 10;

     工程中的另一个源文件

    1. #include
    2. extern int g_val;
    3. int main()
    4. {
    5. printf("%d\n", g_val);
    6. return 0;
    7. }

    无static时,可以得出结果

    2)有static状况

    static int g_val = 10;

     无法运行结果

    //全局变量本身是具有外部链接属性的

    //在第一个文件中定义的变量,在第二个文件可以通过【链接】 使用

    //但是如果全局变量被static修饰,这个外部链接就变成了内部链接属性,这个全局变量只能在自己所在的源文件内部使用

    //static的修饰,会把外部链接属性变成内部链接属性,最终使得全局变量的作用域变小了

    //加入static的目的,只想源文件内部独享全局变量,不想和同一工程的源文件共享

    3.修饰函数

    1)无global

    2)有global

    和第二种情况类似

    //函数本身是具有的外部链接属性的

    //被static修饰后,外部链接属性就变成了内部链接属性

    //使得这个函数只能在自己所在的源文件内部使用,其他源文件无法使用

    12. #define 定义常量和宏

    1. //define定义标识符常量
    2. #define MAX 1000
    3. //define定义宏
    4. #define ADD(x, y) ((x)+(y))
    5. #include
    6. int main()
    7. {
    8. int sum = ADD(2, 3);
    9. printf("sum = %d\n", sum);
    10. sum = 10 * ADD(2, 3);
    11. printf("sum = %d\n", sum);
    12. return 0;
    13. }

    1. #include
    2. #define 定义符号 / 宏
    3. #define M 100
    4. int Max(int x, int y)
    5. {
    6. //if (x > y)
    7. // return x;
    8. //else
    9. // return y;
    10. return (x > y ? x : y);
    11. }
    12. #define MAX(x,y) (x>y?x:y)
    13. #define ADD(x,y) ((x)+(y))
    14. int main()
    15. {
    16. //int a = M;
    17. //printf("%d\n", M);
    18. //printf("%d\n", a);
    19. int a = 10;
    20. int b = 20;
    21. //int m = Max(a, b);
    22. int m = MAX(a, b);
    23. //int m = (a > b ? a : b);
    24. printf("%d\n", m);
    25. return 0;
    26. }

     

  • 相关阅读:
    【wine】WINEDEBUG 分析mame模拟器不能加载roms下面的游戏 可以调整参数,快速启动其中一个游戏kof98
    AC发声:我踩过的坑 你们都(别再)踩了
    使用CFimagehost源码搭建免费的PHP图片托管私人图床,无需数据库支持
    PDF文件标题修改方法
    面试:自定义view / viewgroup 相关问题
    pytest-yaml 测试平台-1.新增项目和用例(有平台体验地址)
    AI创作系统ChatGPT商业运营版源码+AI绘画/支持GPT联网提问/支持Midjourney绘画+Prompt应用+支持国内AI提问模型
    SequoiaDB湖仓一体分布式数据库2022.6月刊
    golang报错fatal error: all goroutines are asleep - deadlock
    二维码智慧门牌管理系统:提升社会治理与服务的全新解决方案
  • 原文地址:https://blog.csdn.net/m0_47017197/article/details/127625981