program main implicit none type :: t integer :: a end type t type(t), pointer :: tp integer, pointer :: i if(associated(tp)) write(*,*) "tp is associated." if(associated(i )) write(*,*) "i is associated." end program main
Code above outputs a strange result of "i is associated" but tp is not, why is that ?
Intel(R) Visual Fortran Compiler 17.0.0.109 [IA-32] is the current compiler, and I also tried Linux version of ifort 13.1.1 and nothing wrong appears, thanks for reply.
The associated-ness of uninitialised pointer variables is undefined. So it could actually be true or false depending on the phase of the moon.
To be sure you have reliable results, always initialise them first, for instance:
type
(t),
pointer
:: tp => null()
The associated-ness of uninitialised pointer variables is undefined. So it could actually be true or false depending on the phase of the moon.
To be sure you have reliable results, always initialise them first, for instance:
type
(t),
pointer
:: tp => null()
That's interesting about the moon :)
For more complete information about compiler optimizations, see our Optimization Notice.