完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这篇文章是代替柠檬版主发布的,因为工作太忙没有时间编辑帖子,但是又想和大家分享经验和知识,所以真的非常感谢柠檬守护版主的分享。大家有什么问题也可以回帖询问,柠檬版主有时间会来与大家互动的。
正文: 1.数据类型与变量的本质 与传统的讲法不同的是,结合实实在在内存这样的概念,来对这两个名称的说明。 其实数据类型他到底是干什么用的呢? 老师讲的模子是比较形象的说法,lemon:在针对早期程序设计语言中[特别是汇编语言],不方便对数据大小的严格区分[数据是连续的存放在内存的空间中的],C语言的创造者,借由数据类型这样的定义,来描述内存中某一段连续的空间所代表一个意义。 比如说,在内存中一段连续的4个字节,认为他叫int,是一个int类型的数据,特征就是占用了四个连续的空间。 变量,也是表示内存中某一段连续空间,只是不一样的地方是,变量是有内容的,内容就是存放在这一段连续空间的数据[如果不定义的话,那就是随机值,由最后一次该连续的地址空间操作后的值],所以变量与数据类型的关系是数据类型是变量的一个属性[特征],变量拥有数据类型这样的属性。 总结来说,变量有两个属性,第一个是数据类型[数据类型,表示在内存中的一段连续的地址空间,不同的类型,代表的空间大小不同],第二个是内存空间中存储的内容[我称呼他为value,这个value可以是我们常见的整数,字符,字符串,浮点数,也可以是表示地址空间的门牌号[地址值]] 从来没有这样做过,sizeof(char),对模子进行丈量,测一下它在内存中占据的空间大小。 数据类型是研究人员定义的一个名词,描述了内存中,某一段空间的大小。 int表示,内存中4个字节的大小。 2. 有符号和无符号 这个部分,最重要的内容是知道几个定义: 1. 有符号数和无符号数是针对整形这一种数据类型专有的,所以只能看到在char,int,long int前有这样的定义。 unsigned int, signed int, unsigned char, signed char。 2. 我们知道,忽省的情况,比如说Int a的时候,a是signed还是unsigned呢? 答案是signed. 3. 符号位是位于最高位,如果是32bit的系统,对于int型的变量,其符号位是在bit31,对于char型的变量,其最高位是在bit7. 表示一个正数,最高位为0,表示一个负数,最高位为0. 4. 无符号数与有符号数一起参与运算的时候,有符号数会变成无符号数之后,在来进行运算。 5. 无符号数有一个很有趣的现象,MAX_NUM+1=MIN_NUM;MIN_NUM-1=MAX_NUM; unsigned int c = 0; printf("c-1 = %un", (c-1)); test_result: c-1 = 4294967295 补充: 变量的使用,在我看来,应该是有两个过程,1.解析变量的数据类型,主要是按照这样的一个数据类型,可以去定位这个变量在内存中存放的这么一段地址空间;2.按照数据类型,来取出内存中存放数据的内容,这一点很重要的。 原因就是看自己写的代码。 #include int main(int argc, char *argv[]) { unsigned int b = 0x80000001; int a = -0x80000001; printf("int_10 b = %u, int_16 b= %xn", b, b); printf("int_10 a = %d, int_16 a= %xn", a, a); return 0; } result: int_10 b = 2147483649, int_16 b= 80000001 int_10 a = -2147483647, int_16 a= 80000001 1)负数的右移:负数右移的话,由于要保持它是负数,所以负数的二进制的右边补1。如果一直右移的话,最后就就变成0xFFFFFFFF 即-1 如: -4>>1 为-2 ;-4>>2为-1 2)负数的左移:跟正整数左移一样,右边补0,一直左移的话,最后就是0啦。-2<<2 为-4 ; -2<<31为0 unsigned int b = 0x80000000; int a = 0x80000000; printf("b << 1 = %u, b>>1= %un", (b<<1), (b>>1)); printf("a << 1 = %d, int_10 a>>1= %d, int_16 a>>1=%xn", (a<<1), (a>>1),(a>>1)); result: b << 1 = 0, b>>1= 1073741824 a << 1 = 0, int_10 a>>1= -1073741824, int_16 a>>1=c0000000 |
|
相关推荐
5 个讨论
|
|
只有小组成员才能发言,加入小组>>
12121 浏览 2 评论
4457 浏览 3 评论
3686 浏览 5 评论
9469 浏览 47 评论
4477 浏览 9 评论
693浏览 0评论
494浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 13:29 , Processed in 0.445901 second(s), Total 54, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号