目录
前言:
各位,咱又见面了,在经历前两次的学习后,相信大家已经对C语言有了一定简单的了解,咱就直奔主题开始今天的学习,通往山顶的道路崎岖蜿蜒,但我相信那些不能击溃我的只能使我更加强大。
1.数据类型
1.1介绍:
我们在C语言中运用不同的数据类型来描述各种数据,整数用整型类型,字符用字符型,小数用浮点型。把具有相同特征的数据进行分类,编译器跟据对应的数据类型对数据进行相应的操作。
数据类型分为内置类型和自定义类型。
1.2内置类型:
以下是一些内置类型的数据,关于数据类型的数值范围和和占位这里就不展开了。
-
signed和unsigned :
咱在正式的学习内置类型的数据类型之前,先了解一下 signed 和 unsigned。
在C语言中我们用 signed 和 unsigned 关键字用来修饰字符型和整型类型。
signed,它表示一个类型带有正负号,包含负值。
unsigned,它表示该类型不带有正负号,只能显示正整数和零。
-
字符型:
用于存放字符。
1.char //character
2.[signed] char //有符号的
3.unsigned char // 无符号的
注意:C语言规定 char 类型默认是否带有正负号,由当前的系统决定,这也就是说,char 可能是signed char 也可能是 unsigned char,这里和下面的 int 是有区别的。
-
整型:
用于定义一个整型变量。
1.//短整型
2.short[int]
3.[signed] short [int]
4.unsigned short [int]
5.//整型
6.int
7.[signed] int
8.unsigned int
9//长整型
10.longg [int]
11.[signed] long [int]
12.unsigned long [int]
13.//更长整型(c99中引入)
14.longg [int]
15.[signed] long long [int]
16.unsigned long long [int]
这个 int 类型的,它默认是带有正负号的,既 int 等于 signed int ,但是一般情况这个 signed 但是省略的,如果咱在它前面加上一个 unsigned ,这个时候它就只能显示正整数和零了。
-
浮点型:
单精度浮点型 float(小数点后6位)和双精度浮点型 double(小数点后15位)都是用来存放小数的,区别在于双精度浮点型的 double 精确度更高。
1.float
2.double
3.long double
-
布尔类型:
C语言中并未对布尔值专门设置一个类型,而用非0表示真,0表示假。
布尔类型的使用得包含头文件 <stdbool.h>
布尔类型变量的取值是:true 或 flse 。
1._Bool
演示:
1 _Bool flag = true;
2 if(flag)
3 printf("I'm the best!\n");
1.3数据类型的长度:
每个数据类型都有自己的长度,使用不同的数据类型,能创建长度不同的变量,变量长度不同,存储的数据范围也有所差异。
1.4sizeof操作符:
我们用 sizeof 来计算某个数据类型或某个变量在内存中占用的字节数(byte)。sizeof 的操作数如果不是数据类型或变量而是表达式的时候,括号可以省略。
1 sizeof(数据类型/变量)
2 sizeof 表达式
-
sizeof()的处理:
在C语言中 sizeof()的处理是在编译阶段完成的,且 sizeof 中的表达式不计算。
-
数据类型长度
2. 变量
2.1变量的创建:
了解完数据类型后咱在接着学习变量,咱学这数据类型有个啥用勒?当然是用来创建变量啦。
那啥又是变量嘞?C语言里头,把经常变化的值称作变量,不变的值称为常量。
代码例子如下:
data_type name;
| |
| |
数据类型 变量名
int age;//整型变量
char ch;//字符变量
double weight;//浮点型变量
变量在创建的时候给一个初始值,就叫初始化。
int age = 18;
char ch = 'x';
double weight = 48.0;
unsigned int height = 100;
2.2变量的分类:
- 全局变量:大括号外部定义的变量就是全局变量;全局变量使用的范围更广,整个工程中想使用都是有办法的。
- 局部变量:在大括号内部定义的变量就是局部变量;局部变量的使用只能在自己规定的局部范围内使用。
#include<stdio.h>
int n = 2023;//全局变量
int main()
{
int n = 2018;//局部变量
printf("%d\n",n);
printf("%d\n",n);
return 0;
}
如果局部变量和全局变量的名字相同则局部变量优先使用。
3.操作符
3.1算数操作符:
咱写代码的过程一定会涉及到计算,那为了方便而提供的的一系列操作符叫:算数操作符。有:+ - * / % ,这些操作符也被叫做双目操作符。
-
+ 和 -
+ 和 -用来完成加法和减法。
+ 和 - 都是由两个操作数的,就是位于符号两端的数字,所以也被叫做双目操作符。
#include<stdio.h>
int main()
{
int x = 4 + 22;
int y = 61 - 23;
printf("%d\n",x);
printf("%d\n",y);
return 0;
}
-
*和/
* 和 / 分别用来完成乘法和除法。
注意:如果除法两端是整数,那么结果必定会是整数。
#include<stdio.h>
int main()
{
int a = 4;
float b = 4;
printf("%d",a*a);//输出16
printf("%d",a/3);//输出1
printf("%f",b/3);//输出1.000000
return 0;
}
如上所示,尽管b的数据类型是 float(浮点数),但是4/3的到的结果是1.000000,而不是1.250000。原因就是在C语言里的整数除法就是整除,只会返回整数部分,丢弃小数部分。
倘若非要小数是,也不是不行,那这两个小数里边至少的有一个浮点数,这时C语言才会进行浮点数除法。
如下所示:
#include <stdio.h>
int main()
{
float x = 4.0/3;
printf("%f\n",x);//输出1.500000
return 0;
}
-
%
% 这个运算符是求模运算,即返回这两个整数相除的余值。这个不用于浮点数噢。
#include<stdio.h>
int main()
{
int a = 4%3;//余数为1
return 0;
}
还有点值得注意的是负数求模的规则,结果的正负号由第一个运算数的正负号决定。
#include<stidio.h>
int main()
{
printf("%d",4/-3);//1
ptintf("%d",-4/3);//-1
printf("%d",-4/-3);//-1
return 0;
}
3.2赋值操作符:=
在变量创建的时候给一个初始值叫初始化,在变量创建后,再给一个值,这就叫赋值。
int a = 100;//初始化
a = 200;//赋值,这里使用的就是赋值操作符
赋值操作符 = 是一个随时可以给变量赋值的操作符。
-
连续赋值
赋值操作也可以连续赋值,如:
int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右到左依次赋值。
虽然能行,但不推荐,拆开写能更加的方便的观察代码的执行细节。
int a = 3;
int b = 5;
int c = 0;
b = a+3;
c = b;
对比之下,在调试时,每一次赋值的细节都是可以很方便观察的。
-
复合赋值
在写代码时,我们有时会对一个数进行自增,自减的操作,就比如:
int a = 10;
a = a+3;
a = a-2;
这样代码C语言给提供了更加方便的写法:
int a = 10;
a += 3;
a -= 2;
C语言中提供了复合赋值符,方便我们编写代码,部分常用的如下:
+= --
*= /= %=
3.3 单目操作符:
有双目操作符就必定有单目操作符。++,--,+(正),-(负)就是单目操作符一次只能操作一个数。
-
++
++ 是一种自增的操作符,又分为前置 ++ 和后置 ++ 。
-
前置++:
int a = 10;
int b = ++a;//++的操作数是a,是放在a的前面的,就是前置++
printf("a = %d b = %d\n",a , b);
计算口诀:先 +1,再使用;
看到这里的同学,如果是新手,建议去写一遍代码,便于理解口诀。
a 初始值为10,先 +1,后 a 为11,再使用即赋值给 b,b 就为11,所以计算计数后,a 和 b 都是11,相当于这样的代码:
int a = 10;
a = a+1;
b = a;
printf("a=%d b=%d\n",a,b);
-
后置++:
int a = 10;
int b = a++;
printf("a=%d b=%d\n",a , b);
计算口诀:先使用,后+1。
a 初始值是10,先使用,就是先赋值给 b,b 即为10,而后 a 再+1,所以结束后 a 为11,b 为10。相当于这样的代码:
int a = 10;
int b = a;
a = a+1;
printf("a=%d b=%d\n",a,b);
在详细的解释完前置 ++ 和后置 ++ 后,对于 前置-- 和 后置-- 的学习也不外如是。
-
前置--:
类比前置 ++,咱把加一换为减一即可。
计算口诀:先-1,后使用
int a = 10;
int b = --a;//--的操作数是a,a就先-1即9,然后再赋值给b
printf("a=%d b=%d\n",a ,b);//输出的结果是:9 9
-
后置--:
类比后置 ++,咱把加一换为减一即可。
计算口诀:先使用,后-1
int a = 10;
int b = a--;//--的操作数是a,a就先赋值给b即b=a=10,然后再-1
printf("a=%d b=%d\n",a ,b);//输出的结果是:9 100
-
+ 和 -:
这里的 + 是正号,- 是负号,都是单目操作符。
这个 + 对正负值没有影响,完全可以省略,但写了也不会有错。
这个 - 就是用来改变一个值的正负号,负号的前面加上 - 就会变成正数,正数前面加上 - 就变成负数。
int a = 10;
int b = -a;
int c = -10;
printf("b=%d c=%d\n", b, c);//这里的b和c都是-10
int a = -10;
int b = -a;
printf("b=%d\n",b);//这里的b就是10
今天就到这里啦!