(j3.2006) Question about zero-sized array.

John Reid John.Reid
Tue Jun 20 11:53:11 EDT 2017



Daniel C Chen wrote:
> Hello,
>
> The standard specifies, "Zero-sized arrays and zero-length strings are
> always defined".
> It also says "Allocation of a zero-sized array or zero-length character
> variable causes the array or variable to become defined"
>
> Question1: Does it have initial value at all?

Well, yes. It always has the same value, including initially.

> Question2: Can it appear as the LHS of an assignment?

Yes.

> Question3: Can it be used in an expression and have a defined result?

Yes.
>
> Please consider the following example:
>
> program test
> real, dimension(:,:), allocatable:: a
> real, dimension(:), allocatable :: x,y
>
> allocate(a(7,0),x(0),y(7))
> a(:,:) = 0.0 !Q2: Is this legal? What is the value of a?

Yes, you are broadcasting a scalar to every element of the array. a has 
the value it always has when the size is zero.

> x(:) = 0.0

Yes, you are again broadcasting a scalar to every element of the array.

> y(:) = 1.0
> y(:) = MATMUL( a(:,:), x(:) ) !Q3: Is this legal? what is the value of y?

Yes. Every element of y has the value 0.0.

> end program test
>
> Non-allocatable version:

Nothing is reallocated in the allocatable version, so this is the same.

Cheers,

John.

> program test2
> real :: a(7,0)
> real :: x(0),y(7)
>
> a = 0.0 !Q2: is this legal? What is the value of a?
> x = 0.0
> y = 1.0
> y = MATMUL( a, x ) !Q3: is this legal? what is the value of y?
> end program test2
>
> Thanks,
>
> Daniel
>
> XL Fortran Development, Fortran Standard Representative
> IBM Toronto Software Lab
> Phone: 905-413-3056
> Tie: 969-3056
> Email: cdchen at ca.ibm.com
> http://www.ibm.com/software/awdtools/fortran/xlfortran
>
>
> _______________________________________________
> J3 mailing list
> J3 at mailman.j3-fortran.org
> http://mailman.j3-fortran.org/mailman/listinfo/j3
>



More information about the J3 mailing list