四、C语言变量

一、变量概念

  • C语言变量,是指内存空间中的一段内存区域,可以用于存放和读取一定大小的数据。
  • 每个变量都在内存中有一个独立的地址,在变量有效期内变量的地址一直保持不变。

1、变量命名规则

  • 编译器对变量的命名是有一定要求的,如果不符合变量命名规则会编译时就会出错
    • a)变量名只能是字母(a-z A-Z),数字(0-9)与下划线(_)的组合,并且之间不能包含空格;
    • b)变量名首字母必须为字母(a-z A-Z)或者下划线(_),数字不能放在变量名首位;
    • c)变量名不能使用关键字做变量名,比如:for、while、case、break等关键字等。

2、匈牙利命名法

  • 该命名法是在每个变量名的前面加上若干表示数据类型的字符
  • 基本原则是:变量名=属性+类型+对象描述
    • 例如:int m_nAge;
    • m_代表成员变量,g_代表全局变量
    • n代表该变量是一个整型变量,Age代表这个变量是用来记录年龄的

二、变量分类

1、根据当个变量的空间长短分类

  • a)字符型变量(1个字节):char类型、unsigned char类型;
  • b)短型变量(2个字节):short类型、unsigned short类型;
  • c)长型变量(4个字节):int、unsigned int(或long、unsigned long)或float类型以及指针变量等;
  • d)超长型变量(8个字节):double类型、__int64或long long等。(有些编译器不支持__int64类型,有些编译器不支持long long)

2、根据类型分类

  • a)整数型变量:包括char、 unsigned char、short、 unsigned short、int、 unsigned int(或long、unsigned long )以及 __int64或long long等。
  • b)浮点数型变量:float类型(单精度)、double类型(双精度);
  • c)其他变量类型:数组变量、指针变量以及结构体对象等。

三、变量的存储原理

  • 1个十六进制数可以用4个二进制数表示,也就是4 bit
  • 1字节=8bit,也就是说一个字节可以使用2个十六进制数来表示
  • 在VS的内存区域中也是如此显示的,包括很多的工具如OD、CE等也是如此
    在这里插入图片描述

边界值计算规律:
16,16*16=256,256*256=65536,65536*65536=42.9亿,4G*4G=1.84e+19

1、单字节(8位)变量

  • 对于unsigned char类型变量
    • 毫无疑问只要在8个位不同的位置上存储1或0,就能得到0-255之间256种组合后的数字
  • 对于char来说,一半是正数一半是负数
    • 计算机将char类型变量中的最高位作为符号位,最高位为0的是正数,最高位为1是负数
    • 最高位是0时最大的数字就是0x7F,转成二进制就是0 111 1111(0-127)
    • 最高位是1时最大的数字就是0xFF,转成二进制就是1 111 1111(-128-0)
	char c1 = 0xFF;
	unsigned char c2 = 0xFF;

2、双字节(16位)变量

  • 双字节变量也叫16位变量,包括unsigned short和short两种类型,都属于整型变量。
  • 双字节变量与上一节的单字节变量,在存储原理上基本一致,只是存储空间整整大了一倍。
    在这里插入图片描述

3、四字节(32位)整型变量

  • 四字节整型变量也叫32位变量,包括unsigned int和int(或unsigned long和long)等类型。
  • 四字节变量与单字节和双字节变量,在存储原理上基本一致,只是存储空间更大了。
    • unsigned int:无符号四字节变量,存储范围是0-4294967295(0xFFFFFFFF) ,就像十进制中的8位数是从0到99999999总共100000000个那样。
    • int:有符号四字节变量,存储范围是-2147483648(0x80000000)到0到2147483647(0x7FFFFFFF)之间的数,其中0x80000000是正负数的分界点。

在这里插入图片描述

4、八字节整型变量

  • 整型变量中还包括8字节(64位)整型变量,是不常用的变量类型。
    • 例如:__int64或long long(有些编译器中不支持__int64,有些编译器不支持long long)。
int main()
{
	long long i = 0x80000000;
	unsigned long long u = 0xFFFFFFFF;
	printf("i=%I64d,u=%I64u\n", i * 5000, u * u);
	return 0;
}

四、浮点型变量

  • 浮点型变量就是用于存储带有小数的数据的变量,分为单精度(float)与双高精度(double)两种类型
  • 一般浮点型变量不与unsigned关键字连用,缺省是有符号变量
    在这里插入图片描述
#include <stdio.h>
int main()
{
	char ch = 99;
	int n = 1234567890;
	float f = 12345678.123456789f;//0.123456f
	double d = 1234567890.1234567890;
	//0.01234567890123456789;//1234567890123456.0;
	printf("c=%c,n=%d,f=%f,d=%0.20lf\n",ch+5,n,f,d);
	printf("sizeof(ch)=%d, sizeof(n)=%d, sizeof(f)=%d, sizeof(d)=%d\n",
		sizeof(ch), sizeof(n), sizeof(f), sizeof(d));
//最后一行是打印所有类型变量的大小(字节数)
	return 0; 
}
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无休止符

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值