objective-c – 枚举定义中“NSBinarySearchingFirstEqual =(1UL << 8)”是什么意思?

我在框架目录中的NSArray.h头文件中看到了这个:
enum {
    NSBinarySearchingFirstEqual = (1UL << 8),NSBinarySearchingLastEqual = (1UL << 9),NSBinarySearchingInsertionIndex = (1UL << 10),};
typedef NSUInteger NSBinarySearchingOptions;

“NSBinarySearchingFirstEqual =(1UL<< 8)”的重点是什么?这个枚举与“NSBinarySearchingOptions”类型定义之间的关系是什么?谢谢.

解决方法

“NSBinarySearchingFirstEqual =(1UL<< 8)”等将特定值分配给枚举常数.选择这些值以便它们由单个位表示,允许选项与按位运算组合. “<<<<运算符是左移;你可以等同地把它写成:
enum {
    NSBinarySearchingFirstEqual = 256,NSBinarySearchingLastEqual = 512,NSBinarySearchingInsertionIndex = 1024,};

选项可以组合如下:

NSBinarySearchingOptions opt = NSBinarySearchingFirstEqual | NSBinarySearchingLastEqual;

请注意,NSBinarySearchingOptions是对无符号整数的类型定义,而不是枚举,因为它可以包含不是定义的枚举值之一的值(当组合多个值时).

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录&lt;future&gt;future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...