初探C语言(二)

上一篇写到了转义字符,这一篇接着往下

目录

选择语句

循环语句

函数

数组

创建数组

访问数组

操作符

算数操作符

 移位操作符

位操作符

赋值操作符

逻辑操作符

单目操作符

关系操作符

条件操作符

关键字

typedef

static

结尾


 

选择语句

用于分类的情况,比如你的考试成绩,低于60不及格,60及以上及格

一般使用if语句实现

if语句的语法

if(条件1)

{

        语句1;

}

else if(条件2)

{

        语句2;

}

else

{

        语句3;

}

满足哪个括号的条件就进入对应的语句,语句只有一条时不需要“{}”

例:还是考试成绩

#include<stdio.h>
int main()
{
    int a=0;
    printf("输入你的成绩\n");
    scanf("%d",&a);
    if(a<60)
        printf("不及格\n");
    else
        printf("及格\n");
    return 0;
}

循环语句

用来执行一些重复的操作,比如求1+2+3+...+100的和

这个时候就需要循环语句来完成,当然你如果要创建100个变量再把他们加起来也没人拦着你

循环语句有三种

  • while循环
  • for循环
  • do...while循环

这里只介绍while循环,其它后续再介绍

while语句的语法

while(条件)

{

        语句;

}

满足条件进入循环,不满足不进入循环

例:

 

函数

C语言中的函数与数学上的函数不同,C语言中的函数指程序中的某部分代码,负责完成某项特定任务,具备相对的独立性。

函数可分为库函数和自定义函数,库函数像strlen、printf等,在使用时需要引用相应的头文件,自定义函数就是自己定义的函数

一般自定义函数包含以下几点:返回值、函数名称、函数形参;通常函数在main()前定义,也可在main()函数后定义,但在前面需要进行声明

数组

数组就是一组相同类型的元素的集合,数组的存在就是用来存放元素过多的数据,这里简单介绍数组的操作

创建数组

int arr[5]={2,6,4,7,9};

int表示数组类型,[5]表示可存放的元素的个数,[]内只能写入常量表达式

访问数组

数组里的每一个元素都有对应的下标,下标从0开始,访问数组就是通过下标来访问

上述数组的下标

数组元素26479
下标01234

如果打印元素6

printf("%d",arr[1]);

操作符

C语言中有很多操作符,这里也是简单介绍,不过多深入

算数操作符

除四则运算外还有取模操作符“%”

具体取模操作符的用法:5%2,得到的是5/2的余数,结果为1

关于操作符“/”还有一点,我们都知道7/2=3.5,但在C语言中有一点不同

虽然数据类型和打印的格式都没有问题,但结果却是3,为什么?

因为在C语言中操作符“/”要想得到小数,除数和被除数至少要有一个写成小数的形式,所以将7/2改成7.0/2或7/2.0即可,你要愿意也可以两个都改

那现在还有一个问题,打印的结果后面那么多0看着不舒服,我只想打印3.5 怎么办

这个也好办,在lf和%之间插入一个小数即可,小数点前的数字指定变量的总长度,小数点后的数字指定小数位数

 移位操作符

位指的是二进制位,信息在计算机中是以二进制储存的,移位操作符可将二级制位进行移动

<<为左移,>>为右移

比如说下面的代码:

int a=1;
int b=a<<1;

 int在内存中占4个字节,所以int a在内存的二进制储存:

00000000000000000000000000000001

将a的二进制左移一位后的b:

00000000000000000000000000000010

所以b表示的就是2

位操作符

位同样指二进制位,共三个操作符

&:按位与;二进制相同位都为1时结果为1,其它情况下为0

|:按位或;二进制相同位都为0时结果为0,其它情况下为1

^:按位异或;二进制相同位相同为0,不同为1

以上述的1和2举例:

1的二级制位:00000000000000000000000000000001

2的二进制位:00000000000000000000000000000010

1&2结果为0,1|2结果为3,1^2结果为3

关于异或还有两点:异或操作符满足数学上的交换律和结合律 ;

                                0^n=n,n^n=0

利用好异或的性质在编程时会有帮助,比如:交换两个变量int a,int b的值

一般的思路是新建一个变量int i,然后使 i=a, a=b, b=i

 使用异或的话则完全不需要另外的空间

 我们来分析一下程序的运行时a和b各自的值

这样也实现了变量的值的交换

赋值操作符

这类操作符一般都是符合赋值符,如:+=、*=等

以+=为例

a+=1和a=a+1是等效的,其它的赋值操作符同理

逻辑操作符

&&:逻辑与

||:逻辑或

定义就是数学上的逻辑与和逻辑或

单目操作符

!:逻辑反操作

~:按二进制位取反

&:取地址,指针常用

sizeof:求操作数的类型长度(单位:字节)

*:解引用操作符,指针常用

++/--:分前置和后置

(类型):强制转换数据类型

这里需要说明一下++和--的前置和后置

以++为例:

首先,++的作用是使变量结果+1,之所以分前置和后置是因为运算顺序有所不同

简单来说:前置是先进行计算,后使用;后置是先使用,后计算

如图:

a和b的初始值都为5,因为前置++是先进行运算,所以结果为6,后置++ 后进行运算,结果为5

这是二者的区别

关系操作符

一般用于条件判断

>、<、>=、<=、!=(不等于)、==(等于)

条件操作符

条件?语句1:语句2

表达式满足条件执行语句1,不满足时执行语句2,当判断只有两种情况时使用

关键字

C语言有很多关键字,比如:int short char while等

需要注意的是,关键字不能自己创建,也不能做变量名,你如果定义一个变量为int while,程序肯定会报错。还有,在常量提过的#define不是关键字,define是预处理指令

这里介绍几个一下的关键字

typedef

类型重命名

简单来讲就是将数据类型另外定一个别名,在后续使用时就可以使用这个别名

static

用来修饰局部变量、全局变量和函数

  • 修饰局部变量

之前在介绍局部变量时有提过局部变量的生命周期

 图中a是局部变量,所以a的生命周期在出函数时销毁,如果static修饰局部变量

直观上看a的生命周期延长了,上一次循环的a被保留了下来。static是如何实现的?这要从内存说起

内存上有三个区,栈区、堆区和静态区,如下图

a开始是在栈区储存,而static修饰后,a就变成了静态变量,此时a存储的地方发生变化,所以生命周期变长

  • 修饰全局变量和函数

修饰全局变量和函数都会使其作用域变小。

之前介绍全局变量的时候说过全局变量的作用域是整个工程,那是因为全局变量具有外部链接属性,所以在源文件a中使用源文件b的全局变量时只需在a中使用extern声明即可,函数同样具有外部链接属性。但static修饰后,外部链接属性变成内部链接属性,这时全局变量和函数便只能在其所在的源文件内使用,其它源文件即使使用extern声明也无法使用

结尾

本篇文章就介绍到此,文笔有限,不足之处欢迎指正

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星鸦wyk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值