Что означает `long unsigned typedef int long ullong;` ?

#c #typedef

#c #typedef

Вопрос:

На странице cppreference в typedef есть пример:

 // typedef can be used anywhere in the decl-specifier-seq
long unsigned typedef int long ullong;
  

Я не могу понять, что это значит …. пожалуйста, помогите?

Комментарии:

1. Там есть гиперссылка на объявления , так что вы можете узнать, что такое decl-specifier-seq .

2. @TavianBarnes итак, правило таково: i) typedef может появляться где угодно в одном объявлении, и ii) дублированные вещи (например long ) можно игнорировать?

3. long не игнорируется во второй раз. long long отличается от long . Если вы включите long в третий раз, появится ошибка.

4. @Brian so long unsigned typedef int long ullong; равно typedef unsigned long long int ullong; ?

5. @TavianBarnes там их два long

Ответ №1:

Это означает то же самое, что

 typedef unsigned long long int ullong;
  

Пять слов typedef , unsigned , long , long , и int являются decl-specifier s, образующими один decl-specifier-seq, и (с некоторыми возможными исключениями из крайнего случая) значение или действительность decl-specifier-seq не зависит от порядка decl-спецификаторов.

Обратите внимание, что это int static x; означает то же самое, static int x; что и , и void virtual f(); означает то же самое, virtual void f(); что и, чтобы привести несколько дополнительных примеров.

Ответ №2:

 unsigned long long int 
  

это тип данных в C . Эта строка в основном создает для нее псевдоним: «ullong».