一篇文章详细介绍C语言的数据类型与变量

数据类型介绍

数据类型是指在程序中可以使用的不同种类的数据,比如整数、小数、字符、布尔值等。不同的数据类型占用的内存空间和表示的范围也不同。C语言中,有以下几种基本的数据类型:

  • int:表示整数,如1,-5,6等。
  • float:表示单精度浮点数,即带有小数点的数,如3.144,-0.5,5.0等。
  • double:表示双精度浮点数,即比float更精确的小数,如3.14159,-0.00001,0.1111等。
  • char:表示单个字符,如’w’,'3’等。字符用单引号括起来。
  • bool:表示布尔值,即真或假。用0和非0表示。
    以下是一些不同数据类型的声明:
//1.1 字符
char
signed char
unsigned char

//1.2 整型
//短整型
short int
signed short int
unsigned short int
//整型
int
signed int
unsigned int
//长整型
long int
signed long int 
unsigned long int
//更长的整形
long long int
signed long long int 
unsigned long long int 

//1.3浮点型
float
double
long double

//1.4布尔类型
//C语言中原来没有为布尔值单独设置一个类型,而是使用整数0表示假,非零表示真。在C99中也引入了布尔类型,是专门表示真假的。
_Bool
// 布尔类型的使用的包含头文件<stdbool.h>
//布尔类型的取值是:ture或者false.
#include <stdio.h>
_Bool flag = ture;
int main()
{
	if (flag)
		printf("i like C");
	return 0;
}

signed和unsigned

在C语言中,int和char类型的变量可以有两种符号性:signed和unsigned。符号决定了变量可以表示的正负数的范围。

  • signed:表示有符号的,既可以表示正数、负数和零。默认情况下,int和char类型的变量都是signed的。
  • unsigned:表示无符号的,即只能表示非负数,即零和正数。如果要声明一个unsigned类型的变量,需要在int和char前加上unsigned关键字。
    注意,如果给一个unsigned类型的变量赋值一个附属,或者给一个signed类型的变量赋值一个超过其范围的正数,会发生溢出,即数据会被截断或者循环。例如:
unsigned int a = -1;//实际会被赋值为4294967295,即2^32-1
signed  in b = 2147483648;//b实际会被赋值为-2147483648,即-2^31

数据类型的取值范围

数据类型的 取值范围是指变量可以表示的最小值和最大值。不同数据类型和符号性有不同的取值范围。取值范围和变量占用的内存空间有关,一般来说,占用的空间越大,取值范围越大。不同的编译器给变量分配的字节数也可能不同,所以取值范围也可能有差异。我们可以用sizeof函数来获得类型占据的字节数。例如:
Alt

变量

变量的创建

了解清楚类型之后,我们能使用类型干什么呢?类型就是用来创建变量的。变量有三个属性:名称、类型和值。
在C语言中,我们使用变量必须先声明它,即指定他的类型和名称。它的一般格式是:

//类型 变量名
//例如:
int a;//声明一个int类型的变量a
float b;//声明一个float类型的变量b
char c;//声明一个char类型的变量c

//声明变量时,也可以给它赋值,即初始化。初始化变量的一般格式为:
//类型 变量名 = 初始值;
int a = 10;
float b = 1.5f;
char c = 'w';

如果没有给变量赋值,那么他会有一个不确定的值,可能是垃圾数据,也可能是0.所以为了避免出错,最好给一个和=合适的初始值。

变量的分类

变量分为全局变量和局部变量。

  • 全局变量:在大括号外部定义的变量就是全局变量,全局变量的使用更广泛,整个工程中都是可以使用的
  • 局部变量:在大括号内部定义的变量就是局部变量,局部变量的适用范围比较局限,只能在自己所在的局部范围使用。
#include <stdio.h>
int name = kiki;//全局变量
int main()
{
	int age = 20;//局部变量
	printf("%d\n",age);
	printf("%d\n",name);
	return 0;
}

当局部变量和全局变量名字相同,局部优先。

#include  <stdio.h>

int a = 10;

int main()
{
	int a = 5;
	printf("a = %d\n",a);//打印为a = 5,局部优先
	return 0;
}

全局变量和局部变量在内存中存储在哪里呢?
Alt

算术操作符

算术操作符是用来对数据进行数学运算的符号,比如加、减、乘、除等。在C语言中,有以下几种算术操作符:

  • +:表示加法,用来计算两个数的和,例如a + b。
  • -:表示减法,用来计算两个数的差,例如a - b。
  • *:表示乘法,用来计算两个数的积,例如a * b。
  • /:表示除法,用来计算两个数的商,例如a / b。
  • %:表示取余,用来计算两个整数相除后的余数,例如a % b。
int a = 10,b = 5
int c = a + b;//c = 15
int d = a - b;//c = 5
int e = a * b;//c = 50
int f = a / b;// c = 2
int g = a % b;// c = 0

其中,当两个整数相除时,结果会被截断为整数,即舍去小数部分。如果想得到小数结果,需要转换为浮点数。

float c = 11/2f;

赋值操作符

赋值操作符是用来给变量赋值的符号,比如=。在C语言中,有以下几种赋值操作符:

  • =:表示简单赋值,用来将右边的值赋给左边的变量,例如a = b。
  • +=:表示加法赋值,用来将左边的变量加上右边的值,并将结果赋给左边的变量,例如a += b相当于a = a + b。
  • -=:表示减法赋值,用来将左边的变量减去右边的值,并将结果赋给左边的变量,例如a -= b相当于a = a - b。
  • *=:表示乘法赋值,用来将左边的变量乘以右边的值,并将结果赋给左边的变量,例如a *= b相当于a = a * b。
  • /=:表示除法赋值,用来将左边的变量除以右边的值,并将结果赋给左边的变量,例如a /= b相当于a = a / b。
  • %=:表示取余赋值,用来将左边的整数变量除以右边的整数值,并将余数赋给左边的变量,例如a %= b相当于a = a % b。
int a = 10, b = 3;
a += b; // a的值是13
a -= b; // a的值是10
a *= b; // a的值是30
a /= b; // a的值是10
a %= b; // a的值是1

单目操作符

单目操作符是只需要一个操作数的符号,比如++、–、+、-等。在C语言中,有以下几种单目操作符:

  • ++:表示自增,用来将操作数的值加1,并返回新的值,例如a++。
  • –:表示自减,用来将操作数的值减1,并返回新的值,例如a–。
  • +:表示正号,用来表示操作数的正值,例如+a。
  • -:表示负号,用来表示操作数的负值,例如-a。
int a = 10;
int b = ++a; // a的值是11,b的值是11
int c = a++; // a的值是12,c的值是11
int d = --a; // a的值是11,d的值是11
int e = a--; // a的值是10,e的值是11
int f = +a; // f的值是10
int g = -a; // g的值是-10

注意,++和–操作符有两种形式:前缀和后缀。前缀形式是将操作符写在操作数之前,例如++a。后缀形式是将操作符写在操作数之后,例如a++。两种形式都会改变操作数的值,但返回的值不同。前缀形式会先改变操作数的值,然后返回新的值。后缀形式会先返回原来的值,然后改变操作数的值。所以在使用++和–操作符时要注意区分前缀和后缀。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值