Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
#1

В программе объявлена переменная float x=2 - C++

16.01.2013, 17:56. Просмотров 687. Ответов 12
Метки нет (Все метки)

Какое значение получит переменная х в результате вычисления х*=(--x+1)
подскажите как тут получают ответ... знаю что ++ прибавление а вот -- не совсем догоняю
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2013, 17:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В программе объявлена переменная float x=2 (C++):

В программе объявлена переменная: int n=10 - C++
В программе объявлена переменная: int n=10. Определить результаты вычислений следующих выражений: 1) sizeof(n); 2) sizeof(l.*n) Еще...

В программе объявлена переменная int x=1; определить значение выражения х>0 && x<1 ? 10/x : 10*x - C++
ответ уже известен, 10. Проблема в том что я не знаю каким образом он был получен.. а точнее какую функцию выполняет &quot;:&quot; здесь. просьба...

Переменная не объявлена - C++
В строке 26 выдает ошибку о том, что переменная i не объявлена. Подскажите, пожалуйста, как и где ее нужно объявить? //P6-14.CPP -...

Зачем преобразовывать itsVal в int, если эта переменная и так объявлена как тип int - C++
// Оператор преобразования #include &lt;iostream&gt; using namespace std; class Counter { public: Counter(): itsVal(0) {} ...

базовый и производный класс, в базовом объявлена переменная "protected", она недоступна по имени в производном классе! template <class T> воду мутит! - C++
Друзья! Вот код #include &lt;stdio.h&gt; template &lt;class T&gt; class otets { protected: int peremennaya; }; template &lt;class...

float переменная - C++
я инициализирую переменную float значением 0.15 а в действительности там 0.15000001. потом прибавляю 0.01 получаю 0.16000001 потом...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,026
16.01.2013, 18:18 #2
Ну если ++ инкремент (+1), то -- декремент (-1). Логично?
1
Дмитрий 93
74 / 59 / 5
Регистрация: 03.06.2011
Сообщений: 309
16.01.2013, 18:29 #3
хацкер, ответ 4
1
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
16.01.2013, 18:37  [ТС] #4
float x=2. Какое значение получит переменная х в результате вычисления х*=(x+++1)
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,026
16.01.2013, 18:38 #5
Дмитрий 93, а мб сначала проверить, а потом говорить?
1
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
16.01.2013, 18:47 #6
Вроде как поведение не определенно. Разные компиляторы могут выдать разный результат.
0
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
16.01.2013, 18:50  [ТС] #7
Цитата Сообщение от 0x10 Посмотреть сообщение
Дмитрий 93, а мб сначала проверить, а потом говорить?
я знаю что там ответ 2, только незнаю как он получен.. 1+1=2 потом х*2 получается 4
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,026
16.01.2013, 19:08 #8
Цитата Сообщение от hacker13a Посмотреть сообщение
я знаю что там ответ 2, только незнаю как он получен..
Всегда можно посмотреть ассемблер, благо пример небольшой:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
; 6    :     float x = 2;
 
movss   xmm0, DWORD PTR __real@40000000
movss   DWORD PTR _x$[ebp], xmm0
 
; 7    :     x *= (--x + 1);
 
movss   xmm0, DWORD PTR _x$[ebp]
subss   xmm0, DWORD PTR __real@3f800000
movss   DWORD PTR _x$[ebp], xmm0
movss   xmm0, DWORD PTR _x$[ebp]
addss   xmm0, DWORD PTR __real@3f800000
mulss   xmm0, DWORD PTR _x$[ebp]
movss   DWORD PTR _x$[ebp], xmm0
Добавлено через 3 минуты
Строка 8: поместили x на регистр xmm0.
Строка 9: выполнили декремент.
Строка 10: поместили x обратно в память.

Таким образом, выражение становится эквивалентно:
C++
1
2
3
float x = 2;
--x; // x == 1
x *= (x + 1); // 1 * 2 = 2
1
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
16.01.2013, 19:30  [ТС] #9
а если +++ то уже плюс две единицы?

Добавлено через 1 минуту
Цитата Сообщение от hacker13a Посмотреть сообщение
float x=2. Какое значение получит переменная х в результате вычисления х*=(x+++1)
просто в этом примере ответ 7...
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.01.2013, 19:36 #10
Цитата Сообщение от hacker13a Посмотреть сообщение
а если +++ то уже плюс две единицы?
вот так получится:
C++
1
x*=(x++ +1);
1
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
16.01.2013, 19:37 #11
hacker13a, еще раз повторюсь - поведение не определенно, так как переменная изменяется больше одного раза в пределах одной точки следования.
2
Дмитрий 93
74 / 59 / 5
Регистрация: 03.06.2011
Сообщений: 309
16.01.2013, 19:40 #12
это из области
C++
1
int i=5; cout<<++i + ++i;
0
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
16.01.2013, 19:43 #13
а все из-за неграмотных записей...
Пост инкремент ( ++ ) выполнится после сложения и будет выглядеть это примерно так: 2 *= (2+1)+1. Ответ 7.

инкремента ( +++ ) не бывает равно, как и такого же декремента
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2013, 19:43
Привет! Вот еще темы с ответами:

Переменная float со значением 1.#QNAN - C++
Здравствуйте! Помогите пожалуйста с такой проблемой. При считывании из файла в переменной типа float оказалось значение 1.#QNAN (показывает...

Переменная float - знаки после запятой - C++
Итак я задаю какую-либо переменную типа float. Потом, с помощью scanf кладу в эту переменную значение 3.2 (к примеру.) Затем, с помощью...

опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing - C++
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; float f1(float x)/*vira*enie 1*/ {return (x*cos(x))/(1+ pow(x,2));} ...

Переменная, отображающая количество объектов, функционирующих в программе - C++
Может быть кто знает, как это сделать... задача такая: нужно в классе создать аргумент, который бы отображал, кол-во объектов...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.01.2013, 19:43
Ответ Создать тему
Опции темы

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