c/c++ 言語はちょ~難しいである。それはどうしてか。知るかよ(笑)
実は規格がワガハイはよーわからんのである。c++11,c++14, c++17, c++20とかたくさんあるのである。らしいのである。
で、c++17の規格で使いたいならば -std=c++17 とかOptionをつけるらしいのである。
だが、そんなことよりも前の段階で拙者はどんづまルのである。整数の絶対値を
abs(整数)って出す関数があるが、これは規格としてはいつの何よさ?
これが複素数の絶対値もabs(複素数)ではなかったか。すると区別が必要であるぞ。そこらどないすんだろ。
ようするに、これこれを使う場合には それそれをインクルードしてねっというものの対応がいまいちわかっていないのであるねぇ。
手な感じで疑問は大膨張するのである。さらに、MicrosoftのVC++というものもあってな。あれは、GLだっけ。よーしらんが、VisualStudio2019Communityはインストしてあるし、たまに使うである。
まーようするに、ワシはどの規格のc/c++を使っているのだろう・・・・ってわかっていない次第である。
浅学非才!! 不勉強が身に染みる!! なんちーーて。
https://cpprefjp.github.io/reference/cmath/sin.html
・・・三角関数の例題 コードは次
#include <fstream>
#include <cmath>
int main()
{
static const double pi = 3.141592653589793;
std::ofstream file("sin.tsv");
for (double x = -3.0*pi; x <= 3.0*pi; x += 0.1) {
file << x << "\t" << std::sin(x) << "\n";
}
}
短いコードだが学ぶ点は多い!! テキトー。File Open/Closeの例もある。c++ではClose書かない
でも良いらしいですわ。
で、πの値が用意されていない。<math.h>にはあるのだがな。<cmath>にはないので書いている。
たぶん。
さらに、データをファイルに落としているのだが、これをグラフにするのはExcelで読み込んで
グラフ描画も可能ではあるが手数がかかるのである。
そういうわけでグラフは gnuplot 使えばよい。
VScodeのTeminal で wgnuplot と叩く。pwdでFolder確認したら、plot “sin.tsv” と叩くと
グラフが出る。
簡単に見るだけならそれだけで十分だ。

もう一つ、いまいちわかってないのが、
std::cout << "exp(1000) = " << std::exp(1000) << std::endl;
倍精度(64bit)の範囲外になる・・・ exp() はネイピア数のほうね。範囲外だからOverflowになる・・・と思ったら inf と出た。これはコンパイラが機転を利かせたのか?
てなわけで、この場合にエラーだ、Overflowだと表示してだな、プログラマに注意を促すにはどないしたらえーんじゃろか。
C++のエラーは、try ---- なんとかかんとかだった気がするが、そういう感じでの処理は?
で、C++の規格の話はどこへ? 知るかよ、もう。
posted by toinohni at 14:33| 東京 ☁|
Comment(0)
|
ソフト系雑学
|

|