在仔细阅读组织的源代码存储库时,我遇到了这个小问题:

RawParameterStorage[!ParameterWorkingIdx][ParameterDataOffset] = ...

这是有效的代码吗? (编译)此处的感叹号是做什么用的?

反转~运算符可能很有意义,因为在 bool 表达式中,它通常与not !运算符混淆。但是,将not !运算符强加于数组索引似乎没有逻辑意义。有什么想法吗?

最佳答案

!ParameterWorkingIdx表示ParameterWorkingIdx0,如果是,则!ParameterWorkingIdx评估为true,它可能隐式转换为索引器类型(例如,整数索引器的1如数组中的形式),否则,它的评估结果为false

  • 如果为ParameterWorkingIdx == 0,则为[!ParameterWorkingIdx] == [1]
  • 如果为ParameterWorkingIdx != 0,则为[!ParameterWorkingIdx] == [0]

  • 它还取决于其他内容,例如:
  • ParameterWorkingIdx的类型。
  • 重载! operator的类型。
  • 索引器按ParameterWorkingIdx类型重载。
  • 等...
  • 10-06 07:43