C 语言的学习(二)运算符 判断语句 循环语句 作用域

102 阅读8分钟

C语言 运算符 判断语句 循环语句 作用域

C语言 运算符

在我们的C语言中包含了很多的运算符,其中含有:

  1. 算数运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 位运算符
  5. 赋值运算符
  6. 杂项运算符


算数运算符

该运算符就是用来实现的是我们的对数字类型的数据进行运算的一种操作符

运算符描述实例+
+将两个运算单元实现相加的操作a + b
-将两个运算单元实现相减的操作a - b
*将两个运算单元实现相乘的操作a * b
/将两个运算单元实现相除的操作a / b
%将两个运算单元实现求模的操作a % b
++将一个运算单元实现自增操作a++++a
--将一个运算单元实现自减操作b----b

这里我们需要注意的就是自增(减)是需要分为我们的前后的

前自增(减) : 就是实现的是将变量先实现 +(-)1 的操作,然后自身再实现引用

后自增(减) :就是实现的是将变量先引用,然后实现自身+(-)1 的操作的

#include <stdio.h>
 
int main()
{
   int c;
   int a = 10;
   c = a++; 
   printf("先赋值后运算:\n");
   printf("Line 1 - c 的值是 %d\n", c );
   printf("Line 2 - a 的值是 %d\n", a );
   a = 10;
   c = a--; 
   printf("Line 3 - c 的值是 %d\n", c );
   printf("Line 4 - a 的值是 %d\n", a );
 
   printf("先运算后赋值:\n");
   a = 10;
   c = ++a; 
   printf("Line 5 - c 的值是 %d\n", c );
   printf("Line 6 - a 的值是 %d\n", a );
   a = 10;
   c = --a; 
   printf("Line 7 - c 的值是 %d\n", c );
   printf("Line 8 - a 的值是 %d\n", a );
 
}


关系运算符

关系运算符常用于我们的关系判断中,最终实现比较的时候,实现返回的是我们的 bool 值,用于分支语句或者循环语句中

运算符描述实例
==检查两个操作数是否相等a == b
!=检查两个操作数是否不相等a != b
检查两个操作数的大小关系a > b
<检查两个操作数的大小关系a < b
>=检查两个操作数的大小关系a >= b
<=检查两个操作数的大小关系a <= b
#include <stdio.h>
 
int main()
{
   int a = 21;
   int b = 10;
   int c ;
 
   if( a == b )
   {
      printf("Line 1 - a 等于 b\n" );
   }
   else
   {
      printf("Line 1 - a 不等于 b\n" );
   }
   if ( a < b )
   {
      printf("Line 2 - a 小于 b\n" );
   }
   else
   {
      printf("Line 2 - a 不小于 b\n" );
   }
   if ( a > b )
   {
      printf("Line 3 - a 大于 b\n" );
   }
   else
   {
      printf("Line 3 - a 不大于 b\n" );
   }
   /* 改变 a 和 b 的值 */
   a = 5;
   b = 20;
   if ( a <= b )
   {
      printf("Line 4 - a 小于或等于 b\n" );
   }
   if ( b >= a )
   {
      printf("Line 5 - b 大于或等于 a\n" );
   }
}


逻辑运算符

运算符描述实例
&&逻辑与a && b
逻辑或ab
逻辑非!a

逻辑与: 就是实现的是多个判断条件之间,全部为 true ,最终才为真 true

逻辑或:就是实现的是多个判断条件之间,一个是对的那么就是为真 true

逻辑非: 就是实现的是判断添加为真那个就取假,就是真假亦之

#include <stdio.h>
 
int main()
{
   int a = 5;
   int b = 20;
   int c ;
 
   if ( a && b )
   {
      printf("Line 1 - 条件为真\n" );
   }
   if ( a || b )
   {
      printf("Line 2 - 条件为真\n" );
   }
   /* 改变 a 和 b 的值 */
   a = 0;
   b = 10;
   if ( a && b )
   {
      printf("Line 3 - 条件为真\n" );
   }
   else
   {
      printf("Line 3 - 条件为假\n" );
   }
   if ( !(a && b) )
   {
      printf("Line 4 - 条件为真\n" );
   }
}


赋值运算符

运算符描述实例
=简单的赋值操作a = 10
+=加且赋值操作a += 10 等价于 a = a + 10
-=减且赋值操作a -= 10 等价于 a = a - 10
*=乘且赋值运算符a *= 10 等价于 a = a * 10
/+除且赋值运算符a /= 10 等价于 a = a / 10
%=求模且赋值运算符a %= 10 等价于 a = a % 10

位运算符 杂项运算符 ↦ sizeof & 三元 自行了解



C语言 判断语句

首先我们需要知道的是每一种编程语言中都是具有这个判断语句的(分支语句)

判断语句中的代码块需要满足特定的条件才可以运行

C 语言或者其他编程语言中,把任意的非零和非空的值假定为的 true , 把 零或者null 假定为 false

语句描述
if 语句可以根据条件来决定代码块是否运行
if...else...语句条件为真就运行 if 的代码块,否者就是运行 else 的代码块
嵌套 if 语句就是进入层层的判断是否运行代码块
switch 语句常用于对一个变量的值进行比较
嵌套 switch 语句进行多次判断一个变量的值

三元运算符: Exp1 ? Exp2 : Exp3;

意思就是: 如果满足 Exp1,就直接运行Exp2, 否则就是运行 Exp3

三元运算符的使用是可以简化我们的很多代码的书写的

#include<stdio.h>
 
int main()
{
    int num;
 
    printf("输入一个数字 : ");
    scanf("%d",&num);
 
    (num%2==0)?printf("偶数"):printf("奇数");
}


C语言 循环语句

使用循环语句,就是为了实现循环运行一个代码块,使其完成相同的功能代码体

每种编程语言中都是含有 循环语句,而且都是大致相同的



循环类型

循环类型描述
while 循环满足条件就直接进入循环
for 循环多次执行一个语句序列,简化管理循环变量的代码
嵌套循环您可以在 while、for 或 do..while 循环内使用一个或多个循环


循环控制语句

控制语句描述
break终止循环switch 语句,程序流将继续执行紧接着循环或 switch 的下一条语句。
continue告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。
goto将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。


无限循环

对于 while 循环而言,实现无限循环的话,使用的就是我们的 while(true)

对于 for 循环而言,实现无线循环即是什么判断条件都不写 for( ; ; )



C语言 函数

函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。

您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。

函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。



声明函数

return_type function_name (parameter list);

return_type 就是指的是函数的返回值类型

function_name 就是值得是函数的函数名,后面需要使用他来实现调用函数

parameter 就是值得是函数的参数列表,这个参数就是我们的形参,在传递参数的过程中实际上就是赋值的操作

函数参数的列表的话,没有参数的时候,可以使用 void 代替



定义函数

return_type function_name (parameter list) {
    exe code body
}

实现定义函数这一步就是为了完成内部的函数功能体的书写以及实现

/* 函数返回两个数中较大的那个数 */
int max(int num1, int num2) 
{
   /* 局部变量声明 */
   int result;
 
   if (num1 > num2) {
      result = num1;
   } else {
      result = num2;
   }
   return result; 
}


函数参数

调用类型描述
传值调用该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
引用调用通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。

如果是传值的调用的话,那么最终的实现的就是产生新的内存地址,形参和实参的内存地址不同,所以说两个互不影响

引用调用: 进行赋值的时候,就是进行赋值的是内存地址,这个形参和实参实现访问就是同一个变量

在 C / C++ 中,变量存储的是数据,但是通过某种特定的语法,是可以实现直接赋值内存地址的,这个就是后面的指针



C语言 作用域

在所有的编程语言中都是含有这个作用域问题的

全局作用域 | 局部作用域

在全局作用域中定义的变量在任何地方都是可以实现访问的

在局部作用域中实现定义的变量只可以在本身的所在的作用域中才可以实现访问以及使用