LOẠI của biến là một nhãn số nguyên cho trình biên dịch biết các loại được hỗ trợ của nó nên sử dụng.
Ghi chú rằng mặc dù nó là chung cho tham số HÌNH THỨC NÀO để được giống như số byte lưu trữ trong một biến của loại hình đó, nó là không cần bởi các tiêu chuẩn Fortran.
Đó là, trên rất nhiều hệ thống,
REAl(KIND=4) :: xs ! 4 byte ieee float
REAl(KIND=8) :: xd ! 8 byte ieee float
REAl(KIND=16) :: xq ! 16 byte ieee float
nhưng có thể có trình biên dịch ví dụ với:
REAL(KIND=1) :: XS ! 4 BYTE FLOAT
REAL(KIND=2) :: XD ! 8 BYTE FLOAT
REAL(KIND=3) :: XQ ! 16 BYTE FLOAT
Tương tự như vậy đối với số nguyên và các loại logic.
(Nếu tôi đi đào, tôi có thể có thể tìm thấy ví dụ. Tìm các comp.lang.fortran nhóm usenet cho kind
để tìm ví dụ. Các cuộc thảo luận thông nhất của Fortran xảy ra ở đó, với một số người có nhiều kinh nghiệm đóng góp.)
Vì vậy, nếu bạn không thể dựa vào một giá trị loại cụ thể cho bạn cùng một biểu diễn dữ liệu trên các nền tảng khác nhau, bạn sẽ làm gì?Đó là những chức năng nội tại SELECTED_REAL_KIND
và SELECTED_INT_KIND
là dành cho. Về cơ bản, bạn cho biết chức năng sắp xếp các số bạn cần để có thể đại diện, và nó sẽ trả về loại bạn cần sử dụng.
Tôi thường sử dụng các loại, như họ thường cho tôi 4 byte và 8 byte số thực:
!--! specific precisions, usually same as real and double precision
integer, parameter :: r6 = selected_real_kind(6)
integer, parameter :: r15 = selected_real_kind(15)
Vì vậy, tôi sau đó có thể khai báo một biến như:
real(kind=r15) :: xd
Lưu ý rằng điều này có thể gây ra vấn đề mà bạn sử dụng các chương trình ngôn ngữ hỗn hợp, và bạn cần phải xác định hoàn toàn số byte mà các biến chiếm giữ. Nếu bạn cần phải chắc chắn, có nội tại yêu cầu sẽ cho bạn biết về từng loại, từ đó bạn có thể suy ra dấu chân bộ nhớ của một biến, độ chính xác, phạm vi số mũ của nó và vân vân. Hoặc, bạn có thể hoàn nguyên về kiểu khai báo phi tiêu chuẩn nhưng phổ biến là real*4
, real*8
vv.
Khi bạn bắt đầu với trình biên dịch mới, bạn nên xem xét giá trị loại trình biên dịch cụ thể để biết bạn đang xử lý những gì. Tìm kiếm trên mạng cho kindfinder.f90
cho một chương trình tiện dụng sẽ cho bạn biết về các loại có sẵn cho trình biên dịch.
bạn có đang nhắc đến ký hiệu Loại không? – TStamper