I think it might be assigning the variables and initial value when the struct is instantiated.
For example when calling a constructor or function you can put : and assign values. These will be assigned before the function body is called. For example:
Code:
// An example class
class Fruit {
public:
int size;
Color color; // assume Color is a class
Fruit (int size, Color color) {
this->size = size;
this->color = color;
}
};
When you create and instance of the class, by calling Fruit(5, aColorObject), the obvious happens, the constructor is called and the constructor body sets the size and color variables to those specified in the parameters. But instead of doing that you could write this:
Code:
Fruit(int size, Color color) : size(size), color(color) {}
// When the constructor is called, it sets the variables after the : to the values specified in
// the ()'s, and then would go on to execute the body, which is not necessary now
// because we've moved the assignments after the : so you can leave that empty and just
// put {}, however you can have a body in a function or constructor if you want.
// Note that setting the variables to something in the body will override what you set them to
// after the colon.
Notice the syntax is a : after the constructor/function parameters (and after a const, if present) and following for each variable you put the variable_name(assigned_value) and a comma(,) after each assignment except the last one. Then the opening brace, body, which can be nothing, and closing brace. This can be used for a constructor or a function, but not a destructor.
Also note that in the original constructor, since the class variable names and parameter names are the same we need to use this to distinguish that we mean the class variable, otherwise it would assume the parameter. But in the second constructor, we don't use this because you can only set variables within the class, so it knows that you mean the class variables.
So my guess with that line unsigned int three:8 is giving it a default value of 8, rather than using the assignment operator. But I'm probably wrong :P