我试图将两个初始化的数组evenNumbers和oddNumbers分配给一个数组integers
PROGRAM ArrayInit
VAR
evenNumbers : ARRAY[1..3] OF INT := [2, 4, 6];
oddNumbers: ARRAY[1..3] OF INT := [1, 3, 5];
integers : ARRAY[1..2] OF ARRAY[1..3] OF INT := [evenNumbers, oddNumbers];
END_VAR这段代码给我一个编译器错误。
阵列初始化
当然,我可以用所需的数字直接初始化integers,如下所示:
PROGRAM ArrayInit
VAR
integers: ARRAY[1..2] OF ARRAY[1..3] OF INT := [
[2, 4, 6], [1, 3, 5]
];
END_VAR或者像谢尔盖提到的
PROGRAM ArrayInit
VAR
integers: ARRAY[1..2, 1..3] OF INT := [
2, 4, 6, 1, 3, 5
];
END_VAR但是,如果原始数组非常大,并且/或我想记录这些不同的数组是什么,那么最好使用描述性名称。也就是说,integers : ARRAY[1..2] OF ARRAY[1..3] OF INT := [evenNumbers, oddNumbers];很好地显示了integers有两个列表,一个有偶数,一个有奇数。
我还尝试将integers初始化为integers: ARRAY[1..2] OF ARRAY[1..3] OF INT := [[evenNumbers], [oddNumbers]];,但这给出了编译器错误:
无法将‘数组1.3’转换为'INT‘类型
现在我想知道这是否可能?如果是的话,有人知道我怎么做吗?
发布于 2021-11-05 14:46:58
若要分配多个级别数组,请在一行中执行。
combinedSet : ARRAY[1..2, 1..2] OF INT := [1,2,3,4];将导致数组
[
1 => [
1 => 1,
2 => 2
],
2 => [
1 => 2,
2 => 4
]
]首先,它分配了第一个元素[1, 1],[1, 2],[1, 3]的所有元素.然后筑巢一个[2, 1],[2, 2],[2, 3] .
附加信息
将2个数组合并为一个多维的最简单的方法是:
PROGRAM PLC_PRG
VAR
arr1 : ARRAY[1..3] OF INT := [1,3,5];
arr2 : ARRAY[1..3] OF INT := [2,4,6];
combinedSet : ARRAY[1..2] OF ARRAY[1..3] OF INT;
END_VAR
combinedSet[1] := arr1;
combinedSet[2] := arr2;
END_PROGRAM这不起作用的原因
integers : ARRAY[1..2] OF ARRAY[1..3] OF INT := [evenNumbers, oddNumbers];因为evenNumbers和oddNumbers在使用时没有初始化。如果要在VAR CONSTANT中声明这些内容,它可能会正常工作,但是您将无法在程序中更改这些数组的内容。
发布于 2022-07-11 11:22:42
当integers : ARRAY[1..2] OF ARRAY[1..3] OF INT := [evenNumbers, oddNumbers];和oddNumbers是常量时,行oddNumbers可以正常工作。不能使用非常量变量初始化其他变量。
如果以后需要更改evenNumbers和oddNumbers,您可以创建两个常量evenNumbersConst和oddNumbersConst,并将它们用于初始化,如下所示:
VAR
evenNumbers : ARRAY[1..3] OF INT := evenNumbersConst;
oddNumbers : ARRAY[1..3] OF INT := oddNumbersConst;
integers : ARRAY[1..2] OF ARRAY[1..3] OF INT := [evenNumbersConst, oddNumbersConst];
END_VAR
VAR CONSTANT
evenNumbersConst : ARRAY[1..3] OF INT := [2, 4, 6];
oddNumbersConst : ARRAY[1..3] OF INT := [1, 3, 5];
END_VARhttps://stackoverflow.com/questions/69853619
复制相似问题