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

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

Войти
Регистрация
Восстановить пароль
 
Chainyk
15 / 15 / 1
Регистрация: 24.08.2010
Сообщений: 94
#1

Баг компилятора???????? - C++

23.11.2010, 00:31. Просмотров 443. Ответов 7
Метки нет (Все метки)

Почему первая программа дает 6, а вторая 11?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdafx.h"
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a,b,c;
    a=5;
    b=6;
    c = a +++ b;
    std::cout<<a;
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdafx.h"
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a,b,c;
    b=5;
    c=6;
    a = b +++ c;
    std::cout<<a;
    return 0;
}
У меня 2008 студио (9.0)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
23.11.2010, 00:33     Баг компилятора???????? #2
Цитата Сообщение от Chainyk Посмотреть сообщение
a +++ b;
мне кажется, такое каждый компилятор читает по-своему
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
23.11.2010, 00:39     Баг компилятора???????? #3
a+++b = (a++) + b
первая шесть, потому что а инкрементируется
вторая 5+6
где баг то?

Добавлено через 58 секунд
Цитата Сообщение от st_dent Посмотреть сообщение
мне кажется, такое каждый компилятор читает по-своему
может кто-нибудь блестнет и извлечет чего-нибудь из стандарта =)
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
23.11.2010, 00:42     Баг компилятора???????? #4
извиняюсь, читается вполне однозначно.
C++
1
c = a +++ b;
В соответствии с приоритетами операции, сначала идет постфиксный инкремент, потом сложение, потом присваивание. Так что все однозначно.
Chainyk
15 / 15 / 1
Регистрация: 24.08.2010
Сообщений: 94
23.11.2010, 00:43  [ТС]     Баг компилятора???????? #5
упс... в первой надо с выводить. А почему 11? Почему никакая переменная не инкрементируется?
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
23.11.2010, 00:44     Баг компилятора???????? #6
Chainyk, Постинкремент.
Chainyk
15 / 15 / 1
Регистрация: 24.08.2010
Сообщений: 94
23.11.2010, 00:45  [ТС]     Баг компилятора???????? #7
Понял,спасибо...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2010, 00:45     Баг компилятора????????
Еще ссылки по теме:

C++ Ошибки компилятора
C++ Ошибка компилятора
C++ Ошибка компилятора
C++ Выбор компилятора С++
C++ Ошибки компилятора

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

Или воспользуйтесь поиском по форуму:
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
23.11.2010, 00:45     Баг компилятора???????? #8
Цитата Сообщение от Chainyk Посмотреть сообщение
Почему никакая переменная не инкрементируется?
в первом а увеличивается на один после присваивания, во втором b аналогичным образом
Yandex
Объявления
23.11.2010, 00:45     Баг компилятора????????
Ответ Создать тему
Опции темы

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