Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Axel1988
0 / 0 / 0
Регистрация: 28.01.2014
Сообщений: 51
1

Для чего в коде использованы фигурные двойные скобки

16.07.2014, 16:48. Просмотров 1148. Ответов 8
Метки нет (Все метки)

C
1
struct uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}};
Ника не могу понять почему используются двойные скобки. Как это правильно прочитать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2014, 16:48
Ответы с готовыми решениями:

Удалить последовательности символов, заключённые в фигурные скобки
Необходимо обработать текстовый файл. В первой строке файла указано общее число строк. Выделить...

Синтаксическая проверка программ на C, таких как непарные круглые, квадратные и фигурные скобки
Задание: Упражнение 1.24. Напишите программу для выполнения примитивной синтаксической проверки...

Вызов функции, точка с запятой, фигурные скобки, внутри которых другие вызовы функций
Что означает такая запись ? foo(); { aoo();

Найти количество слов, начинающихся с заданного символа, и заменить эти слова их порядковым номером в строке, заключенным в фигурные скобки
условие Дана строка. Группы символов, разделенные пробелами (одним или несколькими) и не...

Для чего фигурные скобки в приведенном коде
Перехожу от c++ на java и появился один вопрос по синтаксису. public class Main{ ...

8
eXnatiOnz
5 / 2 / 2
Регистрация: 23.11.2013
Сообщений: 42
16.07.2014, 16:56 2
если я не ошибаюсь, то так инициализируется двумерный массив и в твоём случае должен быть один столбик, возможно я ошибаюсь, прошу поправить
0
Axel1988
0 / 0 / 0
Регистрация: 28.01.2014
Сообщений: 51
16.07.2014, 17:19  [ТС] 3
Нет, это видимо инициализация одномерного массива, но почему скобки то двойные...
C
1
2
3
struct uip_eth_addr {
  u8_t addr[6];
};
Добавлено через 8 минут
Может это субагрегатная группировка?
0
eXnatiOnz
5 / 2 / 2
Регистрация: 23.11.2013
Сообщений: 42
16.07.2014, 17:28 4
да да, это я и хотел сказать) просто забыл как называется)скобки двойные, потому что инициализируется только первый член,а остальные члены у тебя зануляются)
0
16.07.2014, 17:28
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
16.07.2014, 18:09 5
Цитата Сообщение от Axel1988 Посмотреть сообщение
Ника не могу понять почему используются двойные скобки. Как это правильно прочитать?
Это либо баг, либо преднамеренная ошибка (не понимаю для чего). Структура таким образом нулями не инициализируется. Вполне себе может долго существовать просто по той причине, что, например, компилятор построил код таким образом что структура по умолчанию забивается нулями. Легко же проверить.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
 
 
int
main (int argc, char ** argv)
{
    char ch[6] = {{1,1,1,1,1,1}};
    int i = 6;
    
    while(i--)
        printf("%i", ch[i]);
    putchar('\n');
    
    exit(EXIT_SUCCESS);
}
Добавлено через 1 минуту
Bash
1
2
3
lenin@lenin-host:~/samples$ ./a.out 
000001
lenin@lenin-host:~/samples$
0
Axel1988
0 / 0 / 0
Регистрация: 28.01.2014
Сообщений: 51
16.07.2014, 18:37  [ТС] 6
А почему структура нулями не инициализируется? И объясните пожалуйста почему это баг и почему он может просуществовать долго
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
16.07.2014, 18:58 7
Цитата Сообщение от Axel1988 Посмотреть сообщение
А почему структура нулями не инициализируется?
Она-то акк раз нулями и инициализируется, но это делается компилятором (если компилятор так спроектирован, что по умолчанию везде сует нули), а не тем участком кода, который вы привели в первом посте.
Причин почему это баг может быть несколько, например, программист использует autocompletion и случайно вместо одного раза нажал 2 раза на открывающую скобку. Вторая часть вопроса прояснена в этом и прошлом посте.
0
Axel1988
0 / 0 / 0
Регистрация: 28.01.2014
Сообщений: 51
16.07.2014, 19:09  [ТС] 8
C++
1
char ch[6] = {{1,1,1,1,1,1}}
"проинициализировалось" как 000001. То есть последняя единица либо мусор либо предыдущее значение?
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
16.07.2014, 19:20 9
Axel1988, гуглим litle endian. Сначала все проинициализировалось нулями, потом на место первого элемента вставили 1.

Добавлено через 7 минут
эндианство тут не при чем, запутался.
0
16.07.2014, 19:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2014, 19:20

Двойные скобки & фигурные
Кто нибудь - когда нибудь, писал - так ? И знал вообще, что так можно ? $Test = ; $v = ]; ...

Убрать двойные фигурные скобки из объекта (десериализация json)
Объект имеет вид item = {{ &quot;name&quot;: &quot;Петя&quot;, &quot;age&quot;: 18, &quot;address&quot;: &quot;Cuba&quot;}}. При попытке...

Для чего фигурные скобки и что значит LIMIT?
В исходниках есть такая строка: &quot;SELECT `id` FROM `users` WHERE `login`='{$login}' AND...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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