I'm at a lost on why the sizeof NODE per call below is 8.
My thoughts are it should be 5. considering the sizeof NODESTATE is 4 and the sizeof unsigned char is 1. Why is it 8?
Code:# include <iostream> using namespace std; typedef enum { NOT_PRESENT = 0u, POWER_OFF, POWER_ON, SILENT } NODESTATE; typedef struct { unsigned char address; NODESTATE state; } NODE; static NODE NodeMap [] = { 0, NOT_PRESENT, 0, NOT_PRESENT // 0, NOT_PRESENT }; int main(void) { printf( "%s%d\n", "sizeof NodeMap = ", sizeof(NodeMap)); printf( "%s%d\n", "sizeof NODE = ", sizeof(NODE)); printf( "%s%d\n", "sizeof unsigned char = ", sizeof(unsigned char)); printf("%d\n",sizeof(NODESTATE)); return 0; } RESULT : sizeof NodeMap = 16 sizeof NODE = 8 sizeof unsigned char = 1 4




Reply With Quote