char_result_6.f90

来自「用于进行gcc测试」· F90 代码 · 共 108 行

F90
108
字号
! Like char_result_5.f90, but the function arguments are pointers to scalars.! { dg-do run }pure function select (selector, iftrue, iffalse)  logical, intent (in) :: selector  integer, intent (in) :: iftrue, iffalse  integer :: select  if (selector) then    select = iftrue  else    select = iffalse  end ifend function selectprogram main  implicit none  interface    pure function select (selector, iftrue, iffalse)      logical, intent (in) :: selector      integer, intent (in) :: iftrue, iffalse      integer :: select    end function select  end interface  type pair    integer :: left, right  end type pair  integer, target :: i  integer, pointer :: ip  real, target :: r  real, pointer :: rp  logical, target :: l  logical, pointer :: lp  complex, target :: c  complex, pointer :: cp  character, target :: ch  character, pointer :: chp  type (pair), target :: p  type (pair), pointer :: pp  i = 100  r = 50.5  l = .true.  c = (10.9, 11.2)  ch = '1'  p%left = 40  p%right = 50  ip => i  rp => r  lp => l  cp => c  chp => ch  pp => p  call test (f1 (ip), 200)  call test (f2 (rp), 100)  call test (f3 (lp), 50)  call test (f4 (cp), 10)  call test (f5 (chp), 11)  call test (f6 (pp), 145)contains  function f1 (i)    integer, pointer :: i    character (len = abs (i) * 2) :: f1    f1 = ''  end function f1  function f2 (r)    real, pointer :: r    character (len = floor (r) * 2) :: f2    f2 = ''  end function f2  function f3 (l)    logical, pointer :: l    character (len = select (l, 50, 55)) :: f3    f3 = ''  end function f3  function f4 (c)    complex, pointer :: c    character (len = int (c)) :: f4    f4 = ''  end function f4  function f5 (c)    character, pointer :: c    character (len = scan ('123456789', c) + 10) :: f5    f5 = ''  end function f5  function f6 (p)    type (pair), pointer :: p    integer :: i    character (len = sum ((/ p%left, p%right, (i, i = 1, 10) /))) :: f6    f6 = ''  end function f6  subroutine test (string, length)    character (len = *) :: string    integer, intent (in) :: length    if (len (string) .ne. length) call abort  end subroutine testend program main

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?