C语言点滴之——变量定义_01
来源:互联网 发布:iphone 5s电池淘宝威锋 编辑:程序博客网 时间:2024/06/03 21:37
开篇
本人由于工作需要,需要对C语言进行全方位的研习,所以决定记录下自己在学习过程中对C语言的理解,也算是对自己工作内容的一个总结。本文为作者(Daly.Hu)纯手工打造, 记录过程中难免有疏漏或者错误的地方,烦请各位亲们指正,也希望各位亲们尊重本人劳动成果,转载请注明出处,小弟在此叩谢。
正文
定义变量
我们通常所说的“定义变量“是什么意思?我们抛开现象看本质,这个过程可以分成几个步骤, 第一:分配内存空间,内存空间的大小取决于我们所给定的数据类型,第二:给这个内存空间取一个名字,这个名字就是我们的变量名称,第三:这个变量默认具有一种数据类型的表示方式。
首先看变量内存空间大小:
看一下运行结果:
以上运行结果表明变量c具有一个字节的内存空间
我们现在知道了内存空间有多大了,我们如何知道我们的内存编号(地址)是多少呢?代码如下:
看一下运行结果:
地址格式的表示方式为16进制
一个字节的内存空间有多大?为8位!有效数据范围用二进制表示就是0000_0000to 1111_1111,十进制为0 to 255
真的是这样码?看一个例子:
猜猜输出是什么? 看实际输出:
怎么变成负数了(-127)?这是因为我们“定义”变量cc的时候除了分配内存之外,还给它指定了数据类型char,它表示由它产生的变量为有符号字符型。我们对它赋值129,换算成二进制为0b1000_0001,由于变量cc是有符号类型,所以最高位对于变量cc来说就变成了符号位,可以想象为“0b-000_0001”,等等,这样的话不是-1吗?怎么会变成-127?这是因为在计算机里面,负数是用补码的形式来表示的,至于补码是什么东西,网上和各种计算机专业书籍上有详细介绍,在这里不作过多的解释,我们只需要知道补码是原码按位取反之后再加1即可,1000_0001的补码为1111_1111,符号位占据最高位,所以剩下的数字用十进制表示就是127,组合在一起就是-127。char型数据的十进制有效数字范围就变成了-128——+127,不是0——255喔!
变量一出生难道数据类型就定死了吗?看例子:
用(unsigned char)将变量cc临时转换为无符号字符型,也就是强制类型转换,看一下输出结果:
看到变化了吗?强制类型转换在实际工作中的使用频率非常高,因为我们的数据在内存中都是以二进制方式存储,数据类型不过是我们给予它的一个视角罢了,我们想用什么角度看它就用什么角度看它,计算机无权干预。这也是我们常说C语言灵活的原因之一。
- C语言点滴之——变量定义_01
- c语言变量定义
- C语言:变量定义
- 编程经验点滴(一)——《C 语言中定义字符串的问题》
- 重新学习C语言——变量定义l
- 关于变量未赋值——被忽视的C语言点滴
- 关于c语言定义变量
- C语言变量定义问题
- C语言小贴士之数据类型和变量定义
- C语言点滴之回顾篇
- C语言之变量
- C语言定义变量明明定义了,却说没定义
- C语言小问题之——结构体定义
- C语言之变量、常量(define\const)、变量的声明和定义
- 20170214C语言提升08_指针_01变量及指针及数组
- C语言面试题(13)——关于变量的定义
- <C语言漫谈录>3——关键字,变量定义和声明
- C语言好难——在头文件中定义const变量
- 关于QscrollArea的使用
- Linux系统下如何查看及修改文件读写权限
- uva 11888 - Abnormal 89's(KMP)
- Qt学习——聊天的QQ列表QToolBox类
- android动画
- C语言点滴之——变量定义_01
- QComboBox 编辑组合框
- 21天理论介绍
- QComboBox 编辑组合框
- HDU 2883 kebab【最大流】(判断是否满流)
- QSplitter 学习
- C++ Primer 笔记
- 23种设计模式笔记
- 分隔控件(Splitters)