Visual Studio 2013 で以下のようなコードを実行すると、おかしな値が表示されます。
#include <stdio.h> struct Hoge { struct { double value = 123; } data; }; int main(int argc, char **argv) { Hoge hoge; printf("%f\n", hoge.data.value); return 0; }
構造体の中に無名構造体があって、その中で宣言時初期化を記述しています。
内側の構造体が、無名ではなく、名前を付けると、期待通りに動作します。
Visual Studio 2015 では修正されているようです。