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

Что за конструкция языка - C++

Восстановить пароль Регистрация
 
mmd
13 / 13 / 1
Регистрация: 17.05.2012
Сообщений: 80
12.03.2013, 21:03     Что за конструкция языка #1
C++
1
int a[]={{{1,2},3},{{4,5},6},{{7,8},9}};
как можно вывести значение 6 например? как вообще обращаться к элементам массива?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2013, 21:03     Что за конструкция языка
Посмотрите здесь:

Что за конструкция? C++
C++ Что за конструкция в языке?
C++ Что за конструкция?
Что за static friend конструкция? C++
Конструкция языка С++11 цикл по коллекции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
12.03.2013, 21:55     Что за конструкция языка #2
Это вообще компилируется?

Добавлено через 1 минуту
Что за конструкция в языке?
NEbO
583 / 451 / 49
Регистрация: 22.01.2009
Сообщений: 1,173
Записей в блоге: 1
Завершенные тесты: 1
12.03.2013, 23:07     Что за конструкция языка #3
хм. прикольно. у меня скомпилилось, даже вот так вот:
Код
gcc 1.c -o 1.S --std=c89 -O3 -S -ansi -pedantic
но получилось в секции данных:
Assembler
1
2
3
4
5
6
.data
    .align 4
_a:
    .long   1
    .long   4
    .long   7
то есть изначально вроде как бы можно было бы и обратиться к 6-ке через a[1][1], ну как то по идее должно быть так. но на самом деле массив просто обрезается. и нет, динамически, потом где то в коде он не создается, проверил как и по коду, так и через "линеаризацию" массива с помощью цикла -- начиная с индекса 3 циферки примерно такие:
Код
-1
16384
4221736
64
-16445
16320
, что не слишком то похоже на указатели или что-то в этом роде...
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
13.03.2013, 09:41     Что за конструкция языка #4
Что за конструкция языка
NEbO
583 / 451 / 49
Регистрация: 22.01.2009
Сообщений: 1,173
Записей в блоге: 1
Завершенные тесты: 1
13.03.2013, 12:15     Что за конструкция языка #5
подтверждаю, g++ это уже не компилирует. gcc (сишный компилятор) показывает те же самые ошибки при компиляции (насчет скобок), но считает, что это warning, и пропускает:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int a[] = {   
                {{1,2},3},
                {{4,5},6},
                {{7,8},9}
              };
              
int main() {
    int i;
    for (i = 0; i < 9; i++) {
        printf("%d\n", a[i]);
    }
    
    return 0;
}

Код
C:\>gcc -pedantic -O3 -S 1.c -o 1.S
1.c:4:14: warning: braces around scalar initializer [enabled by default]
1.c:4:14: warning: (near initialization for 'a[0]') [enabled by default]
...(еще штук 10 подобных warning-ов)
Код
C:\>g++ -pedantic -O3 -S 1.c -o 1.S
1.c:7:6: error: braces around scalar initializer for type 'int'
версия gcc: 4.7.2 (mingw).
В любом случае, проблема есть, а то, что у меня gcc вот так вот скомпилил это дело, так это, скорее, плохо, чем хорошо: он просто потерял данные. К циферке 6 в массиве mmd-а обратиться не получается. Попробовал также запустить g++ с -std=c++0x (ну и -std=gnu++0x, на всякий пожарный), -- не компилируется, по той же причине, что и выше
Yandex
Объявления
13.03.2013, 12:15     Что за конструкция языка
Ответ Создать тему
Опции темы

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