Normalmente, usa la primera. La segunda, se utiliza para inicializar clases. Realmente un tipo nativo no tiene constructor. Una clase sí, y es la única forma de inicializarla. Sobre la tercera, no la utilices salvo que realmente la necesites. Más que nada, porque no es necesario. La normal y la más visual, es la primera. Sobre cuándo usar la tercera: http://en.cppreference.com/w/cpp/language/aggregate_initialization