【初心者歓迎】C/C++室 Ver.62【環境依存OK】

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2009/01/08(木) 18:10:44
7桁というか、ひとくくりにするなら実質6桁だと思うんだけど
953デフォルトの名無しさん:2009/01/08(木) 18:38:04
ということは、
1234567.89012345
だと
1234567
になるってことですよね
つまり、数値の小さい順に並べると
char
short
float
long int
double
long long
ですね新発見です
954デフォルトの名無しさん:2009/01/08(木) 18:41:05
1.234567 * 10^35
みたいな数字も表現できるってことだよ

まあ詳しく知りたければIEEE754の浮動小数点数フォーマットを調べてみれ
955デフォルトの名無しさん:2009/01/08(木) 18:41:07
それが本当なら確かにびっくりな新発見だ
956デフォルトの名無しさん:2009/01/08(木) 18:55:49
理解できました。
char
short
long int
long long
float
double
でした。
ありがとうございます!
957デフォルトの名無しさん:2009/01/08(木) 20:24:15
整数の正負を反転させる関数はありませんか?
958デフォルトの名無しさん:2009/01/08(木) 20:29:07
* -1
959デフォルトの名無しさん:2009/01/08(木) 20:33:01
単項-演算子でいいじゃない。
関数が必要なら自分で作れ。ただし、C++なら<functional>にnegateがある。
960デフォルトの名無しさん:2009/01/08(木) 20:36:28
int a, b;
a = -b;
ってことですか?
なんか頭の出来の問題なきがしてこなくもないですが、ありがとうです。
961デフォルトの名無しさん:2009/01/08(木) 22:35:38
>>956
なんか全然理解できてない気がするよ……。
とりあえず「浮動小数点数」でぐぐっとけ。な。
962デフォルトの名無しさん:2009/01/08(木) 23:05:42
c++のエディターで一番使いやすいのは何ですか?
963デフォルトの名無しさん:2009/01/08(木) 23:09:00
>>962
VisualStudio2008
964デフォルトの名無しさん:2009/01/08(木) 23:17:48
>>963
やはりそうですか・・・
あれってc++の解説サイトのソースをそのまま乗せるとcoutが定義されてないって出ますよね・・・
std::を先につけるとできるんですがこれってなんとか省けませんか?
965デフォルトの名無しさん:2009/01/08(木) 23:18:40
省けるけど、省かない方で慣れた方が幸せになれる。
どうせ std:: ってやったときに候補が出るし。
966デフォルトの名無しさん:2009/01/08(木) 23:19:03
「C++のエディタ」って表現も凄いな。

それはさておき、using namespace std;。
967デフォルトの名無しさん:2009/01/08(木) 23:21:00
ああ、教えてしまった。禁断の呪文を。
ヘッダファイルにだけは絶対書くなよ!
お兄さんとの約束だ!
968デフォルトの名無しさん:2009/01/08(木) 23:22:36
初心者の私には何言ってるのか全くわかりません・・・
969デフォルトの名無しさん:2009/01/09(金) 00:12:27
俺も学びはじめのころはstd::うざいと思ってたけど
今は妙な名前衝突させないためにむしろ書かないと安心できない
970デフォルトの名無しさん:2009/01/09(金) 00:29:05
>>962
eclipse の CDTプラグイン の エディタ
細かい設定ができますよ。

一括ダウンロードできるサイト、
http://mergedoc.sourceforge.jp/index.html#/pleiades.html
jarありのC++っての
971デフォルトの名無しさん:2009/01/09(金) 01:08:36
>>964
それVisual C++特有の問題ではなく、現代のC++はそういうものと決まっているからだぞ。
972デフォルトの名無しさん:2009/01/09(金) 01:35:39
>>964
規格票ぐらい買え
973デフォルトの名無しさん:2009/01/09(金) 07:46:26
#undef みたいに unusing が欲しいなと何度か思った。
まぁ{}でくくれってことなんだろうけど。
あと untypedef とか
974デフォルトの名無しさん:2009/01/09(金) 08:10:13
uninlineは欲しいと何度も思ったが
975デフォルトの名無しさん:2009/01/09(金) 11:13:09
コンパイラが勝手にインライン化するかもしれないのに何故w
976デフォルトの名無しさん:2009/01/09(金) 11:14:18
>>974
関数へのポインタを static const で持つんだ!
977デフォルトの名無しさん:2009/01/09(金) 11:14:58
>>974
そもそも inline 使いすぎなんじゃねーの。
978デフォルトの名無しさん:2009/01/09(金) 11:37:25
例えばpimplの実装を.cpp内に書くとき
外部にインターフェースを公開するわけでもないのに
わざわざメンバ関数の宣言と実装を別々に書くのがわずらわしいんだよ。

公開しない=固定する必要は無いわけで
パラメータの変更とか内部使用の関数追加とかしょっちゅうだし。
979デフォルトの名無しさん:2009/01/09(金) 11:50:33
>>978
???じゃぁ別々に書かずにいっしょに書けばいいじゃん。
980デフォルトの名無しさん:2009/01/09(金) 11:53:49
MAX_PATHっていうのは、終端文字も含めた長さなのか、そうでないのかどちらですか?
981デフォルトの名無しさん:2009/01/09(金) 11:59:32
>>979
だからclass内に関数を書くと
強制的にinline指定したのと同じになるのが嫌だと言ってるんだろ?

もしかして日本語苦手?
982デフォルトの名無しさん:2009/01/09(金) 12:04:13
それを知らなかっただけだろ
983デフォルトの名無しさん:2009/01/09(金) 12:45:58
>>981
それは知ってるが、 .cpp 内でしか使わない関数が inline になって何かデメリットあんの?
984デフォルトの名無しさん:2009/01/09(金) 12:52:13
>>981
class hoge {
  :
private:
  #include "hoge_privates.c" // お悩み解決!!
  :
};
985デフォルトの名無しさん:2009/01/09(金) 12:53:24
>>983
実装が複数のコンパイル単位に渡る
超巨大クラスたったんだよ!
986デフォルトの名無しさん:2009/01/09(金) 13:15:41
速度なんか微塵も求められてない部分がinlineで肥大化する

まさかとは思うけど、
実装が.cpp内にあるものは1箇所からしか呼ばれない、なんて思ってはいないよね
987デフォルトの名無しさん:2009/01/09(金) 13:25:34
特にWin環境でスタック上にオブジェクトを確保して
デストラクタやら例外処理コードやらが何回も詰め込まれたら
もうメロメロですよ。
988デフォルトの名無しさん:2009/01/09(金) 18:12:46
class内関数をインラインにしたくなかったらvirtualを付ければいいよ
989デフォルトの名無しさん:2009/01/09(金) 18:18:01
VCならinlineのみインライン展開するってオプションがあるんだけどな
990デフォルトの名無しさん:2009/01/09(金) 18:23:22
VC8では、pdbを生成せずにイメージにデバッグ情報を付加することはできますか?
991デフォルトの名無しさん:2009/01/09(金) 18:24:41
VCのことはVCスレでやれよ
992デフォルトの名無しさん:2009/01/09(金) 18:48:41
>>990
なんでVS2005スレの次にここを選んだんだか
ここでいいと思うよ
http://pc11.2ch.net/test/read.cgi/tech/1230008197/
993デフォルトの名無しさん:2009/01/09(金) 19:03:53
>>992
たらい回しでもう3回質問しました;;
半分諦め気味なのですがそちらでも聞いてみます。
ありがとうございます。
994デフォルトの名無しさん:2009/01/09(金) 19:17:07
>>988
virtualを付けると実体がどこかに確保される、というだけで
コンパイル時にはそれとは別にinline展開されたコードが埋め込まれると思うよ。
大抵のコンパイラでは。

C++の規格ではvirtualな関数をinline展開することを禁止していないし
両方指定すること(class内に書いた関数にvirtualをつけること)も当然出来るから。
995デフォルトの名無しさん:2009/01/09(金) 19:22:12
あ、でも、実体の型が明確に判明している時しか実際には展開できないね。
例えばpimplだったら、コンストラクタ内で呼び出しているものしか
実体の型は判別出来ないから、展開されないか。
996デフォルトの名無しさん:2009/01/09(金) 19:40:59
>>981 は inline 関数が必ず inline 展開されるとでも思っているのだろうか・・・。
inline 展開を最適化するのも最適化の範疇だろ。
人間のアホな頭で考えるより、全部コンパイラ様に任せた方が良い。
997デフォルトの名無しさん:2009/01/09(金) 19:53:52
失礼します
コンストラクタについての質問なのですが
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
};
※これはコンパイルエラーになります
998デフォルトの名無しさん:2009/01/09(金) 19:57:55
>>996
おまえはコンパイラが
「この部分は何百万回も呼び出されるから速度を優先」
「この部分は例外的な時にしか呼ばれないからサイズを優先」
といったことを判断できると思っているのか。

そりゃすげーや。
999デフォルトの名無しさん:2009/01/09(金) 19:59:26
inline指定がヒントに過ぎないなんて誰でも知ってる。
どんな入門書にすら書いてある。
1000デフォルトの名無しさん:2009/01/09(金) 19:59:32
static宣言された関数と勘違いしてるのでは?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。