C语言变量

程序总是离不开数据,然而数据需要保存在变量中,所以我们就来讲下变量吧!

(1)简单认识常用数据类型

char、short、int、long、long long、float、double、long double

整数类型:

无符号型:

字节类型值的范围
unsigned char1无符号字符型0 ~ 255
unsigned short2无符号短整型0 ~ 65535
unsigned int2 / 4无符号整形0 ~ 65535  / 0 ~  4294967295
unsigned long4无符号长整型0 ~  4294967295
unsigned long long8无符号64位整型0 ~ 18446744073709551615

有符号型:


PS:如果没有显式声明unsigned默认是signed的,char标准默认是(unsigned)

字节类型值的范围
signed char1无符号字符型-127 ~ 127
signed short2无符号短整型-32767 ~ 32767
signed int2 / 4无符号整形-32767 ~ 32767 / -2147483647  2147483647
signed long4无符号长整型-2147483647 ~  2147483647
signed long long8无符号64位整型-9223372036854775807 ~ 9223372036854775808

浮点数类型:

PS:浮点数没有有符号型和无符号型之分

字节类型值的范围

float

4

单精度浮点型

1.175494E-38 ~ 3.402823E+38

double

8

双精度浮点型

2.225074E-308 ~ 1.797693E+308

long double

8 / 12 

多精度浮点型

2.225074E-308 ~ 1.797693E+308(VS2017与double相同大小)


 

(2)数据类型的使用和选择

char(字符型)

PS:char用于储存字符(比如:英文字母和标点符号),但是从技术层面看char是整数类型。因为char实际上储存的是整数而不是字符。

选择:当需要储存英文字母或者标点符号首选char(字符型)

Q:当然你们会问如何储存一段很长的字符串呢?
A:在知道长度的情况下可以使用字符型数组,如果是不定的长度可以使用字符型指针来保存。(超纲了指针是后面的内容)

使用:

PS:为了更清楚看到结果使用了printf进行输出内容

通过 = 直接赋值给变量,变量就会储存所赋的值

#include <stdio.h>

int main(void)
{
	char c = 'A';
	printf("ASCII:%c \n", c); //A
	printf("VALUE:%d\n", c);  //65
	return 0;
}

字符型 0 ~ 127 分别用来表示 ASCII码表的内容

因为'A'在ASCII码表中十进制是65,所以%d(格式化输出十进制整数),最终输出是65

short(短整型)

选择:当你需要储存的类型是整型,并且储存的值不超过short的值的范围的情况下尽量使用short(短整型),

因为short可比(int、long)节省内存。

PS:int(整型)的字节长度会根据机器而发生改变,int可被定为16位或32位,而short不超过16位

使用:

#include <stdio.h>
#include <limits.h>//用于检测整型数据的数据类型的表达值范围

int main(void)
{
	signed short sMax = SHRT_MAX;			//有符号短整型最大值
	signed short sMin = SHRT_MIN;			//有符号短整型最小值
	unsigned short uMax = USHRT_MAX;		//无符号短整型最大值
	unsigned short uMin = 0;			//无符号短整型最小值
	printf("signed short max:%hd\n", sMax);	        //32767
	printf("signed short min:%hd\n", sMin);	        //-32768
	printf("unsigned short max:%hu\n", uMax);	//65535
	printf("unsigned short min:%hu\n", uMin);	//0
	return 0;
}

SHRT_MAX    有符号短整型的最大值

SHRT_MIN     有符号短整型的最小值

USHRT_MAX  无符号短整型的最大值

SHRT_MAX、SHRT_MIN、USHRT_MAX是limits.h头文件定义

%hd(格式化输出有符号短整数)

%hu(格式化输出无符号短整数)

int(整型)

选择:当你需要储存的数值为整型,并且储存的数值大于short而小于long的时候,尽量使用int(整型)

PS:

旧DOS系统的PC提供16位的short和int,以及32位的long
Windows95系统提供16位的short和32位的int和long

使用:

#include <stdio.h>
#include <limits.h>//用于检测整型数据的数据类型的表达值范围

int main(void)
{
	signed int nMax = INT_MAX;		//有符号整型最大值
	signed int nMin = INT_MIN;		//有符号整型最小值
	unsigned int uMax = UINT_MAX;		//无符号整型最大值
	unsigned int uMin = 0;			//无符号整型最小值
	printf("signed int max:%d\n", nMax);	//2147483647
	printf("signed int min:%d\n", nMin);    //-2147483648
	printf("unsigned int max:%u\n", uMax);	//4294967295
	printf("unsigned int min:%u\n", uMin);	//0
	return 0;
}

INT_MAX      有符号整型的最大值

INT_MIN       有符号整型的最小值

UINT_MAX   无符号整型的最大值

INT_MAX、INT_MIN、UINT_MAX是limits.h头文件定义

%d(格式化输出有符号整数)

%u(格式化输出无符号整数)

long(长整型)

选择:当需要储存的数值为整型,并且储存的数值比int(整型)大的数值比long long小的数值,尽量使用long

使用:

#include <stdio.h>
#include <limits.h>//用于检测整型数据的数据类型的表达值范围

int main(void)
{
	signed long lMax = LONG_MAX;			//有符号长整型最大值
	signed long lMin = LONG_MIN;			//有符号长整型最小值
	unsigned long ulMax = ULONG_MAX;		//无符号长整型最大值
	unsigned long ulMin = 0;			//无符号长整型最小值
	printf("signed long max:%ld\n", lMax);		//2147483647
	printf("signed long min:%ld\n", lMin);		//-2147483647
	printf("unsigned long max:%lu\n", ulMax);	//4294967295
	printf("unsigned long min:%lu\n", ulMin);	//0
	return 0;
}

LONG_MAX      有符号长整型的最大值

LONG_MIN       有符号长整型的最小值

ULONG_MAX   无符号长整型的最大值

LONG_MAX、LONG_MIN、ULONG_MAX是limits.h头文件定义

%ld(格式化输出有符号长整数)

%lu(格式化输出无符号长整数)

long long(64位整型)

选择:当需要储存的数值为整型,并且储存的数值比long(长整型)大的数值使用,long long(64位整型)

PS:long long是由于计算机普遍使用64位处理器,为了存储64位的数据,才增加的,可以储存比long更大的数值

使用:

#include <stdio.h>
#include <limits.h>//用于检测整型数据的数据类型的表达值范围

int main(void)
{
	signed long long llMax = LLONG_MAX;		    //有符号64位整型最大值
	signed long long llMin = LLONG_MIN;		    //有符号64位整型最小值
	unsigned long long lluMax = ULLONG_MAX;		    //无符号64位整型最大值
	unsigned long long lluMin = 0;		            //无符号64位整型最小值
	printf("signed long long max:%lld\n", llMax);	    //9223372036854775807
	printf("signed long long min:%lld\n", llMin);	    //-9223372036854775808
	printf("unsigned long long max:%llu\n", lluMax);    //18446744073709551615
	printf("unsigned long long min:%llu\n", lluMin);    //0
	return 0;
}

LLONG_MAX      有符号长整型的最大值

LLONG_MIN       有符号长整型的最小值

ULLONG_MAX   无符号长整型的最大值

LLONG_MAX、LLONG_MIN、ULLONG_MAX是limits.h头文件定义

%lld(格式化输出有符号长整数)PS:VC格式(%l64d)

%llu(格式化输出无符号长整数)

float(单精度浮点型)

选择:当储存的数据为浮点数据(小数),并且数值比double(双精度浮点型)小的时候,尽量使用float(单精度浮点型)

PS:float(单精度浮点型) 4字节 double(双精度浮点型) 8字节

所以double(双精度浮点型)比float(单精度浮点型)可储存的数据更大,精度更高,然而代价就是double(双精度浮点型)内存占用比float(单精度浮点型)更大

使用:

#include <stdio.h>
#include <float.h>//提供了浮点型的范围和精度的宏

int main(void)
{
	float fMax = FLT_MAX;			//单精度浮点型最大值
	float fMin = FLT_MIN;			//单精度浮点型最小值
	printf("float max:%f\n", fMax);		//3.402823466e+38F
	printf("float min:%f\n", fMin);		//1.175494351e-38F
	return 0;
}

FLT_MAX      单精度浮点型的最大值

FLT_MIN       单精度浮点型的最小值

FLT_MAX、FLT_MIN是float.h头文件定义

%f(格式化输出单精度浮点数)

PS:单精度浮点型和双精度浮点型没有有符号和无符号之分!!!

double(双精度浮点型)

选择:当储存的数据为浮点数据(小数),并且数值比float(单精度浮点型)大的时候,尽量使用double(双精度浮点型)

使用:

#include <stdio.h>
#include <float.h>//提供了浮点型的范围和精度的宏

int main(void)
{
	double dMax = DBL_MAX;			//双精度浮点型最大值
	double dMin = DBL_MIN;			//双精度浮点型最小值
	printf("double max:%lf\n", dMax);	//1.7976931348623158e+308
	printf("double min:%lf\n", dMin);	//2.2250738585072014e-308
	return 0;
}

DBL_MAX      双精度浮点型的最大值

DBL_MIN       双精度浮点型的最小值

DBL_MAX、DBL_MIN是float.h头文件定义

%lf(格式化输出双精度浮点数)

long double(多精度浮点型)

选择:当储存的数据为浮点数据(小数),并且数值比double(双精度浮点型)大的时候,使用long double(多精度浮点型)

PS:
long double(多精度浮点型),不过并没有明确规定long double(多精度浮点型)的精度,根据不同平台会有不同的实现,就像int(整型)和long(长整型),但规定long double(多精度浮点型)的精度不少于double(双精度浮点型)

使用:

#include <stdio.h>
#include <float.h>//提供了浮点型的范围和精度的宏

int main(void)
{
        long double ldMax = LDBL_MAX;		//多精度浮点型最大值
	long double ldMin = LDBL_MIN;		//多精度浮点型最小值
	printf("long double max:%llf\n", ldMax);	//1.7976931348623158e+308
	printf("long double min:%llf\n", ldMin);	//2.2250738585072014e-308
	return 0;
}

LDBL_MAX      多精度浮点型的最大值

LDBL_MIN       多精度浮点型的最小值

LDBL_MAX、LDBL_MIN是float.h头文件定义

%llf(格式化输出多精度浮点数)

  • 92
    点赞
  • 221
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值