- ベストアンサー
コード中で、100000000などの桁数を見やすくする文法表現
コード中に10000000などと大きな桁数を記述する時に、 このままだとぱっと見で100億なのか10億なのか分かりにくいと思うのですが、 これを読みやすく記述できる文法表現もしくは定例表現みたいなの ってあるのでしょうか? あったら教えて頂きたいです。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
template<int N1,int N2,int N3> inline int N() { return N1*1000*1000+N2*1000+N3; } N<10,000,000>(); とか。
その他の回答 (6)
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
No.6 です。茶々の上に、嘘を書いていました。 n = 10,000,000; で、n は、10 になります。 演算子の優先順位の関係で (n = 10) , 000, 000; と認識されるので。 また、, が演算子なので、 n = 10,099,099; はアウトです。(099 が8進数と 見なされるので、「不正な8進数」 になるから)
お礼
みなさんありがとうございました。
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
すみません、茶々に等しいのですが……。 int n; n = 10,000,000; という表記は、「文法的には」正しいです。 (エラーにはなりません) もちろん、期待したような意味にはなりませ んが。 (この場合、n は、ゼロになります) ちなみに、 int n = 10,000,000; はアウトです。 「コンマ演算子」というのがありまして。
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
場所にもよりますが、その定数の「由来」を 書くのが良いと思いますよ。式の形で。 例えば、1億にしても const n = 10000 * 10000; // 10000人×10000 レコード const n = 100 * 10000 * 100; // 100人×10000レコードが100セット よくありそうな数値で const secAll = 60 * 60 * 24 * 365; // 1年の秒数 とか。 いきなり大きな数値というのは、あまりなくて、 ソースに出てくる大きな数値は、何かの積で結果的 に大きな数値になっているケースが多いと思いますから。 そうすれば、(例えば、1年の秒数の例など)検算も 不要ですし。
お礼
なるほど勉強になります。 ありがとうございます。
- colder
- ベストアンサー率43% (30/69)
半分ネタですが、こんなのはどうでしょう。 #define XX(A,B,C) A##B##C int a = XX(10,000,000);
お礼
無理矢理やるとそんな感じになるんですね。 その文法知りませんでした。 ありがとうございます。
- koko_u_u
- ベストアンサー率18% (216/1139)
定数変数名を one_billion とか付ければいいだけでは?
お礼
確かにきりのいい数字ならそれでいいですし、 よく考えたら、defineとかを使う方法もありますね。 ちょっとよく考えてなかったです。 ありがとうございました。
補足
すみません、もう締め切ろうと思ってお礼したのですが、 やっぱりもう少しだけ残します。 というのも、この質問したのは 昔、ある言語で10000000を10'000'000と、 桁数を読みやすく区切って表記しても 動作してくれる言語を見た記憶があって、 Cでもそんな文法or表記方法があればいいな、と感じたからです。 コメントや変数名を通して伝えるのではなく、 桁数を分かりやすく表記できるのか?という疑問です。 (実用目的というよりは、むしろ好奇心に近いです) ぐぐっても出てこないので無さそうとは思ってますが… Cではこんな桁数区切る表記はできない(orできる)、という回答もらえたら締め切ります。お願いします。
- undeatta
- ベストアンサー率0% (0/1)
定例表現などはちょっと分からないですが・・ 分かりにくいコードなどを分かりやすくする方法としてコメントがあります C/C++では、「/*」から始まって「*/」で終わるまでの間の部分はコメントとして扱われ、どのような事が書いてあってもコンピュータは無視してくれます また、「//」が記述されると、その行のそれ以降の文字もコメントとして扱われます 以下のように記述すれば多少は分かりやすいのではないでしょうか↓↓ int main(void) { int n = 1000000000; //十億 ・・・ } それから、蛇足かもしれませんが大きい数字を扱う場合は、変数型に注意しましょう
お礼
Cではやっぱり現実的にはコメントなんでしょうかね。 回答、ありがとうございました。
お礼
なるほどありがとうございます。