В первом случае:
int a =(3,4);
Переменная инициализируется выражением, состоящим из оператора запятой и скобок.Это выражение оценивается как 4, как вы правильно догадались, и это то, что присваивается a
.
Во втором случае:
int a={3,4};
Переменная инициализируется списком инициализатора что обозначают фигурные скобки, а запятая разделяет инициализаторы.Если рассматриваемая переменная была структурой или массивом, значения в списке инициализатора будут назначаться каждому члену.Если инициализаторов больше, чем элементов, избыточные значения отбрасываются.
Таким образом, a
присваивается первое значение в списке инициализатора, а именно 3, и значение 4 отбрасывается.
Если бы вы сделали это:
int a[2] = {3, 4};
Тогда a[0]
будет 3, а a[1]
будет 4.