C语言中存储标志的最有效方法。
标志的作用是在程序执行过程中对两个或多个选项做出决定。例如,在执行MS-DOS的dir命令时,可以使用“/w”符号使命令在屏幕上显示几列文件名,而不是每行只显示一个文件名。在3.5中,您可以看到另一个例子,它使用一个logo从两个可能的类型中选择一个用于union。因为一个标志一般只有几个(通常是两个)值,所以为了节省内存空间,改变了值2。你怎么了?在nt或char类型中。
存储标志值的效率是存储空间和访问速度之间的折衷。最有效的存储方法是用足够多的位数存储标志值的所有可能值,但大多数计算机无法直接寻址内存中的单个位,因此应从存储标志值的字节中提取标志值。最快的存储方法是将每个标志值存储在它自己的整数变量中。但当一个标志只需要一位存储空间,变量长度为32位时,其他31位都浪费了,所以这种方法的存储空间利用效率很低。
如果标志的数量很少,那么使用哪种存储方法并不重要。如果标志的数量很大,最好将它们存储在字符数组或整数数组中。这时,需要传递一个位掩码(bit)
Masking)处理来提取这些标志值,即屏蔽不必要的位,只处理需要的位。
有时,为了节省存储空间,标志可以与另一个值一起存储。例如,如果一个整数的值小于一个整数所能表示的最大值,那么它的高位可以用来存储标志;如果某些数据总是2或4的倍数,那么它的低位可以用来存储标志。在3.5的例子中,指针的低位用来存储一个标志,标志的作用是在两种可能的类型中选择一种作为指针所指向的对象类型。