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

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

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

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

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

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     Что за конструкция языка
Посмотрите здесь:

Что делает конструкция (Mat_<float>(1,2) << i,j) C++
Что за конструкция? C++
C++ Что за конструкция в языке?
C++ Что за конструкция?
Что за static friend конструкция? C++
Конструкция языка С++11 цикл по коллекции C++
Что значит эта конструкция? C++
Что делает данная конструкция? C++
Что значит эта конструкция C++
Что за конструкция? C++
C++ Что означает конструкция vector<int> v1{ 5 }; ?
Что означает конструкция int x{}; ? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12699 / 7173 / 800
Регистрация: 27.09.2012
Сообщений: 17,683
Записей в блоге: 2
Завершенные тесты: 1
12.03.2013, 21:55     Что за конструкция языка #2
Это вообще компилируется?

Добавлено через 1 минуту
Что за конструкция в языке?
NEbO
587 / 455 / 49
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 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
Модератор
Эксперт CЭксперт С++
12699 / 7173 / 800
Регистрация: 27.09.2012
Сообщений: 17,683
Записей в блоге: 2
Завершенные тесты: 1
13.03.2013, 09:41     Что за конструкция языка #4
Что за конструкция языка
NEbO
587 / 455 / 49
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 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     Что за конструкция языка
Ответ Создать тему
Опции темы

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