9 интересных трюков на Си, с которыми вы раньше не сталкивались

В этой статье мы рассмотрим несколько редких приёмов языка Си. О некоторых из них я раньше не слышал, и вы, скорее всего, тоже. Если ваш преподаватель или коллега хвастаются знанием Си, просто задайте им пару вопросов об этих трюках, и если они справятся, то они действительно шарят 🙂 

Используем возвращаемое значение scanf() для проверки конца файла

Очень полезно в системах с автоматической проверкой, где подача входных данных заканчвается EOF.

"%m" как аргумент printf() выводит «Success»

"%m" выводит «Success» только в том случае, когда errno == 0. Это сокращение для строкового представления последнего наблюдаемого состояния ошибок. Например, если функция выдаст ошибку до printf, вывод будет другим.

Неявная инициализация целых нулём и единицей

Вывод чисел от 1 до 200 без использования циклов, переходов и рекурсии

C++ Sucks?

Вы будете удивлены, но этот код выведет надпись «C++Sucks», и вот тому объяснение.

А вы сталивались с оператором «спуска» -->?

На самом деле --> — это никакой не оператор, а комбинация двух операторов: -- и >. Разберёмся на примере:  в условии цикла переменная x уменьшается, но возвращается старое значение x, которое сравнивается с 0 оператором >.

Вывод:

Магия scanf

Сложение чисел без использования оператора +

Кстати, с другими примерами использования битовых операций можно ознакомиться в наших статьях.

Перевод статьи «Interesting C Programming Tricks You didn’t know before»