SlideShare a Scribd company logo
C++0x Елена Сагалаева, ADD-2010
Сроки Стандарт 1998-го года Стандарт 2003-го года С++0х выйдет не раньше 2011. Потому что процесс разработки очень демократичный. 160 активно работающих человек, на каждом собрании ~60 Встречи проходят регулярно по всему миру Final Committee Draft (FCD) был принят в марте этого года
Что хотели от C++0x Сделать его лучше для системного программирования и разработки библиотек Чтобы его было проще учить Обратная совместимость (не вводить новые ключевые слова)
От чего отказались Сборка мусора Концепции (хотя они уже были реализованы в GCC) Урезали потоки (threads) Очень многое было убрано во время «Компромисса в Ко́не», октябрь 2007
Рассматриваемые компиляторы GCC 4.5.1(Опция -std=c++0x). Реализовано больше всего. Microsoft Visual C++ 2010 Intel C++ Compiler 11.0 ( Опция /Qstd=c++0x)
Двойные угловые скобки Было: vector<vector<int> > v; Стало: vector<vector<int>> v; √GCC √MSVC++   √Intel
auto Угадывание типа по инициализации const int* bar() {…} auto x = 7; auto num = bar(); √GCC √MSVC++   √Intel
auto Было: for(vector<int>::iterator p=v.begin(); p!=v.end(); ++p) cout<<*p<<''; Стало: for(autop=v.begin(); v!=v.end(); ++p) cout<<*p<<''; √GCC √MSVC++   √Intel
Списки инициализации (initializer list) Было: vector <string> vMonths; vMonths.push_back( "January" ); vMonths.push_back( "February" ); vMonths.push_back( "March" ); Стало: vector <string> vMonths = {"January", "February", "March"}; √GCC ×MSVC++   ×Intel
Списки инициализации map<string,int> mFreq = {  { "cat", 0 }, { "catch", 0 }, { "March", 0 }  }; √GCC ×MSVC++   ×Intel
Лямбды Лямбда функции - неименованные функции vector<int> v = { 3, 6, -7, 1}; std::sort(v.begin(), v.end(), [](int a, int b) {         return abs(a)<abs(b);                                            }); √GCC √MSVC++   √Intel
lambda-capture // ничего не берем [](int x, int y) -> int { return x + y; } //по значению [=](int x, int y) -> int { return x + y + z; } // по ссылке [&](int x, int y) -> int { z++; return x + y + z; } // по-разному [&, z](int x, int y) -> int { return x + y + z; } √GCC√MSVC++   √Intel
Свойства лямбд Если return один, то компилятор должен угадать тип возвращаемого значения (Стандарт, 5.1.2/4) Каждая лямбда имеет свой тип auto a1=[](int x){return x;} auto a2=[](int x){return x;} //a1!=a2
Лямбды и замыкания auto a = [](int Init) {            return ( [=](int Val) {  			return Init + Val;  });  }; auto a1 = a(5); cout<<a1(3)<<endl; //8 cout<<a1(2)<<endl; //7 √GCC×MSVC++ √Intel
Обработка ошибок в лямбдах std::sort(v.begin(), v.end(), [](int a, int b)) {  				return abs(a)<abs(b) 				      }; GCC – огромное сообщение об ошибке – десятки строк. Нужная информация в первых четырех. Intel – сообщение повторяется несколько раз. Цикл?
nullptr Замена для NULL char* p = nullptr;  char* p2 = 0; // 0 работает и p==p2  int i = nullptr; // ошибка,nullptr - неint  Нет путаницы с таким случаем: void foo(char *){};  void foo(int){}; foo(nullptr); //вызывает foo(char *) ×GCC√MSVC++ ×Intel
Атрибуты class CBase { public: virtual void f [[final]] ();  }; class CDerived : public CBase {  public:      virtual void f (); //ошибка! } Синтаксис атрибутов еще не утвержден, они нигде не реализованы.
long longint Как минимум 64 бита Совместимость с C99 Давно уже реализован в компиляторах long long x = 9223372036854775807LL;
Вопросы? alenacpp.blogspot.com

More Related Content

What's hot

Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнеры
Platonov Sergey
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksMikhail Kurnosov
 
3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы
DEVTYPE
 
2.2 Стек вызовов
2.2 Стек вызовов2.2 Стек вызовов
2.2 Стек вызовов
DEVTYPE
 
Максим Хижинский Lock-free maps
Максим Хижинский Lock-free mapsМаксим Хижинский Lock-free maps
Максим Хижинский Lock-free maps
Platonov Sergey
 
Функционально декларативный дизайн на C++
Функционально декларативный дизайн на C++Функционально декларативный дизайн на C++
Функционально декларативный дизайн на C++
Alexander Granin
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Ontico
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
Mikhail Kurnosov
 
3.2 Методы
3.2 Методы3.2 Методы
3.2 Методы
DEVTYPE
 
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмов
Andrey Dolinin
 
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Alexander Borzunov
 
Огранизация ввода и вывода данных
Огранизация ввода и вывода данныхОгранизация ввода и вывода данных
Огранизация ввода и вывода данных
Andrey Dolinin
 
операторы цикла в Visual basic
операторы цикла в Visual basicоператоры цикла в Visual basic
операторы цикла в Visual basicanastastish
 
Алгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеАлгоритмическая конструкция Повторение
Алгоритмическая конструкция Повторение
Andrey Dolinin
 
2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод
DEVTYPE
 
6.2 Шаблоны функций
6.2 Шаблоны функций6.2 Шаблоны функций
6.2 Шаблоны функций
DEVTYPE
 
Защита информации семинар №8
Защита информации семинар №8Защита информации семинар №8
Защита информации семинар №8
Alexander Kolybelnikov
 
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
 Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур  Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
it-people
 
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
Darya Zubova
 
A System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsA System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate Programs
Iosif Itkin
 

What's hot (20)

Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнеры
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
 
3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы
 
2.2 Стек вызовов
2.2 Стек вызовов2.2 Стек вызовов
2.2 Стек вызовов
 
Максим Хижинский Lock-free maps
Максим Хижинский Lock-free mapsМаксим Хижинский Lock-free maps
Максим Хижинский Lock-free maps
 
Функционально декларативный дизайн на C++
Функционально декларативный дизайн на C++Функционально декларативный дизайн на C++
Функционально декларативный дизайн на C++
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
3.2 Методы
3.2 Методы3.2 Методы
3.2 Методы
 
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмов
 
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
 
Огранизация ввода и вывода данных
Огранизация ввода и вывода данныхОгранизация ввода и вывода данных
Огранизация ввода и вывода данных
 
операторы цикла в Visual basic
операторы цикла в Visual basicоператоры цикла в Visual basic
операторы цикла в Visual basic
 
Алгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеАлгоритмическая конструкция Повторение
Алгоритмическая конструкция Повторение
 
2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод
 
6.2 Шаблоны функций
6.2 Шаблоны функций6.2 Шаблоны функций
6.2 Шаблоны функций
 
Защита информации семинар №8
Защита информации семинар №8Защита информации семинар №8
Защита информации семинар №8
 
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
 Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур  Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
 
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
 
A System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsA System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate Programs
 

Similar to C++0x

Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?
Yauheni Akhotnikau
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x Introduction
Fedor Vompe
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
Pavel Tsukanov
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Yandex
 
C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019
C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019
C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019
corehard_by
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Yandex
 
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Fwdays
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Yandex
 
2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpi2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpiMichael Karpov
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программированияguestfc8ae0
 
Step cpp022
Step cpp022Step cpp022
Step cpp022
Evgenij Laktionov
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliaminComputer Science Club
 
C++ idioms
C++ idiomsC++ idioms
C++ idioms
COMAQA.BY
 
idioms C++
idioms C++idioms C++
idioms C++
corehard_by
 
Эффективный C++
Эффективный C++Эффективный C++
Эффективный C++
Andrey Karpov
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Yandex
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
Vasil Remeniuk
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Sergey Platonov
 

Similar to C++0x (20)

Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x Introduction
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019
C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019
C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
 
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpi2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpi
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программирования
 
Step cpp022
Step cpp022Step cpp022
Step cpp022
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin
 
C++ idioms
C++ idiomsC++ idioms
C++ idioms
 
idioms C++
idioms C++idioms C++
idioms C++
 
Эффективный C++
Эффективный C++Эффективный C++
Эффективный C++
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
 

C++0x

  • 2. Сроки Стандарт 1998-го года Стандарт 2003-го года С++0х выйдет не раньше 2011. Потому что процесс разработки очень демократичный. 160 активно работающих человек, на каждом собрании ~60 Встречи проходят регулярно по всему миру Final Committee Draft (FCD) был принят в марте этого года
  • 3. Что хотели от C++0x Сделать его лучше для системного программирования и разработки библиотек Чтобы его было проще учить Обратная совместимость (не вводить новые ключевые слова)
  • 4. От чего отказались Сборка мусора Концепции (хотя они уже были реализованы в GCC) Урезали потоки (threads) Очень многое было убрано во время «Компромисса в Ко́не», октябрь 2007
  • 5. Рассматриваемые компиляторы GCC 4.5.1(Опция -std=c++0x). Реализовано больше всего. Microsoft Visual C++ 2010 Intel C++ Compiler 11.0 ( Опция /Qstd=c++0x)
  • 6. Двойные угловые скобки Было: vector<vector<int> > v; Стало: vector<vector<int>> v; √GCC √MSVC++ √Intel
  • 7. auto Угадывание типа по инициализации const int* bar() {…} auto x = 7; auto num = bar(); √GCC √MSVC++ √Intel
  • 8. auto Было: for(vector<int>::iterator p=v.begin(); p!=v.end(); ++p) cout<<*p<<''; Стало: for(autop=v.begin(); v!=v.end(); ++p) cout<<*p<<''; √GCC √MSVC++ √Intel
  • 9. Списки инициализации (initializer list) Было: vector <string> vMonths; vMonths.push_back( "January" ); vMonths.push_back( "February" ); vMonths.push_back( "March" ); Стало: vector <string> vMonths = {"January", "February", "March"}; √GCC ×MSVC++ ×Intel
  • 10. Списки инициализации map<string,int> mFreq = { { "cat", 0 }, { "catch", 0 }, { "March", 0 } }; √GCC ×MSVC++ ×Intel
  • 11. Лямбды Лямбда функции - неименованные функции vector<int> v = { 3, 6, -7, 1}; std::sort(v.begin(), v.end(), [](int a, int b) { return abs(a)<abs(b); }); √GCC √MSVC++ √Intel
  • 12. lambda-capture // ничего не берем [](int x, int y) -> int { return x + y; } //по значению [=](int x, int y) -> int { return x + y + z; } // по ссылке [&](int x, int y) -> int { z++; return x + y + z; } // по-разному [&, z](int x, int y) -> int { return x + y + z; } √GCC√MSVC++ √Intel
  • 13. Свойства лямбд Если return один, то компилятор должен угадать тип возвращаемого значения (Стандарт, 5.1.2/4) Каждая лямбда имеет свой тип auto a1=[](int x){return x;} auto a2=[](int x){return x;} //a1!=a2
  • 14. Лямбды и замыкания auto a = [](int Init) { return ( [=](int Val) { return Init + Val; }); }; auto a1 = a(5); cout<<a1(3)<<endl; //8 cout<<a1(2)<<endl; //7 √GCC×MSVC++ √Intel
  • 15. Обработка ошибок в лямбдах std::sort(v.begin(), v.end(), [](int a, int b)) { return abs(a)<abs(b) }; GCC – огромное сообщение об ошибке – десятки строк. Нужная информация в первых четырех. Intel – сообщение повторяется несколько раз. Цикл?
  • 16. nullptr Замена для NULL char* p = nullptr; char* p2 = 0; // 0 работает и p==p2 int i = nullptr; // ошибка,nullptr - неint Нет путаницы с таким случаем: void foo(char *){}; void foo(int){}; foo(nullptr); //вызывает foo(char *) ×GCC√MSVC++ ×Intel
  • 17. Атрибуты class CBase { public: virtual void f [[final]] (); }; class CDerived : public CBase { public: virtual void f (); //ошибка! } Синтаксис атрибутов еще не утвержден, они нигде не реализованы.
  • 18. long longint Как минимум 64 бита Совместимость с C99 Давно уже реализован в компиляторах long long x = 9223372036854775807LL;