|
|
发表于 2012-9-22 01:42:33
|
显示全部楼层
本帖最后由 贝壳 于 2012-9-22 02:32 编辑
拉登o睡觉 发表于 2012-9-21 15:37
LZ好:我想问下关于答案中所说的标志位问题,也就是 *(&p+1)这个地方指的就是静态局部变量p的标志位,VC下输 ...
要想理解标志位,需要学习一下汇编。我也只是看了点教程,按照自己的理解大概给你说一下吧,说的不好请勿见怪。
一个标志位其实只需要是一个字节里的一位:像八位二进制数0000 0001,每一个位都可以是一个标志位,不同的系统可以对应不同的设计。对应于电子学的知识,0和1其实只表示那个位置的高低电位。如果追根朔源的话,相当于最古老的计算机的一个个开关,0或1分别表示开关闭合或断开,所以计算机只需要一个字节的一位做为标志位,就可以对一系列数据进行控制。所以一个字节可以有8个标志位,不够用就多用几个字节。而ccqiji说的:
定义一个 一个位就置1
所以定义两个静态是3 3个静态是7
其实就是:0000 0001,0000 0011,0000 0111 三个二进制,分别对应1,3,7
至于65536,对应二进制 0001 0000 0000 0000 0000,其实只是把一个位置置1了,因为只定义了一个静态变量。而为什么要把它置于第17位使它输出后等于65536,可能是操作系统和编译器共同作用的结果吧。
|
|