#c
#c
Вопрос:
Я пытаюсь присвоить значения структурному массиву. Однако я получаю ошибку «Ожидаемое выражение». Есть ли что-то, чего мне не хватает? Я использую Xcode на случай, если это имеет значение.
#include <stdio.h>
#include <stdlib.h>
struct MEASUREMENT
{
float relativeHumidity;
float temperature;
char timestamp[20];
};
int main()
{
struct MEASUREMENT measurements[5];
measurements[0] = {0.85, 23.5, "23.07.2019 08:00"}; //Expected expression error
measurements[1] = {0.71, 19.0, "04.08.2019 10:21"}; //Expected expression error
measurements[2] = {0.43, 10.2, "07.08.2019 02.00"}; //Expected expression error
measurements[3] = {0.51, 14.3, "20.08.2019 14:45"}; //Expected expression error
measurements[4] = {0.62, 10.9, "01.09.2019 01:00"}; //Expected expression error
Спасибо!
Ответ №1:
Перечисление значений в фигурных скобках — это специальный синтаксис для инициализации в объявлениях. Список в фигурных скобках сам по себе не формирует выражение, которое можно использовать при присваивании.
Вы можете указать начальные значения в этой форме при определении массива:
struct MEASUREMENT measurements[5] = {
{0.85, 23.5, "23.07.2019 08:00"},
{0.71, 19.0, "04.08.2019 10:21"},
{0.43, 10.2, "07.08.2019 02.00"},
{0.51, 14.3, "20.08.2019 14:45"},
{0.62, 10.9, "01.09.2019 01:00"},
};
В выражениях вы можете определить временный объект с помощью составного литерала, а затем присвоить его значение другому объекту. Составной литерал формируется с типом в круглых скобках, за которым следует заключенный в фигурные скобки список инициализаторов:
measurements[0] = (struct MEASUREMENT) {0.85, 23.5, "23.07.2019 08:00"};
measurements[1] = (struct MEASUREMENT) {0.71, 19.0, "04.08.2019 10:21"};
measurements[2] = (struct MEASUREMENT) {0.43, 10.2, "07.08.2019 02.00"};
measurements[3] = (struct MEASUREMENT) {0.51, 14.3, "20.08.2019 14:45"};
measurements[4] = (struct MEASUREMENT) {0.62, 10.9, "01.09.2019 01:00"};