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

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

Войти
Регистрация
Восстановить пароль
 
 
nadoelo_1986
1 / 1 / 0
Регистрация: 04.09.2011
Сообщений: 55
#1

Вычисление выражения - C++

12.01.2015, 19:43. Просмотров 723. Ответов 18
Метки нет (Все метки)

Доброго времени суток.Заранее спасибо. Есть тест :
314. Чему равен результат b=--k + --k если k = 10 в языке С?
A) b=16 , k=8
B)b=10 , k=10
C)b=18 , k=10
D)b=18 , k=8
E)b=20 , k=10

Как решить её?

Вот берём первый --k. k = k-1 то есть 10-1 = 9
Второй --k, тоже равен 9 , тогда 9+9 =18 и k = 9. Но ответа такого нет. Так как правильно?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2015, 19:43
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вычисление выражения (C++):

Вычисление выражения - C++
Помогите плс, решить... очень нужно... плс Составьте программу вычисления выражения T=max(a)+max(b)-max(c), где A, B, C, используя...

Вычисление выражения в C++ - C++
Дано натуральное число n. Посчитать (1+1/(1^2))*(1+1/(2^2))*(1+1/(2^2))*...*(1+1/(n^2)) использовать FOR помогите. Подкинте идеи ...

Вычисление выражения - C++
Пожалуйста, помогите с задачей Составить программу для вычисления: S=\begin{cases} & \text{ \prod_{i=2(2)}^{8}{i}^{2}-a, } a\geq 0 \\ ...

Вычисление выражения: x=(y-z+u)/v+w - C++
Составить программу для вычисления выражения: x=(y-z+u)/v+w. Протестировать программу при следующих значениях исходных данных: а) y=1;...

Вычисление значения выражения - C++
Помогите пожалуйста. Нарисуйте форму и напишите программный код решения следующей задачи: Ввод исходных данных и вывод результата...

Вычисление значения выражения - C++
вычислить y y=\sum_{p=1}^{m} \frac{1}{sin({e}^{p}-1)}

18
-=ЮрА=-
Заблокирован
Автор FAQ
12.01.2015, 20:06 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
http://codepad.org/Jqa8eE5q
b = 16, k = 8
Сначала последовательно сработают декременты, потом произойдёт подстановка значения k : получится 8 + 8
1
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 10
Завершенные тесты: 1
12.01.2015, 21:13 #3
Результат может различаться в зависимости от компилятора и его параметров оптимизации.
В современном стандарте языка C++ существует понятие "точки следования", которое говорит о том, что в данном случае порядок вычисления выражения не определён.
Установленный у меня MinGW, версии 4.9.2, при компиляции выдаёт предупреждение "warning: operation on 'k' may be undefined [-Wsequence-point]"
0
-=ЮрА=-
12.01.2015, 21:46
  #4

Не по теме:

castaway,

Цитата Сообщение от nadoelo_1986 Посмотреть сообщение
в языке С?

0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 10
Завершенные тесты: 1
12.01.2015, 22:00 #5
-=ЮрА=-, и в языке C тоже.
Программа:
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main()
{
    int k = 10;
    int b = --k + --k;
    printf( "%d, %d\n", b, k );
    return 0;
}
Сборка:
Bash
1
gcc main.c -o main.exe -std=c99 -pedantic -Wall -Wextra
Вывод компилятора:
Bash
1
2
3
4
main.c: In function 'main':
main.c:6:16: warning: operation on 'k' may be undefined [-Wsequence-point]
  int b = --k + --k;
                ^
0
-=ЮрА=-
12.01.2015, 22:15
  #6

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
-std=c99 -pedantic -Wall -Wextra
- и что?Вопрос как оно должно быть на самом деле, ксати по твоим настройкам ты по-моему -cplusplus не сделал и в результате линкуешь как С++ код
http://codepad.org/lib6mtO3
cc1plus: warnings being treated as errors
In function 'int main()':
Line 5: warning: operation on 'k' may be undefined

0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 10
Завершенные тесты: 1
12.01.2015, 22:34 #7
-=ЮрА=-, что "и что?"? Я явно указал стандарт (-std=c99), я использовал gcc заместо g++, я использовал расширение файла .c - это всё явно говорит о том, что код воспринимался компилятором как язык Си. В чём проблема?

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ты по-моему -cplusplus не сделал
Не сделал. Нет такого флага в GCC.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
и в результате линкуешь как С++ код
Не "опускайся" в чужих глазах, процесс линковки к языку никак не относится.
0
-=ЮрА=-
Заблокирован
Автор FAQ
12.01.2015, 22:40 #8
Цитата Сообщение от castaway Посмотреть сообщение
Не "опускайся" в чужих глазах, процесс линковки к языку никак не относится.
- компилятор это всего лишь интерпритатор выскокоуровневого кода в низкоуровневый + проверка ошибок, если ты линкуешь в дерьме (я с ним не линкую), то это дерьмо и будет неверно интерприторовать,
{DELETED}
 Комментарий модератора 
П. 5.2. Правил!
0
castaway
12.01.2015, 23:13
  #9

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
если ты линкуешь в дерьме
Это "дерьмо" явно делали люди не глупее тебя..

0
nadoelo_1986
1 / 1 / 0
Регистрация: 04.09.2011
Сообщений: 55
12.01.2015, 23:36  [ТС] #10
А как быть с этим тестом
312. Чему равен результат b= --k + k-- если k=10 в языке С?
A) b=20,k = 8
B) b=18,k = 10
C) b=18,k = 8
D) b=18,k = 9
E) b=20,k = 10

Решаю: --k -> 10-1 = 9 , k-- 9-1 = 8 , 8+8 =16 - не получается опять
0
-=ЮрА=-
Заблокирован
Автор FAQ
12.01.2015, 23:44 #11

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Это "дерьмо" явно делали люди не глупее тебя..
- т.е для тебя лишь один эталон, фишный (== дерьмовый, абсолютно всё фришное имеет баги и написано через зад, абсолютно). И вот по этому дерьму ты ориентируешся, хорошо я тебя услышал. Кстати для потомков будь добр какой же ответ у выражения, раз уж я такой глупый парень, то правильный ответ...[вписать]



Добавлено через 4 минуты
Цитата Сообщение от nadoelo_1986 Посмотреть сообщение
А как быть с этим тестом
312. Чему равен результат b= --k + k-- если k=10 в языке С?
A) b=20,k = 8
B) b=18,k = 10
C) b=18,k = 8
D) b=18,k = 9
E) b=20,k = 10
Решаю: --k -> 10-1 = 9 , k-- 9-1 = 8 , 8+8 =16 - не получается опять
Цитата Сообщение от nadoelo_1986 Посмотреть сообщение
А как быть с этим тестом
312. Чему равен результат b= --k + k-- если k=10 в языке С?
A) b=20,k = 8
B) b=18,k = 10
C) b=18,k = 8
D) b=18,k = 9
E) b=20,k = 10
Решаю: --k -> 10-1 = 9 , k-- 9-1 = 8 , 8+8 =16 - не получается опять
второй оператор == 10 (там где постфикс) первый оператор 8 там где префикс(т.к два декремента) ответ 18 8
0
классный парень
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 3
13.01.2015, 00:37 #12
nadoelo_1986, оба теста не имеют правильного решения. порядок вычисления операндов не определен.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
фишный (== дерьмовый, абсолютно всё фришное имеет баги и написано через зад, абсолютно)
как и платное, например, винда. что ты хотел этим сказать?

Добавлено через 20 минут
получается, что если всё фришное дерьмо (твои слова) + известно, что среди платного ПО тоже есть некачественное + ты пишешь программы, то из твоих слов следует вывод: есть вероятность, что ты пишешь дерьмовые программы. получается публичная самокритика.
0
easybudda
13.01.2015, 02:04
  #13
 Комментарий модератора 
-=ЮрА=-, офтоп прекращайте! И с выражениями поаккуратнее...
0
классный парень
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 3
13.01.2015, 09:37 #14
-=ЮрА=-, по теме: что в первом что во втором тестах поведение компилятора нельзя предугадать и на выходе может получиться разный ответ. в этих стандартах C11 – ISO/IEC 9899:2011 и C99 – ISO 9899:1999 прямым текстом об этом говорится (6.5 Expressions). Вы же не будете спорить со стандартами языка?
0
-=ЮрА=-
Заблокирован
Автор FAQ
13.01.2015, 22:24 #15
Цитата Сообщение от классный парень Посмотреть сообщение
-=ЮрА=-, по теме: что в первом что во втором тестах поведение компилятора нельзя предугадать и на выходе может получиться разный ответ. в этих стандартах C11 – ISO/IEC 9899:2011 и C99 – ISO 9899:1999 прямым текстом об этом говорится (6.5 Expressions). Вы же не будете спорить со стандартами языка?
- так castaway, я уже тебе написал что твой фейковый новый парень с датой регистрации вчера вечером, насатолько бросается в глаза что я ели удержал себя чтобы не послать тебя на три весёлых, теперь набиваем гвозди,
1-е речь идёт о языке Си (повторяю СИ а не С++, я что со стенами разговариваю или с умалишёнными?На кой здесь упомниная С++ вообще)
2-е существует порядок следования операндов, без скобок он идёт слева направо, так что не надо тут разводить палемику неопредела точка следования и прочая лабуда, я надеюсь что твоё делитанство всё же уступит место объективной реальности
3-е открываем тот документ который ты кинул по ссылке
ISO/IEC 9899:TC3 Committee Draft — Septermber 7, 2007 WG14/N1256
- тебе дословно перевести что ты кинул черновик или ты сам сумеешь это сделать?Где там рефернст стандарта Си99, м?
Далее показывай конкретно где сказано, что два префиксных декремента без скобок нарушают порядок следования(я уже не говорю о компиляторах борланд Си 4.0 VS 6 - 2012 онлайн ресурсах codepad.org ideone.com. конечно же все они не в стандарте ибо подтвержают мои слова....(фэйспалм)
0
13.01.2015, 22:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2015, 22:24
Привет! Вот еще темы с ответами:

Вычисление значения выражения - C++
Ребята, помогите, пожалуйста, кто-нибудь с задачкой. Даны натуральное число n. Нужно получить: (1+1/(1^2))(1+1/(2^2))...(1+1/(n^2)) ...

Вычисление простого выражения - C++
Нужен код программы) если не сложно то помогите с ним Разработать программу для вычисления арифметического выражения и вывода...

Вычисление значения выражения - C++
Как записать вычисление этой суммы? Спасибо.

Вычисление значения выражения - C++
Для заданного натурального числа п написать программу вычисления значения выражения: S={e}^{-1}+e\sqrt{2}+e\sqrt{3}+...e\sqrt{n} ...


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

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

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