文章目录
一、初始数据类型
1、数据类型的定义
数据类型,就是相似数据所拥有的共同特征,可以用集合来类比着理解
2、数据类型的分类
(1)内置类型
内置类型可以分为四种:字符,整型,浮点型和布尔类型。
① 字符
1 char
2 [signed] char
3 unsigned char
②整型
1 //短整型
2 short [int]
3 [signed] short [int]
4 unsigned short [int]
5 //整型
6 int
7 [signed] int
8 unsigned int
9 //⻓整型
10 long [int]
11 [signed] long [int]
12 unsigned long [int]
13 long long [int]
14 [signed] long long [int]
15 unsigned long long [int]
③浮点型
1 float
2 double
3 long double
④布尔类型
布尔类型是在C99中引入的,专门用来表示真假。在使用时需要包含头文件
<stdbool.h>
布尔类型变量的取值是:true和false
代码演示
_Bool flag = true;
if(flag)
printf("this is ture");
(2)signed和unsigned
signed和unsigned是C语言用来修饰字符型和整型类型的
signed表示一个 类型带有正负号,包含负值
对于int类型,默认带有正负号,所以一般关键字可以省略
signed int a ;
//就等同于int a;
unsigned拿int 举例子就是表示一个非负整数,此时的关键字unsign不可省略。
unsigned int a;
各类型的长度(部分)(单位:字节)
(3)自定义类型
自定义类型可以分为:数组,结构体-struct,枚举-enum和联合体-union。在这里这些就不展开简述了。
二、变量
1、变量的创建
(1)变量的定义
C语言中把经常变化的值称为变量,不变的量称为常量。是由数据类型和变量名组成的。例如:
data_type name;
int age;//整型变量
char ch;//字符变量
其中data_type就是数据类型,name是变量名。
(2)变量的初始化
在定义变量是给变量赋一个值就成为变量的初始化
int age = 18;
char ch = 'w';
2、变量的分类
(1)全局变量
就是在函数主体外部定义的变量。它的使用范围更广,可以在整个工程中使用。在内存的角度来看,全局变量储存在静态区。
(2)局部变量
在函数内部定义的变量。适用范围具有局限性,只能在自己所在的局部使用。在内存的角度来看局部变量储存在栈区
1 int a = 10;
2 int main(void)
3 {
4 int a = 6;
5 {
6 int a = 4;
7 printf("%d",a);//输出结果为4
8 }
9 printf("%d",a);//输出结果为6
10 return 0;
11 }
上面代码中的全局变量(1所指代码),并未起到作用
int a = 10;
int main(void)
{
{
int a = 4;
printf("%d",a);//输出结果为4
}
printf("%d",a);//输出结果为10
return 0;
}
三、操作符:+、-、*、/、%
1、算数运算符(都是双目运算符)
(1)+和-
+和-是用来完成加法和减法
都是有两个操作数的,位于操作符两端的就是它们的操作数,也叫做双目操作符。
例如
int main(void)
{
int x = 4 + 22;
int y = 53 - 33;
printf("%d %d\n",x, y);
return 0;
}
输出结果就为26 20.
(2)*和/
用来完成乘法和除法操作
int num1 = 10;
int num2 = 5
printf("%d %d\n",num1 * num2,num1/num2);
输出结果为 50 2
特别要注意的是如果除号两端都为整型,那么结果也是整型。如果希望得到一个浮点型的数,那么两个运算数之间就至少有一个浮点数。例如
float x = 8.0 / 4;
printf("%f\n",x);
输出结果为 2.000000
(3)%(求余运算符)
%表示求模运算,即返回两个整数相除的余弦。这个运算符只能作用于整数,不能用于浮点数。对于负数的求余规则是,结果的正负由第一个运算符正负号决定。
printf("%d\n",11%5);//1
printf("%d\n",11%-5);//1
printf("%d\n",-11%-5);//-1
printf("%d\n",-11%5);//-1
2、赋值运算符:=和复合赋值
在创建好变量时,给一个变量叫做初始化;创建好之后,再给一个值,叫做赋值
(1)连续赋值
int a = 4;
int b = 8;
int c;
b = a + 5;
c = b = a - 3;//从右向左依次赋值
对于变量c的操作就是连续赋值,但是一般代码易读性差,所以建议分开写
//c = b = a - 3还可以写成下面这种方式
b = a - 3;
c = b;
(2)复合赋值
用于对一个数进行自增,自减
int a = 10;
a = a + 3;
a = a -2;
上述代码还可以写成
int a = 10;
a += 3;
a -= 2;
C提供的赋值运算符有:+=, -=, *=, /=, %=,
<<=, >>=, &=, |=, ^=.
3、单目运算符:++、–、+、-
只有一个操作数的运算符被称为单目操作符。
(1)++和–
++是一种自增操作符,又分为前置++和后置++,–是一种自减操作符,分为前置–和后置–。
①前置++
int a = 8;
int b = ++a;
printf("a = %d b = %d\n",a,b);
输出结果11 11
前置++在使用时想到于先给变量加一以后,再进行赋值操作。
(巧计:先加再用)
②后置++
int a = 8;
int b = a++;
printf("a = %d b = %d\n",a, b);
输出结果为11 10
后置++在使用时是先进行赋值运算,然后再给变量加一。
(巧计:先用后加) 前置–和后置–类比
(2)+和-
这里的+和-代表着正负号,都是单目操作符,+对正负值没有影响,是一个完全可以忽略的运算符,而 - 运算符是用来改变一个值的正负号的,负数的前面加上 - 会得到一个正数。
(4)强制类型转换
这是一种特殊的操作符,语法形式很简单。如
int a = 3.14;//这种写法会让编译器报错
int a = (int)3.14;//这种写法是将double类型强制转化为int类型的
//但是只是取了整数部分。
这种方式一般不到万不得已是不会使用的,不过有的时候用一下也可以产生奇效。