首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >##C语言——编程基础初步入门之数据类型和变量(初章~)

##C语言——编程基础初步入门之数据类型和变量(初章~)

作者头像
晨非辰Tong
发布2025-12-23 14:56:17
发布2025-12-23 14:56:17
520
举报
文章被收录于专栏:C++C++

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

1.数据类型介绍

1.1字符型

  1. char //character
  2. [signed] char //有符号的
  3. unsigned char //无符号的

(char 类型本质上是一种整数类型。这是因为在计算机中,字符是以 ASCII 码的形式存储的,而 ASCII 码是整数。)

1.2整型

整形:int

长整型:long (longlong)

短整型:short

而这三种也都有有符号和无符号之分;

1.3浮点型——表示小数

  • float——单精度
  • double——双精度
  • long double——精度更高

1.4布尔类型

_Bool --专门表示真假的类型(早期用0表示假,非0为真)

#define false 0

#define true 1

注意:使用时包含头文件 include #<stdbool.h>

简单写法:将 _Bool 换成 bool

代码语言:javascript
复制
#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;
}

1.5数据类型长度的测量

长度 通常指的是它在内存中占用的存储空间大小,单位一般是字节(Byte);

测量工具:sizeof操作符

1.5.1sizeof 操作符

sizeof操作符是专门用来测量数据长度的,单位字节;

形式: sizeof(类型) sizeof 表达式

//当sizeof后面是表达式,可以省略括号

代码语言:javascript
复制
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类型,并且整型与浮点型计算时最后归为浮点型

2. signed 和 unsigned

signed 和 unsigned都是用来修饰字符型和整型的;

  • signed

有符号的,可以存放正数,负数和0;

注意:对于整型数据默认为signed;

  • unsigned

无符号的,只能存放0和正整数;

//整数变量声明为 unsigned 好处——同样长度的内存能够表示最大整数值;

对于字符型 char,char不同于 int,char可能是 signed 也可能是 unsigned;

3. 数据类型取值

4. 变量

4.1 变量的创建

变量-变化的值;常量-不变的值;

在这里就体现前面介绍的数据类型的作用——类型是用来创建变量的;

形式: date_type name | | 数据类型 变量名

代码语言:javascript
复制
int main()
{
	int age = 10;
	char ta = 'c';
//	.......
	printf("%d %c\n", age, ta);
	return 0;
}
4.1.1 变量的初始化

比如上方代码,你会发现在创建变量的同时,在'='的右侧有一个值,这就叫做变量的初始化;

在创建变量的同时初始化是一种方式 , 也可以在创建后另起行进行初始化;

代码语言:javascript
复制
int main()
{
	int age;
	char ta;
    age = 10;
	ta = 'c';
	printf("%d %c\n", age, ta);
	return 0;
}

但当你忘记初始化后 :

此时局部变量为随机值,全局变量则为0;

4.1.2 变量的赋值

变量初始化与赋值并不是同一概念;

例如对上面的代码进行修改——

代码语言:javascript
复制
int main()
{
    //对变量进行初始化
	int age = 18;
	char ta = 'b';
    //下面对变量进行赋值操作
    age = 10;
	ta = 'c';
	printf("%d %c\n", age, ta);
	return 0;
}

我们可以知道,变量赋值可以覆盖掉变量初始化的值 ;

4.2 分类

  • 全局变量:在大括号“{}”外部定义的变量;使用范围更广
  • 局部变量:在大括号外定义的变量;
代码语言:javascript
复制
int b = 1000;//全局变量

int main()
{
	int b = 100;//局部变量
	printf("%d \n",  b);
	return 0;
}

为什么结果打印100而不打印1000呢?

注意:当局部变量和全局变量的变量名称相同时,局部变量优先;

5. 算术操作符:+、-、*、/、%

算术操作符属于双目操作符,需要两个操作数;

  • +、-

用于加减法,需要两个操作数;(操作数即符号两边的数字)

代码语言:javascript
复制
int main()
{
	int a = 3 + 1;//算术操作符加减运算
	int b = 3 - 1;
	printf("%d %d \n ", a, b);
	return 0;
}

//最后打印 4 2
  • *、/

用来完成乘除法

代码语言:javascript
复制
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语言中的除法在当有操作数为整数时只返回整数部分;

如果要输出完整的浮点型结果时,两个操作数必须有一个为浮点型

代码语言:javascript
复制
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
  • %

%代表求模(求余),即最后结果输出余数;

注意:求余只用于两个整数,浮点数不行;

对于两个正数进行求模,这很简单;而对于负数的求模,则要注意——负数求模输出结果的符号决定于第一个操作数的符号;

代码语言:javascript
复制
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;
}

6. 赋值操作符

在我们创建变量时一般会对变量进行初始化,后面再给变量一个值,这叫做赋值;

见——

6.1 连续赋值

代码语言:javascript
复制
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;
}

//虽然连续赋值操作比较方便,但是有时候较复杂的代码不容易理解。建议将代码赋值分开写,这样有助于理解代码的运行;

6.2 复合赋值符

在我们写代码的时候,可能会对某一个变量进行自增或自减操作,如下:

代码语言:javascript
复制
int main()
{
	int a = 1;
	int b = 3;	
    a = a + 3;
	b = b - 2;
	printf("%d %d \n", a, b);
	return 0;
}

而在实际操作中,提供了专门的复合赋值符:+= -= *= /= %=(五种常用的赋值符),还有>>= <<= &= |= ^=

代码语言:javascript
复制
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);

7. 单目操作符:++、--、+、-

  1. 注意单目操作符中的'+'、'-'与双目操作符中的含义不同;
  2. 前者代表的是正负号(单目),后者是双目运算符;7.1

7.1 ++和--

++是自增运算符,--是自减操作符——二者都有前置和后置之分;

7.1.1 前置

口诀:先操作(加1或减1),后使用;

  • ++
代码语言:javascript
复制
int main()
{
    int a = 1;
    int b = ++a;//前置++,即先进行加1操作(a = a + 1,即a = 2),在进行赋值运算(b = a)
    printf("%d %d \n", a, b);
    return0;
}

//打印 2 2
  • --
代码语言:javascript
复制
int 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
7.1.2 后置

口诀:先使用,后操作(加1或减1);

代码语言:javascript
复制
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

7.2 +和-

注意:再次提醒这里的'+'和'-'指的是正负号(单目),并不于是双目操作符

’+‘对正负值无影响,可写可不写;

‘-’改变值的正负;

8. 强制类型转换

不常用

代码语言:javascript
复制
int main()
{
	int a = 3.14//a是整型,而初始化的值为浮点型,类型不匹配,报错;
	//这就会用到强制转换类型
	int a = (int)3.14;//将3.14进行类型转换后,只取整数部分3;
	printf("%d \n", a);
	return 0;
}

结语:本篇文章到此结束,主要讲了数据类型和变量的一些内容,后续会继续学习printf、scanf;如果这篇文章对你的学习有帮助的话,欢迎三连~~~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.数据类型介绍
    • 1.1字符型
    • 1.2整型
    • 1.3浮点型——表示小数
    • 1.4布尔类型
    • 1.5数据类型长度的测量
      • 1.5.1sizeof 操作符
  • 2. signed 和 unsigned
  • 3. 数据类型取值
  • 4. 变量
    • 4.1 变量的创建
      • 4.1.1 变量的初始化
      • 4.1.2 变量的赋值
    • 4.2 分类
  • 5. 算术操作符:+、-、*、/、%
  • 6. 赋值操作符
    • 6.1 连续赋值
    • 6.2 复合赋值符
  • 7. 单目操作符:++、--、+、-
    • 7.1 ++和--
      • 7.1.1 前置
      • 7.1.2 后置
    • 7.2 +和-
  • 8. 强制类型转换
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档