アプリ版:「スタンプのみでお礼する」機能のリリースについて

Fortran95 以降の Fortran で変数 a を以下のように倍精度に宣言しているとします。

    real( Kind=8 ) :: a

この変数の値をプログラム中で1.0 だけ増やしたいとき、以下のように書くのは普通だと思います。

    a = a + 1.0d0

それに対して以下のように書く事が出来ます。

    a = a + 1.0_8

このアンダースコアに続けて Kind 値に相当する数を書く書き方は標準の文法にあるのでしょうか。
それとも、この書き方は推奨されないとかのように、なにか特定のコンパイラなどに依存する方言的なものなのでしょうか。

ご存じの方がいらっしゃったら教えてください。

A 回答 (3件)

KIND に「8」を与えることが何を意味するか (あるいは「_8」と書くことによって何がどうなるのか), 規格上は何もいっていない. 処理系によっては「8 と書いてはいけない」かもしれないよ?



厳密にいうと「倍精度とは何ぞや」という指摘もありそうだけど.
    • good
    • 0

念のため.



kind に 8 を指定したからといって「倍精度」とは限らない, というのは大丈夫?
    • good
    • 0
この回答へのお礼

それは種別番号8が必ずしも8バイトの8を意味するのではなく、コンパイラによってデフォルトが違ったりコンパイラオプションや意図的な指定で変わるということを指しているという理解でいいでしょうか?

お礼日時:2023/09/23 01:13

少なくとも2009ではJIS規格に含まれますね。

p.29-31あたりに整数や実数で _種別 のような記述が出てきます。種別は数字列かスカラ整定数名です。なので_8のようなリテラル値による表記の他に_DPのような表現も事前にDPを定数として定義しておけば可能ということです。
https://kikakurui.com/x3/X3001-1-2009-01.html
    • good
    • 1
この回答へのお礼

初心者の方々向けではないいくつかの事例や説明に出てくるのを見かけての質問でした。
_DP のような表記も確かに見かけました。


JIS を見てみようというのを失念してました。
精度を明記できる意味ではいいスタイルとは思いつつ、アンダーバーと言うのが見落としやすそうというので使うのがいいかどうか迷いました。
標準であれば、意味合いを考えながら安心して使おうかと思い始めたところです。

情報をありがとうございました。

お礼日時:2023/09/22 09:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A