上一篇大概介绍了数据类型,这里是链接:CSDN
目录
(1)当想要int指标是非负整数时,可以用unsigned int来声明。
(2)整数变量声明为unsigned的好处是,同样长度的内存能够表示的最大整数值,大了一倍。
2.浮点数除法——符号两端的操作符至少有一个浮点数——得到浮点数结果
→(1)打印float类型变量时,用%f;打印double类型变量是,用%lf;打印long double 类型的变量时,用%llf。
→(2)%f 和 %lf 打印的时候小数点后默认打印6位小数
一、数据长度
每⼀种数据类型都有自己的长度。使用不同的的数据类型,就能创建不同长度的变量,变量的长度不同,所占据的储存空间的大小就不同。
我们用sizeof操作符来计算它的操作符数的类型长度。
(一)sizeof
1.基本概念
sizeof既是关键字,也是操作符,专门用来计算sizeof的操作符数的类型长度的。
计算的对象可以是表达式,可以是类型,也可以是变量。
sizeof的操作符数是表达式时,可以省略掉后边的括号。
以下是计算类型长度的例子:
可以从图中,看出int长度为4。
特别的,C语言规定,sizeof(long int)>= sizeof(int)
2.sizeof的特殊点
sizeof的操作符数是表达式时,不进行真正意义上的计算。
直接上图举例子:
图中,表达式本该等于12。但这里的操作符是sizeof——于是大小就由表达式的类型int的长度来决定。
不改变b的类型,我可以试着让b等于2试试看:
可以看到,即使b=2,所得到的结果还是4。这个4是由int的长度决定的。
3.sizeof的运算结果——size_t类型
sizeof的返回值,C语言只规定是无符号整数,并没有规定具体的类型:返回的值,是int,还是long int ,还是long long int?
C语言把这些留给系统去决定。
不同的系统中,返回值的类型可能是unsigned int ,也可能是unsigned long int ,也有可能是unsigned long long int。对应的printf()占位符分别是%u、%lu、%llu。
(unsigned short int 可以用别的类型来表示。将创造出类型就是方便人们用的。)
但这样不利于程序移植。
C语言则提供了一个解决方法,创造了一个类型别名size_t,用来统一表示sizeof的返回值类型。
对应的返回值类型可能是unsigned int ,可能是unsigned long int ,也可能是unsigned long long int 。
(二)signed和unsigned
C语言用signed和unsigned关键字来修饰字符类型和整型类型。
signed关键字,表示一个类型带有正负符号,有负值。
unsigned关键字,表示一个类型只有0和正整数,没有负值。
1.int的signed和unsigned
对于int类型,默认带有正负号。
在写法上,int可等同于signed int
(1)当想要int指标是非负整数时,可以用unsigned int来声明。
同时,在写法上,想用unsigned int来声明时,可以直接表示成unsigned
(2)整数变量声明为unsigned的好处是,同样长度的内存能够表示的最大整数值,大了一倍。
比如16位的signed short int 的取值范围是:-32768~32767,最大是32767;而unsigned short int 的取值范围是:0~65535,最大值增大到了65,535。
2.char的signed和unsigned
C语言规定,char类型,默认由系统来决定是否带有负号。
也就是说,char类型有可能时signed char,也有可能是unsigned char。
这点不同于int。int就等同于signed int。
(三)数据类型的取值范围
limits.h 文件说明了整型类型的取值范围。
float.h 这个头文件中说明浮点型类型的取值范围。
• 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 的最大值
二、变量
我们使用数据类型来创建各种类型的变量。
C语言中,经常变化的值叫做变量,不变的值称为常量。
(一)创建语法
(二)变量的初始化
给变量一个初始值,就是初始化。
(三)变量的分类
(1)全局变量——在大括号外部定义的变量
可使用范围更广,整个工程范围都可以使用
(2)局部变量——在大括号内部定义的变量
可使用范围更小,尽在自己所处的局部范围内使用
(3)当局部变量和全局变量同名时,局部变量优先。
(4)全局变量和局部变量存储的地方
在学习C语言的时候,我们通常会关注内存的三个区域:栈区、堆区、静态区
- 栈区——局部变量存储的地方
- 堆区——用来动态内存管理
- 静态区——全局变量存储的地方用来动态内存管理
(5)提醒
a.变量名尽量起的有意义
b.变量名不可和关键字重复
c.变量名仅能由字幕、下划线、数字组成,且不能由数字开头。
三、算术操作符+、-、*、/、%
写代码的时候,一定会涉及到运算。
C语言中,为了方便运算,提供了一系列操作符,有一组叫做算术操作符:+、-、*、/、%
因为这些符号都有两个操作数,因此又叫做双目操作符
(一)+、-
+ 完成加法
- 完成减法
(二)*
用这个符号完成乘法
(三)/
这个符号完成除法
1.整数除法——符号两端的操作数是整数——得到的也是整数
特别的:下图中,尽管a的类型是浮点数float,但 6 / 4 得到的仍是1而不是1.5,原因就在于,C语言中的整数除法是整除,只会返回整数部分,丢弃小数部分。
2.浮点数除法——符号两端的操作符至少有一个浮点数——得到浮点数结果
3.补充点:
→(1)打印float类型变量时,用%f;打印double类型变量是,用%lf;打印long double 类型的变量时,用%llf。
→(2)%f 和 %lf 打印的时候小数点后默认打印6位小数
如果想打印出小数点后1位、后2位,则如图下所示:
(四)%
这个符号表示求模运算,即返回两个整数相除的余值。
1.这个运算只能用于整数,不能用于浮点数。
2.负数求模规则:结果的正负号由第一个运算的正负号决定
四、赋值操作符
在变量创建的时候给一个初始值叫做初始化,在变量创建好后再给一个值,叫做赋值。
(一)赋值操作符=
1.=是一个随时可以给变量赋值的操作符。
2.赋值操作符可连续赋值
但这种赋值方法不太推荐,将它拆开才更方便观察程序的运行
(二)复合赋值
在写代码的过程中,我们可能会经常对一个数进行自减、自加。
1.写法
为了提高效率,C语言提供了更加方便的写法:
2.常见的复合操作符
先介绍到这里。