Грабли: различия между версиями
Перейти к навигации
Перейти к поиску
Ctrlalt (обсуждение | вклад) Нет описания правки |
Ctrlalt (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
== Ввод и вывод == | |||
=== cin/cout работает медленнее scanf/printf === | === cin/cout работает медленнее scanf/printf === | ||
* [http://codeforces.ru/blog/entry/562 Codeforces — Ввод/вывод в C++] | * [http://codeforces.ru/blog/entry/562 Codeforces — Ввод/вывод в C++] | ||
Строка 6: | Строка 8: | ||
=== endl сбрасывает буфер вывода после перевода строки === | === endl сбрасывает буфер вывода после перевода строки === | ||
* [http://codeforces.ru/contest/417/submission/6392130 #6392130] vs [http://codeforces.ru/contest/417/submission/10923857 #10923857] | * [http://codeforces.ru/contest/417/submission/6392130 #6392130] vs [http://codeforces.ru/contest/417/submission/10923857 #10923857] | ||
=== Различные компиляторы по-разному округляют вещественные числа с последним дробным разрядом 5 === | |||
* [http://www.exploringbinary.com/inconsistent-rounding-of-printed-floating-point-numbers/ exploringbinary.com — Inconsistent Rounding of Printed Floating-Point Numbers] | |||
== Вещественные числа == | |||
=== Вещественные числа нужно использовать с осторожностью; функции <math.h> работают с вещественными числами === | === Вещественные числа нужно использовать с осторожностью; функции <math.h> работают с вещественными числами === | ||
* [http://ideone.com/yBUC04 ideone.com/yBUC04] | |||
* [http://ideone.com/4wnPS0 ideone.com/4wnPS0] | |||
* [http://isocpp.org/wiki/faq/newbie#floating-point-arith isocpp.org — Why doesn’t my floating-point comparison work?] | * [http://isocpp.org/wiki/faq/newbie#floating-point-arith isocpp.org — Why doesn’t my floating-point comparison work?] | ||
* Макконнелл С. Совершенный код / С. Макконнелл. — М.: Русская редакция, 2010. — 896 с. — П. 12.3. «Числа с плавающей запятой», с. 286 | * Макконнелл С. Совершенный код / С. Макконнелл. — М.: Русская редакция, 2010. — 896 с. — П. 12.3. «Числа с плавающей запятой», с. 286 | ||
Строка 21: | Строка 30: | ||
* [http://codeforces.com/contest/600/submission/14750408 #14750408] vs [http://codeforces.com/contest/600/submission/14750411 #14750411] | * [http://codeforces.com/contest/600/submission/14750408 #14750408] vs [http://codeforces.com/contest/600/submission/14750411 #14750411] | ||
=== | == Особенности функций == | ||
=== Метод .size() у контейнеров STL возвращает беззнаковое число === | === Метод .size() у контейнеров STL возвращает беззнаковое число === | ||
Строка 30: | Строка 38: | ||
=== В <ctype.h> функции классификации символов (такие как isupper()) могут возвращать не только 0 и 1 === | === В <ctype.h> функции классификации символов (такие как isupper()) могут возвращать не только 0 и 1 === | ||
* [http://ideone.com/GUKcBa ideone.com/GUKcBa] | * [http://ideone.com/GUKcBa ideone.com/GUKcBa] | ||
== Разное == | |||
=== В <math.h> Visual C++ уже заняты глобальные имена j0, j1, jn, y0, y1, yn === | |||
* [http://acm.timus.ru/help.aspx?topic=cpp Timus — Как писать решения на C/C++] (Раздел «Особенности компилятора по сравнению с другими 32-битными компиляторами C/C++») |
Версия от 07:23, 17 июня 2017
Ввод и вывод
cin/cout работает медленнее scanf/printf
- Codeforces — Ввод/вывод в C++
- Codeforces — Снова про ввод/вывод в C++
- Habrahabr — Насколько медленны iostreams?
endl сбрасывает буфер вывода после перевода строки
Различные компиляторы по-разному округляют вещественные числа с последним дробным разрядом 5
Вещественные числа
Вещественные числа нужно использовать с осторожностью; функции <math.h> работают с вещественными числами
- ideone.com/yBUC04
- ideone.com/4wnPS0
- isocpp.org — Why doesn’t my floating-point comparison work?
- Макконнелл С. Совершенный код / С. Макконнелл. — М.: Русская редакция, 2010. — 896 с. — П. 12.3. «Числа с плавающей запятой», с. 286
- Codeforces — Weird bug with pow?
- Codeforces — Работа с вещественными числами
Если не хватает точности double
- Меняем все double на long double;
- Меняем все вызовы cstdio (scanf/printf) на вызовы iostream (cin/cout);
- Добавляем l ко всем функциям cmath (sqrt -> sqrtl, atan2 -> atan2l);
- Сдаём под g++.
Особенности функций
Метод .size() у контейнеров STL возвращает беззнаковое число
В <ctype.h> функции классификации символов (такие как isupper()) могут возвращать не только 0 и 1
Разное
В <math.h> Visual C++ уже заняты глобальные имена j0, j1, jn, y0, y1, yn
- Timus — Как писать решения на C/C++ (Раздел «Особенности компилятора по сравнению с другими 32-битными компиляторами C/C++»)