Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не понимаю почему так? Продолжаю задавать глупые вопросы. 
:(
    Опции темы
Luka
Дата 20.9.2004, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.9.2004

Репутация: нет
Всего: нет



Вот три программки:

1
Код
#include <iostream.h>
using namespace std;
int main()
{
int first=10;
cout << first << endl;
first+=10;
cout << first << endl;
--first;
cout << first << endl;
return 0;
}


2
Код
#include <iostream.h>
using namespace std;
int main()
{
int count=10;
cout <<"count="<<count<<endl;
cout <<"count="<<++count<<endl;
cout <<"count="<<count<<endl;
cout <<"count="<<count++<<endl;
cout <<"count="<<count<<endl;
return 0;
}


3
Код
#include <iostream.h>
using namespace std;
int main()
{
int first=10;
cout << first << endl << first+=10 << endl << --first << endl;
return 0;
}


1 и 2 работают, а 3 нет.

Почему, так? qstn.gif
PM MAIL   Вверх
cardinal
Дата 20.9.2004, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Потому что не хватает скобок. Компилятору не нравится выражение first+=10, а лучше сказать он не знает что с ним делать smile.gif. Напиши так:
Код
#include <iostream.h>
using namespace std;
int main()
{
int first=10;
cout << first << endl << (first+=10) << endl << --first << endl;
return 0;
}

Я думаю результат тебя удивит. smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
lynx_916
Дата 20.9.2004, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 13.6.2004
Где: Молдова

Репутация: нет
Всего: 1



да, у меня такой же рецепт, но тока вот зачем первые 2 примера? qstn.gif


--------------------
Who dares, wins. (с) Solid Snake
PM MAIL ICQ YIM MSN   Вверх
cardinal
Дата 20.9.2004, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Для того, чтобы написать, что первые два работают и спросить почему не работает третий. smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Luka
Дата 20.9.2004, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.9.2004

Репутация: нет
Всего: нет



cardinal
Цитата
Я думаю результат тебя удивит.  smile.gif

19
19
9

wow.gif
А что, так и должно быть?

lynx_916
Цитата
но тока вот зачем первые 2 примера?

ну с начала я написал 3 , не заработала, затем решил разделить действия построчно, получилась 1 программа - заработала. Стал разбираться почему не работает 3. Подумал было, что нельзя производить действия такого типа в cout (т.е.: cout << a++). Нашел пример 2 программы, версия отпала. smile.gif
А вообще, мне казалось 3=1
PM MAIL   Вверх
Nastya
Дата 20.9.2004, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 5
Всего: 44



1. x+=10 - в отличае x++ - значения не возращает, void, он. Тольком объеснить не могу smile.gif Но в выражениях его лучше не использовать
2. В третьем примере довольно часто встречается глюк дебаговой версии откомпилируй в релизе результат может быть другим



--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
cardinal
Дата 20.9.2004, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(Luka @ 20.9.2004, 17:47)
А что, так и должно быть?

Значения высчитываются справо налево, а потом выводятся слево направо. smile.gif
Цитата(Nastya @ 20.9.2004, 19:09)
1. x+=10 - в отличае x++ - значения не возращает, void, он.

На самом деле все произошло немного подругому. Я думаю это может еще и от компилятора зависить.
Вобщем вывод тут один: писать так не нужно!
Luka, лучши пиши как в первом варианте.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0769 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.