Главная > Уроки > Что такое комментарии и зачем они нужны?

Записывайся на этот курс на Stepike!

Что такое комментарии и зачем они нужны?

Пожалуйста, приостановите работу AdBlock на этом сайте.

Возможно вы заметили, что в листингах из примеров встречается не только код программ, но и мои пояснения написанные после "//". Это комментарии. Они предназначены для того, чтобы пояснять какую-нибудь сложную и непонятную часть вашей программы. Кроме того, иногда их используют, чтобы на врямя отключить какую-то часть кода. Это возможно потому, что всё что записано в комментарии компилятор игнорирует. Если быть точнее то к тому времени, как компилятор начнёт обрабатывать код программы все комментарии будут уже удалены. Поэтому туда можно писать всё что угодно.

Пример использования комментариев в программе

Рис.1. Пример использования комментария в программе. (Язык Fortran)

В языке Си есть два вида комментариев. Первый вид тот, который я использую в коде. Такой комментарий называет однострочным. Он действует с того момента как появился и до конца текущей строки. Есть ещё и многострочный комментарий. Начало такого комментария обозначается последовательностью "/*", а конец -- "*/". Всё, что будет записано между этими двумя последовательностями символов не будет восприниматься компилятором. Обычно многострочные комментарии используют для описания больших кусков кода, очень сложных для понимания функций, для указания авторства, для исключения большого куска кода из программы и т.д.

Вы спросите а зачем нужно отключать куски кода программы? Иногда это нужно для того, чтобы найти ошибку в программе или проверить как работают отдельные её части. Если просто удалить код, то потом его придётся писать заново, а так, закомментировал на время, а потом обратно раскомментировал, когда потребовалось. Когда вы начнёте писать более менее большие программы, тогда вы воочию убедитесь в пользе.

Комментарии пишутся программистами для других программистов, которые в будущем будут читать/изменять этот код. Но даже если вы пишите код сугубо в личных целях, то не рекомендую вам брезговать оставлять комментарии. По прошествию нескольких месяцев бывает очень трудно вспомнить, что же ты тут такое делал и почему именно так делал, а не иначе.

Комментарии в коде могут быть как очень смешными:

Листинг 9.

// Магия. Не трогать.

//Этот код отстой, и мы оба это знаем. 
//Так что двигайся дальше, а идиотом ты назовешь меня потом.

// Дорогой я_из_будущего! Пожалуйста, прости меня за этот код.

// Если я еще раз увижу такое, мне придется начать носить на работу оружие.

/* Если это условие когда-нибудь выполнится, пожалуйста, 
 сообщите мне по тел. ххх-ххх-ххх за вознаграждение. */

// пьян, исправить позже

// Когда я начинал это писать, только Бог и я понимали, что я делаю
// Сейчас остался только Бог

Так и не очень:

Листинг 10.

//Пожалуйста, работай

// Я не несу ответственности за этот код.
// Они меня заставили написать его против моей воли.

/*
Если вы читаете эти строки, значит вам поручили мой предыдущий проект.
Я очень, очень сочувствую вам. Удачи.
*/

Расскажи друзьям!
Или поддержи проект.

Практика

  1. Откройте программу "Hello, World". Попробуйте закомментировать строчку printf("Hello, World!\n"); Как вы думаете, как изменится работа программы? Проверьте свое предположение, скомпилировав и запустив эту программу.
  2. Закомментируйте в следующей программе некоторые строки так, чтобы на экране появился следующий текст:
  3. Wake up, Neo...

    The Matrix has you...

    Follow the white rabbit...

    Программа для изменения

    #include <stdio.h>
    int main (void){
      while (1 > 0) {
        printf("Wake up, Neo...\n\n");
      }
      
      if (0 > 1){	
        printf("The Matrix has you...\n\n");
      }
    
      printf("Follow the white rabbit...\n");  
      return 0;
    }

    Не бойтесь новый непонятных команд! С ними мы ещё разберёмся. =) Программистам часто приходится работать с кодом, в котором они не всё до конца понимают.

  4. Удалите из следующей программы комментарии, которые комментируют код а не поясняют его, и запустите полученную программу.
  5. Программа

    #include <stdio.h>
    #include <locale.h> //библиотека с локализацией, чтобы были доступны русские буквы
    int main(void) {
      setlocale(LC_ALL, ""); //подключаем локализацию
    //  char str1[]= "Поздравляю! Вы справились с задачей!";
    //  for (int i=0; i<37; i++)
    //	printf("%c",str1[i]);
      
      printf("\n");
      return 0;
    }

Дополнительные материалы

Оставить комментарий

Чтобы код красиво отображался на странице заключайте его в теги [code] здесь писать код [/code]

Комментарии

Лёха
Можно, конечно, шутить по поводу комментариев, но всё же за многие годы выработаны определенные рекомендации по их написанию. Например, имхо, очень ёмко они описаны на сайте learncpp.com:

* At the library, program, or function level, use comments to describe WHAT.

* Inside the library, program, or function, use comments to describe HOW.

* At the statement level, use comments to describe WHY.

https://www.learncpp.com/cpp-tutorial/comments/
В моём вольном переводе это будет выглядеть так:
* На уровне библиотек, программ и функциий описывайте ЧТО (они делают)
* Внутри библиотек, программ и функций описывайте КАК (они это делают)
* На уровне команд, пользуйтесь комментариями чтобы описать ПОЧЕМУ (они это делают)
KaDeaT
Отличная ссылка. Спасибо за содержательный комментарий.)
pavel
https://ideone.com попробуй этот компилятор использовать, у меня все норм!
Игорь
Спасибо за интересный урок и ссылки.
KaDeaT
Пожалуйста! Приходите снова.
Art
Я только начал Си изучать и до этого урока все получалось, а тут не получилось, не могу понять почему ошибки выдает.
И с первым заданием не все гладко:Надпись в консоли только эта выскакивает Wake up, Neo...
и она же идет вниз, вниз,вниз, другие не появляются((
Может кто подскажет как решить эту задачку)
Art
Компилятором пользуюсь Code::Blocks 16.01!
Lola_lala
Исправьте в 4 предложении "врямя"
MichaelWer
Имей мертвецы возможность прочесть хвалебные надписи на своих надгробиях, они бы умерли вторично - от стыда.


--------
<a href=https://avenue17.ru/pro>оборудование для розлива воды в бутыли</a> | https://avenue17.ru/
emanuqq
http://mewkid.net/who-is-redistina/ - Cialis <a href="http://mewkid.net/who-is-redistina/">Cialis</a> kyj.jzyo.youngcoder.ru.aui.mi http://mewkid.net/who-is-redistina/
ilazuzeyegeq
http://mewkid.net/who-is-redistina/ - Cialis <a href="http://mewkid.net/who-is-redistina/">Cialis Generic</a> dxk.azuh.youngcoder.ru.xhv.px http://mewkid.net/who-is-redistina/
KivycumpBymnKip
cbd oil online https://cbdoilww.com/ - cbd cream buy cbd cbd drops
ocjaqihgisu
http://mewkid.net/who-is-redistina/ - Cialis <a href="http://mewkid.net/who-is-redistina/">Cialis Generic</a> mxs.vinb.youngcoder.ru.way.vh http://mewkid.net/who-is-redistina/
osaraco
http://mewkid.net/who-is-redistina/ - Cialis Generic <a href="http://mewkid.net/who-is-redistina/">Cialis 20 Mg</a> brf.ajry.youngcoder.ru.azw.ar http://mewkid.net/who-is-redistina/
BillySwing
То что сможет казаться выше посмотреть фильм на произвольное день в одиночстве или из розными? Только лишь посмотреть сериал в свободном доступе плюс в хорошем HD расширении! Веб-площадка очень распространенных кинофильмов плюс вышедших премьер приветствует посетителей на источнику качественного просмотра фильмов <a href=https://lordfilmstv.online/127-sverhestestvennoe-vse-serii-smotret-besplatno.html>сверхъестественное сериал смотреть онлайн</a> . На сайте клиент имеет возможность обозначить подходящий кино в онлайн-записи, также быть убежденным у особенности также безупречной звучании ото известных дубляж фильм.
Источник интернет-фильмов включает обширную фильмохранилище фильмов разных стиля: комедии, драмы, приключения, военные, lordfilmstv.online пинкерторны, остросюжетные, ужастики плюс другое, еще тому конечно здесь есть, много чего посмотреть ценителям сериалити и ток-шоу. Личное заинтересованность - для деток область, где каждый мальчик просмотрят любимые мультфильмы также обновленные сериалити, также анимационное шоу. Ежедневно неделю https://lordfilmstv.online/ администраторы прибавляем свежее картины, дополняем ассортимент кино, сериалов и программ, улучшаем интерфейс плюс сервис, чтобы наши гости смотрели кино из восторгом.
ubozolqeqfu
http://mewkid.net/who-is-redistina/ - Cialis 20mg <a href="http://mewkid.net/who-is-redistina/">Generic Cialis</a> vei.jgwe.youngcoder.ru.fhq.im http://mewkid.net/who-is-redistina/
uwuqasi
http://mewkid.net/who-is-redistina/ - Cialis 20mg <a href="http://mewkid.net/who-is-redistina/">Generic Cialis</a> pxf.dbkh.youngcoder.ru.izb.cj http://mewkid.net/who-is-redistina/
urepefisugac
http://mewkid.net/who-is-redistina/ - Cialis Online <a href="http://mewkid.net/who-is-redistina/">Generic Cialis</a> wfg.owmk.youngcoder.ru.eck.qi http://mewkid.net/who-is-redistina/
oqapeosuta
http://mewkid.net/who-is-redistina/ - Cialis <a href="http://mewkid.net/who-is-redistina/">Cialis Generic</a> sxs.aiun.youngcoder.ru.ikk.jg http://mewkid.net/who-is-redistina/
amipuxay
http://mewkid.net/who-is-redistina/ - Tadalafil 20 Mg <a href="http://mewkid.net/who-is-redistina/">Cialis 20mg</a> ovk.bbhw.youngcoder.ru.pad.re http://mewkid.net/who-is-redistina/
apaxoibo
http://mewkid.net/when-is-regylia/ - Generic Cialis <a href="http://mewkid.net/when-is-regylia/">Cialis 20 Mg Lowest Price</a> rhf.qgoh.youngcoder.ru.pfn.cy http://mewkid.net/when-is-regylia/
hokiohuaea
http://mewkid.net/when-is-regylia/ - Cialis Generic <a href="http://mewkid.net/when-is-regylia/">Cialis 20 Mg Lowest Price</a> fyp.enfa.youngcoder.ru.tgn.us http://mewkid.net/when-is-regylia/
asuhizug
http://mewkid.net/when-is-regylia/ - Tadalafil 20 Mg <a href="http://mewkid.net/when-is-regylia/">Generic Cialis</a> kjs.ychm.youngcoder.ru.gmm.gp http://mewkid.net/when-is-regylia/
ijogoci
http://mewkid.net/when-is-regylia/ - Cialis 20 Mg <a href="http://mewkid.net/when-is-regylia/">Cialis</a> vmd.kwtv.youngcoder.ru.hez.rv http://mewkid.net/when-is-regylia/
ooquxecupuq
http://mewkid.net/when-is-regylia/ - Cialis <a href="http://mewkid.net/when-is-regylia/">Cialis</a> bdc.ecaj.youngcoder.ru.gnz.iu http://mewkid.net/when-is-regylia/
ivugigaxus
http://mewkid.net/when-is-regylia/ - Cialis 20mg <a href="http://mewkid.net/when-is-regylia/">Cialis</a> nwm.prlj.youngcoder.ru.erp.xx http://mewkid.net/when-is-regylia/
eevexayamixip
http://mewkid.net/when-is-regylia/ - Cialis 20 Mg Lowest Price <a href="http://mewkid.net/when-is-regylia/">Cialis 20mg</a> ooh.ztdm.youngcoder.ru.zvz.op http://mewkid.net/when-is-regylia/
afegoqaesuwi
http://mewkid.net/when-is-regylia/ - Generic Cialis <a href="http://mewkid.net/when-is-regylia/">Tadalafil 20 Mg</a> adq.wkwg.youngcoder.ru.jze.vc http://mewkid.net/when-is-regylia/