前言:下面要学习数据类型和变量相关内容,这部分基础内容较多但也不能因此轻视这部分的学习;学好这部分内容,为以后的学习打下基础;因为篇幅原因,将会分为两篇;欢迎大家留下评论,发表自己的学习看法,也请大家多多指教,让我们一起来学习C语言吧。

(char 类型本质上是一种整数类型。这是因为在计算机中,字符是以 ASCII 码的形式存储的,而 ASCII 码是整数。)
整形:int
长整型:long (longlong)
短整型:short
而这三种也都有有符号和无符号之分;
_Bool --专门表示真假的类型(早期用0表示假,非0为真)
#define false 0
#define true 1
注意:使用时包含头文件 include #<stdbool.h>
简单写法:将 _Bool 换成 bool
#include <stdbool.h>//包含头文件
int main()
{
/*_Bool sex = true;*///创建变量 性别 并初始化为真
bool sex = true;//#define bool _Bool 进行文本替换(宏定义),即将_Bool替换成bool
if (sex)//选择语句
printf("my sex is male");//真
else
printf("my sex is female");//假
return 0;
}长度 通常指的是它在内存中占用的存储空间大小,单位一般是字节(Byte);
测量工具:sizeof操作符

sizeof操作符是专门用来测量数据长度的,单位字节;
形式: sizeof(类型) sizeof 表达式
//当sizeof后面是表达式,可以省略括号
int main()
{
int a = 10;
printf("%zd\n", sizeof(a));//注意打印sizeof结果时用%zd而不是%d
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(10 + 15));
printf("%zd\n", sizeof 10 + 1.5);
return 0;
}
//对于第三个打印结果:int+int=4 //sizeof后面的表达式不参与实际计算,,只根据其类型计算长度
//对于19:sizeof 10 = 4,4+15=19
//c语言中,出现小数,默认为double类型,并且整型与浮点型计算时最后归为浮点型
signed 和 unsigned都是用来修饰字符型和整型的;
有符号的,可以存放正数,负数和0;
注意:对于整型数据默认为signed;
无符号的,只能存放0和正整数;
//整数变量声明为 unsigned 好处——同样长度的内存能够表示最大整数值;
对于字符型 char,char不同于 int,char可能是 signed 也可能是 unsigned;
变量-变化的值;常量-不变的值;
在这里就体现前面介绍的数据类型的作用——类型是用来创建变量的;
形式: date_type name | | 数据类型 变量名
int main()
{
int age = 10;
char ta = 'c';
// .......
printf("%d %c\n", age, ta);
return 0;
}比如上方代码,你会发现在创建变量的同时,在'='的右侧有一个值,这就叫做变量的初始化;
在创建变量的同时初始化是一种方式 , 也可以在创建后另起行进行初始化;
int main()
{
int age;
char ta;
age = 10;
ta = 'c';
printf("%d %c\n", age, ta);
return 0;
}但当你忘记初始化后 :

此时局部变量为随机值,全局变量则为0;
变量初始化与赋值并不是同一概念;
例如对上面的代码进行修改——
int main()
{
//对变量进行初始化
int age = 18;
char ta = 'b';
//下面对变量进行赋值操作
age = 10;
ta = 'c';
printf("%d %c\n", age, ta);
return 0;
}
我们可以知道,变量赋值可以覆盖掉变量初始化的值 ;
int b = 1000;//全局变量
int main()
{
int b = 100;//局部变量
printf("%d \n", b);
return 0;
}
为什么结果打印100而不打印1000呢?
注意:当局部变量和全局变量的变量名称相同时,局部变量优先;
算术操作符属于双目操作符,需要两个操作数;
用于加减法,需要两个操作数;(操作数即符号两边的数字)
int main()
{
int a = 3 + 1;//算术操作符加减运算
int b = 3 - 1;
printf("%d %d \n ", a, b);
return 0;
}
//最后打印 4 2用来完成乘除法
int main()
{
int a = 3 * 5;
int b = 10 / 5;
float c = 6 /4;
printf("a = %d b = %d \n",a, b);
return 0;
}
//最后结果打印 a = 15 b = 2 c = 1.000000对于 / ,需要注意,上面中尽管变量c为float类型时,它输出的并不是小数1.500000,而是1.000000;
原因在于c语言中的除法在当有操作数为整数时只返回整数部分;
如果要输出完整的浮点型结果时,两个操作数必须有一个为浮点型
int main()
{
double d = 5.0 / 2;//左操作数为浮点型
float f = 5 / 2.0;//右操作数为浮点型
double g = 5.0 / 2.0;//全为浮点型
printf("%f %f %f \n", d, f, g);
return 0;
}
//最后结果打印全为2.500000%代表求模(求余),即最后结果输出余数;
注意:求余只用于两个整数,浮点数不行;
对于两个正数进行求模,这很简单;而对于负数的求模,则要注意——负数求模输出结果的符号决定于第一个操作数的符号;
int main()
{
//int s = 5 % 3;
//printf("%d \n", s);
int z = -5 % 3;//输出负数
int v = 5 % -3;//输出正数
printf("%d \n %d \n", z, v);
return 0;
}在我们创建变量时一般会对变量进行初始化,后面再给变量一个值,这叫做赋值;
见——
int main()
{
int a = 3;
int b = 4;
int c = 5;
c = b = a * 3;//连续赋值操作是从右向左 ,即a*3后赋给b后,b再赋给a
printf("%d %d\n", c, b);
return 0;
}//虽然连续赋值操作比较方便,但是有时候较复杂的代码不容易理解。建议将代码赋值分开写,这样有助于理解代码的运行;
在我们写代码的时候,可能会对某一个变量进行自增或自减操作,如下:
int main()
{
int a = 1;
int b = 3;
a = a + 3;
b = b - 2;
printf("%d %d \n", a, b);
return 0;
}而在实际操作中,提供了专门的复合赋值符:+= -= *= /= %=(五种常用的赋值符),还有>>= <<= &= |= ^=
int main()
{
int a = 1;
int b = 3;
/*a = a + 3;
b = b * 3;*/
a += 3;
b *= 3;
printf("%d %d \n", a, b);
return 0;
}a += 3 等价于 a = a + 3;
//将赋值符'='左边的内容移到'='右边( = a + 3),再将需要被赋值的变量名补到'='左边(a = a + 3);
++是自增运算符,--是自减操作符——二者都有前置和后置之分;
口诀:先操作(加1或减1),后使用;
int main()
{
int a = 1;
int b = ++a;//前置++,即先进行加1操作(a = a + 1,即a = 2),在进行赋值运算(b = a)
printf("%d %d \n", a, b);
return0;
}
//打印 2 2int main()
{
int c = 5;
int d = --c;//前置--,即先进行减1操作(c = c -1,即c = 4),在进行赋值运算(d = c)
printf("%d %d \n", c, d);
return 0;
}
//打印 4 4口诀:先使用,后操作(加1或减1);
int main()
{
int a = 1;
int b = a++;//后置++,即使用变量的值进行赋值操作(b = a),再加1(a = a+1);
printf("a = %d b = %d \n", a, b);
int c = 5;
int d = c--;//后置--,即先使用变量的值进行赋值操作(d = c),再减1(c = c-1);
printf("c = %d d = %d \n", c, d);
return 0;
}
//打印 a = 2 b = 1 c = 4 d = 5注意:再次提醒这里的'+'和'-'指的是正负号(单目),并不于是双目操作符
’+‘对正负值无影响,可写可不写;
‘-’改变值的正负;
不常用
int main()
{
int a = 3.14//a是整型,而初始化的值为浮点型,类型不匹配,报错;
//这就会用到强制转换类型
int a = (int)3.14;//将3.14进行类型转换后,只取整数部分3;
printf("%d \n", a);
return 0;
}结语:本篇文章到此结束,主要讲了数据类型和变量的一些内容,后续会继续学习printf、scanf;如果这篇文章对你的学习有帮助的话,欢迎三连~~~