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

Глюк gcc? - C++

Восстановить пароль Регистрация
 
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
04.10.2013, 18:06     Глюк gcc? #1
Компилируя программу в gcc, выводит от части неверный ответ. В code::blocks все в порядке. Как это понимать?
Программа выполняет сдвиг массива: 45, 88, 71, 31, 72, 55, 64, 81, 99, 10. При введенном шаге - 1, массив должен принять вид: 10, 45, 88, 71, 31, 72, 55, 64, 81, 99. Но в gcc это не так.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
 
#define SIZE 10
 
int main()
{
    int a[SIZE] = {45, 88, 71, 31, 72, 55, 64, 81, 99, 10};
    int buff, i, j;
    int step;
 
    for(i = 0; i <= SIZE - 1; i++)
    {
        printf("%5d", a[i]);
    }
    printf("\nEnter the pitch shift: ");
    scanf("%d", &step);
 
    for(j = 1; j <= step; j++)
    {
    for (i = 0; i <= SIZE - 1; i++)
        {
            buff = a[SIZE - i];
            a[SIZE - i] = a[SIZE - (i + 1)];
            a[SIZE - (i + 1)] = buff;
        }
    }
 
    for(i = 0; i <= SIZE - 1; i++)
    {
        printf("%5d", a[i]);
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 18:06     Глюк gcc?
Посмотрите здесь:

Компиляция (gcc) C++
C++ gcc update
C++ gcc в c++ VS
gcc компиляция C++
Компиляция gcc C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
04.10.2013, 18:26     Глюк gcc? #2
Цитата Сообщение от Ryuk Посмотреть сообщение
Компилируя программу в gcc, выводит от части неверный ответ. В code::blocks все в порядке
Как вот это понимать? gcc - это компилятор. code::blocks это IDE. Причем эта самая IDE использует gcc в качестве компилятора.

По поводу вопроса: где, по Вашему, число 10 ( в случае когда, как Вы сказали, вводите 1 ) записывается в начало массива?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11807 / 6786 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
04.10.2013, 18:33     Глюк gcc? #3
C++
1
2
3
4
    for (i = 0; i <= SIZE - 1; i++)
        {
            buff = a[SIZE - i];
            a[SIZE - i] = a[SIZE - (i + 1)];
SIZE - 0 == SIZE
Следовательно имеем выход за пределы массива a[SIZE] = ...
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
04.10.2013, 18:36  [ТС]     Глюк gcc? #4
Toshkarik, Почему результаты разные? В ide тот что нужен, в mingw нет.

Добавлено через 56 секунд
Croessmah, да, вот. Я это тоже видел, но он выполняется все равно правильно, думал что это не влияет
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
04.10.2013, 18:43     Глюк gcc? #5
Цитата Сообщение от Ryuk Посмотреть сообщение
Почему результаты разные? В ide тот что нужен, в mingw нет.
Потому что выход за пределы массива это UB. Результат может различаться от версии к версии ( даже релизной ), а у Вас, скорей всего, как раз разные версии mingw.
Yandex
Объявления
04.10.2013, 18:43     Глюк gcc?
Ответ Создать тему
Опции темы

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