Большинство эквайеров (например, Chase Paymentech) предоставляют услугу, которая отправляет вам (и покупателю, если хотите) электронное письмо об истечении срока действия карты & amp; куча других вещей (например, достигнут кредитный лимит) - поэтому вам не нужно хранить какую-либо информацию, за исключением, может быть, 4 последних цифр для целей распознавания.
Если вы удалите круглые скобки, он не будет компилироваться.
Без круглых скобок компилятор будет рассматривать это как агрегированный блок инициализации и завершится ошибкой, когда увидит ключевое слово int
. У вас не может быть ключевых слов в блоках инициализатора.
6.7.8 Инициализация
11 Инициализатор для скаляра должен быть единственным выражением, необязательно заключенным в фигурные скобки. В начальное значение объекта - это значение выражения (после преобразования); того же типа применяются ограничения и преобразования, как для простого присваивания, принимая тип скаляра быть неполной версией объявленного типа.
6.2.5 Типы
21 Арифметические типы и типы указателей вместе называются скалярными типами. Массив и Типы структур вместе называются агрегатными типами.
Могу ли я ожидать, что это будет работать в большинстве компиляторов c?
Нет. Похоже на нестандартное расширение GNU.
Кроме того, как называется эта конструкция?
Интересно, а есть ли вообще. Собственно, это похоже на то, что обычно делают макросы.
Это расширение GCC :
Составной оператор, заключенный в круглые скобки, может отображаться как выражение в GNU C. Это позволяет использовать циклы, переключатели и локальные переменные внутри выражения.
Напомним, что составной оператор - это последовательность операторов, заключенная в фигурные скобки; в этой конструкции круглые скобки заключают фигурные скобки. Например:
({int y = foo (); int z; если (y> 0) z = y; иначе z = - y; z; })
- допустимое (хотя и немного более сложное, чем необходимо) выражение для абсолютного значения
foo ()
.Последним элементом составного оператора должно быть выражение, за которым следует точка с запятой; значение этого подвыражения служит значением всей конструкции. (Если последним в фигурных скобках вы используете какой-либо другой оператор, конструкция имеет тип
void
и, следовательно, фактически не имеет значения.) ...
Вы можете ожидать, что он будет работать в большинстве версий GCC.
Вы можете ожидать, что он не будет работать почти нигде - это расширение GCC.
Раздел руководства GCC, который описывает эту функцию, называется «Операторы и объявления в выражениях»:
Составной оператор, заключенный в круглые скобки, может отображаться как выражение в GNU C.
Позже он говорит:
Любые временные файлы созданный в операторе внутри выражения оператора будет уничтожен в конце заявления. Это делает выражения операторов внутри макросов немного отличается от вызовов функций.
Итак, «выражение выражения» похоже на имя, используемое в документации.