文章目录:
一、数据类型介绍
C语言提供了丰富的数据类型来帮助程序员输出。像使用整型类型来描述整数,使用字符类型来描述字符,使用浮点型类型来描述小数。
所谓“类型”,就是编译器数据库中录入的所有数据类型。
![](https://i-blog.csdnimg.cn/blog_migrate/eb16994bcbbdbb517e1b92e8673cbd13.png)
signed 关键字,表示一个类型带有正负号,包含负值。
unsigned 关键字,表示该类型不带有正负号,只能表示零和正整数。
1.1 字符型:
char
signed char //有符号字符型
unsigned char //无符号字符型
1.2 整型:
int
signed int //有符号整形 对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。
unsigned int //无符号整形
short int //短整形
short signed int //有符号短整形
short unsigned int //无符号短整形
long int //长整形
long signed int //有符号长整形
long unsigned int //无符号长整形
long long signed int //有符号长长整形
long long unsigned int //无符号长长整形
1.3浮点型:
float //单精度浮点型
double //双精度浮点型
long double //长双精度浮点型
1.4 sizeof操作符:
sizeof 是一个关键字,也是操作符,专门计算操作符数类型的长度,单位是字节。
sizeof 操作符的操作数可以是类型,也可是变量或者表达式。
sizeof ( 类型 )sizeof 表达式1.sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的 。2.sizeof 后边的表达式是不参与运算的,而是根据表达式的类型计算出大小。3.sizeof 的计算结果是 size_t 类型的。size_t类型是用来统⼀表示sizeof的返回值类型。
sizeof 运算符的返回值,C语言只规定是无符号整数,并没有规定具体的类型,而是留给
系统自己去决定。
如图是在VS2022 X64配置下的输出:
![](https://i-blog.csdnimg.cn/blog_migrate/e07b871a6fbb0c74e4d972bebf106e4f.png)
1.5 sizeof 中表达式不计算:
由上图大家可能会有疑问:为什么还是s=2呢?因为s为short类型,而short类型长度为2字节,int类型长度为4字节。因为字节长度不够导致short类型无法容纳int类型。
1.6 数值类型的取值范围:
为了代码能够执行,需要知道类型的极限值,应尽量使用以下常量。
- SCHAR_MIN , SCHAR_MAX :signed char 的最小值和最大值。
• SHRT_MIN , SHRT_MAX :short 的最小值和最大值。
• INT_MIN , INT_MAX :int 的最小值和最大值。
• LONG_MIN , LONG_MAX :long 的最小值和最大值。
• LLONG_MIN , LLONG_MAX :long long 的最小值和最大值。
• UCHAR_MAX :unsigned char 的最大值。
• USHRT_MAX :unsigned short 的最大值。
• UINT_MAX :unsigned int 的最大值。
• ULONG_MAX :unsigned long 的最大值。
• ULLONG_MAX :unsigned long long 的最大值。
2.变量
在C语言中把经常变化的值称为变量,不变的值称为常量。data---- name|| |||| ||数据类型 变量名例:int num; //整型变量char s; //字符变量double str; //浮点型变量
变量在创建的时候就给其一个初始值。
![](https://i-blog.csdnimg.cn/blog_migrate/c23ed9d1d004a06f90d43bf24bb1ca13.png)
2.1 变量的分类
全局变量:在大括号外部定义的变量就是全局变量
全局变量的使用范围更广,整个软件中都可以使用。
局部变量:在大括号内部定义的变量就是局部变量
局部变量的使用范围只能在大括号内使用。
注意:
当局部变量和全局变量同名的时候,局部变量优先使用,打印时优先打印局部变量的值
。
![](https://i-blog.csdnimg.cn/blog_migrate/ed33b481f6204b25e45bffe19c693f41.png)
3.算术操作符:
C语言中为了方便运算,提供了一系列操作符,其中有一组操作符叫:算术操作符。分别是: +, - ,*,/ ,% 。这些操作符都叫双目操作符。其中操作符也被叫做运算符。
3.1 + 和 -:
+ 和 - 分别用来完成加法和减法。
+ 和 - 都是有2个操作数的,位于操作符两端的就是它们的操作数。
# include <stdio.h>int main (){int x = 9 + 2 ;int y = 6 - 3 ;printf ( "%d\n" , x);printf ( "%d\n" , y);return 0 ;}
3.2 *:
运算符 * 用来完成乘法。
# include <stdio.h>int main (){int num = 3 ;printf ( "%d\n" , num * num*num); //输出 27return 0 ;}
3.3 /:
运算符 / 用来完成除法。
除号的两端如果是整数,执行的是整数除法,得到的结果也是整数。结果只会返回整数部分,丢弃小数部分。
如果希望得到浮点数的结果,两个运算数必须至少有⼀个浮点数,这时 C 语言就会进行 浮点数除法。
# include <stdio.h>int main (){float x = 3 / 2 ;int y = 3 / 2 ;printf ( "%f\n" , x); // 输出 1.000000printf ( "%d\n" , y); // 输出 1return 0 ;}
3.4
%
:
运算符 % 表示求模运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。
负数求模的规则是: 结果的正负号由第一个运算数的正负号决定。
# include <stdio.h>int main (){int x = 3 % 2 ; // 1int y=-5%2; //-2return 0 ;}
3.5 赋值操作符:= 和连续赋值:
在变量创建的时候给一个初始值。在变量创建好后,再给其一个值,此举叫赋值。
int a=0; //初始化
a=10; //赋值
int a=1;
int b=2;
int c=3;
c=b=a+2; //连续赋值,从右向左依次赋值
3.6 复合赋值:
int a=1;
a=a+1; //此为复合赋值,此时a=2
//当然也可以换种写法
a+=1; //此时a=2
关于复合赋值符,还有以下几种:
1.+=
2.-=
3./=
4.%=
5.*=
6.>>=
7.<<=
8.|=
9.^=
10.&=
3.7 单目操作符:++、--、+、-:
前置++:
int a=1;
++a;
int b = ++a;
// ++在前表明先让a+1,此时a=2,在使用a。
注意:此时a的值为2,b的值也为2
后置++:
int a=1;
a++;
int b = a++;
//此时代码先使用a, (再让a+1)。
注意:最后a的结果为3,b的值为2
如果你听懂了前置++,那前置--是同理的,只是把加1,换成了减1;
对于前置--有计算口诀:先-1,后使用。 对于后置--有计算口诀:先使用,后-1。
运算符 - 用来改变一个值的正负号,负数的前面加上 - 就会得到正数,正数的前面加上 - 会得到负
数。
int a=1;
int b=-a;
//此时a=1,b=-1