[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 04/01 07:48 / Filesize : 131 KB / Number-of Response : 559
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:39:18 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.56【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1215278693/

【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

◆ソースのインデントについて
半角やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのが最も良いですが、
直接貼るのであれば、全角空白か に置換しておくことをお勧めします。

2 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:40:18 ]
しまった。コピペしてそのままにしてしまってた・・・。
正しくはこうだな。

◆ソースのインデントについて
半角やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのが最も良いですが、
直接貼るのであれば、全角空白か に置換しておくことをお勧めします。

3 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:58:04 ]
           

4 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 23:58:32 ]
int main(int argc, char *argv[])
{
  FILE *fp;

  if(fopen_s(&fp, "hoge.txt", "w")) exit(1);
  fwrite("hoge", 4, 1, fp);
  fclose(fp);

  return 0;
}

これを普通に実行するとちゃんとファイルが作成されるのですが、アイコンにファイルをドロップして始めるとファイルが作成されません。
なにか制約でもあるのでしょうか?

5 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:03:13 ]
>>4
どこか、あなたの知らないところに作られています。
フルパスでファイルを作るか、カレントディレクトリを指定すると宜しいかと。

6 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:09:10 ]
>>5
ありがとうございます。わけの分からないところに作られていました。
デフォルトでカレントディレクトリに作られると勘違いしていました。

7 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 05:42:31 ]
class Hoge
{
Hoge() { Init(); }
~Hoge();
Init();
}

このようにコンストラクタ時に
初期化用のメンバ関数を用意して使うことはokなのでしょうか。

8 名前:デフォルトの名無しさん [2008/07/17(木) 05:48:51 ]
ok

9 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 05:57:10 ]
ありがとうございました。
これで長々と書かずに済みます。

10 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 08:00:28 ]
>>7
Initはvirtualにしないことだけ気をつけて。



11 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 08:19:59 ]
>>6
いや、カレントディレクトリに作られているはずだよ。
カレントディレクトリが予想外な場所になっているだけで。


12 名前:デフォルトの名無しさん [2008/07/17(木) 08:43:07 ]
オープンソースのdllなんかを改造して
自分でコンパイルする時
デバッグモードでやるのとリリースモードでやるのでは
どういった違いがでるのでしょうか?

13 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:09:55 ]
デバグ情報
最適化

14 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:23:44 ]
本当のプロはデバッグモードは使わない。

15 名前:12 [2008/07/17(木) 09:34:57 ]
デバッグ情報っていうのは、どういう場面発生して、どうしたら使えるんでしょうか?

16 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:40:29 ]
デバッグ情報がある場合:
gdbとか使ってると、Segmentation Falutなんかが出たときに、
その場所をソースコードの行番号で教えてくれる。

17 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 10:37:12 ]
動的解析ツールでも、デバッグ情報があれば行単位で結果を出せるね。
そうでないと、アセンブラのインストラクション単位になってしまう。

18 名前:デフォルトの名無しさん [2008/07/17(木) 14:23:26 ]
VC++ 6で作成したものをVC++2005で開いてビルドすると
 long lTemp = timeStamp.ulSeconds;
 char* pszTemp = ::ctime( &lTemp );
のところで
 error C2664: 'ctime' : 1 番目の引数を 'long *' から 'const time_t *' に変換できません。(新しい機能 ; ヘルプを参照)
 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
とでてしまいました。
それで
 char* pszTemp = ::ctime((time_t *) &lTemp );
と書き替えたらビルドは通ったのですが、これで問題ないのでしょうか?


19 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:28:20 ]
lTempの値次第

20 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:54:24 ]
>>10
virtualにしてもコンストラクタ内からだと無視されなかったっけ?



21 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:59:10 ]
>>18
time_t の大きさ確認してみ。最悪変なところ書き換えるかも。
VC2005から、時間関係がデフォで64bitになってる。
32bitにするのはなんかマクロがあった。

22 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:24:47 ]
>>18
要は、lTempをtime_tにしておけってこった。但し、tieStamp.ulSecondsの仕様に注意な。

>21はどうやらconstが目に入らなかったらしいが。

23 名前:デフォルトの名無しさん [2008/07/17(木) 16:21:55 ]
C言語のソースからC++で定義されている関数を呼びたいのですが
やはり無理でしょうか?

24 名前:23 mailto:sage [2008/07/17(木) 16:25:59 ]
すいません、この場合もextern "C"でいけるんですね。
スレ汚し失礼しました。

25 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:15:38 ]
インテリジェントエージェントが動的コードスニペットでバグを起こしそうなコマンドや
構文にチェックをする。その段階でメタレベル構文にデバッグ情報が埋め込まれ、メモリリーク
や例外のときに情報がセットされる。
君が使うのはまだ難しいと思うよ。
怪しい変数をprintfで表示させるところから初めてはどうだろう?

26 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:38:12 ]
イミフ

27 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:05:54 ]
DEBUGでデバッグしたコードをRELEASEしたらクラッシュしてひどい目にあって以来
RELEASE以外でビルドしてない
出来上がるのは別のプログラムだからDEBUGでDEBUGしても何の意味もないよ
アホらしいけど

28 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:11:50 ]
>>27
直接関与はしてないけど
大学の研究室にそういうコードは存在した

なんかコード領域を実行時に書き換えてる風な挙動だった
初期化してないポインタでも使ってるような感じ

初代が作ったものを毎年手を入れていくものだから
何年目でそういうことになったのか不明
初代のコードはすっきりしてたのに、最新版は複雑怪奇w

29 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:48:11 ]
>>27
たまたまreleaseビルドで動いてるだけだったりしてな。
VSのバージョン上げてプロジェクト変換したら止まったり、
別のPCでexe動かしたら止まったりw

30 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:03:00 ]
Wallにしたらつらつらと出たりしてな。



31 名前:デフォルトの名無しさん [2008/07/17(木) 21:36:18 ]
double hoge[100];

memset(hoge,0.0,sizeof(hoge));


これをするとdoubleからintへの変換っておこられるんですが、何がいけないんですか

32 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:47:12 ]
void* memset(void*, int, size_t)

33 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:49:32 ]
memsetはバイト単位でデータを埋めるのにしか使えない。

34 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:58:58 ]
double hoge[100] = {0.0};
これで全部0.0が入るんじゃね?

35 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 22:13:30 ]
>>31
第二パラメータを0にすればコンパイル自体はできますが、0.0で埋めたことになる保証はありません。
大人しく>34の手を使うかC++のstd::fill()を使うか自分でループを回しましょう。

36 名前:31 [2008/07/17(木) 22:44:27 ]
わかりました!どうも

37 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:19:18 ]
>>34
それ[0]は0.0だけど、[1]以降は0で埋めたことになるんじゃないか?
まぁ0.0も0も同じことだと思うけど

38 名前:デフォルトの名無しさん [2008/07/17(木) 23:23:45 ]
子クラスにメンバ変数もデストラクタもない場合ときに、
public継承する場合は親クラスのデストラクタは
virtualにしないとまずい?

class Base
{
public:
  Base(int a, int b);
  ~Base();
private:
  int m_a;
  int m_b;
};

class A : public Base
{
public:
  A(int a);
};

これはまずい?
やりたいことは、
「親クラスのコンストラクタを制限したバージョン」
を作りたいんだが。


39 名前:デフォルトの名無しさん [2008/07/17(木) 23:26:03 ]
何でコンストラクタから仮想関数を呼べるんですか?
どうせ誰も得しないんだろうからコンパイルエラーにしちゃえばいいのに。

40 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:26:40 ]
>>39
呼べるようにしたほうが設計的に美しいんじゃね?



41 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:46:44 ]
>>38
>「親クラスのコンストラクタを制限したバージョン」
>を作りたいんだが。

それの理由を書いた方が良いかと。

42 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:53:25 ]
WSAStartup(MAKEWORD(2,0), &wsd);
SOCKET sd = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0);
closesocket(sd);
WSACleanup();

それぞれ関数の後ろでGetProcessHandleCount()で
プロセスが開いているハンドル数を調べると、
WSASocket()で10個ハンドルが開き、closesocketしても減りません。

この10個のハンドルを閉じる方法はないんでしょうか?

WindowsXP Pro SP2、VisualStudio 2008 ExpressEditionです。

スレ違い?

43 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:59:56 ]
>>41
いや、これ自体に特に意味はないんだが。
環境依存のメモリリークとか発生しないかと思って。

44 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:00:34 ]
再利用するとかで内部的に完全には解放されてないだけじゃね?
WSACleanup()でも消えない?

45 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:01:09 ]
>>38
基底クラスのデストラクタを virtual にする必要があるのは、派生クラスの
インスタンスを基底クラスのポインタ経由で delete する場合。基底クラスの
デストラクタが virtual でないと、派生クラスのデストラクタが呼ばれない。
Base* b = new Derived();
...
delete b; // Derived::~Derived を呼ぶために、Base::~Base を virtual に!!!
RAII でインスタンスを破棄するなら、virtual である必要はない。

46 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:02:02 ]
>>42
WSASocket(); closesocket(); を交互に繰り返したら増えつづける?

47 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:03:28 ]
>>45
それはわかるんだが、
「子クラスにメンバ変数もデストラクタもない場合」
にどうなるのかってのが知りたかった。

48 名前:42 mailto:sage [2008/07/18(金) 00:03:33 ]
>>44
WSACleanup()の後でも減ってませんでした

>>46
会社にしか環境ないので
明日それをやってみます。

49 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:06:32 ]
>>48
ExpressEditionならタダで手に入る…
ってか会社でExpressEdition!

50 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:10:50 ]
>>38 >>47
Aからさらに継承しない限り問題無し



51 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:15:40 ]
>>49
会社でExpressEditionは別にいいだろ
商用利用可だし、IDEはともかくコンパイラが無料なのが重要なわけだから

52 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:19:20 ]
その無料のExpressEditionで数百万で売るもの作ってます^^

53 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:21:11 ]
>>38
それなら FactoryMethod でも使えば。
Base* CreateBase(int a);

54 名前:49 mailto:sage [2008/07/18(金) 00:21:25 ]
>>51
読んできた
www.microsoft.com/japan/msdn/vstudio/express/feature/2008/#visualc

勘違いしていたようだ

55 名前:デフォルトの名無しさん [2008/07/18(金) 00:23:00 ]
gcc4.2でopenMP使ってforループ並列化しようとすると、
「ループカウンタがunsignedです」って警告される。

ループカウンタってsigned使うのが普通なの?
vectorとかsize_typeは大体unsignedだと思うんだけど。

56 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:24:57 ]
>>50
ありがと!

57 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:35:03 ]
>>55
実装上の都合だとでも思ってください。
0スタートのループを、逆条件にしても大丈夫なようにってことかもね。

58 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:54:32 ]
signedとunsignedの違いが問題になるような回数のループをやろうとすること自体に問題がある

59 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:56:35 ]
>>58
通常は size_type (unsigned) に合わせないとコンパイラが警告してくれちゃう

60 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:57:51 ]
まぁループはsignedにしといたほうが無難だろうね



61 名前:デフォルトの名無しさん [2008/07/18(金) 00:58:50 ]
整数値を引数として与えその数値によって文字列を返す関数を作ったのですがうまくいきません
const char [2]' から 'charへの変換とかでます。どうしたらよいですか?

char abc(int number){

switch( number )
{
case 0:
return "A";
break;
case 1:
return "B";
break;

       ・
       ・


62 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:03:12 ]
"A" → 'A'

63 名前:デフォルトの名無しさん [2008/07/18(金) 01:04:50 ]
2文字以上の場合もあるんですよ

64 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:05:09 ]
char* abc(int number){}

65 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:05:53 ]
まちがい
const char* abc(int number){}


66 名前:デフォルトの名無しさん [2008/07/18(金) 01:08:52 ]
constがなぜいるんですか??

67 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:22:43 ]
文字列リテラルを書き換えてはイケナイ以上、
constを付けて防禦を計っておくべき、みたいな

68 名前:デフォルトの名無しさん [2008/07/18(金) 01:23:05 ]
>>61
#include <stdio.h>
#include <stdlib.h>
char * abc(int number){
int rank = 1;
int num = number;
char *numarray;
while(num){
num /= 10;
rank++;
};
numarray = (char *)malloc(sizeof(char)*(rank+1));
sprintf(numarray,"%d",number);
return numarray;
}
int main()
{
char * ans = abc(123);
printf("%s \n",ans);
free(ans);
return 0;
}

69 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:42:33 ]
ループカウンタはsignedが普通って事は、
int size = static_cast<int>(instance_of_vector.size());
for (int i = 0; i < size; ++i) ...;
ってやればいいの?

70 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:45:15 ]
それだとINT_MAXを超えた値が返ってきたらsizeは-になるぞ。
いやまぁ2億を超える要素なんてないだろうけどw



71 名前:デフォルトの名無しさん [2008/07/18(金) 01:49:37 ]
>>69
要はさ
for(unsigned int i = 10; i > 0; i -= 2)
みたいなことやっちゃったら無限ループになるから
ちゃんと解ってるならunsignedでも良いでしょう

72 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:51:58 ]
>>71
だから、OpenMPで警告が出るんだってばさ。

73 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 02:05:28 ]
理解してるなら警告は無視していい

74 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 02:24:29 ]
>>47
そんな条件は関係ない。デストラクタに virtual が付いてない基底クラスへのポインタが
実際には派生クラスを指している場合、 delete すると未定義動作になる。

75 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 02:37:36 ]
>>37
www.kouno.jp/home/c_faq/c1.html#30

76 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 03:24:25 ]
virtualな関数が増えると、ポリモーフのコストって増える?

77 名前:デフォルトの名無しさん [2008/07/18(金) 04:49:34 ]
GNUのライブラリを使って、ソフトやライブラリを作ったら
元のGNUのソースを同封しないといけませんか??

78 名前:デフォルトの名無しさん [2008/07/18(金) 04:52:32 ]
元のソースに手を加える改良の場合は変更後のソースを入れないと駄目なんですよね
改変せず利用するだけならば、入れなくて良いですか?
GNUのライブラリを使用していると明記する必要ありますか?

79 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 05:03:49 ]
>>77-78 ライセンス嫁。あと GPL なら GPL FAQ 日本語訳とか。

80 名前:デフォルトの名無しさん [2008/07/18(金) 05:25:33 ]
GNUのコード使ったら、



81 名前:デフォルトの名無しさん [2008/07/18(金) 05:29:24 ]
GNUを利用したら、改変のある無しに関わらず、ソースコードもうpせよ
ってことでOK?
具体的には、GNUコードから、WindowsのスタティックリンクかDLLを作って
それを自分のソフトで使用した場合は、自分のプログラムのコードをうpするって事?

82 名前:デフォルトの名無しさん [2008/07/18(金) 08:47:02 ]
初心者質問てここでいいのですかね?
もしスレ違いなら誘導お願いします。
private継承について質問なのですが、親から継承したメンバはすべてprivateになり
子クラスからアクセスできないものと思っておりますが、違うのでしょうか。
実際コードを書いて確認してみたところ、アクセスできないぽいのですが
サイトによってアクセスは可能と書いているところもあるので混乱しています。
アクセスする方法があれば教えていただきたいです。
それと、private継承を調べると「実装の継承」という言葉がたいてい出てくるのですが、
これの意味がよくわかりません。
「実装の継承」の実際の使い方など教えていただけませんか。

83 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:06:13 ]
書物はまだしも、サイトの記事なんて鵜呑みにする方がどうかしている。

84 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:24:31 ]
getHoge(),setHoge()のような関数(アクセサ)を継承元で書かないとアクセスできないよ。

private継承、実装の継承というのは、基底クラスで定義された関数など「実装」のみを継承し、
インターフェイスや性格については基底クラスと同じものを持たなくて良い
=基底クラスのオブジェクトではあれができたから継承先でも出来るだろうという期待が出来ない継承のことかな。
逆にpublic継承というのは、DerivedクラスはBaseクラスの一種であるとみなして操作できなければならなくて、
BaseがCry()と言う関数を持ってたらDerivedも持っていなくてはいけないし(鳴き声は違うにしても)同じような動作をしなくてはいけない。

…という話がEffective C++に詳しく書いてあるので読んでおこう。

85 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:02:33 ]
>>77,78
LGPLかGPLで扱いが変わって来るはず。
glibcとリンクしただけで全てのプログラムが公開されなければいけないなら、
Unix系で商用ソフトなんて作れなくなるよ。

>>81
再配布条件と利用条件は区別して考えてる?
作ったプログラムを公開しないのであれば、何もUPする必要は無いよ。

86 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:06:58 ]
>>83
鵜呑みしないで疑っているからここにいるわけで

87 名前:デフォルトの名無しさん [2008/07/18(金) 16:33:35 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

配列の要素を昇順にソートしたときの、添え字の順番を配列に記憶するプログラムを書け。

data = {2,6,3,1,2} なら, index = {3,0,4,2,1}である。

元の配列は書き換えてはならない。

qsortなどのライブラリを用いて構わない。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C C++
[4] 期限: 明日

88 名前:デフォルトの名無しさん [2008/07/18(金) 16:52:11 ]
誤爆しました・・・

89 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:11:05 ]
そいじゃ、誤爆で
int [] data = { 2, 6, 3, 1, 2 };
int [] index = data.Select((a, i) => new { a, i }).OrderBy(x => x.a).Select(x => x.i).ToArray();


90 名前:デフォルトの名無しさん [2008/07/18(金) 20:53:48 ]
>>84
回答ありがとうございます
実装への直接的なアクセスをできないようにすることで
実装については変更させず、他の部分のみ変更可能にする
ということなのですかね
Effective C++も探して読んでみます



91 名前:デフォルトの名無しさん [2008/07/18(金) 21:44:50 ]
>>71
だなあ。
結局unsignedのメリットって1bit表現範囲が広がるくらい?

92 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 21:59:32 ]
unsignedだとオーバーフローで鼻からなんか発生しない。

93 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:25:54 ]
>>91
signedな整数は符号拡張がウザいこともあるし
ビット演算や何かとの相性も良くない

まあ、適材適所で使い分けろ

94 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:40:43 ]
>>92
鼻から牛乳がオーバーフローしました

95 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:30:21 ]
>>91
境界チェックの比較が1回で済む

96 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:14:33 ]
いつ誰がsignedに書き換えるかわからないんだからそこはちゃんと比較しとけよ
本当にunsignedなら最適化してくれる

97 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:16:03 ]
そうですよね
いつ誰が構造体に書き換えるかわからないですもんね

98 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:10:21 ]
なんでこれで
while( *d++ = *s++ )
文字列コピーできるんですか?


99 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:17:41 ]
>>98 なんでコピーできないと思うの?

100 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:19:20 ]
while(( *d++ = *s++) != 0)








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<131KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef