
Fortran95 以降の Fortran で変数 a を以下のように倍精度に宣言しているとします。
real( Kind=8 ) :: a
この変数の値をプログラム中で1.0 だけ増やしたいとき、以下のように書くのは普通だと思います。
a = a + 1.0d0
それに対して以下のように書く事が出来ます。
a = a + 1.0_8
このアンダースコアに続けて Kind 値に相当する数を書く書き方は標準の文法にあるのでしょうか。
それとも、この書き方は推奨されないとかのように、なにか特定のコンパイラなどに依存する方言的なものなのでしょうか。
ご存じの方がいらっしゃったら教えてください。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
KIND に「8」を与えることが何を意味するか (あるいは「_8」と書くことによって何がどうなるのか), 規格上は何もいっていない. 処理系によっては「8 と書いてはいけない」かもしれないよ?
厳密にいうと「倍精度とは何ぞや」という指摘もありそうだけど.
No.2
- 回答日時:
念のため.
kind に 8 を指定したからといって「倍精度」とは限らない, というのは大丈夫?
それは種別番号8が必ずしも8バイトの8を意味するのではなく、コンパイラによってデフォルトが違ったりコンパイラオプションや意図的な指定で変わるということを指しているという理解でいいでしょうか?
No.1
- 回答日時:
少なくとも2009ではJIS規格に含まれますね。
p.29-31あたりに整数や実数で _種別 のような記述が出てきます。種別は数字列かスカラ整定数名です。なので_8のようなリテラル値による表記の他に_DPのような表現も事前にDPを定数として定義しておけば可能ということです。https://kikakurui.com/x3/X3001-1-2009-01.html
初心者の方々向けではないいくつかの事例や説明に出てくるのを見かけての質問でした。
_DP のような表記も確かに見かけました。
JIS を見てみようというのを失念してました。
精度を明記できる意味ではいいスタイルとは思いつつ、アンダーバーと言うのが見落としやすそうというので使うのがいいかどうか迷いました。
標準であれば、意味合いを考えながら安心して使おうかと思い始めたところです。
情報をありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
DLLファイルの逆コンパイラにつ...
-
サイクルカウントの方法
-
printfなど、標準関数のソース...
-
パーサとコンパイラの違いって?
-
C言語はC言語でできている?
-
Fortran の定数表現について
-
変数の内容がコロコロ変わる、...
-
python エラー
-
<unistd.h>をVisualStudioでつ...
-
エクセルのエラーメッセージ「4...
-
VC++6の「プロセスへアタッチ」...
-
アプリケーションのDLLファイル...
-
デバッグ中のエラーのことで教...
-
Visual studio2017で、2回目の...
-
” OS ビルド ” の意味が分か...
-
VC++.netにおけるソリューショ...
-
fortranでプログラムを実行する...
-
VB6とInputManソフトの関係
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
C++でデスクトップGUIアプリ開...
-
printfなど、標準関数のソース...
-
リリースモードとデバッグモー...
-
C++Builder → Visual C++ 移植...
-
<conio.h>?
-
パーサとコンパイラの違いって?
-
PICでのI2C通信でのマスタ、ス...
-
C言語はC言語でできている?
-
PIC18Fで変数の受け渡し...
-
組み込みソフト。ROM領域にデータ
-
COBOLの論理演算子について質問...
-
cc と gcc の違い
-
templateクラスの宣言と定義を...
-
変数の内容がコロコロ変わる、...
-
Out Of Near Heap Space?
-
最初に使う変数のゼロクリアに...
-
MPI プログラム
おすすめ情報