在仔细阅读组织的源代码存储库时,我遇到了这个小问题:
RawParameterStorage[!ParameterWorkingIdx][ParameterDataOffset] = ...
这是有效的代码吗? (编译)此处的感叹号是做什么用的?
反转
~
运算符可能很有意义,因为在 bool 表达式中,它通常与not !
运算符混淆。但是,将not !
运算符强加于数组索引似乎没有逻辑意义。有什么想法吗? 最佳答案
!ParameterWorkingIdx
表示ParameterWorkingIdx
是0
,如果是,则!ParameterWorkingIdx
评估为true
,它可能隐式转换为索引器类型(例如,整数索引器的1
如数组中的形式),否则,它的评估结果为false
。
ParameterWorkingIdx == 0
,则为[!ParameterWorkingIdx] == [1]
。 ParameterWorkingIdx != 0
,则为[!ParameterWorkingIdx] == [0]
。 它还取决于其他内容,例如:
ParameterWorkingIdx
的类型。 ! operator
的类型。 ParameterWorkingIdx
类型重载。