2016-12-01 8 views
0

Возьмите это заявление:C терминологии программирования

int i = 80; 

Это мое понимание терминов, используемых для описания каждой части (поправьте меня, если я ошибаюсь):

  • int является тип переменной
  • i это описатель
  • = является операнд присваивания

Какой термин используется для описания 80?

Другой пример:

char *c = "a"; 
// char - variable type 
// c - declarator 
// = - assignment operand 
// "a" - ? 
+2

начальная величина .. – BLUEPIXY

+3

. '=' Отмечает начало инициализатора и аналогично назначению, но не идентичен (поскольку, кроме всего прочего, вы можете инициализировать массив, но вы не можете назначить массив); '80' является инициализатором. В стандарте вы получаете _declaration: Объявление-спецификаторы init-declarator-listopt ';' _ и _init-declarator-list: init-declarator | init-declarator-list ',' init-declarator_ и _init-declarator: declarator | declarator '=' initializer_. Ваш '80' - это просто простой« инициализатор ». –

+0

@BLUEPIXY Спасибо, это был ответ, который я искал. –

ответ

5

Для собственных имен каждой части синтаксиса C, вы должны пойти к C standard и читать грамматику языка. Соответствующие (неполные) части являются:

declaration: 
    declaration-specifiers init-declarator-list opt ; 
    static_assert-declaration 

declaration-specifiers: 
    storage-class-specifier declaration-specifiers opt 
    type-specifier declaration-specifiers opt 
    type-qualifier declaration-specifiers opt 
    function-specifier declaration-specifiers opt 
    alignment-specifier declaration-specifiers opt 

init-declarator-list: 
    init-declarator 
    init-declarator-list , init-declarator 

init-declarator: 
    declarator 
    declarator = initializer 

Так, например:

  • static int x = 80, y = 90; является декларация.
  • static - спецификатор класса хранения, который является частью спецификатора декларации.
  • int - спецификатор типа, который является частью спецификатора декларации.
  • x и y являются идентификаторами (грамматика в другом месте), которые работают как деклараторы.
  • = - это токен, отделяющий декларатор от инициализатора. В этом контексте это не оператор.
  • 80 и 90 - выражения, которые работают как инициализаторы.
  • , - это токен (не оператор), который отделяет один декларатор плюс инициализацию (init-declarator) от следующего.
  • ; - это токен, обозначающий конец декларации.
+1

Чтобы развернуть немного, обычно люди используют оператор слова для вещей, которые вы используете для создания выражения *. Например, арифметические операторы, такие как '+', '-',' * 'и'/', реляционные операторы типа' <',' == 'и'> = 'и т. Д. В объявлении переменной '=' не является частью выражения, поэтому он не называется оператором. – hugomg

 Смежные вопросы

  • Нет связанных вопросов^_^