Как стать автором
Обновить
182
187
Тимур Гуев @tguev

Основатель BEEGEEK, автор курсов Поколение Python

Отправить сообщение

Нашел вот такое для C++

Philosophy rules summary:

P.1: Express ideas directly in code
P.2: Write in ISO Standard C++
P.3: Express intent
P.4: Ideally, a program should be statically type safe
P.5: Prefer compile-time checking to run-time checking
P.6: What cannot be checked at compile time should be checkable at run time
P.7: Catch run-time errors early
P.8: Don't leak any resources
P.9: Don't waste time or space
P.10: Prefer immutable data to mutable data
P.11: Encapsulate messy constructs, rather than spreading through the code
P.12: Use supporting tools as appropriate
P.13: Use support libraries as appropriate

Источник тут.

Написали, уже исправили)

Такой оптимизации нет.

Не должно сказаться, оператор ~ выполняется достаточно быстро.

Как только, так сразу.

Вы бы хотя бы условие задачи прочитали. Функция принимает целые числа в качестве аргументов, так что ваше решение в корне неверно.

Некоторые участники квеста пытались использовать эту схожесть))

Успешного прохождения ?

Квест будет длиться ровно 1 неделю. Будут математические задачи тоже.

Спасибо за ваш вклад в IT онлайн образование. Вы большие молодцы!

Да в финальной версии будет using static, сейчас просто using.
Попробую ответить на Ваши вопросы:

1) У Stopwatch есть статическое свойство IsHighResolution — которое как раз определяет используется ли HPET;
2) Вики говорит, что следующие операционные системы поддерживают и используют HPET:
Windows Vista, Windows 2008, Windows 7, Windows 8
Mac OS X (версия для x86)
Linux версий 2.6 (драйвер rtc-cmos вместо rtc)
FreeBSD;
3) Если он будет настроен некорректно, я думаю, что он просто не будет использоваться, функция QueryPerformanceFrequency вернет false, ни один метод класса Stopwatch не имеет блоков try/catch;
4) Сложный вопрос. В общем все методы класса очень просты, поэтому замеры должны быть весьма точные;
5) На многопроцессорных системах HPET есть у каждого процессора и как я понял они не синхронизированны… Проблемы возникали на первых многоядерных процессорах, но сейчас производители исправили их. Кстати у класса Stopwatch есть на этот случай проверка в методе Stop, я писал о ней.

Вот нашел документацию от Intel по HPET: www.intel.com/content/www/us/en/software-developers/software-developers-hpet-spec-1-0a.html?wapkw=hpet
Да это реальный статический метод для конкатенации 2, 3 и 4 строк. Его можно вызвать на прямую, просто код станет менее читабельным, нежели используя оператор + который в него и разворачивается.
Да литералы конкатенируются на этапе компиляции, а не литералы используют StringBuilder.append.
На самом деле если конкатенация происходит не в цикле, то даже при 7-10 строк можно использовать String.Concat.
Его реализация, так же как и для 3 строк подсчитывает суммарную длинну строки и единожды выделяет для нее память.
Тот же StringBuilder внутри себя содержит массив char[] (точнее он является связным списком), так что наклодные расходы по памяти будут и там, но код теряет читабельност при этом.

Упс… дважды отправил
На самом деле если конкатенация происходит не в цикле, то даже при 7-10 строк можно использовать String.Concat.
Его реализация, так же как и для 3 строк подсчитывает суммарную длинну строки и единожды выделяет для нее память.
Тот же StringBuilder внутри себя содержит массив char[] (точнее он является связным списком), так что наклодные расходы по памяти будут и там, но код теряет читабельност при этом.
У Сергея Теплякова есть хороший пост на эту тему habrahabr.ru/post/148905/.
long i = long.MaxValue;
long i1 = i + 1; // i1 = long.MinValue

В данном коде происходит переполнение типа long, а поскольку нет соответствующих проверок на переполнение (checked), то вместо выброса исключения произойдет приведение к типу long. В результате переполнения переменная i1 будет содержать значение long.MinValue.

В случае если value = long.MinValue, -value = long.MaxValue + 1 = long.MinValue.

Это так же можно связать с тем, что для long.MinValue = -263 = 100000...000 противоположное число будет совпадать с самим числом, поскольку дополнительные коды совпадают:
100000...000

011111...111 инвертирование
000000...001 +1
__________
100000...000 дополнительный код для 100000...000

Информация

В рейтинге
15-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность