1.什么是数据类型
C语言提供了多种数据类型来表述生活中的各种事物。
整数型可以表述整数,字符型可以表述字符,浮点型可以描述小数。
编译器只有知道了数据类型,才能知道该怎么操作数据。
1.1字符型
1.2整形
1.3浮点型
1.4布尔类型
专门表示真假的
使用布尔类型得包含头文件<stdbool.h>
布尔类型变量的取值是:true或者false。
1.5各种数据类型的长度
其实每一种数据类型都有自己的长度,使用不同的数据类型,能够创建出长度不同的变量,同时,变量的长度不同,存储的数据范围就有所差异。
1.5.1 sizeof操作符
如何来计算sizeof的操作符数的类型长度呢?
用sizeof——它既是一个关键字也是一个操作符,它计算出来的单位是字节。
sizeof操作符的操作数可以是类型,也可以是变量或者表达式。
sizeof的操作数是表达式是 时,可省略()。
sizeof后边的表达式不参与真实运算,根据表达式的类型来得出大小。
sizeof的计算结果是sizeof_t型的。
1.5.2不同数据类型的长度
输出后
1.5.3 sizeof中表达式不计算
1.
#include <stdio.h>
int main()
{
short s = 2;
int b = 10;
printf("%d\n", sizeof(s = b+1));
printf("s = %d\n", s);
return 0;
}
sizeof在代码进行编译的时候,就根据表达式的类型,计算得出答案了。而表达式却要在程序运行期间才能执行。所以在此处表达式并没有发生计算。
2.singed和unsigned
singded和unsinged可以修饰C语言中的字符型和整形类型。
singed关键字表示这个类型带有正负号。
unsinger关键字表示这个类型不带有负号,只能表示非负数。
对于int类型,默认为unsinged int=int,所以unsiged一般省略不写。
signed int;
unsigned int;
在整形中进行unsigned声明的好处是,它可以使同样长度的内存表示的最大整形数值增大一倍。
3.数据类型和取值范围
当我们需要知道某种整数类型的极值时,应尽量使用这些常量。
4.变量
4.1变量的创建
类型是干嘛的?嘿嘿,类型当然是用来创建变量的了!跟数学一样,C语言中我们经常把变化的量称为变量,不变的值称为常量。
前为数据类型,后为变量名。
变量在创建的时候给一个初始值,就叫变量的初始化。
4.2变量的分类
全局变量:在main函数大括号外定义的变量叫做全局变量。可以作用于整个工程。
局部变量:在大括号内定义的变量叫做局部变量。局部变量只能在自己所在的局部范围内使用。
那这时候有的同学就有疑问了,如果全局变量和局部变量名字相同呢?
答案是,当全局变量和局部变量相同时,局部变量优先使用。
那么全局变量和局部变量在内存中存储在哪里呢?
局部变量放在内存的栈区,局部变量放在内存的静态区。
当然了内存还有一个区,叫做堆区,堆区是用来动态内存管理的。
5.算数操作符:+、-、*、/、%、
我们写代码的时候一定会涉及到运算。
而C语言为我们提供了一些算数操作符,以便满足我们的运算需求,+-*/%这些都是双目操作符。
5.1+与-
+是加号
-是减号
因为位于加号与减号两端的数是它们的操作数,所以这种操作符也叫双目操作符。
5.2 *
5.3 /
为什么float类型计算出的值为1.000000呢?因为C语言里面的整数除法是整除,只会返回整数部分,丢弃小数部分。
6.赋值操作符:=和复合赋值
6.1连续赋值
操作符也可以连续赋值
如下:
int a = 3;
int b = 4;
int c = 5;
c = b = a + 5;//连续赋值,从左到右依次赋值
虽然可行,但九漓不建议这样写。
6.2复合赋值符
在写代码时,我们经常肯对一个数进行自增、自减的操作,如下代码:
int a = 9;
a = a + 1;
a = a - 1;
不仅仅可以这样写,九漓这里还有更加方便的写法:
int a = 10;
a += 1;
a -= 1;
C语言中提供了复合赋值符,方便我们写代码,这些赋值符有:
//复合赋值符
+= -=
*= /= %=
<<= >>= &= ^= |=
7.单目操作符:++、--、+、-
7.1++和--
++是一种自增操作符,又分为前置++和后置++,--是一种自减的操作符,也分为前置--和后置--。
7.1.1
前置++
前置++,先加1后使用。a原来是10,++a使a先变成11,然后赋值给b。
7.1.2
后置++
后置++,先使用后加1。a原来是10,先赋值给b,这一步进行完毕之后,a再+1,然后a的值变成了11。
7.1.3
前置--,与后置--。
前置减减就是先减1后使用。
后置减减就是先使用后减1。
7.2+和- 单目操作符
int a = +10;等价于int a = 10;
这是因为运算符+对正负值都没有影响,是一个可以完全省略的操作符。
而-号可以使整数变为负数,使负数变为整数。
8.强制类型转换
请看图
前为整形,后为double型,此时此刻运行的话,编译器会给出警告。
此时我们可以这样做。
这样就是强制类型转换,意思使只取1.64的整数部分。
这是C语言的强制类型转化规则,只能由字节小的强制转化为字节大的。