1

サイズが奇数の場合、暗黙の do ループに基づく配列の初期化がありますN

J=(N+1)/2
XLOC(1:N) = (/ (I-J, I=1,N) /)

FORALLF90+ のコンテキストでは、(/ .. /) 構文を使用することをお勧めします。または、ステートメントを使用する方が効率的です。

例:その時のためN=19XLOC=(-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9)

他にどのようにこの配列を初期化しますか?


編集 1

より読みやすいコードでこの配列をどのように初期化しますか?

4

2 に答える 2

2

実際の do ループよりも効率が悪いという理由はありません。ケースを見つけた場合は、最適化のバグとして、コンパイラ ベンダーに報告してください。

于 2011-01-06T11:25:49.243 に答える
2

このような単純な構成の場合、コンパイラは最適化に優れているため、両方が同じコードになる可能性があります。FORALL ステートメントはループ ステートメントというよりは、最適化を妨げる可能性のある多くの制限がある初期化ステートメントです。単純なループが機能する場合は、それを使用します。

次の以前の回答も参照してください。

于 2010-12-30T16:07:54.670 に答える