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

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

Войти
Регистрация
Восстановить пароль
 
mmd
13 / 13 / 1
Регистрация: 17.05.2012
Сообщений: 80
#1

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

12.03.2013, 21:03. Просмотров 482. Ответов 4
Метки нет (Все метки)

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

Конструкция языка С++11 цикл по коллекции - C++
for (auto x : result) Что означает данная конструкция?

Что за конструкция? - C++
что означает такая конструкция??? int *&node

Что за конструкция? - C++
Доброго времени суток. Встречал где-то конструкцию типа for(;;) { тыры-пыры; } В общем, без указания параметров цикла. Встречал...

Что за конструкция? - C++
Привет. Что за конструкция такая? Поясните что делает: for( int i=0;i<N;++i ){ ++nCount; } f() - возвратит...

Что за конструкция в языке? - C++
int a = {{1,2},3}; что значат скобки внутри скобок?

Что означает конструкция int x{}; ? - C++
Что означает конструкция int x{}; ???

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,416
Записей в блоге: 3
Завершенные тесты: 1
12.03.2013, 21:55 #2
Это вообще компилируется?

Добавлено через 1 минуту
Что за конструкция в языке?
0
NEbO
587 / 455 / 49
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
Завершенные тесты: 2
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
, что не слишком то похоже на указатели или что-то в этом роде...
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,416
Записей в блоге: 3
Завершенные тесты: 1
13.03.2013, 09:41 #4
Что за конструкция языка
0
NEbO
587 / 455 / 49
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
Завершенные тесты: 2
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, на всякий пожарный), -- не компилируется, по той же причине, что и выше
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2013, 12:15
Привет! Вот еще темы с ответами:

Что значит эта конструкция? - C++
Расскажите что это за конструкция double fm(double, int);

Что за static friend конструкция? - C++
Здравствуйте, изучаю C++, откопал я тут случайно пример: class t{ int var; public: t(int val):var(val){}; static friend int...

Что значит эта конструкция - C++
Здравствуйте. return (h&lt;0) ? (h + a) : h; Впервые вижу такую строку. Что на значит. Спасибо.

Что делает данная конструкция? - C++
int x = 5; 0 = x + x; Что она делает, как называется и зачем используется?


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

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

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