FORTRAN ファイル「testValueKeyword.for」に次のコードが含まれています
subroutine intersub2(x,y)
integer, value :: x
integer y
x = x + y
y = x*y
print *, 'in subroutine after changing: ', x, y
end subroutine
program testValueKeyword
integer :: x = 10, y = 20
print *, 'before calling: ', x, y
call intersub(x, y)
print *, 'after calling: ', x, y
x = 10
y = 20
call intersub2(x, y)
contains
subroutine intersub(x,y)
integer, value :: x
integer y
x = x + y
y = x*y
print *, 'in subroutine after changing: ', x, y
end subroutine
end program
サブルーチン intersub と intersub2 には同じコードが含まれており、どちらも x 引数を値で渡しますが、intersub2 はメモリ アドレスに似た大きなランダム整数を渡しているようです。実行後に異なるy値を取得します。これを説明していただけますか?