2015-04-29 46 views
0

我有下面的C结构问题:C结构与UINT8阵列怪异的行为

typedef struct AnchorPixel{ 
    int32 X; 
    int32 Y; 
    uint8 CH[5]; 
} AnchorPixel; 

其实,我有里面CH阵列的问题。我只是不能操纵CH数组。例如,下面的程序

AnchorPixel a; 
a.CH[2] = 5; 
cout << a.CH[2]; 

给出的输出:

如果更改CH类型从UINT8为int32,问题消失。这个作品:

typedef struct AnchorPixel{ 
     int32 X; 
     int32 Y; 
     int32 CH[5]; 
    } AnchorPixel; 

任何想法?

+0

[uint8_t可能是Typedef的作为char](http://stackoverflow.com/a/26299253/1708801)...我猜这就是'uint8'真的是什么。 –

+2

另外,因为我看到'cout'我猜这应该是真的被标记的C++ –

+0

你是对的Shafik Yaghmour – Bogdan

回答

1

uint8看起来很有可能被定义为unsigned char,我们can see on coliru对于uint8_t这种情况。该cstdint头包括stdint.huint8_t确实是一个typedef到unsigned char

typedef unsigned char  uint8_t; 

您所看到的输出与cout治疗a.CH[2]作为char类型相一致,