Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
1

Сформулируйте, что такое разделитель операторов и где он ставится

05.07.2013, 08:59. Просмотров 1972. Ответов 44
Метки нет (Все метки)

Я интуитивно понимаю, в своих программах всегда ставлю, где надо, но словами написать не могу. А нужен полностью формализованный абзац, где и зачем ставится точка с запятой.
1
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2013, 08:59
Ответы с готовыми решениями:

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. ...

Что такое паттерны, где их применяют и где прочитать о них?
Насколько я понимаю, паттерны - это шаблон. Т.е. уже кем-то написанный код,...

Что такое компилятор, и где его взять?
Здравствуйте дорогие форумчане! Вот начал изучать по самоучителям С++ и...

Не секу что такое gsoap и где его искать на win7
Чур не ругаться за оффтоп, я впервые пользуюсь форумами! :) Итак, прилагаю...

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с...

44
OhMyGodSoLong
~ Эврика! ~
1247 / 996 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
05.07.2013, 10:00 2
Где: между (Паскаль) или в конце (Си) каждого утверждения.
Зачем: потому что синтаксис языка не позволяет парсеру разделить операторы самостоятельно без явной подсказки.
0
AntonChik
1086 / 584 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
05.07.2013, 10:41 3
OhMyGodSoLong, это не "полностью формализованный абзац")
например, почему здесь
C++
1
2
3
for(int i=0;i<1;i++)
{
}
непосредственно в конце утверждения i++ нет точки с запятой? понятно, потому что скобка... но про скобки вы ничего не сказали)
0
svk2140
88 / 0 / 3
Регистрация: 04.07.2013
Сообщений: 282
05.07.2013, 11:07 4
слушайте ну вы чё совсем уже! почему вы всегда всё так сложно делаете! неужели нельзя объяснить для начинающего. точка с запятой показывает что эта строчка не распространяется на остальные. в твоём коде функция для пересчета (for) распространяется на блок, и поэтому там нельзя ставить точку с запятой, потому что тогда блок останется без функции для пересчета
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
05.07.2013, 11:16  [ТС] 5
А что такое утверждение?
0
AntonChik
1086 / 584 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
05.07.2013, 11:17 6
svk2140, да что вы говорите?) я ж специально написал "непосредственно в конце утверждения i++"
C++
1
for(int i=0;i<1;i++;)
т.е. после утверждений i=0 и i<1 ставят точку с зпт, а после i++ нет.


Цитата Сообщение от svk2140 Посмотреть сообщение
точка с запятой показывает что эта строчка не распространяется на остальные
да что вы говорите?)
C++
1
2
int a
=123; // т.е. эта строчка не распространяется на предыдущую,да?)
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
05.07.2013, 11:18  [ТС] 7
Цитата Сообщение от svk2140 Посмотреть сообщение
в твоём коде функция для пересчета (for)
Там нет ни каких функция пересчёта.
0
AntonChik
1086 / 584 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
05.07.2013, 11:19 8
в общем надо искать какой-то официальный источник...
0
svk2140
88 / 0 / 3
Регистрация: 04.07.2013
Сообщений: 282
05.07.2013, 11:24 9
не ну слушай я говорил про for(int i=0;i<1;i++) это если ты ещё не понял функция для пересчёта.
потом я говорил что если поставить точку с зяпятой. я имел ввиду
C++
1
2
3
for(int i=0;i<1;i++);
{
}
в конце (в скобках) не ставиться точка с запятой потому что.... тогда бы постоянно выполнялось int i = 0 и она (переменная) ровнялась бы всегда 0

ну теперь та хоть понял?
0
AntonChik
05.07.2013, 11:26
  #10

Не по теме:

я извиняюсь за сравнение, но похоже на то как цыпленок учит курицу :D
я даже сохраню себе эту страничку)

3
svk2140
88 / 0 / 3
Регистрация: 04.07.2013
Сообщений: 282
05.07.2013, 11:30 11
+ пример какой то... к примеру такой
C++
1
2
if(a == 1);
cout << "a = 1" << endl;
не будет компилироваться потому что ifif(a == 1) распространяетсятолько на самого себя
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
05.07.2013, 11:31  [ТС] 12
Цитата Сообщение от svk2140 Посмотреть сообщение
лушай я говорил про for(int i=0;i<1;i++) это если ты ещё не понял функция для пересчёта.
Всякая функция имеет тип и список параметров, а на c++ не может находиться внутри другой функции, или перегруженного оператора, а её имя не может быть зарезервировано.
C++
1
for(int i=0;i<1;i++)
может быть только внутри функции, или перегруженного оператора и не имеет ни типа, ни списка параметров, а слово for зарезервировано.

Добавлено через 40 секунд
Цитата Сообщение от svk2140 Посмотреть сообщение
в конце (в скобках) не ставиться точка с запятой потому что.... тогда бы постоянно выполнялось int i = 0 и она (переменная) ровнялась бы всегда 0
Бредятина.
0
nexen
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
05.07.2013, 11:32 13
svk2140, оно скомпилируется и отработает нормально
Цитата Сообщение от svk2140 Посмотреть сообщение
+ пример какой то... к примеру такой
C++
1
2
if(a == 1);
cout << "a = 1" << endl;
не будет компилироваться потому что ifif(a == 1) распространяетсятолько на самого себя
0
AntonChik
1086 / 584 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
05.07.2013, 11:33 14
Цитата Сообщение от svk2140 Посмотреть сообщение
в конце (в скобках) не ставиться точка с запятой потому что.... тогда бы постоянно выполнялось int i = 0 и она (переменная) ровнялась бы всегда 0
не хочу вас огорчать, но во-первых, тут хоть ставь, хоть не ставь эту точку с зпт, она(переменная) все равно всегда будет равна нулю...
а во-вторых, эта точка с запятой в данном месте может ставиться очень даже целенаправленно, например:
C++
1
for(int i=0;i<1;a[i]=i++);
1
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
05.07.2013, 11:34  [ТС] 15
Цитата Сообщение от svk2140 Посмотреть сообщение
не будет
будет. Если a = 1, то выполнить пустой оператор и в любом случае вывести в count "a=1" и перевести строку манипулятором endl. Что здесь не компильрабельного?
0
AntonChik
1086 / 584 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
05.07.2013, 11:34 16
Цитата Сообщение от svk2140 Посмотреть сообщение
не будет компилироваться
будет еще как)
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
05.07.2013, 11:35  [ТС] 17
Цитата Сообщение от AntonChik Посмотреть сообщение
не хочу вас огорчать, но во-первых, тут хоть ставь, хоть не ставь эту точку с зпт, она(переменная) все равно всегда будет равна нулю...
Не смотря на инкремент?
0
svk2140
88 / 0 / 3
Регистрация: 04.07.2013
Сообщений: 282
05.07.2013, 11:38 18
ну блин такого шквала я не ожидал) я имел ввиду - что не будет условие выполнятся. думаю вы слишком прямо восприняли. да и насчёт функции для пересчёта - вы видимо так и не поняли что именно так чайнику будет легче +
for(int i = 0;i < 2;i++; ) в конце будет i = 0 а здесь for(int i = 0;i < 2;i++) оно будет 2
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
05.07.2013, 11:41  [ТС] 19
И оставьте вы в покое циклы с альтернативами.
C++
1
a=2; b=c=d=e; f=c+44*355-e; z=(ds+dsfdsfa-er4*fdsa)*fgds+25/dfsa; v=4;
Расскажите, почему точка с запятой стоит именно на этих местах, а не на других и именно в таком количестве. Но при этом не используя это строчку ни целиком, ни по частям.

Добавлено через 2 минуты
Цитата Сообщение от svk2140 Посмотреть сообщение
да и насчёт функции для пересчёта вы видимо так и не поняли что именно так чайнику будет легче +
Легче чайнику - не значит правильно, простая для понимания, но кривая фраза в учебнике, или из уст лектора пудрит мозги, а в дальнейшем мешает.
0
AntonChik
1086 / 584 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
05.07.2013, 11:43 20
Цитата Сообщение от taras atavin Посмотреть сообщение
Не смотря на инкремент?
в рамках оператора да, а что будет потом это уже другая история.
т.е. эту остаточную единичку в теле цикла мы все равно не сможем использовать
0
05.07.2013, 11:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2013, 11:43

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

Что такое хэндлер файла? Что такое файловый указатель?
Что такое хэндлер файла? Что такое файловый указатель?

Культура оформления кода: что такое enum? Где, когда и для чего уместно применять этот тип?
не понял за что отвечают эти две строчки: enum ChosenOperation { ADD = 1,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru