gpt4 book ai didi

c++ - C++ 语言中的 FORTRAN EQUIVALENCE

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:17 25 4
gpt4 key购买 nike

我正在将一部分 FORTRAN 77 代码转换为 C++

DIMENSION ARRAY(513),JRRAY(2,513)
EQUIVALENCE (ARRAY(1),JRRAY(1,1))

这是隐式代码,其中每个以 I,J,K,L,M,N,O,P 开头的变量名都被隐式地视为整数类型。因此,这里我们有一个名为 ARRAY 的 double 组和一个名为 JRRAY 的整数数组。

等价语句将两个数组的开头指向相同的内存位置。然而,不知何故,字节在调用 ARRAY(I) 时被解释为 double ,在调用 JRRAY(I,J) 时被解释为整数(至少我认为会发生这种情况)。

在 C++ 中是否有类似的方法可以将相同的内存位置解释为不同的类型?

或者在 FORTRAN 中做与 EQUIVALENCE 相同的事情,但在 C++ 中。

最佳答案

类似的特征是 union :

union {
double array[513];
int jrray[513][2];
} equiv;

然后您可以访问 equiv.array[i]equiv.jrray[i][j] .

但是请注意,访问与您上次写入的 union 成员不同的 union 成员会导致 C++ 中的未定义行为。参见 Unions and type-punning .如果你想将数据重新解释为不同的数据类型,你应该使用 reinterpret_cast<> ,而不是双关语。

关于c++ - C++ 语言中的 FORTRAN EQUIVALENCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44144207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com