Comments 15
a == 5 и a > 5 и есть осложняющая часть в if и while соответственно
Не будет ли проще и понятнее назвать это "условием"?
Для использования символа '!' как отрицание следует использовать '`'
а как использовать тильду как тильду? (~ -- это побитовое отрицание)
И это на 15 байт меньше чем оригинал!
А как это отразилось на скорости компиляции и скомпилированного? Никак? Или какие-нибудь отличия могут быть? Даёшь тест!
Вообще странный подход. Если вы пишите программу, которая генерирует код, то почему бы не ввести специальную команду "@" - которая означает "интерпретатор брейнфака". Вот вы и ужали всю программу до 1 символа!
Это забавный эксперимент, однако думаю, что лучше смотреть на размеры бинарника, а не исходного кода
Взяв первый попавшийся, неиспользуемый символ в Си - тильда (~)
Как это неиспользуемый, это же оператор побитового отрицания
Идея с microC крутая: макросы, тильды и всё это минималистичное безумие - прям мозговыносяще, но работает. Особенно понравилось, как типы через количество бит реализованы - странно, но логично.
Формат записи, конечно, не для слабонервных, но 145 байт - это уже серьёзно. По сути, это просто препроцессор для сжатия исходников, и это работает.
Вспомним, что сколько в С выделяется байт под каждый тип в памяти:
А ниже в таблице, почему-то, указаны биты.
int
32 (ну не всегда, но примем все-таки за 32)
char тоже не всегда 8 бит и short тоже не всегда 16 бит.
Говоря о размерах компилятора (и вообще любой программы), обычно имеют в виду размер скомпилированного бинарника. Потому что исходный код можно как раздуть комментариями, так и сжать до единственного символа, как справедливо заметил другой комментатор, и на свойствах компилятора это никак не отразится.
Уменьшил синтаксис Си ради 15 байт