学C的第四天(各种操作符补充;简单了解多种关键字,define定义常量和宏,结构体)(1)

简介: 10.6:关系操作符:>:大于>=:大于等于<:小于<=:小于等于!=:用于测试“不相等”==:用于测试“相等”

56adbf9e6c124bbb83dd8bbe40e03671.png 10.6:关系操作符:

>:大于

>=:大于等于

<:小于

<=:小于等于

!=:用于测试“不相等”

==:用于测试“相等”

//关系操作符:
#include <stdio.h>
int main()
{
  int input1 = 0;
  int input2 = 0;
  while (scanf("%d %d", &input1, &input2) == 2) //运用scanf方法传参数要加取地址符&,不要老忘记!!!
  {
    if (input1 == input2) //==:等于
    {
      printf("%d 等于 %d\n",input1 ,input2);
    }
    else
    {
      if (input1 > input2)// >:大于
      {
        printf("%d 大于 %d\n", input1, input2);
      }
      else if (input1 < input2)// <: 小于
      {
        printf("%d 小于 %d\n", input1, input2);
      }
    }
  }
  return 0;
}

0667dcd28aa347aab5ad8df81a1c8143.png

10.7:逻辑操作符:

&&:逻辑与(并且),两个操作数都为真,才为真,只要有一个为假,就是假

||:逻辑或(或者),两个操作数只要有一个为真,则为真,两个同时为假,才为假

//逻辑操作符:
#include <stdio.h>
int main()
{
  int a = 0;//默认:0为假
  int b = 1;//    非0为真
  if (a && b)//&&:逻辑与
  {
    printf("两个操作数同时为真");
  }
  else if (a || b)//||:逻辑或
  {
    printf("两个操作数其中一个为真");
  }
  return 0;
}

a7d09158642b426a93d4b26580af48ac.png

10.8:条件操作符(三目操作符):

exp1 ? exp2 : exp3                 根据表达式1的结果来确定是表达式2执行还是表达式3执行(exp:表达式)                                 (exp1)                            (exp2)                 (exp3)


真-->  执行 - 不执行              表达式2(exp2)执行的话,整个表达式的结果就是表达式2的结果


假--> 不执行 - 执行               表达式3(exp3)执行的话,整个表达式的结果就是表达式3的结果


(三目操作符(表达式)-----  恰好有三个表达式)

//条件操作符(三目操作符)
#include <stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  //输入
  scanf("%d %d",&a ,&b);
  int m = 0;
  //三目操作符:(逻辑类似下面的if...else...语句)
  // 写法一:
  //(a > b) ? (m = a) : (m = b)
  //  exp1    exp2    exp3
  //写法二:
  m = (a > b ? a : b);
  //表达式2(exp2)执行的话,整个表达式的结果就是表达式2的结果
  //表达式3(exp3)执行的话,整个表达式的结果就是表达式3的结果
  /*if (a > b)
    m = a;
  else
    m = b;*/ //a = b的话,进入else赋值哪个都一样
  printf("%d\n", m);
  return 0;
}

image.png

10.9:逗号表达式:

exp1, exp2, exp3, ...expN     拿逗号隔开的一串表达式(从左向右依次计算)  (exp:表达式)

//逗号表达式:
#include <stdio.h>
int main()
{
  int a = 3;
  int b = 2;
  int c = 5;
  //逗号表达式:exp1, exp2, exp3, ...expN
  //从左向右依次计算
  //逗号表达式的结果时最后一个表达式的结果
  int d = (a+=3, b=5, c=a+b, c-4);
  //    a=a+3=6  b=5 c=6+5=11 c-4=7
  //              最后的结果=7
  printf("%d\n",d);
  return 0;
}

image.png

10.10:下标引用、函数调用和结构成员:

[]        ()        . (后期再学)       ->(后期再学)

*[] -- 下标引用操作符(数组在引用时的一个习惯):

// [] -- 下标引用操作符:
#include <stdio.h>
int main()
{
  int arr[10] = {1,2,3,4,5,6,7,8,9,10};
  //下标:    0 1 2 3 4 5 6 7 8  9 
  printf("%d\n",arr[5]);//取数组中下标为5的值
  // []是一个操作符,有两个操作数:这里一个是arr,一个是5
  return 0;
}


8b8083ae63ae464ca3ca2a548acc5100.png

*() -- 函数调用:

//():函数调用操作符:
#include <stdio.h>
int Add(int x, int y)//这里的括号是语法限定
{
  return x + y;
} 
int main()
{
  int z = Add(3,5);//调用Add()函数,这里的()就是函数调用操作符
           //这里有三个操作数: Add  3 5 
  printf("%\d\n",z);
  printf("hehe");//调用printf()函数,这里的()就是函数调用操作符
           //这里有两个操作数“   printf  "hehe"
  return 0;
}


46aa3bc7c87140f5b5e758a42d5817e8.png

11*关键字:


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


11.1--修饰变量的关键字:

auto        --        局部变量自动创建,自动销毁


extern        --        声明外部符号


register        --        寄存器


static        --        "静态"

 *auto:

//关键字:auto
#include <stdio.h>
int main()
{
  auto int num = 0; //局部变量本身都是有auto(自动创建,自动销毁)的,所有干脆都给省略掉了
  //局部的变量是进入作用域创建,出了作用域销毁
  //这里是 自动创建、自动销毁的 -- auto
  return 0;
}

image.png

   *static:

栈区堆区静态区:)


79c61e47cf184c12b1cfdfe2fdf76020.png

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

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

(未使用static时:)

//static 修饰局部变量
#include <stdio.h>
void test()
{
  int a = 5;
  a++;
  printf("%d\n",a);
}
int main()
{
  int i = 0;
  while (i < 10)
  {
    test();
    i++;
  }
  return 0;
}


56adbf9e6c124bbb83dd8bbe40e03671.png

(使用static后:变量a变成静态变量,存放在静态区

//static 修饰局部变量
#include <stdio.h>
//本来一个局部变量是存放在栈区的,如果被static修饰就存储到静态区了
//static 修饰局部变量改变了变量的存储类型(位置),使得这个静态变量的生命周期变长了,直到程序结束才结束
void test()
{
  static int a = 5;//加上static属性,变成静态变量,程序结束才销毁
  //被static修饰的局部变量 
  //出了作用域后,不再自动销毁,进入作用域也不再自动创建
  //变量a在编译时就已经创建了
  a++;
  printf("%d\n",a);
}
int main()
{
  int i = 0;
  while (i < 10)
  {
    test();
    i++;
  }
  return 0;
}

146de3c6ff784580bdb80b496b521f13.png375985742f7a4efe828b3f8951c9ef9f.png  

相关文章
|
C语言
写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明(C语言)
写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明(C语言)
60 0
|
6月前
|
编译器 C语言
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
|
6月前
|
编译器
关键字static#define 定义常量和宏
关键字static#define 定义常量和宏
39 0
|
存储 缓存 编译器
C语言标准定义的32个关键字
C语言标准定义的32个关键字
149 0
|
6月前
|
存储 程序员 Shell
【C/C++ 基本语法 结构体】C++ 结构体声明(定义)以及不同写法的差异
【C/C++ 基本语法 结构体】C++ 结构体声明(定义)以及不同写法的差异
85 1
|
C语言
7.10 【C语言】关于变量的声明和定义
7.10 【C语言】关于变量的声明和定义
55 0
|
6月前
|
存储 程序员 编译器
C++注释、变量、常量、关键字、标识符、输入输出
C++注释、变量、常量、关键字、标识符、输入输出
|
6月前
|
程序员 C语言
在C语言中,typedef是一种用来创建新的数据类型名的关键字
在C语言中,typedef是一种用来创建新的数据类型名的关键字
43 0
|
Java 编译器 C语言
学C的第四天(各种操作符补充;简单了解多种关键字,define定义常量和宏,结构体)(2)
[被static修饰的变量(静态变量)和全局变量的区别:都存放在静态区中,但静态变量的作用域还是在局部,全局变量的作用域是任意地方,两者生命周期相同,都是程序结束才销毁] 2.修饰全局变量 - 称为静态全局变量 (未使用static时:)
|
编译器 C语言
C语言基础知识:变量 (局部和全局)与常量(枚举常量.....)
C语言基础知识:变量 (局部和全局)与常量(枚举常量.....)
78 0