Take this declaration:
int i = 80;
char *c = "a";
// char - variable type
// c - declarator
// = - assignment operand
// "a" - ?
For the proper names of each part of the C syntax, you should go to the C standard and read the language grammar. The relevant (incomplete) pieces are:
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
So for example:
static int x = 80, y = 90;is a declaration.
staticis the declaration specifier.
intis a type specifier that works as a declaration specifier.
y) is an identifier (grammar is elsewhere) that works as a declarator.
=is a token that separates the declarator from the initializer. In this context it is not an operator.
90) is an expression that works as an initializer.
,is a token (not an operator) that separates one declarator plus initialization from the next one.
;is a token that marks the end of the declaration.