这个数组是什么意思?

时间:2017-05-14 16:36:24

标签: c

unsigned int PointSet[] = { (10<<16) | 3, (4<<16) | 2, 0xFFFF0002 };

这是什么意思?

| 3这是什么操作?

2 个答案:

答案 0 :(得分:1)

这将创建一个包含三个整数的数组。逗号分隔常量值表达式。 |是按位OR运算符。

(10<<16)|3 = (0xA<<16)|3 = (0x000A0000)|0x3 = 0x000A0003
(4<<16)|2 = (0x00040000)|0x2 = 0x00040002

您的阵列是{0x000A0003,0x00040002,0xFFFF0002}

答案 1 :(得分:0)

unsigned int PointSet[] = { (10<<16) | 3, (4<<16) | 2, 0xFFFF0002 };
         10 = 0000 0000 0000 0000 0000 0000 0000 1010 (Binary)
0x0000000A =    0    0    0    0    0    0    0    A
              0000 0000 0000 1010 0000 0000 0000 0000 (16 bit shift)
0x000A0000 =    0    0    0    A    0    0    0    0
         3 =  0000 0000 0000 0000 0000 0000 0000 0011
0x000A0003 =  0000 0000 0000 1010 0000 0000 0000 0011 (... | 3)

0x00000004 =  0000 0000 0000 0000 0000 0000 0000 0100
0x00040000 =  0000 0000 0000 0100 0000 0000 0000 0000 (16 bit shift)
0x00000002 =  0000 0000 0000 0000 0000 0000 0000 0010 
0x00040002 =  0000 0000 0000 0100 0000 0000 0000 0010 (... | 2)

unsigned int PointSet[] = {0x000A0003, 0x00040002,0xFFFF0002};