【初心者歓迎】C/C++室 Ver.62【環境依存OK】 7桁というか、ひとくくりにするなら実質6桁だと思うんだけど
ということは、 1234567.89012345 だと 1234567 になるってことですよね つまり、数値の小さい順に並べると char short float long int double long long ですね新発見です
1.234567 * 10^35 みたいな数字も表現できるってことだよ まあ詳しく知りたければIEEE754の浮動小数点数フォーマットを調べてみれ
それが本当なら確かにびっくりな新発見だ
理解できました。 char short long int long long float double でした。 ありがとうございます!
整数の正負を反転させる関数はありませんか?
* -1
単項-演算子でいいじゃない。 関数が必要なら自分で作れ。ただし、C++なら<functional>にnegateがある。
int a, b; a = -b; ってことですか? なんか頭の出来の問題なきがしてこなくもないですが、ありがとうです。
>>956 なんか全然理解できてない気がするよ……。
とりあえず「浮動小数点数」でぐぐっとけ。な。
c++のエディターで一番使いやすいのは何ですか?
>>963 やはりそうですか・・・
あれってc++の解説サイトのソースをそのまま乗せるとcoutが定義されてないって出ますよね・・・
std::を先につけるとできるんですがこれってなんとか省けませんか?
省けるけど、省かない方で慣れた方が幸せになれる。 どうせ std:: ってやったときに候補が出るし。
「C++のエディタ」って表現も凄いな。 それはさておき、using namespace std;。
ああ、教えてしまった。禁断の呪文を。 ヘッダファイルにだけは絶対書くなよ! お兄さんとの約束だ!
初心者の私には何言ってるのか全くわかりません・・・
俺も学びはじめのころはstd::うざいと思ってたけど 今は妙な名前衝突させないためにむしろ書かないと安心できない
>>964 それVisual C++特有の問題ではなく、現代のC++はそういうものと決まっているからだぞ。
#undef みたいに unusing が欲しいなと何度か思った。 まぁ{}でくくれってことなんだろうけど。 あと untypedef とか
uninlineは欲しいと何度も思ったが
コンパイラが勝手にインライン化するかもしれないのに何故w
>>974 関数へのポインタを static const で持つんだ!
>>974 そもそも inline 使いすぎなんじゃねーの。
例えばpimplの実装を.cpp内に書くとき 外部にインターフェースを公開するわけでもないのに わざわざメンバ関数の宣言と実装を別々に書くのがわずらわしいんだよ。 公開しない=固定する必要は無いわけで パラメータの変更とか内部使用の関数追加とかしょっちゅうだし。
>>978 ???じゃぁ別々に書かずにいっしょに書けばいいじゃん。
MAX_PATHっていうのは、終端文字も含めた長さなのか、そうでないのかどちらですか?
>>979 だからclass内に関数を書くと
強制的にinline指定したのと同じになるのが嫌だと言ってるんだろ?
もしかして日本語苦手?
それを知らなかっただけだろ
>>981 それは知ってるが、 .cpp 内でしか使わない関数が inline になって何かデメリットあんの?
>>981 class hoge {
:
private:
#include "hoge_privates.c" // お悩み解決!!
:
};
>>983 実装が複数のコンパイル単位に渡る
超巨大クラスたったんだよ!
速度なんか微塵も求められてない部分がinlineで肥大化する まさかとは思うけど、 実装が.cpp内にあるものは1箇所からしか呼ばれない、なんて思ってはいないよね
特にWin環境でスタック上にオブジェクトを確保して デストラクタやら例外処理コードやらが何回も詰め込まれたら もうメロメロですよ。
class内関数をインラインにしたくなかったらvirtualを付ければいいよ
VCならinlineのみインライン展開するってオプションがあるんだけどな
VC8では、pdbを生成せずにイメージにデバッグ情報を付加することはできますか?
VCのことはVCスレでやれよ
>>992 たらい回しでもう3回質問しました;;
半分諦め気味なのですがそちらでも聞いてみます。
ありがとうございます。
>>988 virtualを付けると実体がどこかに確保される、というだけで
コンパイル時にはそれとは別にinline展開されたコードが埋め込まれると思うよ。
大抵のコンパイラでは。
C++の規格ではvirtualな関数をinline展開することを禁止していないし
両方指定すること(class内に書いた関数にvirtualをつけること)も当然出来るから。
あ、でも、実体の型が明確に判明している時しか実際には展開できないね。 例えばpimplだったら、コンストラクタ内で呼び出しているものしか 実体の型は判別出来ないから、展開されないか。
>>981 は inline 関数が必ず inline 展開されるとでも思っているのだろうか・・・。
inline 展開を最適化するのも最適化の範疇だろ。
人間のアホな頭で考えるより、全部コンパイラ様に任せた方が良い。
失礼します コンストラクタについての質問なのですが C → B → A の順で自身のコンストラクタを呼び出すことは可能でしょうか? 可能であればどのように書けばよいか教えてください 下の例は簡略化しているので全パターン書いても大したことはないですが 実際のものはもう少し引数が増えます class hoge { int m_foo, m_bar; public: hoge(int foo, int bar) : m_foo(foo), m_bar(bar){} // A hoge(int foo) : hoge(foo, 100-foo){} // B hoge(void) : hoge(rand()){} // C }; ※これはコンパイルエラーになります
>>996 おまえはコンパイラが
「この部分は何百万回も呼び出されるから速度を優先」
「この部分は例外的な時にしか呼ばれないからサイズを優先」
といったことを判断できると思っているのか。
そりゃすげーや。
inline指定がヒントに過ぎないなんて誰でも知ってる。 どんな入門書にすら書いてある。
static宣言された関数と勘違いしてるのでは?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。