我发现enum被定义为这样,并且无法弄清楚为什么他们将前导零置于那里.
enum SquareDelta {
DELTA_SSW = -021,
DELTA_SS = -020,
DELTA_SSE = -017,
DELTA_SWW = -012,
DELTA_SW = -011,
DELTA_S = -010,
DELTA_SE = -07,
DELTA_SEE = -06,
DELTA_W = -01,
DELTA_ZERO = 0,
DELTA_E = 01,
DELTA_NWW = 06,
DELTA_NW = 07,
DELTA_N = 010,
DELTA_NE = 011,
DELTA_NEE = 012,
DELTA_NNW = 017,
DELTA_NN = 020,
DELTA_NNE = 021
};
Run Code Online (Sandbox Code Playgroud)
我想这不仅仅是正常的int enum,而是它是什么?它可能是十六进制的数字,以"0x"开头?
Alo*_*ave 21
那些是八进制文字,因此它们从0开始.
更有趣和真实的问题是:
为什么要使用Octal Literals作为枚举值?
也许,因为那些八进制文字的每一点都表明了一些东西.很难弄清楚是什么,仅仅看到枚举而没有使用它的背景,但是你需要在这个方向上思考它,也许它会对你更有意义.
Moo*_*uck 10
其他"答案"回答了你的问题,但我是为了提供信息而添加的.
enum SquareDelta {
DELTA_NNW= 017,DELTA_NN = 020,DELTA_NNE= 021
DELTA_NWW= 006,DELTA_NW = 007,DELTA_N = 010,DELTA_NE = 011,DELTA_NEE= 012,
DELTA_W =-001,DELTA_ZER= 000,DELTA_E = 001,
DELTA_SWW=-012,DELTA_SW =-011,DELTA_S =-010,DELTA_SE =-007,DELTA_SEE=-006,
DELTA_SSW=-021,DELTA_SS =-020,DELTA_SSE=-017,
};
Run Code Online (Sandbox Code Playgroud)
再次,二进制(两个赞美):
enum SquareDelta {
DELTA_NNW=001111,DELTA_NN =010000,DELTA_NNE=010001
DELTA_NWW=000110,DELTA_NW =000111,DELTA_N =001000,DELTA_NE =001001,DELTA_NEE=001010,
DELTA_W =111111,DELTA_ZER=000000,DELTA_E =000001,
DELTA_SWW=110110,DELTA_SW =110111,DELTA_S =111000,DELTA_SE =111001,DELTA_SEE=111010,
DELTA_SSW=101111,DELTA_SS =110000,DELTA_SSE=110001,
};
Run Code Online (Sandbox Code Playgroud)
所以E/W坐标是SquareDelta&7,而N/S坐标是SquareDelta&070+SquareDelta&4.
经过进一步审查,似乎他们打算将最不重要的八进制数字设置为-2到2的标度来表示W/E-ness,并将下一个八进制数字从-2设置为2来表示N./S的烦躁.如果添加DELTA_W+DELTA_W+DELTA_N并截断为两个八进制数字,则得到006,其值为DELTA_NWW.由于最不重要的八进制影响鞋面,因此增量限制为正或负两个.
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |