In c++03 it'd be the same.
Virtual base constructors are always called from the final leaf class. If you want something else than the default constructor for A when instantiating a C, you have to specify it in the constructor of class C too.
C(int val): A(val), B(val) {printf("calling C constructor (%d)\n", val);}