【初心者歓迎】C/C++室 Ver.38【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.38【環境依存OK】 - 暇つぶし2ch787:デフォルトの名無しさん
07/06/19 19:01:28
コンパイルエラーが出るソース。
#include <windows.h>

#pragma comment(linker, "/section:.share,RWS")
#pragma data_seg(".share")
int x = 1;
#pragma data_seg()

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, PSTR szCmdLine, int iCmdShow)
{
 MessageBox(NULL, TEXT("HOGE"), NULL, MB_OK);
 return TRUE;
}

++x; がないだけ。
↑のは ×初期化されない ○一度も利用されることがない
かと思っています。

788:デフォルトの名無しさん
07/06/19 20:14:08
最適化で消されてるだけじゃないかな
/Faで.asm見ればわかるよ

789:デフォルトの名無しさん
07/06/19 22:00:05
スカトロCGを激しく集めるスレver27
スレリンク(ascii2d板:537番)

537 名前:名無したん(;´Д`)ハァハァ[sage] 投稿日:2007/06/19(火) 21:47:45 ID:C++ilogK
>>528

 試 し た の か ? 

IDがC++

790:デフォルトの名無しさん
07/06/19 22:08:56
よりにもよってスカかよw

791:デフォルトの名無しさん
07/06/19 22:12:52
しかも logK か。
何か化学的な雰囲気を感じるぞ。

792:730
07/06/19 22:17:42
>>759
Color::ColorDimension が定数でなかった場合の動作はどうなりますか?
クラスのstaicオブジェクトが初期化される順番は未定義であるように、
初期化順序が未定義なために不定動作となるのか、
派生関係があるので初期化順序をコンパイラが考えてくれるのか、
どちらになるのでしょうか?


793:デフォルトの名無しさん
07/06/19 23:26:19
>>792
テンプレート展開はコンパイル時に行われるから、
コンパイル時に判明する定数値しかを与えることができない

794:730
07/06/19 23:51:30
>>793
ああなるほど、確かにそうですね。これはテンプレートを使わない場合も同じですよね。
コンパイル時に行われるということを考えると文法も分かりますね。

・OKな例
class Base
{
public:
static const int A;
};
class Derived : public Base
{
public:
static const int B;
};
const int Base::  A = 1;
const int Derived:: B = A;

・ダメな例
class Base
{
public:
static const int A;
};
class Derived : public Base
{
public:
static const int B = A;
};
const int Base::  A = 1;

たしかにwww。ありがとうございました。

795:デフォルトの名無しさん
07/06/19 23:55:57
いかん
最近始めたCの勉強をここ一週間ほどさぼってたんだが
ここ見てちょっと焦ってきた
いかんいかん

796:デフォルトの名無しさん
07/06/20 01:49:32
例としてですが、とある値を格納するクラスを作ってます。型はテンプレートで
template<typename T> value_t
{
public:
  T get() const { return value; }
  void set(T n) { value = n; }
private:
  T value;
};
という感じになると思います。value_t<int> とかなら問題ないと思いますが、
(普通は参照を使って渡す)クラスや構造体が型に指定されると、
無駄にコピーコンストラクタが呼ばれたりすると思うので、微妙な感じになってしまいます。
ということで、最初から参照を使って、
template<typename T> value_t
{
public:
  const T & get() const { return value; }
  void set(const T &n) { value = n; } // ここで operator= が呼ばれるのは問題ないことにする
private:
  T value;
};
こう書いても問題ないですか?(というか、こう書くべきですか?)

797:デフォルトの名無しさん
07/06/20 02:00:31
問題はないけど、
プリミティブ型だと結構遅くなる。


798:デフォルトの名無しさん
07/06/20 02:37:39
>>796
boost::call_traitsはどう?
もしくは、参照を扱うメソッドと値を扱うメソッドの2パターン作るとか

799:デフォルトの名無しさん
07/06/20 08:26:49
>>783
>>788
ありがとう。「最適化で消された」みたいです。腑に落ちました。

800:デフォルトの名無しさん
07/06/20 12:49:37
ofstream ofs("a.txt",ios::app);
ofs << ((LPCREATESTRUCT)lParam)->lpszClass << ',' << ((LPCREATESTRUCT)lParam)->lpszName << endl;
や、
if (!lstrcmp(((LPCREATESTRUCT)lParam)->lpszClass,"ClassName") && !lstrcmp(((LPCREATESTRUCT)lParam)->lpszName,"WindowName"))
だとプログラムがクラッシュすることがあります。(lpszClass、lpszNameどちらか一方のみでも)

ofs << ((LPCREATESTRUCT)lParam)->hwndParent << endl;
や、
if (((LPCREATESTRUCT)lParam)->hwndParent == FindWindow("ClassName","WindowName"))
のようにhwndParentならクラッシュしません。これは何が原因でしょうか?

801:デフォルトの名無しさん
07/06/20 12:51:30
>>800
各変数の値がどうなってるかくらい調べろよ

802:デフォルトの名無しさん
07/06/20 12:56:12
>>800
とりあえず無節操に行われているこのキャスト (LPCREATESTRUCT)lParam が怪しすぎる。
キャストが安全である根拠はあるか?
キャストが安全だとして、有効なポインタが渡されてるという保証はあるのか?

803:800
07/06/20 13:04:12
>>801
すみません、フックなので変数を予測できず、どの値でクラッシュしてるか分かりません。

>>802
ウィンドウプロシージャのメッセージがWM_CREATEの時に使用してるので大丈夫だと思うのですが。

804:デフォルトの名無しさん
07/06/20 13:13:25
C++で安全なコードを書きたいなら、キャスト前のチェックとか、
->の元がNULLでないことを保証するassertなんかは必須かと

というか、クラッシュするコードの lpszClassや lpszNameの内容チェックコードを
処理の前に挿入してログにでも吐けばいいんじゃね?

805:デフォルトの名無しさん
07/06/20 13:17:03
>>803
予測なんてしなくていいから、デバッグ実行しろ。

806:800
07/06/20 13:41:47
>>804
lstrcmp~でクラッシュするのでofstream~で値を確認しようとしたんですが駄目だったんです。

>>805
デバッグしたんですが慣れてないので分からなかったんです、ごめんなさい。

807:デフォルトの名無しさん
07/06/20 13:56:34
MSDNのCREATESTRUCTに関するヘルプには
Because the lpszClass member can contain a pointer to a local
(and thus inaccessable) atom, do not obtain the class name
by using this member. Use the GetClassName function instead.
と書かれているようだが。
lpszClassに直接アクセスしてクラス名を取得しようとするな
ってことじゃねえの。

808:800
07/06/20 15:24:02
>>807
わざわざありがとうございました。

809:デフォルトの名無しさん
07/06/20 19:21:18
class Stone{
public:
Stone();
int color, groupNumber;
Stone *nextStone, * groupHead, *nextGroup;
};

Stone::Stone(){
color = groupNumber = 0;
*nextStone, = *groupHead, = *nextGroup = 0; // (1).ここで整数を代入できない
}
というStoneオブジェクトのインスタンスを21*21の二次元配列として生成して、
Boardオブジェクトを作りたいと考えています。

改行が多いといわれたので続きます

810:809の続き
07/06/20 19:22:32
class Board{
public:
   Board();
   Stone board[21][21];
   Stone *boardHead;
};

Board::Board{
*boardHead = &board; // (2).Stone(*)型はStone型に変換できない
for(int i; i < 20; i++){
int j;
for(j; j < 19; j++){
board[i][j].color = 3;
board[i][j].(*nextGroup) = board[i][j + 1];
   }
board[i][j].color = 3;
board[i][j].(*nextGroup) = boardboard[i + 1][1}; // (2).と同様
}
と表記したところ、(1).(2)のエラーが起きました。
配列の要素一つ一つにポインタを持たせて、グループ化をしたいと思っています。どうすればよいのでしょうか?

811:809、810
07/06/20 19:24:44
すいません。書き忘れです。

(1)では、ヌルポインターを取り合えず代入したいと思っています。
(2)では、配列番号から、要素のポインターを代入したいと思っています。

812:デフォルトの名無しさん
07/06/20 19:29:47
(1)のところには、余計なカンマが付いている
(2)の最初の箇所は、余計な*が付いている
2つ目の(2)は、board[i][j].nextGroup = &boardboard[i + 1][1];にしろ

813:デフォルトの名無しさん
07/06/20 19:31:34
(1)で*付ける意味も分からんし

nextStone = groupHead = nextGroup = 0;

とか

814:デフォルトの名無しさん
07/06/20 19:33:43
すみません、質問させてください。

void foo(const char *const& hoge);

のような宣言の関数があるのですが、引き数定義部分の「const&」の意味が
分からずに悩んでいます。この宣言はどう解釈すればよいのでしょうか?
よろしくお願いします


815:デフォルトの名無しさん
07/06/20 19:42:09
constな(C++の)参照

宣言自体の読み解き方がわからなければ、ここでも読んでおけ
URLリンク(kmaebashi.com)
Cだから参照は出てこないが、ポインタの*と同じような要領で解釈しろ

816:デフォルトの名無しさん
07/06/20 20:19:12
>>812-813
あ、*の扱い方が間違ってたのか。ありがとうございました。

817:デフォルトの名無しさん
07/06/20 21:05:47
windowsで、C++builder使用してます。

質問です。
Linuxだと、iptablesのテーブルの中身を書き換えて
iptablesを再起動すると、設定変更できますよね。
やりたいことは、
※時間ごとに、アクセスできる人を変更したいんです。

これをwindowsでやりたいんです。
1、ファイアーウォールみたいなのから、自分で作る。
 これは難しいでしょうか?パケット見て、捨てたり、捨てなかったり
 とかのやり方がわからないです。本などご存じないでしょうか。
2、フリーのファイアーウォールソフトを探してきて、
 linuxのiptablesと同じように、テーブル書き換え->ソフト再起動
 で、できそうでしょうか?

2番目だと簡単そうですか?

818:デフォルトの名無しさん
07/06/20 21:56:04
ソフト単体ならパケット監視してどうこうということもできるだろうけど、
windowsのばあい、システムに対してユーザーが介入するのは難しい。

アクセスというのは、何に対してのアクセスなんだ?
webサーバーとか、ftpサーバーとかだったら、そのサーバーソフトのフィルタリング設定を使うべきだろう。
共有ディレクトリへのアクセスを制限するというなら、また別の方法が必要だろうが。


819:デフォルトの名無しさん
07/06/20 22:05:58
>>817
URLリンク(www.wilderssecurity.com)
でも読んでみたら

820:デフォルトの名無しさん
07/06/20 22:29:39
>>818
レスありがとうございます。
ふむふむ。windowsだと難しいですか。
自分作ってないソフトで、しかもそのソフトは
フィルタリング機能とか無いんです。

>>819
ありがとうございます。
iptablesと似てるのないですか。だけ理解できました。
じっくり、読んでみます。
似たようなのがあれば、やりたいことできそうですね。

821:デフォルトの名無しさん
07/06/20 22:47:33
>>820
そんなあなたにフィルタドライバか、DLLインジェクション。

822:デフォルトの名無しさん
07/06/20 23:07:41
なんで具体的にそのソフト名をいわんのかね。

823:デフォルトの名無しさん
07/06/20 23:36:12
改造する気?

824:デフォルトの名無しさん
07/06/20 23:45:03
C++でLinkポインタというのを作りました
所有権を持つポインタオブジェクトが自分のコピー?に対する参照リストを持っていて
自分が消滅する時にそれらを一気にぬるぽ値に設定することで
コピーは本体の事を意識しなくて済むというメリットがあります

質問はこれと似たような事が出来る既存のライブラリは無いかということです
正直あまり良い実装じゃない上に根本的に泥臭いんですよね…

825:デフォルトの名無しさん
07/06/20 23:53:56
Lockできないboost::weak_ptrを実装したって話?

826:デフォルトの名無しさん
07/06/21 00:31:22
あのー

(unsigned int) ((context->count[0] >> 3) & 0x3F)

これがなぜ64のあまりになるのですか?

827:デフォルトの名無しさん
07/06/21 00:33:42
>>826
0x3fは2^6-1だから。

828:デフォルトの名無しさん
07/06/21 00:47:40
0x3f=16*3+1*15

829:デフォルトの名無しさん
07/06/21 00:50:06
えーとじゃあ
45と120の場合いくらになるんだろ
なんか計算あわない

830:デフォルトの名無しさん
07/06/21 00:52:38
>>826
一瞬、LISPあたりのコードかと思った。

831:デフォルトの名無しさん
07/06/21 00:53:37
ところでなんで
(context->count[0] >> 3)してるんだろう。

これすると値辺になる気がするのですが

832:デフォルトの名無しさん
07/06/21 13:05:29
つーかそれ、
8で割った後に64で割った余りを求めてる事になるが


833:デフォルトの名無しさん
07/06/21 13:14:49
あっそ、よかったね

834:デフォルトの名無しさん
07/06/21 14:30:08
よくないという話だな

835:デフォルトの名無しさん
07/06/21 14:54:13
>>826
10進数で下6桁残して上の桁を0にしたら
それは100万 (10^6) で割った余りになる。

それと同じように、0x3F で AND とると
(=2進数の下6ビットを残して上のビットをクリア)
64 (2^6) で割った余りになるわさ。

836:ひろみつ
07/06/21 16:29:58
Cって何言語で一版最初書かれたの?今のC言語はCで書かれてるとかいうのはなしね。

K&Rだかなんだかが、一版最初に書いたのは、何で書いたの?アセンブラ?B?

837:デフォルトの名無しさん
07/06/21 16:33:43
ひろみつ死ね

838:デフォルトの名無しさん
07/06/21 16:50:44
すみません。長いソース打ち込みたいとおもって、本屋で長いソースが載っている本を買ってきました。
URLリンク(www.amazon.co.jp)
です。

QuickC対応って書いてあるんですが、VC++6.0でも大丈夫ですか?

839:デフォルトの名無しさん
07/06/21 17:10:28
>>838
QuickC……

その本は今すぐ返品しなさいw
ソースが欲しいなら、
URLリンク(sourceforge.jp)
URLリンク(sourceforge.net)
なんかで探しなさい。
もしくはあなたの好きなアプリやライブラリでオープンソースなのを探しなさい。

840:デフォルトの名無しさん
07/06/21 17:57:25
94年じゃしょうがないな

841:デフォルトの名無しさん
07/06/21 18:27:59
unsigned conv_in:1;
という記述を見かけたのですが
このコロンはなんですか?

842:デフォルトの名無しさん
07/06/21 18:31:58
>>841
ビットフィールド。
変数のサイズを1bitにする指定。
とはいっても、実際に1bitになっているわけじゃないけど。
1bitしか使わない宣言というべきなのかな。

843:838
07/06/21 18:33:45
>>839
どうもありがとうございました。そんなサイトがあるんですね・・
すごいです。独学者なので、助かります。ありがとうございました。

>>840
やっぱだめですよね。。どうもありがとうございました。

844:デフォルトの名無しさん
07/06/21 18:35:49
おいおい独学社ならそれくらい嫉妬家よ

845:841
07/06/21 18:44:33
>>842
ありがとうございます

846:デフォルトの名無しさん
07/06/21 18:55:12
>>844
今日始めたばかりの独学者なんだろ。事情を察しろ。

847:デフォルトの名無しさん
07/06/21 19:06:10
そういうところのリンクをまとめて貼ってもいいんだが
見つける喜びってのがあるからなあ

848:デフォルトの名無しさん
07/06/21 19:09:04
>>847
急に貼られても今日始めたばかりの独学者だから困るだろ。事情を察しろ。

849:デフォルトの名無しさん
07/06/21 22:20:52
長いソースを打ち込みたいならCプログラミング診断室


いや本気にしないでね

850:デフォルトの名無しさん
07/06/21 22:22:08
>>825
おー、weak_ptrで出来るんですね
しかもロック付ですか…凄い

851:デフォルトの名無しさん
07/06/21 22:45:49
OfficeのWORDの文字だけをいじるプログラムを組みたいのです。
ただ、UNIX系を想定しているので、COMを使った方法ではダメなのです。
DCOMを使うのも、避けたいのです。

そこで、WORDのデータ構造を調べてみたのですが、どこにも見当たらないのですが、
UNIX系で操作できるようなライブラリ・もしくはデータ構造がわかるサイトがあれば教えてもらいたいです。

よろしくお願いします、

852:デフォルトの名無しさん
07/06/21 22:51:51
あ~残念。データ構造がわかる頭は持っててもサイトは知らないやゴメンね、

853:デフォルトの名無しさん
07/06/22 01:10:31
あー残念。RTFやOpenOfficeText形式なら知っているけどMSWord形式は知らないや。

854:デフォルトの名無しさん
07/06/22 01:17:29
POIでいいじゃん。
がんばって移植すれ。

855:デフォルトの名無しさん
07/06/22 04:31:38
typedef vector<int> V;
typedef V::iterator I;
typedef vector<V> VV;

VV vv;

for_each(
  vv.begin(),
  vv.end(),
  tr1::bind(
    &fill<I,int>,
    tr1::bind(static_cast<I (V::*)()>(&V::begin), tr1::placeholders::_1),
    tr1::bind(static_cast<I (V::*)()>(&V::end), tr1::placeholders::_1),
    0));

g++ 4.1.2です。
2次配列の初期化をalgorithmの練習でやってみようと思っていろいろ試行錯誤してみたのですが、
こんな悲しいコードになってしまいます。
static_castは省略できても良さそうなものですが、これはg++特有の問題でしょうか?
(省略できたとしても普通にループ書いたほうがわかりやすいけど)

856:デフォルトの名無しさん
07/06/22 08:20:41
>>852
ふと思ったんだが、公開されてないデータ構造ってどうやってわかるの?
やっぱバイナリエディタで開くと、大体わかっちゃうものなの?

857:デフォルトの名無しさん
07/06/22 10:06:54
>>856
バイナリデータの解析の基本は
「ちょっといじって何が変わったか調べる」。

858:デフォルトの名無しさん
07/06/22 10:10:48
夏カシス昔よくやった

859:デフォルトの名無しさん
07/06/22 11:00:27
>>855
g++ じゃなくても static_cast は外せないだろうね。
bind() の第1引数にはほとんど何でも入るから、コンパイラの知ってる情報だけでは
オーバーロードされた &V::begin のうち適切なものを選べない。

860:デフォルトの名無しさん
07/06/22 11:55:40
>>851
WORDは色々バージョンも多いから
そんなめんどくさい事せずに、POIを使った方がいいと思われ。
ただ無駄にJavaのコード呼び出す必要があるけどな。

861:デフォルトの名無しさん
07/06/22 13:26:29
0~9の数字をランダムに発生させて
数字が被らないように
どのような順番で数字が来たか表示させるという処理をしたいのですが
このようなプログラムを作るにはどうすればいいのでしょうか
乱数生成時に数字が被りすぎて無限ループに近いじょうたいになってしまいます



862:デフォルトの名無しさん
07/06/22 13:30:14
0~9 の数字を入れた配列を作ってシャッフルするのが一般的。
C++ なら random_shuffle って関数テンプレートがあるから、それ使う。
C なら自前で作るべし。
アルゴリズム悪いと確率が偏るから、
ランダムシャッフルで検索してアルゴリズム調べてちょ。

863:デフォルトの名無しさん
07/06/22 13:30:39
>>861
絶対被っちゃいけないなら、それは0-9のランダムではなくて0-9のうち前回の数字を取り除いたランダムじゃないか。

864:861
07/06/22 13:35:54
           ,,                                 ,,,
  ゙'lliiiiiiiiiiiiilllllllllllllllll|||li,,                               l||||l
   ゙゙゙゙゙  、,,,,,,,ii!!"゙゙゙゙゙     、,,,,,,   、,,,,                      ||||
      ,l||||"       ゙゙'llli,, ゙l||! ,,l|||゙   ill,,,,,,,,,,,,,,,,,,,,,,,,,,,iiilllll,,,      |||
      ,,l|||!         ゙゙゙゙゙  ,,,l||"     ゙゙'゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙       ||
     ,il|l゙゙            ,,rlll"                      ,,,,
    ,,ill"゙           ,,,ril"゙                         il||||l

865:デフォルトの名無しさん
07/06/22 13:40:26
力抜けよ

866:デフォルトの名無しさん
07/06/22 13:56:17
そう、もっと・・・力を抜いてごらん・・・。

867:デフォルトの名無しさん
07/06/22 13:59:44
for (;;) { >>865 >>867 >>866 }

868:デフォルトの名無しさん
07/06/22 14:02:50
5→6→4じゃね?

869:デフォルトの名無しさん
07/06/22 14:27:56
C++では変数の宣言をどこにでも置けると聞いたのですが、
goto文で変数の宣言を飛ばすことはできないのですか?
以下の文をコンパイルできません。

int main() {
goto end;
int a = 100;
end:
return 0;
}

870:デフォルトの名無しさん
07/06/22 14:38:20
>>869
何が目的なのかさっぱり解らんが、
「宣言」は「実行」されないんだから
飛ばすも何もない。

871:デフォルトの名無しさん
07/06/22 15:43:43
つまり、gotoで分岐する範囲では宣言できないということだ。

872:デフォルトの名無しさん
07/06/22 15:46:05
switch - case で、caseで宣言できないのと同じだな

873:デフォルトの名無しさん
07/06/22 16:18:11
最初に格納する数値を入力して、
以下のように文字などを無視してその個数分だけ整数値を格納する
というプログラムを作りたいのですが、これって可能でしょうか?
fgetsとstrtolを使うといけそうな気がするのですが
頑張ったものの自分ではどうにもならない状況ですorz

【実行画面】
個数を入力したください>>5
5a11bbb7
88yew99

数値1:5
数値2:11
数値3:7
数値4:88
数値5:99

874:デフォルトの名無しさん
07/06/22 16:53:19
いままでCでは数値を文字列にするときは
sprintf(str,"%d",num);のようにやってたのですが、
C++でstd::stringとsize_type size()等、STLを使う場合はどのように変換すればいいのでしょうか?
std::string str1 = "ああああ";
std::string str2 = "長さ" + str1.size() + "です";
みたいに使いたいのですが、これはエラーがでます。


875:デフォルトの名無しさん
07/06/22 17:01:09
boost::lexical_castなどはどうだろう

876:874
07/06/22 17:10:29
>>875
おお、すげー便利なもんあるんですね。ありがとうございます。早速使ってみます。

877:デフォルトの名無しさん
07/06/22 17:20:04
>>873
一文字ずつアスキーコードで比較して行けばいいのでは?

878:デフォルトの名無しさん
07/06/22 17:25:46
>>873
宿題なら宿題スレ行きを薦めるが、とりあえずこんな感じで出来る。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    int i, c, nc, *nv;
    printf("個数を入力してください>>");
    if (scanf("%d", &nc) != 1 || nc <= 0) return 1;
    nv = malloc(nc * sizeof(int));
    for (i = 0; i < nc && (c = getchar()) != EOF; ) {
        if (isdigit(c)) {
            ungetc(c, stdin);
            scanf("%d", &nv[i++]);
        }
    }
    nc = i;
    for (i = 0; i < nc; i++)
        printf("数値%d:%d\n", i+1, nv[i]);
    free(nv);
    return 0;
}

879:デフォルトの名無しさん
07/06/22 17:41:32
>>877
このスレを最初から読んでいたらscanf処理のことが書いてあって、
代わりにfgets+strtolということが書いてあったので
この処理を弄くって上に書いたような処理がOKになったら
使いやすくなりそうだと思ったのですが
やはりこの仕様にするとそれが早いかもですね…。

>>878
宿題では無くちょっとこのスレを読んでいて気になったので考えていました。
しかし書いてくださりありがとうございます。
いくつか知らない関数があるのでググって見てみます。


ちなみにfgetsとstrtolで12a23から12と23を取りたかったら
strtol(str,&error[i],0);
strtol(&error[i]+1,&error[i+1],0);
こんな感じでずらしていく感じにするのでしょうか?


880:デフォルトの名無しさん
07/06/22 17:51:22
>>879
こんなかんじ。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
    char buff[0x1000], *p, *q;
    unsigned char c;
    while (fgets(buff, sizeof buff, stdin)) {
        for (p = buff; c = *p++; ) {
            if (isdigit(c)) {
                printf("%ld\n", strtol(p-1, &q, 10));
                p = q;
            }
        }
    }
    return 0;
}

881:デフォルトの名無しさん
07/06/22 18:25:06
>>880
おぉ、激しく感謝です!
しかもコードが短くて使いやすくて良いですね!
今日なんだかんだで5、6時間ほど考えていたので
教えてくださりかなりガチで嬉しいです><
重ね重ねですが本当にありがとうございます!

882:デフォルトの名無しさん
07/06/22 19:30:17
突然すみません。質問させていただきます
自分は最近Cを始めたばかりの初心者で、初心者向けの本を参考にしてプログラムしています。
そして、その本を読み終えてさあがんばってみようと、ためしにオープンソースのものをDLして、ソースコードを見てみました
すると、いくつもファイルがあり、ひとつではありませんでした。
教本を見ても複数ファイルを同時に扱ってプログラムをする、なんてやりかたはどこにも書いていなく、戸惑っています
どうやって複数のソースコードをひとつのプログラムとしてまとめられるのでしょうか?
分がわかりにくかったらすみません。教えていただけたら幸いです。

883:デフォルトの名無しさん
07/06/22 19:35:30
分割コンパイルで検索

884:デフォルトの名無しさん
07/06/22 19:43:54
解凍したディレクトリで、./configure か、counfigure.bat したあと、make か nmake

885:たろう
07/06/22 21:41:10
曖昧さについて質問があります。
現在、ある処理をできるだけ小さいプログラムで記述する競争をしてまして、
以下のような記述か可能かどうか教えてください。

●質問1
-----
int a = 0;
int b[] = {a++, a++, a++};
-----
と記述した場合、
b = {0, 1, 2} となるのでしょうか?
それともコンパイラ依存でしょうか?

コンマ演算子は左から行う結合ルールですが、
この場合は演算子じゃないので、
明確なルールはなく、コンパイラ依存でしょうか?

●質問2

func1 があるクラスのポインターを返す関数であるとして、
-----
int a = 0;
func1(a++)->func2(a++);
-----
と記述した場合、
func1(0)->func2(1) となるのでしょうか?
それともコンパイラ依存でしょうか?

func1(0) を実行してからでないと、func2 が決定しないので、
なんとなくその中の引数の評価が後のような気がしますが。


886:じろう
07/06/22 22:12:25
やあ、たろう
この勝負は俺がもらった
約束通りお婆ちゃんの貞操は頂いて逝くぜ

887:デフォルトの名無しさん
07/06/22 23:20:55
int a = 0;
int b[] = {a++, a++, a++};
-----
int b[] = {0, 1, 2};の方がよほど短いわけだが。

-----
int a = 0;
func1(a++)->func2(a++);
-----
同様にfunc1(0)->func2(1);ではいけないのだろうか。

まぁ、一つの式の中にa++が二つある場合の評価順序は不定と言うことで。

888:デフォルトの名無しさん
07/06/22 23:27:23
>885
プログラムを短くするノウハウについては
↓のスレが勉強になるかもよ

七行プログラミング part5
スレリンク(tech板)

889:デフォルトの名無しさん
07/06/22 23:38:11
>>880
sizeof(buff)の形ならよく見るのですが、sizeof buffのように括弧のないものって何でしょうか?

890:デフォルトの名無しさん
07/06/22 23:41:30
>>889
別にカッコつけなくても生きていけるんです

891:デフォルトの名無しさん
07/06/22 23:46:17
sizeofというのは「関数」じゃない。
だから、sizeof(buf)のbufは、関数の「引数」じゃない。
関数じゃないから、括弧は「関数呼び出し演算子」ではない。
sizeofは、演算子の一つ、sizeof演算子です。だから、括弧は不要。

「1+1」を「 (1)+(1) 」とは書かないでしょ?これと一緒。


892:889
07/06/23 00:11:33
ありがとうございます。付けなくてもいいんですね。
なのに()付きのサンプルコードが多いのは何故なんでしょうか?

893:デフォルトの名無しさん
07/06/23 00:15:46
>>892
型のサイズを知るには、sizeof(int)のように括弧が必要。
それに倣って、括弧をつける人が多数。

894:889
07/06/23 00:19:49
なるほど、そういうことだったんですね。
ありがとうございました。

895:デフォルトの名無しさん
07/06/23 00:22:27
括弧つけても優先順位に全く影響与えないしな。
無駄だし勘違いする人も出るからと嫌う人もいるし、
括弧を付けた方が統一性が出ると付ける人もいる。

そして、よく知らないけど括弧付けないといけないと勘違いしてる人もいる。

896:デフォルトの名無しさん
07/06/23 00:56:10
何でtypeidはカッコ必須なの?

897:デフォルトの名無しさん
07/06/23 00:58:17
typeidの場合はsizeofと違って対象が型だろうが値だろうが括弧が必要。

だから個人的には、sizeofも常に括弧を書いたほうが何となく対象性がある気がする。


898:デフォルトの名無しさん
07/06/23 01:07:29
>887
>まぁ、一つの式の中にa++が二つある場合の評価順序は不定と言うことで。

不定じゃなくて未定義でしょ。
鼻から悪魔がでてくるじょ

899:デフォルトの名無しさん
07/06/23 06:59:03
いや不定だろ

900:デフォルトの名無しさん
07/06/23 07:11:10
JISX3010 6.5式 (70)によれば、
「この段落の規定によると(略)a[i++]=i;は、未定義の式文である」

901:デフォルトの名無しさん
07/06/23 13:33:55
せいぜい言葉遊び。
「未定義」だから、コンパイラにより「不定」になるんだろ。

902:デフォルトの名無しさん
07/06/23 14:02:30
>>901
URLリンク(www.kouno.jp)

903:デフォルトの名無しさん
07/06/23 14:44:39
C++とはちょっと違うのですが、適当なスレが見つからなかったので、すみませんが質問させてください。
VC++6.0のマクロ機能を使って、エディタ上で選択している文字列を
外部プログラムに渡すマクロを作りたいのですが、このマクロの仕様というか
そもそもこいつが何者なのかがさっぱりわかりません。
マクロのサンプルを見て出てきた文字列を片っ端からぐぐりつつやってみたのですが
外部プログラムの実行だけがどうしてもできません。
どなたかこいつが何者なのか、どうすれば外部プログラムを実行できるのか教えてください。


904:855
07/06/23 21:13:36
>>859
遅くなってすみません。キャスト外せませんか…ありがとう。
俺もそのような意味の話をネットのどこかで読んでキャストをつけたんですが、
でもV::beginってオーバーロードされてないですよね?何か勘違いしてるんでしょうか。

905:デフォルトの名無しさん
07/06/23 21:15:34
>>904
const の有無で2つある。

906:855
07/06/23 23:25:01
>>905
あ、ありがと。気づきませんでした。
&V::beginは関数ポインタの集合で、これをキャストなり代入なりする時に
型に合う関数ポインタが適当に選ばれるような感じでしょうか。

V::iterator (V::*b)() = &V::begin;
V::const_iterator (V::*cb)() const = &V::begin;

V::beginは前者、(const V)::beginは後者を選ぶようなルールがあれば話は早いと思うけど、残念。

907:デフォルトの名無しさん
07/06/23 23:46:52
文字列中の " を \" に変える関数ってコレで良いんですかね?
std::basic_string<TCHAR>::iterator dquoteToESC(std::basic_string<TCHAR>& str) {
    typedef std::basic_string<TCHAR>::iterator iter;

    iter i = str.begin();
    while ( i != str.end() ) {
        i = std::find(i, str.end(), _T('\"'));
        if ( i == str.end() )
            break;
        i = str.insert(i, _T('\\')) +2;
    }

    return str.begin();
}

908:デフォルトの名無しさん
07/06/24 00:03:12
どうでもいいが関数名はEscDQuoteのほうがいいんじゃないの?

909:デフォルトの名無しさん
07/06/24 05:33:08
今では vector のメモリ上での連続性は保証されてますけど、
昔は少なくとも規格上では保証されていませんでした。

で、実際のところ、メモリ上での連続性がない場合のある処理系って実在したんでしょうか?
実在しなければ、メモリ上での連続性を仮定したプログラムは
過去の処理系との互換性があるということで安心できるのですが。

910:デフォルトの名無しさん
07/06/24 07:15:16
俺は聞いたことがない

普通に作れば連続するから実質的に実装の後追いで連続性の保障が与えられたのであって、
連続していなかった処理系なんてないと思って差し支えないはず

911:デフォルトの名無しさん
07/06/24 07:17:54
そうですか。安心しました。
㌧。

912:デフォルトの名無しさん
07/06/24 13:53:56
ifstreamへの書き込みについて質問させてください。
ifstream fin("test");
として、
char c;
char s[100];
のとき、
(1) fin >> c; ===> 読み込みは一文字だけ。
(2) fin >> s; ===> 読み込みは一行全部。配列sのサイズを越えても。
という理解でいいでしょうか。
(実験したらそうなりました。)


913:デフォルトの名無しさん
07/06/24 14:04:56
普通は、fin.read(s, 100 )とかstd::getline( fin, str )とか使うけどね。

914:デフォルトの名無しさん
07/06/24 14:14:46
>>912
配列の先頭アドレスしか受け取っていない関数は、配列のサイズについて関知しない。

915:デフォルトの名無しさん
07/06/24 14:31:41
>.912
(1)についてはそのとおり
(2)についてはちがう。
空白文字(スペース、タブ、改行等)を読み飛ばし、
次の空白文字が来るまでバッファを超過しようがsに詰め込もうとする。
scanfの%sと同じと思っておけばよい。

916:デフォルトの名無しさん
07/06/24 14:35:50
まあ、折角 istream 使ってるんなら、
char じゃなくて string 使った方が安全でいいね。

917:デフォルトの名無しさん
07/06/24 14:52:06
そもそも、なんでifstreamへの書き込みについての質問なのに読み込む話ばかりなんだ?

918:デフォルトの名無しさん
07/06/24 14:54:29
>>917
2行目以後を読めば、1行目の「書き込み」はただのtypoだと分かるから。

919:デフォルトの名無しさん
07/06/24 15:22:55
>>910
設計時点で C 配列の代用という用途は考えられていて、
規格への明記が漏れていただけだと思われ。

↓でも現状の実装についての考察なんて問題にならなかったみたいだし。
URLリンク(www.open-std.org)

920:デフォルトの名無しさん
07/06/24 15:59:49
>>919
なるほど。確かに。

ただ、仕様上 one-past-the-end の問題は無い、
と言ってる点がいまいち分からんのですが。
5.7 para 5-7 (配列では one-past-the-end のアドレスが有効であることを保証)
あたりとは矛盾しないのですか?

921:デフォルトの名無しさん
07/06/24 16:17:52
>>920
!v.empty() な v について &v[0] + v.size() が有効なことは &v[0] + (v.size() - 1) が
有効なことと 5.7p4 の
「配列じゃないオブジェクトもポインタの加算においては長さ1の配列とみなす」
っていうルールから導き出せるから、特に vector について書くことは無い
ってことじゃないかな?

まぁ、そうだとしてもわかりにくいね。

922:デフォルトの名無しさん
07/06/24 16:26:54
なるほど・・・。確かに。

923:デフォルトの名無しさん
07/06/24 17:10:37
自動配線ツールをCで書こうと思ってるんですけど。
アルゴリズムはmazeをベースで。

書くときに参考になるソースコードとかってどっかに落ちてるものなんでしょうか?
アルゴリズム分かっても、書くのが素人なので、どれ位の規模(行数)になるかとか、必要な関数が予想つきません。
サンプルなどがあればと思って質問させていただきました。

924:デフォルトの名無しさん
07/06/24 17:28:14
これですか?

URLリンク(www5e.biglobe.ne.jp)


925:デフォルトの名無しさん
07/06/24 17:30:07
早速ダウンロードしました

926:デフォルトの名無しさん
07/06/24 17:33:48
ないのならないで結構です。

927:デフォルトの名無しさん
07/06/24 18:24:12
>>923
半導体用の自動配置配線ツールなら、優秀なものが出来て売ることが出来れば
2本程度売れるだけで遊んで暮らせるでしょう

そして、そんなものが作れるなら…

928:デフォルトの名無しさん
07/06/24 18:35:00
>>927
そうなんですか。
イメージしてるのはたとえばこここの配線プログラムみたいなものなんですけど。
ht_URLリンク(www.icot.or.jp)
プログラムを落としてみたんですけど、分からない言語(KL1?)で書かれている(?)ようで、
中身を開けませんでした。

929:デフォルトの名無しさん
07/06/24 18:36:55
難しいようですね、お騒がせして申し訳ありませんでした。

930:ちんこ
07/06/24 19:27:46
URLリンク(www.uploda.org)

g++です。
三目並べのゲームを作ります。
show_stateがばぐります。どこがおかしいか教えてください

931:デフォルトの名無しさん
07/06/24 19:34:07
こんなのコンパイルとおるんだな。

932:デフォルトの名無しさん
07/06/24 19:37:08
>>930
State::State(bool s[3][3]){
  for(int i=0;i<3;i++){
    for(int j=0;j<3;j++){
      a[i][j] = s[i][j];
    }
  }
}

ちなみに、マスの状態は、「○」「×」「どちらもおかれていない」の3通りあるから、boolではだめかと。

933:ちんこ
07/06/24 20:33:11
[akira@58x13x98x215 sanmoku]$ g++ test.cc
[akira@58x13x98x215 sanmoku]$ ./a.out
1 0 1
0 1 0
1 0 1
さんくるです。>>932では3通りを表現するのに一番適したデータ型はなんですか?
空 1 0 というつもりだったのですが。intだとメモリがでかくなる。
まぁ三目なら全検索してもうんこだけど。

幅検索型の三目並べゲームをclassを使って作るというのが目標です。
計画しているクラスは
Player
CPU
State
Queue(Stateを含みまくるキューのクラス)
Board(mainのクラスです)
とかです。オブジェクト指向的に考えて適切ですか?

うまい人ならどういうクラスを考えるんでしょうか。

934:ちんこ
07/06/24 20:35:34
これが出来たら9*9盤くらいで5目並べをしてみたいです。
最終目標は囲碁のソフトですがこれはやばそうなので、まずは五目並べとかでゲーム作りのノウハウを学びます。

935:デフォルトの名無しさん
07/06/24 20:38:40
>3通りを表現するのに一番適したデータ型はなんですか?
boost::triboolってのがある
これはtrue, false, indeterminateの3値を表現できる
これをtrue = 白, false = 黒, inderteminate = 何がおかれているかわからない = 色が不定
とでも使えばちょうど良いんじゃないかな

936:デフォルトの名無しさん
07/06/24 20:39:14
>>933
intでもメモリには大差なくね?
ってより、intのほうが高速になる可能性を秘めていると思うが・・・
あくまでも可能性だけど

937:ちんこ
07/06/24 20:53:33
>>935
不定か、なんか怪しいデータ型ですね。
>>936
intの方が高速になる理由は?
intって4byteですよね、boolがダメならcharかなと思っています

938:デフォルトの名無しさん
07/06/24 20:55:37
ちんこあほすぎでわろたw

939:デフォルトの名無しさん
07/06/24 20:58:59
ちょっとすれ違いですが、
eclipse + Java並のリファクタリングやコード補完、コード整形等の機能を備えたC/C++のIDEはありますか?

940:デフォルトの名無しさん
07/06/24 21:02:43
>>939
あります。スレ違いなので詳細は割愛。

>>937
サイズが大きいから遅いとは簡単にはいえません。
まずは真っ当に作り上げることが先決でしょう。

941:デフォルトの名無しさん
07/06/24 21:07:12
>>937
そのCPUがもっとも得意とするビット幅を、intに割り当ててるコンパイラが多い可能性がある。
って程度じゃない。intの処理速度≧charの処理速度になる可能性があると。
ほとんどintの処理速度=charの処理速度だと思うが。
実際型のビット幅が決まってないのって弊害にしかならん気がする。

942:デフォルトの名無しさん
07/06/24 21:12:39
typedef int TRIBOOLとでも定義しておいて
とりあえず組んでみたら?
出来てから速度とか使用メモリーを測定してそれから決めればいい

943:デフォルトの名無しさん
07/06/24 21:16:21
>>937
高速になる理由は>940-941のとおり。
charとintでの速度比較した場合、intが早くなることはあっても遅くなることはあまり無いと思う。

1億×1億のフィールドとかを考えるならそりゃcharのほうがメモリは節約できるだろう。
ただ、intだとメモリが危ういがcharならきっと大丈夫程度の問題ならば、ベタに
配列として持つより設計を見直すほうがいいと思われる。


944:デフォルトの名無しさん
07/06/24 21:20:22
メモリアクセスの遅延により、メモリの節約自体が速度に効くだろうから
やっぱり最終的に実測しないと決まらない。

945:ちんこ
07/06/24 21:21:39
うお、その話ならどっかで聞いたことがあったような。
じゃあintにしてみます。
9路盤で5目並べする時用にプログラムをあらかじめ
N // 盤の大きさ
M // これだけ並べば勝ちだぜぃな数
として組んだ方がいいですかね?

しかしどうやればいいかはさっぱりなんですがね。
何しろゆとりなもんでwww

946:デフォルトの名無しさん
07/06/24 21:25:46
>>945
とりあえず数字決め打ちでもintでもcharでもいいから作りあげろ
話はそれからだ

947:ちんこ
07/06/24 21:27:00
まじ難しい。

948:ちんこ
07/06/24 21:29:53
クラスの依存関係がイミフ

949:デフォルトの名無しさん
07/06/24 21:33:39
日記帳にでも書いてろ

950:デフォルトの名無しさん
07/06/24 21:43:37
あきらめろ

951:デフォルトの名無しさん
07/06/24 21:45:30
>>937
メモリ気にするんなら2bit一組で使えばいい、速度気にするんならintでok

ちなみにC++ではbool型のサイズは環境によって違う
普通はintかcharになってるようなのでメモリの節約にはならない

でもな、実際にこんなの気にしなきゃいけない環境って最近は少ないから
まず動くもの作ってそれから考えるほうがいいよ


952:デフォルトの名無しさん
07/06/24 21:58:34
>>945
ちなみに、見た目簡単そうな5目並べだが、
まともな思考エンジン作れたら結構な額で売れる

昔仕事でUIだけ作って5目並べの思考エンジン買ってきた奴組み込んだけど、
中身かなり複雑で読む気もしなかったわw


953:ちんこ
07/06/24 21:58:57
Playerクラスとかいるか・・・?
でもないとオブジェクト指向っぽくないよなぁ・・

954:デフォルトの名無しさん
07/06/24 22:00:34
>>945
この辺参考にして頑張ってくれ
URLリンク(www.h6.dion.ne.jp)
URLリンク(www002.upp.so-net.ne.jp)

後はひたすら試行錯誤
考えて分からなければとりあえず書いたら最低限何が駄目か何が必要かとかわかってくるんじゃね?


955:デフォルトの名無しさん
07/06/24 22:05:01
>>953
お前には無理だ
せいぜい無駄な時間を浪費するがよい

956:デフォルトの名無しさん
07/06/24 22:42:47
>>928
KL1
URLリンク(www.klic.org)

957:デフォルトの名無しさん
07/06/24 23:48:42
くだらない質問だと思いますがお願いします。
STLのvectorに格納した要素を、配列に即変換する方法はないのでしょうか?
Iteratorを使って地道にループさせて配列に設定する方法しか思いつきませんでした。

958:デフォルトの名無しさん
07/06/24 23:49:27
std::copy

959:デフォルトの名無しさん
07/06/25 00:06:23
>>958
どうもです。

960:デフォルトの名無しさん
07/06/25 00:09:28
&vector_instance[0]ではいかんのか?

961:こんにちは
07/06/25 03:30:00
こんにちは

962:デフォルトの名無しさん
07/06/25 04:45:34
次期仕様のドラフトだと data 関数があるみたいだが、
今の所は &v[0] か &v.front() だな。

963:デフォルトの名無しさん
07/06/25 04:47:50
>>953
Player インタフェースクラスを作って、
PlayerCom と PlayerHuman クラスを派生して・・・

964:デフォルトの名無しさん
07/06/25 06:03:54
GameMaster クラスを用意して本物の盤面をいじれるのはそのクラスだけにして…

965:デフォルトの名無しさん
07/06/25 06:05:41
PlayerCom からも複数のクラスを派生して・・・

966:ちんこ
07/06/25 07:14:38
そんなにクラス作るのか。
PlayerからPlayerComとPlayerHumanを継承
PlayerComから複数はなんで?
もしや思考パターンを変える為?


967:デフォルトの名無しさん
07/06/25 07:32:33
ちんこ死ね

968:ちんこ
07/06/25 07:36:38
初心者歓迎スレなのに・・・
クラスを使ったものとしてはC++かつGUI以外でははじめて
もう何がなんだか分からんとです。
まずUML勉強した方がいいかな?
生半可に利用するのはおれのタチじゃない、オブジェクト指向なら徹底的にオブジェクト指向にしたい。

969:デフォルトの名無しさん
07/06/25 07:53:01
はいはいわろすわろす

970:デフォルトの名無しさん
07/06/25 07:53:12
○×ゲーム程度なら、まず非オブジェクト指向で作ってから
設計をやり直してオブジェクト指向にするのが(勉強には)いいと思う。

971:デフォルトの名無しさん
07/06/25 07:59:30
>>968
愚かな一貫性は小人物に憑いたお化けである

972:デフォルトの名無しさん
07/06/25 08:03:07
まあ、色々なパターンで作って、
それぞれのプログラムの性質を比較してみるのも勉強になるよね。

973:デフォルトの名無しさん
07/06/25 08:13:38
そろそろ次スレの季節だな。

974:デフォルトの名無しさん
07/06/25 09:55:20
定刻も、過ぎてることだしな

975:デフォルトの名無しさん
07/06/25 12:02:09
次スレ立てた

【初心者歓迎】C/C++室 Ver.39【環境依存OK】
スレリンク(tech板)

976:デフォルトの名無しさん
07/06/25 12:03:14


977:デフォルトの名無しさん
07/06/25 22:36:14
VisualC++2005です。switch文で以下のように下にcaseが続くと変数の宣言と同時に初期化できません。
これは何故でしょうか?
case 1:
 int i=1;//int i; i=1;ならOK
 break;
case 2:
 break;

978:デフォルトの名無しさん
07/06/25 22:38:42
case 1 に飛んだ場合はいいけど、
case 2 に飛んだ場合は i が使えるのに
初期化の位置を飛ばしてしまう。
だから、そういうことはできないようになってる。

case 1: {
 int i = 1;
} break;

みたいにブロックで囲むといいよ。

979:977
07/06/25 22:54:36
ありがとうございます。そのようにします。

980:デフォルトの名無しさん
07/06/26 21:11:34
>>913-918
ありがとうございました。


981:デフォルトの名無しさん
07/06/26 22:34:30
>>978
横レスだが
なるほど
時間があれば言語仕様もきっちり読んでおけってことか

982:デフォルトの名無しさん
07/06/26 22:55:00
時間が無くても言語仕様は嫁

983:デフォルトの名無しさん
07/06/26 23:21:51
必須かよorz
プログラム開発の面接を受けた感触として
ひょっとしたら読まなきゃかもなーとは思ってたが

984:デフォルトの名無しさん
07/06/26 23:24:17
必要があれば読みたくなるだろうからそれまでは別に無理して読まなくて良いよ
経験があってこそ初めて理解できるような部分もあるし

985:デフォルトの名無しさん
07/06/26 23:52:05
C++で一時オブジェクトを関数に渡す時に値渡しするしかないんですか?
boost::functionとかそれだけで40バイトぐらいあるから何とか参照渡ししたいんですが
右辺値を参照で渡せるような何か良い手段ありますか?

986:デフォルトの名無しさん
07/06/26 23:52:50
constのことかーーーーーー?

987:デフォルトの名無しさん
07/06/26 23:59:47
あああ、const参照にはこういう使い方もあったんでうsね
どうもです

988:デフォルトの名無しさん
07/06/27 00:09:12
亀だが
charとかshortは演算途中で内部的にintに無理矢理キャストされることがある
理由は>>941の通り
だからキャストのオーバヘッドまで考慮するとintの方が速い場合が多い

989:デフォルトの名無しさん
07/06/27 00:23:42
>>988
「ことがある」じゃなくて、その動作が標準として規定されている。

990:デフォルトの名無しさん
07/06/27 00:27:02
ちなみに
windows.hのBOOL型は実際はlongのtypedefで TRUE = 1, FALSE = 0

Cだと_Bool型で
_Bool型は符号なし型として扱われる
_Bool型には signed, unsigned はつけられない
_Bool型は 0 と 1 を格納できれば十分なサイズ
_Boolに変換するときその値が0なら0、それ以外は 1
_Bool型はどの標準整数型ランクよりも小さい
ビットフィールドに無修飾版の _Bool をおける

引用(URLリンク(seclan.dll.jp))

991:デフォルトの名無しさん
07/06/27 00:29:54
>>989
そうか、すまん俺の勉強不足だった

992:デフォルトの名無しさん
07/06/27 01:19:35
sdk\include>grep typedef.*BOOL WinDef.h
File WinDef.h:
typedef int BOOL;

993:デフォルトの名無しさん
07/06/27 03:34:17
>>989
格上げされない場合もあるわけだが。

994:デフォルトの名無しさん
07/06/27 03:52:27
>>993 sizeof ぐらいじゃね?

995:デフォルトの名無しさん
07/06/27 04:18:22
今更だけど、C/C++とC99は別物だと思う。

996:デフォルトの名無しさん
07/06/27 05:44:06
「演算途中で」となるとまあ sizeof くらいなのかな?
あ、いや、キャストもか。

997:デフォルトの名無しさん
07/06/27 07:02:02
【初心者歓迎】C/C++室 Ver.39【環境依存OK】
スレリンク(tech板)

念のためにもう一度貼っとくよ~
二重に立てるような無駄を防ぐためだよ~

998:デフォルトの名無しさん
07/06/27 12:26:27
>>992
MSのやつはバージョンによって違うらしいぞ


999:デフォルトの名無しさん
07/06/27 14:45:41
1000ゲトー

1000:デフォルトの名無しさん
07/06/27 14:46:23
 。  + 『1 0 0 0 G E T ぃ ゃ っ ほ ぉ ぉ ぉ ぅ ー !』    *     。       .
                 .             *        .
       *      + 。           。     +
           __   _     /ヾ_/ヽ        旦
        f ミv'´{ごづヾ彡   , '´⌒'v'ヾ      '´ ̄`ヽ       *     。
        ゙i´!(((从 从リ !   ifi」liリ゙l i!卯、   (((/从从 i
         !○(l ^ヮ゚ノ!| i * |i、゚ヮ^ |!)○゙ 。  从゚- ゚ ||○  *
        ノノ ヽ)本iO ヾ   Oi本(~/ヽ    OL介_(ノ  .      +
  ガタン||| ((´ く/_i_iヾ  )) ||| /i_i_ヾ> ) )) ||| + /_|_|ヾ> |||ガタン +
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ロ リ 最 強 ! 華 麗 な 1 0 0 0 に 超 感 動 !

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch