C语言数据类型

常量

C 语言中,程序执行时值不变的量称为常量

1.直接常量(也称字面常量):数据直接表现出来
	如:3.14、26、'c'、2.1E3等 
2.符号常量: 用一个标识符表示在程序中出现的常量(这样可以利于修改)

符号常量可以用两种方法来定义:

//第一种:宏定义#define			
#include <stdio.h>
//#define 符号常量名 宏表达式 
#define PI 3.14			//在预处理阶段将程序中所有符号PI替换为3.14 

//第二种 :const语句定义符号常量 
//const 类型 符号常量=表达式; 
const float PI=3.14;

变量

在程序过程中,值可以变化的量

在C语言中个,变量要求先声明后使用,同时也可以在声明的同时进行初始化,未初始化的变量是一个不确定的随机值。


数据类型

基本数据类型(不可以再分解成其他的数据类型)

1.整数类型int(即没有小数部分的数据)

如:10、256、10648等

C语言中根据计算机的字长的不同,为int类型分配的存储空间也不一样。同时,还可以给int添加各种类型的修饰符,改变int类型的含义。以32位计算机为例

变量类型关键字字节取值范围输出格式
有符号短整型short2-32768~32767%hd
无符号短整型unsigned short20~65535%hu
有符号整型int4-2147483648~214783647%d
无符号整型unsigned int40~429467295%u
有符号长整型long4-2147483648~214783647%ld
无符号长整型unsigned long40~429467295%lu
特长整型long long8-9223372036854775808~9223372036854775807%lld
无符号特长整型unsigned long long80~18446744073709551615%llu

计算机中都是以补码来保存数据,以有符号短整型数为例:
1.两个字节用原码表示时:
最大正整数为 0 111 1111 1111 1111,即+(2的15次方-1)
最小负整数为 1 111 1111 1111 1111,即-(2的15次方-1)
存在+0和-0;
2.用补码表示时:
-0原码表示为-1000 0000 0000 0000,补码表示为0000 0000 0000 0000与+0的补码0000 0000 0000 0000相同。即在补码中“0”只有一种表示形式。因此补码表示的范围可扩展到负的2的15次方。
最大负整数为(1 111 1111 1111)补码,即-1;
最小负整数为(1 000 0000 0000)补码,即-32768

整型常量的表达形式

后缀

a1=100L,a2=100l;			//L或l表示一个long型常数
a3=10LL,a4=100ll;					//LL或ll表示一个long long型常数
/*编译器一般自动识别程序中出现的整数常量的类型,使用占空间最少的数据类型保存整型常量,如数字1200,采用int类型存储,数字24674665575使用long型存储
在使用LL或L可以告诉编译器用更大的内存空间存储一个较小的整数*/
b1=3U,b2=3u;		//U或u表示无符号的整数
b3=10UL;		//u和L可以组合使用

前缀

c=056;		//前缀0 表示这个56这个数为八进制数
printf("%#o",c);		//以八进制的方式输出
d=0X34;			//前缀0X表示34这个数为十六进制数,A`F用大写字母表示
f=0x34;			//前缀表示34这个数字为十六进制数,a~f用小写字母表示
printf("%#x",f);		//以十六进制输出,a~f用小写字母表示
printf("%#X",d);		//以十六进制输出,a~f用大写字母表示
2.字符型char(字母、数字、和特殊字符)
存储:以ASCII码的方式存储,本质上还是一个整数
	//声明并初始化 
	char ch='A';				
	char ch2=66;		//当用数字给字符变量赋值时,不能超过其取值范围
	/*有的编译器将char 作为有符号类型,这样取值范围为-128~127
	而有的编译器将char作为无符号类型,这样的取值范围为0·255*/	
	char ch3='\n'; 		//转义字符
	
	printf("%c	%d\n",ch,ch);
	printf("%c	%d\n",ch2,ch2);
	printf("%c	%d\n",ch3,ch3);
	return 0;
}

输出结果:
在这里插入图片描述
在这里插入图片描述

3.实数类型(带小数点的)
分类:
1.单精度类型float

C标准规定,float类型必须至少能表示6位有效数字,且取值范围至少是
10 -37 ~10 +37 .超过该有效位时,系统用近似的数表示。

2.双精度类型double

double类型和float类型的最小取值范围相同,但至少必须能表示10位有效数字。通常double类型的值至少有13位有效数字,超过了标准的最低位数规定。

3.长双精度类型 long double

满足比double类型更高的精度要求。不过,C只保证long double类型至少与double类型的精度相同

实型常量的表示方法
int main()
{
	//小数表示法
	const float a1=12.12345078;
	const long double a2=124568.45767;
	//指数表示法
	const double b1=6.0E9;
	const double b2=6.1e+8;
	const double b3=6.1e-6;
	
	printf("%f	%f	%f	%f\n",a1,b1,b2,b3);			//以小数形式输出 
	printf("%e	%e	%E	%E\n",a1,b1,b2,b3);			//以指数形式输出 
	printf("%g	%g	%G	%G\n",a1,b1,b2,b3);			//以指数和小数相对较短的输出 
	
	return 0}

运行结果
在这里插入图片描述
C编译器默认的实数类型是double类型。
若要按照float类型存储,可以添加后缀f(或F)
245.34f;
若要强制保存为long double 类型,添加后缀 l(或L)
238.356L

4.逻辑型(_Bool)

用于表示布尔值,即逻辑值true和false。因为C语言用值1表示true,值0表示false,所以_Bool类型实际上也是一种整数类型。

5.复数和虚数类型

C语言有3种复数类型:float_Complex、double_Complex和long double _Complex。例如,float _Complex类型的变量应包含两个float类型的值,分别表示复数的实部和虚部。类似地, C语言的3种虚数类型是float_Imaginary、double _Imaginary和long double _Imaginary。

#include<stdio.h>
int main()
{
	_Bool c=0;
	double  _Complex a,b;
	a=2+5i;
	b=a+1+2i;
		printf("%d\n",c);
	printf("(%g+%gi)+(%g+%gi)=(%g+%gi)\n",a,(double _Complex)(1+2i),b);
	return 0;
}

输出结果
在这里插入图片描述

6.枚举类型(enum)

枚举是一个被命名的整型常数的集合。

#include<stdio.h>
/*定义枚举类型格式:
	enum 枚举名
	{
		标识名[=整型常数],
		标识名[=整型常数],
		标识名[=整型常数],
		标识名[=整型常数], 
	} 枚举变量; 
*/
enum weekday{
	SUNDAY,
	MONDAY,
	TUESDAY,
	WEDNESDAY,
	THURSDAY,
	FRIDAY,
	SATURDAY,
}; 				//SUNDAY值为0,编译器自动依次加一
int main()
{
	enum weekday wk;		//定义枚举变量
	wk=FRIDAY;		//使用枚举常量
	printf("%d\n",wk);
	wk=(enum weekday)6;		//将一个整数值保存在枚举变量中 
	printf("%d\n",wk); 
	
	return 0;
}

输出结果:
在这里插入图片描述

基本数据类型进行函数传递参数时,都是把实参的值复制一份给形参,所以形参在函数里改变不影响原来函数里的值。

构造数据类型

由基本数据类型和其他数据类型构造而成的。

数组类型
结构类型(struct)
联合类型(union)

指针类型

特殊的,值表示内存地址的一个数据类型

空类型

关键字是void,主要用于:
1.对函数返回进行限定(函数不返回值时)
2.对函数的参数进行限定(函数没有参数时)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值