Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
1

Выражение в скобках и без скобок. Какая разница? В цикле фор

04.08.2015, 14:03. Просмотров 914. Ответов 3
Метки нет (Все метки)

Почему (c=getchar()) в скобках работает корректно, а без них нет. Вот вариант без скобок for(nl;c=getchar()!=eof
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma hdstop                                                                        
#include <stdio.h>
#include <conio.h>
#define eof 26
int main()
{
 int c,nl;
 nl=1;
 for(nl;(c=getchar())!=eof;)
  if(c=='\n')
  nl++;
 printf("%d\n",nl);
 getch();   
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2015, 14:03
Ответы с готовыми решениями:

Нюансы синтаксиса: какая разница между названием заголовочного файла в угловых скобках и в кавычках?
Какая разница между: #include &lt;windows.h&gt; и #include &quot;windows.h&quot;

Разница инициализаций с помощью круглых и фигурных скобок
В чем разница между () и {} при инициализации указателя ? SharedPointer():...

Какая разница?
Я уже довольно долго изучаю С++ и столкнулся с проблемой: чем отличается cout...

Какая разница?!
Вот две сортировки массивов, если не трудно обьясните пожалуйста разницу и есть...

Какая разница в инициализации?
Есть класс: class CSomeClass { CSomeClass(); private: bool...

3
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
04.08.2015, 14:08 2
без скобок это аналогично c=(getchar()!=eof)
1
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
04.08.2015, 14:11 3
Лучший ответ Сообщение было отмечено Aqua77 как решение

Решение

Aqua77, потому что приоритет операторов разный. У оператора "!=" он выше, чем у оператора "=", поэтому во втором случае сначала выполняется проверка на неравенство, а затем ее результат (true или false) присваивается переменной. В первом же случае у скобок наивысший приоритет, поэтому сначала выполняется то, что в скобках, т.е присвоение считанного символа переменной, а затем сравнение его с eof.
2
Mr.X
Эксперт С++
3182 / 1709 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
04.08.2015, 14:17 4
Лучший ответ Сообщение было отмечено Aqua77 как решение

Решение

Цитата Сообщение от Aqua77 Посмотреть сообщение
Почему (c=getchar()) в скобках работает корректно, а без них нет.
Ну, в С++ столько знаков операций, что, не выучив их приоритет, вы ни черта не поймете. Оператор присваивания имеет самый низкий приоритет, ниже него только запятая. Поэтому, чтобы он выполнился раньше - нужны скобки.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2015, 14:17

Регулярное выражение для подсчета числа скобок
Допустим, есть регекс вида const std::regex reg(R&quot;(\(.+.*?\).+)&quot;); Можно...

Какая Разница между сортировками?
Какая разница между сортировками, если в итоге все виды сортируют одинаково. Т...

Можно ли получить из последовательности скобок корректное арифметическое выражение
Given a sequence of N round, square and curly brackets. Find out whether you...


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

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

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