トップページ⇒tech
1001コメント319KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。

【歴代スレ】
1:http://pc5.2ch.net/tech/kako/1059/10590/1059041347.html
2:http://pc5.2ch.net/tech/kako/1067/10671/1067189450.html
3:http://pc2.2ch.net/test/read.cgi/tech/1069719929/ (消滅?)
4:http://pc2.2ch.net/test/read.cgi/tech/1073473867/ (消滅?)
5:http://pc5.2ch.net/test/read.cgi/tech/1077102238/ (dat落ち)
6:http://pc5.2ch.net/test/read.cgi/tech/1082182233/(dat落ち)
7:http://pc5.2ch.net/test/read.cgi/tech/1086373839/(dat落ち)
8:http://pc5.2ch.net/test/read.cgi/tech/1091264964/(dat落ち)
9:http://pc5.2ch.net/test/read.cgi/tech/1094494997/l50

【ラウンジ】質問、回答が長い時はココを使うと見やすい
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

関連スレは>>2-5ぐらい
0153vimNGNG
>>
0154デフォルトの名無しさんNGNG
>>151
ずらしたい行を選択してTAB。左にずらすときはShift+TAB。
0155デフォルトの名無しさんNGNG
>>152
>>154
お返事ありがとうございます
うまいこといきました
0156デフォルトの名無しさんNGNG
if(〜){
}else{
}

みたいに最初の { を if() の右側に書いてしまうのは
エディタのことを考えると良くない書き方なんでしょうか?
0157デフォルトの名無しさんNGNG
>>156
if文はいつもそんな感じで書きますが。
0158デフォルトの名無しさんNGNG
class c
{
};

f()
{
}

if (x) {
}
else {
}

try {
} catch (a) {
} catch (...) {
}

これ以外は認めない。
0159デフォルトの名無しさんNGNG
if( x )
{
}
else
{
}


try
{
}
catch( a )
{
}
catch(...)
{
}

だな、俺は。
0160デフォルトの名無しさんNGNG
>>147
だから修正するまでと書いただろう。読めないのか?
0161デフォルトの名無しさんNGNG
ifstreamのある位置からある位置までのバイナリデータを
ofstreamへコピーしたいのですが簡単に書く方法はありますでしょうか?

// ifsの[offset, pos)をofsへコピーしたい
size_t offset, pos;
ifstream ifs;
ofstream ofs;
.....
ifs.seekg(offset);
// ofs << ifs.rdbuf(); <-ifsを最後まで読むだけならこれで良いんですが・・・

大きなデータなのでバッファをちゃんと扱わないとマズイです。よろしくお願いします。
0162161NGNG
自己解決しました。すいません。
0163デフォルトの名無しさんNGNG
>>162
どう解決したのか教えてください。
0164161NGNG
istreambuf_iterator<char> iit(ifs);
ostreambuf_iterator<char> oit(ofs);
for(size_t i = 0; i < pos - offset; ++i, ++iit, ++oit){
*oit = *iit;
}

か,もしくは

int meta;
streambuf *isb = ifs.rdbuf();
streambuf *osb = ofs.rdbuf();
meta = isb->sgetc();
osb->sputc((char)meta);
for(size_t i = 0; i < pos - offset - 1; ++i){
meta = isb->snextc();
osb->sputc((char)meta);
}

としました.問題があるとか,もっと良い方法があるとかあったら指摘お願いします.
0165デフォルトの名無しさんNGNG
>>164
俺もいろいろ考えたけど、たぶんその前者が最適解でしょうな
0166デフォルトの名無しさんNGNG
>>161
std::copy使えよ
0167デフォルトの名無しさんNGNG
>>166
どうやるの?
0168デフォルトの名無しさんNGNG
istreambuf_iterator end = iit;
advance(iit, pos - offset);
copy(iit, end, oit);

かな
0169デフォルトの名無しさんNGNG
>>168
それ動く?
0170デフォルトの名無しさんNGNG
さあ。
動かないならcopy_n関数テンプレート作ればいいし
0171デフォルトの名無しさんNGNG
>>164
iit は終了チェックしなくていいの?
0172デフォルトの名無しさんNGNG
>>168は動かない。

ISO/IEC 14882:1998
24.5.3 Template class istreambuf_iterator
-3
Note that in the input iterators, ++ operators are not equality preserving,
that is, i == j does not guarantee at all that ++i == ++j. Every time ++ is
evaluated a new value is used.

24.5.3.5 istreambuf_iterator::equal
-1
Returns: true if and only if both iterators are at endofstream, or neither is
at endofstream, regardless of what streambuf object they use.
0173デフォルトの名無しさんNGNG
バッファを使いまわして
readとwriteで繰り返して操作した方が効率がいい。
0174164NGNG
アドバイスありがとうございます.

>168
istreambuf_iteratorはInputIteratorで入力を一度しかトラバースできないので
advanceは使えないかと思います.

>170
実は作ってたんですが171さんの言うように終了判定を考えると
copy_nの利用は危なそうだなと思ってやめました.

>171
省略してました.実際やるとしたら
for(size_t i = 0; i < pos - offset && iit != istreambuf_iterator<char>(); ++i, ++iit, ++oit){
...
な感じでしょうか?

>173
試してみます.
0175デフォルトの名無しさんNGNG
プログラミングを初めて、いろいろな本を読んだのですが、どうしても分からないので聞きます。
完全な独学で勉強したのでかなりトンチンカンなことを言っているかも知れませんが、自分なりに努力をしたのでお願いします。

前にシューティングアルゴリズムマニアックスという本を買ったのですが、

http://www.amazon.co.jp/exec/obidos/ASIN/4797327316/249-0856311-3939535

この本についてくるプログラムソースは弾、自機、背景、などを違う.cppファイルに記述しています。
しかし、コンパイルすると一つのゲームとしてビルドされます。
ヘッダーファイルであればincludeの記述を行うことでインクルードされることは分かるのですが、cppファイル同士、それも種類ごとに分けて記述したcppファイルを一つにするにはどのようにすれば良いのでしょうか?
一つのファイルに記述されたプログラムを順番に分割するのであれば、分かるのですが、このようにプログラムを並べたのでは同時にプログラムが処理されてしまうのではないのでしょうか?

多分かなりとんちんかんのことを言っていると思います。
どうしても一つのプログラムをいくつものファイルに分割して記述する方法が分かりません。
0176デフォルトの名無しさんNGNG
>>175
まず、ソースファイルは必ずしも分割して書く必要はない。しかしながら、あまりにも
1つ1つのソースファイルが大きくなると、コンパイルに時間がかかるし、少し変更した
だけでも全体をコンパイルしなおさなければならなくなる。それに、大きなファイルの
内容を管理するにしても、人間の頭にも限界があるし、普通は1人ですべてのコードを
書くわけでもない。だから、ソースを分けるという考え方が出てくる。さて、当然複数の
ソースをコンパイルすると複数のオブジェクトファイルが出来るわけだが、これらは
そのまま実行されるのではなく、リンカという別のプログラムに通され、結合される。
すると、ここでやっと1つのプログラムファイルが出来上がる訳だが、複数のオブジェクト
ファイルに対して複数の同時実行が行われるわけではない。たとえば、a.objという
オブジェクトファイルにfoo()という関数があり、これをb.objの中から呼び出していると
する。複数のオブジェクトファイルがあるから当然直接呼び出せない。これを解決する
役割を担うのがリンカ。こういう複数のオブジェクトファイル間の関数等の呼び出しを
解決するのが仕事。すると、結果的にファイルは1つになる(ダイナミックリンクは除く)
でしょう?
0177デフォルトの名無しさんNGNG
というか、色々な本を読むのはいいが、
いきなりゲーム開発の本なぞ読まずに
まずC/C++の入門書をきっちり仕上げろよ。
それをやってれば>>175の質問は出てこない。

ルールもろくに覚えてないうちに定石集買って
読んでも、そら分からんだろう。
0178デフォルトの名無しさんNGNG
Ruby最強!
0179デフォルトの名無しさんNGNG
全く初歩的なことだけど…
GUI環境って何のこと?ネタじゃないよ。。
0180デフォルトの名無しさんNGNG
ぐらふぃかるゆーざーいんたーふぇいすかんきょう
0181Ruby!!!!!!!!NGNG
READ THE FUCKING ARTICLE, YOU LAZY MOTHER FUCKER.
0182デフォルトの名無しさんNGNG
>>180
で、GUI環境はどこが重要なの??
0183デフォルトの名無しさんNGNG
>>182
鼠が画面上で動き回ることが出来る。
0184デフォルトの名無しさんNGNG
>>183
無かったら、動き回れない…っていうこと?
0185175NGNG
どこか、リンカについて分かりやすく解説してあるサイトはないですか?
家にある本ではさらりとしか解説されてなくよく分からないです。
MSDNも見ましたが余計にさっぱり分かりません。
0186デフォルトの名無しさんNGNG
スレ違いですけど聞きたいんでよろしくネ。(´◕ω◕`)
>>172の
>Every time ++ is evaluated a new value is used.
この文ってTYPOですか?
おれっちの脳内じゃ
Every time ++ evaluated, a new value is used.
こちらの方が正しいような気がするんだけど。どう?
0187デフォルトの名無しさんNGNG
>>182
エロDVDが見れる。ヌケル。そして、彼女要らず。
0188デフォルトの名無しさんNGNG
javaのパスの設定が上手くいきません……
j2sdk-1_4_1-windowsi586をインストールし、パスの設定を行った後に、サンプルアプリを動かそうとしたのですが、ダメでした……
「%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\pcdNavi\bin;C:\Program Files\Fujitsu\sa\dll;;C:\Program Files\Sonic\MyDVD」
がパスの変数値の最初の設定でした。
この末尾に「C:\j2sdk1.4.0_01\bin」と付け足したのですが、サンプルは動かないんです……
0189188NGNG
誤爆です……
0190デフォルトの名無しさんNGNG
>>186
evaluateするのは誰?
0191186NGNG
>>190
もち、++です。
0192186NGNG
>>191
あ゛。まちがった。
streambufの使用者。かな?
0193デフォルトの名無しさんNGNG
>>175
リンカについては知らんけど、>>177が言うように、C/C++の入門書で、基本をきっちりしたほうがいいよ。
俺も完全独学で、最初いきなりDirectXから入って、参考書のサンプルいじくって一応は動いてたど、
やっぱ不安なので猫さんのとこで基本勉強したら解るようになった。

いや、俺も昔分割コンパイルに疑問持ってたから、人事に思えなくてw
0194デフォルトの名無しさんNGNG
>>186
Every time ++ is evaluated, a new value is used.
のコンマが省略されたんだと思われ。
0195186NGNG
>>194
うん。その方が自然ですね。
分詞構文にもっていって副詞句として扱うのは無理がありましたね。
どうもありがとうございました。
0196デフォルトの名無しさんNGNG
void文を書いたのですが、「型の前に";"がありません」とエラーが出てしまいます、

//行列の表示
#include <stdio.h>
void show(int s[][3],int row);
void main(){
int a[][3]={10,20,30,40,50,60};
int i,j,row;
show(a,2);
void show(int s[][3],int row);
for(i=0;i<row;i++){
printf("| ");
for(j=0;j<3;j++){
printf("%d ",a[i][j]);}
printf("|\n");}}

色々試したのですができませんでした、原因をお教えいただけませんか。
0197デフォルトの名無しさんNGNG
>>196
void文って何?
一見めちゃくちゃなコードに見えるけどvoid文が何なのかわからないのでうかつにつっ込めない・・・。
0198デフォルトの名無しさんNGNG
int文とかprintf文とか
0199196NGNG
voidは値をreturnで返さない関数の文?
とかって聞いたのですが。

・・・滅茶苦茶なのかorz
0200デフォルトの名無しさんNGNG
>>196
もうむちゃくちゃすぎ。
想像で補って書いてみたが、
こういうことをしたかったのか?

#include <stdio.h>

void show(int s[][3],int row)
{
 for(int i=0; i<row; i++)
 {
  printf("| ");
  for(int j=0; j<3; j++)
   printf("%d ", s[i][j]);
  printf("|\n");
 }
}

int main(void)
{
 int a[][3] = {10,20,30,40,50,60};
 show(a, 2);

 return 0;
}
0201デフォルトの名無しさんNGNG
動かすだけなら↓でいいが。
関数をラベルのように定義するその書き方は何かのコンパイラの拡張?
#include <stdio.h>
void show(int s[][3],int row);
void main()
{
int a[][3]={10,20,30,40,50,60};
show(a,2);
}
void show(int s[][3],int row)
{
int i,j;
for(i=0;i<row;i++)
{
printf("| ");
for(j=0;j<3;j++)
{
printf("%d ",s[i][j]);
}
printf("|\n");
}
}

void文って、
void()
のこと?
0202デフォルトの名無しさんNGNG
>>196
ヒント:以下はごく自然なCのコード。

$include <stdio.h>

void show_string (const char *str);

int main (int argc, char *argv[]) {
  show_string("hello.");
  return 0;
}

void show_string (const char *str) {
  puts(str);
}
0203デフォルトの名無しさんNGNG
>>196
そういうエラーって{}がちゃんとなってなかったりしても出る
ガンガレ!
0204デフォルトの名無しさんNGNG
>>203
どうみても>>196はそれ以前の問題だろ
0205デフォルトの名無しさんNGNG
そういや,Metaware の High-C っていうコンパイラは
関数内関数を使えてたね。
# あと,よくわかんない反復子の仕組みもあったし。
# 今で言う「イテレータ」とはなんかちょっと違う概念だった気もするけど。
0206デフォルトの名無しさんNGNG
>>202
> $include <stdio.h>

(´ι_`)

あげあしでスマソ。
マジでこれで悩む初心者とかいたらいけないので念のため指摘。
0207デフォルトの名無しさんNGNG
>>205
関数内関数ってPASCALみたいな感じ?
0208デフォルトの名無しさんNGNG
>199
「文」という言葉の使い方が変。
式と文と関数はそれぞれ別の概念だ。
「戻り値 void の関数を書いたのですが」あたりじゃないかと思われ。
で、関数の定義の仕方が滅茶苦茶。
・関数の中で関数の定義はできない(独自拡張で可能な処理系もあるが)。
・2回目の void show(int s[][3],int row); ←のセミコロンは何よ?
0209デフォルトの名無しさんNGNG
>>206
自分でやっといてワラタ
っていうかもう寝ようw

>>207
うん。細かい仕様は忘れたけど,便利だった。
High-C は C コンパイラのくせに,C++ みたいに変数をどこででも
宣言できたりしてた。
0210196NGNG
voidの使い方自体が間違ってた?と言う事でしょうか。
ありがとうございます、もう一度一からやってみます。
0211デフォルトの名無しさんNGNG
voidの使い方は合ってるが・・・。
ほかのところが間違いまくってる。
0212デフォルトの名無しさんNGNG
>>210
引数なんかC99風の最新規格を使っときながら
なんでそんなに滅茶苦茶で異常なコードを書いてしまうのかわからん。
0213デフォルトの名無しさんNGNG
プログラムとか全然知らないんだけど
EXEの設定を弄くることは出来ますか?
例えばあるEXEが起動するとき「開始します」とかの表示を「開始するぞゴルァ」
みたいなのは出来るんですか?
またEXEを弄くるソフトは何ですか?
0214デフォルトの名無しさんNGNG
Windowsのマウスカーソルってどのプログラム(モジュール?)が制御してるんでしょうか?
0215デフォルトの名無しさんNGNG
とりあえず普通に丁寧に書いたら>>200みたいになる。
0216デフォルトの名無しさんNGNG
>>213
板違い。
そういうソフトを作りたいのならこの板でかまわんけど。
0217デフォルトの名無しさんNGNG
>>213
文字列がリソースとして定義されているならResource Hackerかな。
でなけりゃ資料を見ながらバイナリエディタで書き換えるかOllyDBGとかのデバッガつかうか。
しかし素人にはオススメできない。
0218デフォルトの名無しさんNGNG
Resource Hackerとバイナリエディタを検索してみて色々やってみたいと思います
ありがとうございました
0219196NGNG
>200
実行してみたら、やりたい通りになってました、ありがとうございます
>201
voidを使って行列を書いてみる、というのが課題でして・・・
voidの使い方とか、webで調べたんですが、何か勘違いしたヨウで・・・
>202
charというのはまだちょっと分らないので、あとで調べてみます
>208
セミコロンは間違えて付けてしまったものです、すいません
0220デフォルトの名無しさんNGNG
new delete について質問です。

new で確保したメモリ領域は、delete で開放しろと、
いろいろな解説ページで見たのですが、
開放しないままプログラムが終了すると、どうなるのでしょうか?

簡単なプログラムを作って試してみたところ、
プログラムが終了した時点で、メモリは開放されているようなのですが、
プログラム終了時にわざわざ delete でメモリを開放する処理を入れる必要はあるのでしょうか?
0221デフォルトの名無しさんNGNG
>>220
開放しないと、メモリリークが起こる。
そうなるとフリーズしたり、いろいろ障害がでる、と聞いてる。

newだけがメモリを確保するのではなく、グローバル変数などもメモリを確保している。
プログラムが終了したときに開放されたのは、そういった変数だと思う。
って、俺もちょっと曖昧なので他の人、修正・補足お願い。
0222デフォルトの名無しさんNGNG
>220
「malloc()して(プログラム終了時に)free()しない」、なら、百歩譲って許せなくもないが、
deleteはメモリの開放だけでなく、デストラクタの実行も担っているから、
絶対に省略はあり得ない。
0223デフォルトの名無しさんNGNG
まあ (常識的な OS なら) メモリくらいはプログラム終了時に
自動で解放してくれるけどね。

でもいちいち
「このオブジェクトは delete しなきゃいけない。
 このオブジェクトはただのメモリの塊だから delete しない。
 こっちのは……どうだっけ?」
とか考えるの('A`)マンドクセ
0224233NGNG
おっと、誤解されそうな予感。
要するに、delete が必要か不要かを考えたり
あまつさえ省略しようと企んだりするのは
激しく徒な遠回りだよって事。
0225223=224NGNG
あーもう。漏れ>233じゃねーし。
つーか盛れが抱えてる問題が解決しねーし。イラつく。もう寝ようっと。
0226デフォルトの名無しさんNGNG
>>220
デストラクタの実行を無視すれば、
小規模なプログラムなら終了時にまとめてメモリ解放
でもなんとかなると思うが、ある程度の規模になると
いらないデータがメモリを占有しつづけるのは非効率的
になってくる。

GCが信頼できる環境でないかぎりは解放するのが無難。
普通のプログラマなら「開けたら閉める」
ってのは普通の感性じゃないかなぁ。
0227デフォルトの名無しさんNGNG
>>219
>voidを使って行列を書いてみる、というのが課題

行列(を格納した配列)をvoidポインタで渡すようにして
ルーチンを汎用化するって意味ではないかと思った。
だとすると >>196 はまったく的外れ。
行列の幅を固定しちゃってるし。

おそらく課題はC言語で書くことだと思うけど、
念のため補足しておくとCとC++では作法が結構違う。
C++ならそれの実現のためにvoidポインタを使うべきではない。
0228220NGNG
>>221 222 223 226
なるほど、やはりDeleteした方が、
無難…、というかDeleteするのが常識かもしれませんね。
ご返答ありがとうございました。
0229デフォルトの名無しさんNGNG
ったくど素人が何いってんだか...

終了時のdeleteなんか時間のムダ

もし省略するとシステムにダメージを与えるような
処理をデストラクタ内で行なっているならば、それは設計ミス

そういうたぐいの後始末は専用の関数かなんかにして
シグナルハンドラで呼び出すのが正しい

だから必要なdeleteなどなく、何も考えずに終われって事だ

0230デフォルトの名無しさんNGNG
フレーム論争やりたいならnewsにでも逝け
0231デフォルトの名無しさんNGNG
floatの定数を、バイナリーデータとしてそのままint型に代入したいのですが、どうしたらよいでしょうか。

float a = 1.23456f;
int b;
b = *((int*)&a);

みたいなことを、変数aを使わずに b = ... のように行いたいのです。
int は float とデータサイズは同じと考えていただいて結構です。
0232デフォルトの名無しさんNGNG
*(float*)&b=1.23456f
0233186NGNG
>>231
union {
float f;
int n;
}fton;
0234186NGNG
やべっ。
186そのままだった。はずかしいーーー。
0235231NGNG
>>232-233
ありがとうございます。

すみませんが、もう一つ質問がありまして、

struct {
int type;
union {
int idata;
float fdata;
} data;
} tdata;

tdata sample_data[] = {
{ 1, 20 },
{ 2, 3.456f },
{ 1, 123 },
:
};

のように初期化したいのです。
メンバ"type"は、メンバ"data" の型を表し( 1ならint、2ならfloat など)、
メンバ"data"には int あるいは float の値が入ります。

union を使用すると、初期化時には最初の型(この場合、idataの型=int)で初期化せねばならないようで、
上のリストのように初期化することができず、また、>>232 のような方法でも書くことができません。

どうしたらよいのでしょうか。
0236デフォルトの名無しさんNGNG
全部整数として書け
値は int i; *(float*)&i=,3.456f; printf("%d",i) ってやって調べろ
0237デフォルトの名無しさんNGNG
文字列の分割をしたいのですが、strtokの挙動が今ひとつよく分かりません。

#include <stdio.h>
#include <string.h>
int main(){
    char str[]="信長<><>2004/10/18 12:42:45<><>はじめまして<><>カッコイイHPですね。\nこれからちょくちょく遊びに来ますんで。\nよろしく。";
    char sp[]="<><>";
    char *r=NULL;
    r=strtok(str,sp);
    while(r != NULL){
        printf(">>%s\n",r);
        r=strtok(NULL,sp);
    }
    return 0;
}

char sp[]="<><>"の部分を
char sp[]="<>"にしても、char sp[]="k<>"にしても、同じ結果になります。
どうしてでしょうか?
0238デフォルトの名無しさんNGNG
excel形式でファイルを出力したいんですがどうしたらよいでしょうか
0239235NGNG
>>236
やはりそうするしかないですかねー。そういうマクロでもあれば良いんですけど…。

あるいは、逆に全部 float で書いて、使うときに int にキャストとか。
(辻褄はあうけど、明らかに曲がったやり方だと思う)

printfするにはデータ量が膨大なので、とりあえず、前処理するツールを作って
それを通して吐き出させようかと思います。
(といっても、ホントに *.*f を 0x???????? に書き換えるだけなので、
そのために一段階増えるなんてもったいない気がしてなりませんが)

なにか他に方法があれば教えてください。

0240デフォルトの名無しさんNGNG
>>237
char sp[]="<><>\n";
こーゆーこと?
0241デフォルトの名無しさんNGNG
>>237
manなりhelpなりでstrtokをちゃんと調べれー
第二引数は「デリミタ文字群」だ
0242デフォルトの名無しさんNGNG
>>239
リダレクト使えば
0243デフォルトの名無しさんNGNG
char str[]の文字列の中にkが無いから
0244デフォルトの名無しさんNGNG
プログラムの量が多くなってくるとデバッグが大変だね
バグを単離して同定することすら難しくなってきた
デバッグするときのこつを教えてください

再現性のあるバグなら予想はつくんだけど
なかなか再現性が見いだせないバグはやっかいだね…
0245デフォルトの名無しさんNGNG
VC++5.0 WindowsNTWS4.0でWin32 dllのプログラムを
作成していますが、その内部で、

printf("%I64d\n", i64);

が表示できず、そのままI64dと表示されます。
i64は「__int64」で定義しています。
これを64bit値で正しく表示するにはどうすればいいですか?

あと、演算結果を__int64の型の変数に入れたにもかかわらず、
2の31乗を越えた値がマイナスになります。これはどうしてですか?
0246デフォルトの名無しさんNGNG
std::auto_ptr<int> p(new int);
std::auto_ptr<int> p2(p);
std::auto_ptr<int> p3(new int);
std::auto_ptr<int> p4(p3.release());

VC6付属のSTLではp2, p4に所有権が移動するだけでポインタ値は残るのですが
STLPortではp, p3のポインタ値が空になります。
どちらの振る舞いが正しいのでしょうか…
0247デフォルトの名無しさんNGNG
>>245
>あと、演算結果を__int64の型の変数に入れたにもかかわらず、
>2の31乗を越えた値がマイナスになります。これはどうしてですか?

intで計算してるんだろ。__int64に格上げしてやれ。
0248デフォルトの名無しさんNGNG
>>246
auto_ptrの仕様でもよみな。
ちなみVC6のC++の挙動を正しいと思わんことだ。
0249246NGNG
どうやらVCの方の振る舞いは古い仕様のようです。
ttp://www.hey-to.net/ML-archive/vcppML/2000/msg07069.html
0250デフォルトの名無しさんNGNG
仕様に規定されてる?
0251245NGNG
>>247
明確に(__int64)でキャストは行っているのですが・・・。

おそらく__int64で定義されているにもかかわらず、32bit
という扱いにされていると思うのですが・・・。
0252デフォルトの名無しさんNGNG
環境疑う前にソース晒せ
I64の所も含めて、小細工せずにコピペで
■ このスレッドは過去ログ倉庫に格納されています