2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C言語ならアタシに聞きなさい<37>

1 :デフォルトの名無しさん:02/10/26 18:07
C言語の質問スレッド37発目です。
C言語は時代遅れなんかじゃないです。
みんな大好きなんです。このシリーズの速さがそれを物語っています。

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/

・前スレ <36>
http://pc3.2ch.net/test/read.cgi/tech/1035211039/

コンパイラ、過去ログなどのリンクは>>2-5 あたり


2 :デフォルトの名無しさん:02/10/26 18:08
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html

3 :デフォルトの名無しさん:02/10/26 18:09
【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html

【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。

4 :デフォルトの名無しさん:02/10/26 18:34
三分の二は関係ない書き込みで残りがくそみたいな質問。
だから回転がはやい。
しかも3すれごとに同じ質問が繰り返されている。


5 :デフォルトの名無しさん:02/10/26 18:35
>>4-5
2/5

6 :デフォルトの名無しさん:02/10/26 18:42
    ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/<先生!
 _ / /   /   \オススメのコンパイラーを教えてください。
\⊂ノ ̄ ̄ ̄ ̄\  \_____________              
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||       

7 :デフォルトの名無しさん:02/10/26 18:44
あなざーいぇっとこんぱいらこんぱいら

8 :デフォルトの名無しさん:02/10/26 18:48
「水平回転」とはこうですか?

 a) ┏━┳━┓
   . ┃←╂→┃
   . ┗━┻━┛

それとも、こうですか?

 b)  ┏━┓
    . ┃↑┃
    . ┣┿┫
    . ┃↓┃
    . ┗━┛

「水平軸回転」は b) ですよね。

9 :デフォルトの名無しさん:02/10/26 18:59
第2問. 「右回り」とはこうですか?

 a)  /⌒
    (   ↑
    ヽ、__ノ

それとも、こうですか?

 b)   ⌒ヽ
   ↑   )
    ヽ、__ノ

10 :4:02/10/26 19:06
5-9
はやくも無駄にスレが使われました。ここまでで意味があるのはかろうじて
1-3
ぐらい。といってもリンクだけだけど。

11 :デフォルトの名無しさん:02/10/26 19:10
>>10
まぁ所詮はこの程度でしょ。


12 :デフォルトの名無しさん:02/10/26 19:11
>>1
あなたは誰ですか?

13 :デフォルトの名無しさん:02/10/26 19:21
struct servent server;
memset((char*)&server,0sizeof(server));
ってのを本で見かけたんですが
ansiiの規格では
void*memset(void*,int,int,size_t)
っていうふうになってますよね
なんでわざわざchar*型にキャストする必要が
あるんですか?
おしえてくふぁさい

14 :デフォルトの名無しさん:02/10/26 19:34
fgets関数でファイルを一行ずつ読み込んでいきますが、一行読み込んだら次にまたfgetsを実行したとき次の行を読み込むことになっているのは仕様ですか?
同じ行を読み直すとか、そういう場合には困るような気がするんですが(そういうことする必要ないか?)

ってかよくFILE *fp = fopen(hoge)ってので*fpがつかわれますが、この*fpの先の実体はどうなってるんでしょうか?

15 :デフォルトの名無しさん:02/10/26 19:38
>>13
作者に聞け。後者のほうが正しい。

>>14
仕様。fseekでも調べろ。

16 :15:02/10/26 19:40
>>14
ヘッダーでも調べろ。FILEは構造体だ。

17 :デフォルトの名無しさん:02/10/26 19:46
>>13
昔は void がなかったので(汎用ポインタには) void * の代わりに char *
を使ったらしいです。その名残ではないでしょうか?

18 :193→一休さん:02/10/26 19:57
 線形リストが、まだわからない。

19 :デフォルトの名無しさん:02/10/26 19:58
>>16
実体はライブラリによって異なるから、
調べる意味がないようなきもする。

が、ライブラリのソースまで追って行くのであれば
それはそれで勉強になるか。

20 :デフォルトの名無しさん:02/10/26 19:59
風俗にいってからちんちんが妙に痒いんだがどうしたらいい。

21 :デフォルトの名無しさん:02/10/26 20:00
てーか何でFILEを表に出しているのか。

22 :デフォルトの名無しさん:02/10/26 20:01
VirtualAlloc(NULL, Param.Image.BufferLength, MEM_COMMIT, PAGE READWRITE);
では、コミットするページ領域のサイズはいくつになるんでつか?

23 :デフォルトの名無しさん:02/10/26 20:03
>>22
なぜCスレできくのでつか?

24 :デフォルトの名無しさん:02/10/26 20:05
ほうれん草を炒める関数の名前はどうしたら良いですか?

25 :デフォルトの名無しさん:02/10/26 20:06
そうでつね

26 :デフォルトの名無しさん:02/10/26 20:17
frySpinach()

27 :デフォルトの名無しさん:02/10/26 20:30
>>5
あっ、レスありがとうございます!
倉本安奈ちゃんかあ、今度見てみます!どうもですー

28 :デフォルトの名無しさん:02/10/26 20:43
ある文字列から、スペースをデリミタとして、左辺と右辺に分ける関数を教えてください。結果は char 型のポインタで返ってくると嬉しいのですが。

29 :デフォルトの名無しさん:02/10/26 20:49
>5 よ。 27 に返事してやれ。

30 :デフォルトの名無しさん:02/10/26 21:06
>>27はスカ

31 :デフォルトの名無しさん:02/10/26 21:15
>28
 左側はその文字列の先頭アドレスでいいよね。
 右側は、デリミタを検索(連続はチェックしてね)してその次のアドレスでいいよね。

32 :デフォルトの名無しさん:02/10/26 21:19
いいよねじゃなくて、、、ソース書いてくれると嬉しいのですが。

33 :デフォルトの名無しさん:02/10/26 21:20
ソース

34 :デフォルトの名無しさん:02/10/26 21:21
>>32
strchrあたり使ってなんとかすれ。

35 :デフォルトの名無しさん:02/10/26 21:36
int a[100], b[10];
int i, j, k, *p ;
p = a[i];
k = p[b[j]];
とやるとき
for (i = 0; i < 10; i++)
  b[i] *= sizeof (int);
としておいて
k = *((int *) ((char *) p + b[j]));
とやったほうが速いように思うんですけど
このコードは移植性がありますか?

36 :31:02/10/26 21:39
>32 31で言った事だけで、もうソース書いたも同然だからあとは出来るはず。
   ていうか、Cを学びたいのであれば、ぜひやってみて下さい。

37 :デフォルトの名無しさん:02/10/26 21:56
>>32
それくらい自分でやってくれると嬉しいのですが。

38 :デフォルトの名無しさん:02/10/26 21:58
つまり、あなた方はできないわけだ。

39 :デフォルトの名無しさん:02/10/26 21:59
出来ません。

40 :デフォルトの名無しさん:02/10/26 22:07
strchr()の中身みたいんですけど、どこに書いてありますか?なんでもおk

41 :デフォルトの名無しさん:02/10/26 22:07
CRT

42 :デフォルトの名無しさん:02/10/26 22:15
CRTってディスプレイのことじゃないですよね?
いや、そうなんだろうけど、ここでの意味は?

43 :デフォルトの名無しさん:02/10/26 22:17
China Raguby Team.

44 :31:02/10/26 22:19
>38
 そうじゃないです。僭越ですが、私はこのように書きました。
 デリミタが見つからない場合と、文字列の最後に見つかった場合は
NULLを返します。

#define delimit 0x20

char *divide( const char *s )
{
 char *myPtr;

 if( myPtr = strrchr( s, delimit ) )
  if( *(myPtr++) == NULL )
   myPtr == NULL;

  return myPtr;
}

45 :デフォルトの名無しさん:02/10/26 22:20
CRTはVC++に入ってるよ。Cランタイムのソースがイパーイと。

char *strchr(const char *str, int c)
{
  c = (char)c;

  while (*str && *str != c)
    ++str;

  if (*str == c)
    return (char *)str;
  return NULL;
}

46 :デフォルトの名無しさん:02/10/26 22:23
>>45
それってどこのフォルダにありますか?

47 :デフォルトの名無しさん:02/10/26 22:23
>>40
http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/libc/sysdeps/i386/strchr.S?rev=1.12&content-type=text/plain&cvsroot=glibc

これが最高に参考になります(藁


48 :デフォルトの名無しさん:02/10/26 22:26
>46
VCインスコしたディレクトリの中にCRTっていうとこ。
CRTのインスコはオプションだよ。

49 :デフォルトの名無しさん:02/10/26 22:27
>>48
ありがとうございました

50 :デフォルトの名無しさん:02/10/26 22:27
>>22
ほかのスレに書いたんですがレスないでつ。


51 :デフォルトの名無しさん:02/10/26 22:33
>>50
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_virtualalloc.htm

52 :デフォルトの名無しさん:02/10/26 22:33
>>45
> c = (char)c;

なんだコリャ ?

53 :デフォルトの名無しさん:02/10/26 22:35
VC++なんて持っていません。昔手に入れたワレズのエンタープライズエディションくらいならありますが、使うとやばいので使えません。

54 :デフォルトの名無しさん:02/10/26 22:36
>>53
47のでいいじゃねえか。


55 :デフォルトの名無しさん:02/10/26 22:37
ついでに、>>44も仕様を満たしてないと思われ

56 :デフォルトの名無しさん:02/10/26 22:38
>>53
通報しますた

57 :デフォルトの名無しさん:02/10/26 22:39
>>53
通報しました


58 :デフォルトの名無しさん:02/10/26 22:41
>>53
もう一回通報しますた

59 :デフォルトの名無しさん:02/10/26 22:42
>>53
MSKKにも通報しますた


60 :デフォルトの名無しさん:02/10/26 22:45
YKKにも通報しますた

61 :デフォルトの名無しさん:02/10/26 23:01
>>52
1ビット比較するのと4ビット比較するのはどっちが早いと思う?

62 :61:02/10/26 23:02
ビット -> バイト

63 :デフォルトの名無しさん:02/10/26 23:03
マスクしてるのか?

64 :デフォルトの名無しさん:02/10/26 23:06
>>61-62
どういう意味?

65 :デフォルトの名無しさん:02/10/26 23:11
charは1バイトでしょ。
4ビットって?

66 :デフォルトの名無しさん:02/10/26 23:12
___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

67 :デフォルトの名無しさん:02/10/26 23:29
なぜC++と比べてCの質問スレはこんなに盛況なのですか?








厨ばっかだからか?(プ

68 :デフォルトの名無しさん:02/10/26 23:36
>>61
レジスタって知ってる?

69 :デフォルトの名無しさん:02/10/26 23:45
今、よほどの環境じゃない限り4バイトと1バイトを
切り詰めて比較する必要はないだろう。

70 :デフォルトの名無しさん:02/10/26 23:45
>>67
笑うとこか?C++はさっさとdat落ちか糞スレになる運命。

71 :デフォルトの名無しさん:02/10/26 23:48
int cだけど、1バイトの比較になるか?

72 :デフォルトの名無しさん:02/10/26 23:49
Cしか知らない爺が多いおかげで喰えるんですから感謝しましょう。
STLで今日もfunctionalかつgenerativeにコーディングしましょう。



73 :デフォルトの名無しさん:02/10/27 00:04
67は、心が腐った人間の見本


74 :デフォルトの名無しさん:02/10/27 00:07
>>52
下位の8ビットだけ使うって事なんでしょ?

75 :デフォルトの名無しさん:02/10/27 00:07
char *strchr(const char *str, int c)
何でint変数にcなんて名前つけるの?

76 :デフォルトの名無しさん:02/10/27 00:08
>>75
一文字ってことなんじゃないの?

77 :デフォルトの名無しさん:02/10/27 00:08
C=C*&FF;
でいいだろ

78 :デフォルトの名無しさん:02/10/27 00:11
>>77
それ、コンパイルできるの?

79 :デフォルトの名無しさん:02/10/27 00:13
c = c & 0xff って事か?
でもそれじゃダメだな。符号拡張しなきゃ。

80 :デフォルトの名無しさん:02/10/27 00:17
どうでもいいけど、Cなら
C &= 0xff;
みたいに書いて欲しい。

81 :77:02/10/27 00:22
c&=0x80ff;で可能?

さっきはゴメン、頭眠ってるかも・・・オヤスミ...

82 :デフォルトの名無しさん:02/10/27 00:28
>>81
それじゃだめじゃん。
つーか普通に c = (char)c; でいいじゃん。

83 :デフォルトの名無しさん:02/10/27 00:59
*strとcの比較に影響出る?サイズ変わらないよね

84 :デフォルトの名無しさん:02/10/27 01:01
>>83
だから、int cの下位8ビットだけ使うってことでしょ?

85 :デフォルトの名無しさん:02/10/27 01:07
>>84
c=(char)c
↑これやるとなにか違いがあるの?
今Cコンパイラないから確認できないけど、意味内と思うよ。

86 :デフォルトの名無しさん:02/10/27 01:08
#include <stdio.h>int main(void){ int i = 0x0fffffff; char c = (char)i;printf("%d,%d\n", c,i);/* -1,268435455 */return 0; }c &= 0xff;で良いんじゃ?

87 :デフォルトの名無しさん:02/10/27 01:10
>>85
たとえば、cの内容が0x1111だったら明らかに違うじゃん。


88 :デフォルトの名無しさん:02/10/27 01:10
>>81
アフォか。
char *str と int c を比較すれば int 型に暗黙変換される。
その時の *str が取りうる値は (int が 32-bit として)
0xFFFFFF80 (-128) 〜 0x0000007F (127) だ。
単にビットを切り取っただけだと、0x00000080 (128) を超える
数値ができて比較になんねーだろ。
char が unsigned char の処理系なら問題ないだろうけど。

89 :デフォルトの名無しさん:02/10/27 01:11
char c = (char)i
これならなんとなくわかるけど、
実際吐き出すコードはどうなるんだろう

90 :デフォルトの名無しさん:02/10/27 01:13
吐き出すコードがどうとかってより、挙動がちがうじゃん。

91 :デフォルトの名無しさん:02/10/27 01:16
>>89
c = (char)c;

で、VC++ 6.0 は...

 movsx eax, BYTE PTR _c$[esp-4]

と言うコードを吐くから、とりあえず下位8ビットを符号拡張してるね。

92 :デフォルトの名無しさん:02/10/27 01:17
>>90
つーか、なんで >>45 のコードに c = (char)c; が必要なの ?

93 :デフォルトの名無しさん:02/10/27 01:21
gasだとこんな感じ
movsbl -4(%ebp),%eax
movl %eax,-4(%ebp)

下位1バイトを切り取ってる。


94 :739:02/10/27 01:27
gasって何だよ(W
GCCだろ.

95 :デフォルトの名無しさん:02/10/27 01:27
アセンブラコードありがとうございます。
仮に char c=(char)i だった場合、*strとの比較は1バイトになるんですかね?
なんか4バイト比較しそうな気がする。CPUが命令もってないか、
速度変わらないとかで。

96 :デフォルトの名無しさん:02/10/27 01:30
重箱のすみをつつくなら正確に。

>>94
GCCだとGNU Compiler Collectionになりますが。


97 :デフォルトの名無しさん:02/10/27 01:35
>>95
普通は1バイトずつ比較する。
CPU が命令持ってない時は、マスクして比較する。

98 :デフォルトの名無しさん:02/10/27 01:36
>>89-95>>88 を見れ。
アセンブリコードなどこの際関係ない。
下位型と上位型の演算は上位型にキャストされるという大原則を思い出せ。

・・・アセンブラコードって何だよ、アセンブルした時のエラーコードか?

99 :デフォルトの名無しさん:02/10/27 01:36
>>94って相当はずかしいな・・・・

100 :デフォルトの名無しさん:02/10/27 01:37
>>92
その行があるのと無いのでは挙動がちがうじゃん。
わからんの?

101 :デフォルトの名無しさん:02/10/27 01:40
>>100
だから、何のために「その違う挙動」が必要なのか聞いてるんだけど。
日本語理解できてないのか ?

102 :デフォルトの名無しさん:02/10/27 01:40
>>95
>仮に char c=(char)i だった場合、*strとの比較は1バイトになるんですかね?

いや、*strとの比較はintで行われるよ。

103 :デフォルトの名無しさん:02/10/27 01:42
んーわからない。
int cにcharの範囲を越えてるようなものを渡されたときのためですか?


104 :デフォルトの名無しさん:02/10/27 01:43
94ほどの漢だと、96の意味が理解できない可能性も。


105 :デフォルトの名無しさん:02/10/27 01:46
>>101
> だから、何のために「その違う挙動」が必要なのか聞いてるんだけど。

strchrの仕様がそうだからだよ。






106 :デフォルトの名無しさん:02/10/27 01:47
>>101
> だから、何のために「その違う挙動」が必要なのか聞いてるんだけど。

おまえ、そんなことは聞いてないじゃん。

107 :デフォルトの名無しさん:02/10/27 01:48
>>105
> strchrの仕様がそうだからだよ。

c = (char)c; がない時に、strchr() の仕様に合致しない例を挙げよ。

108 :デフォルトの名無しさん:02/10/27 01:49
>>47
のコードはそういう処理をしてないよね。


109 :デフォルトの名無しさん:02/10/27 01:51
>>75
意外と知られていないが、
'a'などの文字リテラルはCではint型。

110 :デフォルトの名無しさん:02/10/27 01:51
>>107
cに0x111が入ってたら?
(つくづくわかってない奴だな…)

111 :デフォルトの名無しさん:02/10/27 01:51
これ、最悪の場合意図しない文字の位置を返すんじゃない?

112 :デフォルトの名無しさん:02/10/27 01:55
どうして
char c = (char)i;
じゃなくて
i=(char)i;
なんだろ。
int型に入れたらその後の比較でsizeof(int)単位で比較しなきゃいけなくなるでしょ?

char,charの比較ならcmpblで1バイトの比較になる。


113 :デフォルトの名無しさん:02/10/27 01:55
>>111
どれのこと言ってるの?

114 :デフォルトの名無しさん:02/10/27 01:55
>>110
お前は、アフォか ?
c に 0x111 が入っていた時の挙動が定義されてんのか ?

>>111
そう言う意味では、c = (char)c; があるほうが危険と思うけど。
c = (char)c; がなくて、c に 0x111 があるような状況だと、単にそう言う文字がないだけになるからね。

115 :デフォルトの名無しさん:02/10/27 01:56
さっさと誰か規格の原文をコピペ汁



116 :デフォルトの名無しさん:02/10/27 01:57
>>112
貴方は、正しい。俺もそう思うし、VC++ 6.0 の strchr() もそうしてる。
(別の変数にはしてないけど、比較の時にキャストしてる。)

117 :デフォルトの名無しさん:02/10/27 01:57
>>113
>>45のstrchrです。
そんなもの渡す方が悪いんだろうけど、無い。で帰ってきたほうが親切なような。

118 :デフォルトの名無しさん:02/10/27 01:58
>>114
> c に 0x111 が入っていた時の挙動が定義されてんのか ?

え? もしかして挙動がわからのの?


119 :デフォルトの名無しさん:02/10/27 01:59
>>114
>c = (char)c; がなくて、c に 0x111 があるような状況だと、単にそう言う文字がないだけになるからね。

やっぱり分かってない。


120 :デフォルトの名無しさん:02/10/27 02:00
>>118
わかったから、はよかけよ。その「挙動」とやらを。

121 :デフォルトの名無しさん:02/10/27 02:07
みていると>>118のがバカっぽいな。

122 :デフォルトの名無しさん:02/10/27 02:08
だから >>101>>88 を見れ

123 :デフォルトの名無しさん:02/10/27 02:09
>>120がかわいそうだから誰か教えてやったら?

124 :デフォルトの名無しさん:02/10/27 02:12
>>88の単にビットを切り取っただけだと
ってなに?

125 :デフォルトの名無しさん:02/10/27 02:12
>>114-118

>c = (char)c;
C言語の標準型はintなのは知ってるのかねえ・・。
*strもintに直されるんで、わざわざint->char->intにして
符号拡張させるんですよ。
バカども。

126 :デフォルトの名無しさん:02/10/27 02:12
おまえらアフォか。

  ど う し て 0x111 が 例 に 挙 が る ん だ ?

'ア' を指定したときの動作で十分説明つくだろうが。

127 :デフォルトの名無しさん:02/10/27 02:13
>>126
CESは?


128 :デフォルトの名無しさん:02/10/27 02:18
>>126
このスレの流れだったら、べつにどっちでもいいやん。

129 :デフォルトの名無しさん:02/10/27 02:19
>>125
なんか見当はずれなことを言ってる馬鹿がいますよ。

130 :デフォルトの名無しさん:02/10/27 02:21
7bit関係?

131 :125:02/10/27 02:23
>>129-130
うわ、理解できてないヤシがいるよ(藁
ほんとバカだな・・。

char *r = strchr("abcde\xff",-1);
rには"\xff"が入るっての、理解できる?


132 :デフォルトの名無しさん:02/10/27 02:27
'ア' == 0xB1
これを int として渡すと 0xFFFFFFB1
下位 8bit だけを抜き出すと 0x000000B1
一方 *str の取りうる値は 88 の通り 0xFFFFFF80 〜 0x0000007F
なので str に ア が含まれてても発見できない

133 :デフォルトの名無しさん:02/10/27 02:28
>>131
今の話題って、>>45のソースで
c=(char)c;
がなんで必要かって事だよね?
で、君はいらないと思ってるんだよね?

134 :デフォルトの名無しさん:02/10/27 02:30
>>132
それは違うよ。

135 :125:02/10/27 02:30
>>133
逆だよバカ。
c=(char)c;は、* 必 要 * 

136 :125:02/10/27 02:31
>>132
全然理解できてない。

137 :デフォルトの名無しさん:02/10/27 02:31
>>134
違うというだけでなく何がどう違うのか指摘しないと無視されるぞ

138 :デフォルトの名無しさん:02/10/27 02:32
わかんねー
どっち派でもいいから、すっきりとした解説おながいします。

139 :125:02/10/27 02:33
>>132
あのね、str側もchar->intに符号拡張されるんだよ。
だからちゃんとstrの'ア'もみつかるの。

140 :デフォルトの名無しさん:02/10/27 02:33
シャッキリポンとした解説おながいします


141 :125:02/10/27 02:33
だから
char *r = strchr("アイウエオ",'ア');
rは"アイウエオ"


142 :デフォルトの名無しさん:02/10/27 02:34
>>137
別に無視でもかまわないけど。

143 :125:02/10/27 02:35
ちなみに下位ビットとかそんな話は関係ない。
単にC言語のchar->int符号拡張の話。

144 :デフォルトの名無しさん:02/10/27 02:36
>>135
うるせーよ。ばか。

145 :デフォルトの名無しさん:02/10/27 02:36
まったりとして、それでいてしつこくないのがいいです。

146 :125:02/10/27 02:36
>  while (*str && *str != c)
わかんねーやつは、
このコードで、何が起きているのかよく考えろ。
バカども。

147 :デフォルトの名無しさん:02/10/27 02:36
・未定義
・処理系依存
・void main
・符号拡張

148 :デフォルトの名無しさん:02/10/27 02:37
そもそも文字列の中から特定の文字を探すための関数にcharで表せない値を渡すことが間違っているんじゃ・・・・


149 :デフォルトの名無しさん:02/10/27 02:38
>>131
> char *r = strchr("abcde\xff",-1);
> rには"\xff"が入るっての、理解できる?

r じゃなくて、*r だろっ。って言う突っ込みは置いといて、これって規格で決まってんのか ?
char が符号無しの処理系において、-1 なんか渡してもいいのか ?
'\xff' を渡すのなら理解できるが...。

150 :125:02/10/27 02:38
>>148
だから、何が渡されてもそれなりに処理できる様に作ってあるんだろうが。
このバカ。

151 :デフォルトの名無しさん:02/10/27 02:38
いいねえ、レガシーな話題で盛り上がれて。


152 :125:02/10/27 02:39
>>149
intの値なら何渡そうがいいんだよ。バカ。
符号の有無もc=(char)cで吸収されて関係ない。

153 :デフォルトの名無しさん:02/10/27 02:39
>>148
まあ、間違いというか無意味だけど、
今回はstrchr()の挙動の話だから。

154 :125:02/10/27 02:40
もうバカばっかり。バカバカバカみんなバカ。

155 :デフォルトの名無しさん:02/10/27 02:41
>>149
'\xff' はすなわち -1 だ。
char が符号付である処理系では。

156 :デフォルトの名無しさん:02/10/27 02:41
>>150
それなりってなんだよ。
キャストしなくても途中で致命的なエラーが発生したりはしないだろ。

157 :デフォルトの名無しさん:02/10/27 02:42
>>125の必死な姿が目に浮かぶ。

158 :デフォルトの名無しさん:02/10/27 02:42
>>154
なんで、あんたがヒスを起こすの?

159 :デフォルトの名無しさん:02/10/27 02:42
125 の固定番号を引きずってる 125 もかなりの DQN

160 :125:02/10/27 02:42
>>155-156
はいはい、揚げ足取りごくろーさん。

161 :デフォルトの名無しさん:02/10/27 02:42
>>155
1の補数表現でも-1になるんだっけ?

162 :デフォルトの名無しさん:02/10/27 02:42
>>152
お前は、アフォか ? その時の挙動が規定されてんのか ? って聞いてんだよ。
ちなみに言っとくけど、-1 の下位8ビットが 0xff なんてことは、規定されてねーからな。

163 :125:02/10/27 02:43
揚げ足取り必死だな

164 :デフォルトの名無しさん:02/10/27 02:44
>>125
顔真っ赤ですよ。

165 :デフォルトの名無しさん:02/10/27 02:44
>>155
「符号無しの処理系において」と書いてあるの見えない ?

166 :125:02/10/27 02:44
おまえら全員読解力ゼロのバカ

167 :125:02/10/27 02:45
>>162
はぁ?
挙動って何?

168 :デフォルトの名無しさん:02/10/27 02:45
125 は何も試してないだろ。黙れ。

char *strchr_a(const char *str, int c)
{
  c = (char)c;
  while (*str && *str != c) ++str;
  if (*str == c) return (char *)str;
  return NULL;
}
char *strchr_b(const char *str, int c)
{
  while (*str && *str != c) ++str;
  if (*str == c) return (char *)str;
  return NULL;
}
int main()
{
  const char * str = "abcde \xFF abcde";
  printf("str = %p\n", str);
  printf("strchr_a = %p\n", strchr_a(str, '\xFF'));
  printf("strchr_b = %p\n", strchr_b(str, '\xFF'));
  getchar();
  return 0;
}

169 :デフォルトの名無しさん:02/10/27 02:46
あ、0xffffffffじゃなくてint直で0xffを渡したときの挙動かな?

170 :デフォルトの名無しさん:02/10/27 02:46
>>162
「規定」というか、決まってるでしょ?

> ちなみに言っとくけど、-1 の下位8ビットが 0xff なんてことは、規定されてねーからな。

はげしく勘違いしてる予感


171 :デフォルトの名無しさん:02/10/27 02:47
ここが質問者回答者共々厨房なのはあまりにも有名な話。
俺?もちろん厨房さ。

172 :デフォルトの名無しさん:02/10/27 02:47
>>167
> 挙動って何?

日本語もわからんのか...。まあ、落ち着けよ。

173 :125:02/10/27 02:47
もう、せっかく教えてやってるのに頑なに理解しようとしてないバカがいるね。

174 :デフォルトの名無しさん:02/10/27 02:48
最初に晒されたコードはVisual C++のものみたいだけど、他の有名なライブラリのstrchrのソースでもcharにキャストしているの?

175 :デフォルトの名無しさん:02/10/27 02:48
>>170
> 「規定」というか、決まってるでしょ?

どう決まってんの ?

176 :デフォルトの名無しさん:02/10/27 02:49
>>173
ププッ、捨てぜりふモードに入りましたね。

177 :デフォルトの名無しさん:02/10/27 02:49
このスレ読んでわけがわからんので100レス遡る。

他人をややオカマ口調でバカバカいう125たんと
0x111とか言った香具師のせいでこんがらがってるだけだな。

178 :デフォルトの名無しさん:02/10/27 02:49
たぶんわかった。>>109

179 :デフォルトの名無しさん:02/10/27 02:50



必死な>>125がいるスレというのはここですか?




180 :デフォルトの名無しさん:02/10/27 02:51
char *strchr(const char *str, int c)
{
for(;*str;str++)
if(*s==(char)c)
return (char *)str;

return NULL;
}

じゃだめなの?

181 :デフォルトの名無しさん:02/10/27 02:51
>>179
ここです。

182 :デフォルトの名無しさん:02/10/27 02:51
ちなみに125の言うことは間違ってない。

183 :デフォルトの名無しさん:02/10/27 02:52
なんていうか、自分の考えを上手く伝えられない自分へのもどかしさも彼をイライラさせる原因に。

184 :125:02/10/27 02:52
>>180
それじゃ駄目だって。
バカ。

185 :デフォルトの名無しさん:02/10/27 02:53
>>174
とりあえず VC++ 6.0 では、

char * __cdecl strchr (
 const char * string,
 int ch
 )
{
 while (*string && *string != (char)ch)
  string++;

 if (*string == (char)ch)
  return((char *)string);
 return(NULL);
}

となってて、char 同士で比較するようになってる。

186 :デフォルトの名無しさん:02/10/27 02:53
>>184
なんで?

187 :デフォルトの名無しさん:02/10/27 02:53
よし、俺も必要派に転向だ。寝るけど。

188 :デフォルトの名無しさん:02/10/27 02:53
確かに 125 は自分で自分の品位を下げるタイプみたいだな.
こういう奴は仮に正しいことを言ってても, 真っ先に白い目でみられんだよね ...
もう少し肩の力を抜けばいいのに...

189 :デフォルトの名無しさん:02/10/27 02:54
>>183
それだ

190 :デフォルトの名無しさん:02/10/27 02:54
>>182, >>184
だから、ダメな例をちゃんと挙げろよ。

191 :デフォルトの名無しさん:02/10/27 02:54
>>175
処理系定義

192 :125:02/10/27 02:55
>>180
あ、やっぱそれでも合ってる。
おれもバカどものせいで混乱してきた。

193 :デフォルトの名無しさん:02/10/27 02:55
つーか、元はと言えば strchr() の c が int である事が間違ってる。

194 :デフォルトの名無しさん:02/10/27 02:55
>>184
いいじゃん。

195 :125:02/10/27 02:57
>>191
処理系依存つっても、普通は2の補数表現使うから
ほとんど決め打ちで考えて問題ないよ。

196 :デフォルトの名無しさん:02/10/27 02:57
>>191
だったら、この処理系では結果は不定ですって言うのもありか ?

そうなら、c = (char)c; は不要じゃん。

197 :デフォルトの名無しさん:02/10/27 02:58
>>185
この素直じゃないコードを書いた人の顔を見てみたい。

198 :デフォルトの名無しさん:02/10/27 02:59
そういえばSolarisのstrcasecmpに8bitな文字列を与えるとものすごいことになるね。


199 :デフォルトの名無しさん:02/10/27 02:59
なんでここは話題に事欠かないの。誰かネタ帳でも持ってるの。

200 :デフォルトの名無しさん:02/10/27 02:59
>>197
どこら辺がおかしいとお思い ?

201 :デフォルトの名無しさん:02/10/27 03:00
>>199
ごゆっくりお楽しみ下さい。

202 :デフォルトの名無しさん:02/10/27 03:00
>>199
> なんでここは話題に事欠かないの。誰かネタ帳でも持ってるの。

たいした事ないネタに食いつく奴が (今回は >>125) が多いからだろ。

203 :デフォルトの名無しさん:02/10/27 03:00
>>200
なんでわざわざ int ch としてるのか。

204 :125:02/10/27 03:00
お肌に悪いからもう寝る。
バカどもは徹夜で考えてなさいよ。
つーかまず質問するまえにぐぐれ。

205 :デフォルトの名無しさん:02/10/27 03:01
最後はネカマかよw

206 :デフォルトの名無しさん:02/10/27 03:02
c = (char)c; となってる理由がぐぐって出てくるのかよ プッ

207 :デフォルトの名無しさん:02/10/27 03:02
>>200
素直に一文字ずつ見ていって見つかればそこでreturn。見つからなければ(ループを抜けたら)NULLを返せばいいと思う。


208 :デフォルトの名無しさん:02/10/27 03:02
>>199
ネタ帖は>>147に。あとは誰か補完してください。

209 :デフォルトの名無しさん:02/10/27 03:03
>>205
>>154 この辺も萌えるよ。

210 :デフォルトの名無しさん:02/10/27 03:03
>>147
NULLは0(全ビット0)か?を忘れているぞ。

211 :デフォルトの名無しさん:02/10/27 03:03
>>203明日になったら分かるさ。

212 :デフォルトの名無しさん:02/10/27 03:04
>>203
>>109

213 :デフォルトの名無しさん:02/10/27 03:04
>>210
つか、C FAQでいいじゃん。

214 :207:02/10/27 03:05
>>203>>197じゃないのであしからず。

215 :デフォルトの名無しさん:02/10/27 03:06
>>212
109は説明になってないよ。

 

216 :デフォルトの名無しさん:02/10/27 03:06
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

217 :デフォルトの名無しさん:02/10/27 03:08
>>109
じゃ、ほんとは
int *str = "abcde";
って書くのが正しいの?

218 :デフォルトの名無しさん:02/10/27 03:08
>>207
>>180 ってこと ? 大して変わらんと思うけど。

219 :デフォルトの名無しさん:02/10/27 03:08
>>217
そうは書けないね。

220 :デフォルトの名無しさん:02/10/27 03:08
VC++のライブラリのソースはひどいね。
マクロによってstrspnのソースになったりstrpbrkのソースになったり・・・

221 :デフォルトの名無しさん:02/10/27 03:09
関数の引数として渡すと char、short は int に float は double に自動的に変換されるのです

222 :デフォルトの名無しさん:02/10/27 03:11
禿しくCPU依存の悪寒

223 :デフォルトの名無しさん:02/10/27 03:12
じゃあ結論はcharへのキャストはしたければしろ。したくなければしなくてよい。
ということでOK?

224 :デフォルトの名無しさん:02/10/27 03:13
>>223
いや、キャストは必要。

225 :デフォルトの名無しさん:02/10/27 03:13
第二部いきまーす

226 :デフォルトの名無しさん:02/10/27 03:14
>>222
2の補数を採用してないCPUなんてめったにないだろ

227 :デフォルトの名無しさん:02/10/27 03:14
strcpyの第二引数にNULLを渡してもうまく動作するなんてどこに書かれているんですか?


228 :デフォルトの名無しさん:02/10/27 03:15


229 :デフォルトの名無しさん:02/10/27 03:15
>>221
それって、昔の話では…

230 :デフォルトの名無しさん:02/10/27 03:17
217 は阿呆か、文字リテラルと文字列リテラルは全然違うのに。

231 :デフォルトの名無しさん:02/10/27 03:18
>>229
おまえC++と混同してるだろ。
Cは221で合ってる。

232 :デフォルトの名無しさん:02/10/27 03:19
>>226
負数に2の補数を使ってないCPUなんてあるのか?

233 :デフォルトの名無しさん:02/10/27 03:19
リッチーもひどい言語をつくってくれたものだな!

234 :デフォルトの名無しさん:02/10/27 03:21
>>232
PS2のCPUとか。

235 :デフォルトの名無しさん:02/10/27 03:21
>>233
はじめっからCは高級アセンブラって位置付けなんだから
変な期待すんな

236 :デフォルトの名無しさん:02/10/27 03:22
>>233
モノは使いよう。
クソソースを作るやつがクソ
つーか age る程の話題ではない

237 :デフォルトの名無しさん:02/10/27 03:22
>>231
たとえば
void hoge(char ch);
という関数があったら、intに変換されるってこと?
わけわからん。

238 :デフォルトの名無しさん:02/10/27 03:22
>>221の意味がわからない。
解説お願いします。

239 :デフォルトの名無しさん:02/10/27 03:22
>>235
未定義・処理系依存が多すぎるじゃん!

240 :デフォルトの名無しさん:02/10/27 03:22
>>234
マジで?
gccとかやばいんでない?

241 :デフォルトの名無しさん:02/10/27 03:23
0x80〜は符号拡張されるから、よくやる
n = c - '0';
みたいなのは0x80をまたいでは使えないんだね。気付かなかった。やらないけど。

242 :デフォルトの名無しさん:02/10/27 03:24
>>224
だから、ないとまずい理由をちゃんと書け。

243 :デフォルトの名無しさん:02/10/27 03:24
引数がint型に拡張されないと、DLLとかで困ると思うんだが。

244 :デフォルトの名無しさん:02/10/27 03:24
>>241
だれに返事してるの?

245 :デフォルトの名無しさん:02/10/27 03:24
1の補数表現って8bitの場合、0x00と0xFFは同じ値になるの?
Cと関係なくてスマソ

246 :デフォルトの名無しさん:02/10/27 03:25
>>242
つーか、その話題まだ引きずるの?

247 :デフォルトの名無しさん:02/10/27 03:25
>>244
ひとりごとだ、スマソ

248 :デフォルトの名無しさん:02/10/27 03:26
以降

 独 り 言 禁 止

249 :デフォルトの名無しさん:02/10/27 03:26
>>243
それは、Windowsの実装の話でしょ。
C一般の話じゃないよ。

250 :デフォルトの名無しさん:02/10/27 03:27
>>227は放置ですか?
前スレにstrcpy(str,NULL);やstrcpy(str,0);はOKみたいなことが書かれていたんですけど。

251 :デフォルトの名無しさん:02/10/27 03:27
>>249
でも、一般的なPC環境はWindowsだよね

252 :デフォルトの名無しさん:02/10/27 03:27
以降

   OS依存、処理系依存禁止


253 :デフォルトの名無しさん:02/10/27 03:28
>>250
そんなこと気にしてるの、お ま え だ け だ よ
そんなこと気にしてるの、お ま え だ け だ よ

254 :デフォルトの名無しさん:02/10/27 03:28
以降

 ふ か わ り ょ う 禁 止
 ふ か わ り ょ う 禁 止

255 :デフォルトの名無しさん:02/10/27 03:29
このスレッド立ってから12時間も経っていないんですけど。

256 :デフォルトの名無しさん:02/10/27 03:29
>>217
'A':文字定数->int型として解釈される
"hoge":文字列リテラル:一文字一文字はcharとして解釈される


257 :デフォルトの名無しさん:02/10/27 03:29
>>242
あれがないと、'ア'を渡したとき、
int c = 0x000000B1のままになってしまうから。
ではどうですか?

258 :デフォルトの名無しさん:02/10/27 03:30
>>256
*strで参照するとintに拡張されますが。

259 :デフォルトの名無しさん:02/10/27 03:30
>>251
Winで1バイトの引数を4バイトの領域を使って渡してるのを、
↓これと、混同してるわけ?

>221 :デフォルトの名無しさん :02/10/27 03:09
>関数の引数として渡すと char、short は int に float は double に自動的に変換されるのです



260 :デフォルトの名無しさん:02/10/27 03:31
>>246
結局俺は、c = (char)c; が必要かどうか、わからんかった。
誰か、まとめてくれないか ?

261 :デフォルトの名無しさん:02/10/27 03:31
>>259
混同ではないよ。
Windowsの規約。

262 :デフォルトの名無しさん:02/10/27 03:31
printf が %d で char でも short でも int でも受けれたり、%f で float でも double
でも受けれたりするのを考えれば >>221 は自ずと分かると思いますが
ダメでしょうか?

263 :デフォルトの名無しさん:02/10/27 03:32
これスレはテレビの馬鹿番組でも見ているようで楽しいな

264 :デフォルトの名無しさん:02/10/27 03:32
>>261
だからCの話と関係ないじゃん。

265 :デフォルトの名無しさん:02/10/27 03:32
>>262


266 :デフォルトの名無しさん:02/10/27 03:32
>>262
それこそ中でキャストしているだけじゃ・・・

267 :デフォルトの名無しさん:02/10/27 03:33
>>262
この話は、それとは違うじゃん。

268 :デフォルトの名無しさん:02/10/27 03:33
>>250
それを書いたものだが、そんなことしてOKなんて一言も書いてないぞ。
ただしやっていかんとも書いてない。なぜなら、その時の議論には
全く関係のないことだったからだ。

269 :デフォルトの名無しさん:02/10/27 03:34
>>260
必要。

270 :デフォルトの名無しさん:02/10/27 03:34
>>264
キミもしつこいね。

271 :デフォルトの名無しさん:02/10/27 03:34
strchr() 内における c = (char)c; は、

  0x111 のような文字とは思えないデータでも文字データとして扱うなら必要
  文字とは思えないデータははじいてしまうなら不要

という事でよろしいか?

272 :デフォルトの名無しさん:02/10/27 03:34
>>269
理由書けバカ。

273 :デフォルトの名無しさん:02/10/27 03:35
>>266
渡された引数の型が分からないのにどうやってキャストするのさ?

274 :デフォルトの名無しさん:02/10/27 03:35
>>262
あんな、プロトタイプが与えられてない場合と、不定数引数の場合だけ
charがintに昇格するなどの暗黙の処理が入るんだ。

不定数引数ってのは、
int printf(const char *, ...);
みたいな関数の...の部分な。

275 :デフォルトの名無しさん:02/10/27 03:35
>>270
君、勉強不足だね。

276 :デフォルトの名無しさん:02/10/27 03:36
>>268

717 :デフォルトの名無しさん :02/10/25 16:37
char a[100];

/* 配列に空文字列をセットする3つの方法 */
strcpy(a, NULL);
strcpy(a, 0);
strcpy(a, "");

どこが関係のないことだ?NULLを渡すと空文字レスがセットされると書いているが?

277 :デフォルトの名無しさん:02/10/27 03:36
>>272
教えてもらいたかったら、土下座しろ。

278 :デフォルトの名無しさん:02/10/27 03:36
>>269
だから、>>242 にも書いたけど、ないとまずい理由を書いてよ。

279 :デフォルトの名無しさん:02/10/27 03:37
>>273
%fならdoubleに、%dならintにキャストすればいいだろ。

280 :デフォルトの名無しさん:02/10/27 03:37
>>277
今モニタの前で土下座してます。

281 :276:02/10/27 03:37
× 空文字レス
○ 空文字列

282 :デフォルトの名無しさん:02/10/27 03:37
>>279
( ゚д゚).......

283 :デフォルトの名無しさん:02/10/27 03:37
>>276
すまんすまん、おれが書いたのは
http://pc3.2ch.net/test/read.cgi/tech/1035211039/742
だ。

284 :デフォルトの名無しさん:02/10/27 03:38
>>258
*strがintに拡張されるのはint型の変数と比較するからだろ。
文字列リテラルの型とは関係あるのか?


285 :デフォルトの名無しさん:02/10/27 03:38
ああ、ドキュンが沢山いる

286 :デフォルトの名無しさん:02/10/27 03:38
あの変なマクロつかうやつでしょ。
あれは何をやってんだろう。

287 :279:02/10/27 03:39
>>282
なんかおかしいこといっているか?

288 :デフォルトの名無しさん:02/10/27 03:40
>>278
45のソースではc=(char)c;が無いと、仕様どおり動かないから。

289 :デフォルトの名無しさん:02/10/27 03:40
>>279
キャストってのはね、「元の型」と「キャストする型」の両方が分かってないとできないのよ

290 :デフォルトの名無しさん:02/10/27 03:40
>251
 パソコンユーザ全体だと確かにおっしゃる通りなのですが、
プログラマの仕事の環境となると、ハードウエアはPC/AT互
換機が現在では一般的といえたとしても、OSは、wnidowsが
そこまでの一般性があると言い切るのは少し抵抗があります。

 しかし、実勢としては、windowsしか知らないユーザ/プ
ログラマがそのように感じたり言ったりすることが間違いだ
とことさらに否定するほど、windowsの存在は小さなもので
はないので、微妙ではありますね。

 何ごとも、ひとたび多数派となれば、その他の世界を知ら
ないか無視してしまう人も出てくるのは避けられないわけで、
その意味では今はwindows”専門”ユーザ/プログラマが目
立ってしまっているのは事実です。

291 :デフォルトの名無しさん:02/10/27 03:41
>>271
> 0x111 のような文字とは思えないデータでも文字データとして扱うなら必要

それ余計にまずくない ?

292 :デフォルトの名無しさん:02/10/27 03:41
>>288
その 「仕様」 の文またはポインタをキボンヌ。

293 :デフォルトの名無しさん:02/10/27 03:42
>>288
何で、具体的に書いてくれないの ?
どう言う仕様に違反するのさ。

294 :デフォルトの名無しさん:02/10/27 03:42
>>288
0x3131 を指定しても '1' として扱うのが仕様なのか?

295 :279:02/10/27 03:43
>>289
そうだったの。


296 :デフォルトの名無しさん:02/10/27 03:44
>>290
環境が普及してるかどうかって問題じゃないんだけど…

297 :デフォルトの名無しさん:02/10/27 03:44
みんな楽しそうだなあ

298 :デフォルトの名無しさん:02/10/27 03:44
>>296
デファクトスタンダードって言葉がある。

299 :271:02/10/27 03:45
>>291
漏れはマズイと思う。
でも実際、漏れが 0x111 を指定して strchr() を呼ぶ事はないから問題ない。

300 :デフォルトの名無しさん:02/10/27 03:45
>>251, >>290
つーか、「一般的なPC環境はWindowsだよね 」と言うのは、まあ当たってると思う。
しかし、C で作られたプログラムの一般的なプラットフォームが PC と言うのは了見が狭すぎ。

301 :デフォルトの名無しさん:02/10/27 03:46
>>293
http://www.mkssoftware.com/docs/man3/strchr.3.asp
自分で探しなよ。
googleで検索したら一番上にあったよ。


302 :デフォルトの名無しさん:02/10/27 03:46
>>300
soでもおんなじですが。

303 :デフォルトの名無しさん:02/10/27 03:47
>>298
Cの規格にそんな言葉はありませぬ。

304 :デフォルトの名無しさん:02/10/27 03:48
>>303
でも、規格はデファクトスタンダードによって作られる。

305 :デフォルトの名無しさん:02/10/27 03:48
>>299
> 漏れはマズイと思う。

だったら、c = (char)c; はいらないんじゃないの ?

> でも実際、漏れが 0x111 を指定して strchr() を呼ぶ事はないから問題ない。

と言うなら、特にね。

(何で、これで「必要」と言う結論に至るのか理解できん...。)

306 :デフォルトの名無しさん:02/10/27 03:49
>>305
少しは頭使え


  少  し  は  頭  使  え



307 :デフォルトの名無しさん:02/10/27 03:49
というか
int hoge(char c);
この関数の引数が、符号拡張されて渡されるなんて言うのは、
議論の余地なく間違ってるよ。

308 :デフォルトの名無しさん:02/10/27 03:49
>>301
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strchr.3.html

こっちは書いていないけど。
linux向けとはいえ、標準関数はきちんとANSIに乗っ取って書いてあるはず。

309 :デフォルトの名無しさん:02/10/27 03:49
>>305
0x80-0xffを指定したときに、仕様通りに動作しないから

310 :299:02/10/27 03:50
>>305
おい (怒)
「必要」 とは一言も言ってねえ。
第一、c = (char)c; が問題になるタイムクリティカルな局面では、
C なぞ使わん。

311 :デフォルトの名無しさん:02/10/27 03:50
>>307
ネタですか?

312 :デフォルトの名無しさん:02/10/27 03:51
>>309
309 は >>168 を試してないだろ。黙れ。

313 :デフォルトの名無しさん:02/10/27 03:52
少しも話が進んでいない様ですが
気のせいですか。

314 :デフォルトの名無しさん:02/10/27 03:52
>>308
それは記述が省略してあるんじゃない?

315 :デフォルトの名無しさん:02/10/27 03:53
>>301 >>308
そんな 1 プラットフォームの実装なんか見せられたって意味ないよ。
ANSI ではどうなってる?

316 :デフォルトの名無しさん:02/10/27 03:53
>>313
気のせゴホッゴホッ。。

317 :デフォルトの名無しさん:02/10/27 03:53
char = signed charの環境で

char *str="\xff";

if(strchr(str,0xff)) とやると偽になるってこと?

318 :デフォルトの名無しさん:02/10/27 03:53
316 は病に倒れました。

319 :デフォルトの名無しさん:02/10/27 03:54
>>315
ネタですか?

320 :デフォルトの名無しさん:02/10/27 03:54
>>317
ネタですか?

321 :308:02/10/27 03:55
>>315
いやだから、、標準関数に関してはANSIに乗っ取っているってば。。。
もし拡張しているならきちんと明記してある(strstrの第二引数に""を渡した場合とか)

322 :デフォルトの名無しさん:02/10/27 03:55
>>315
ANSIではcharでキャストするらしいよ。

323 :317:02/10/27 03:55
>>320
わからん。試していないから。
これが真になるなら別にキャストは必要ないような・・・

324 :デフォルトの名無しさん:02/10/27 03:56
>>310
> 「必要」 とは一言も言ってねえ。

はあ ?

>>271 「0x111 のような文字とは思えないデータでも文字データとして扱うなら必要」

自分の書いたことぐらい覚えておけ、ヴァカ。

> 第一、c = (char)c; が問題になるタイムクリティカルな局面では、
> C なぞ使わん。

タイムクリティカルだってさ。(藁

325 :デフォルトの名無しさん:02/10/27 03:56
おまえらANSIぐらい読めよ。それでもC使いか?

326 :デフォルトの名無しさん:02/10/27 03:56
>>312
うん。今度試してみる。

327 :デフォルトの名無しさん:02/10/27 03:56
>>317
真になるよ。
charが8ビットなら。

328 :デフォルトの名無しさん:02/10/27 03:56
>>325
お言葉ですが、この中に何人C使いがいるとお思いですか?

329 :308:02/10/27 03:57
>>321
> 標準関数に関してはANSIに乗っ取っているってば。。。
> もし拡張しているならきちんと明記してある

間違いなくそうなのか?
その根拠が示されてないっての。

>>322
情報へのポインタをキボンヌ。

330 :317:02/10/27 03:57
あ、わりぃ。>>317のstrchrはcharへのキャストがないstrchrと考えて。

331 :デフォルトの名無しさん:02/10/27 03:57
>>328
すいません。馬鹿な素人ばかりでした。

332 :デフォルトの名無しさん:02/10/27 03:58
>>329
> 情報へのポインタをキボンヌ。

「新ANSI C言語辞典」という本


333 :310:02/10/27 04:00
>>324
>271 「0x111 のような文字とは思えないデータでも文字データとして扱うなら必要」

おおそうとも、まさにそう書いた。
だが、その後 「文字とは思えないデータははじいてしまうなら不要」 とも書いた。
その状況で、何で漏れが 「必要」 と言いきった事になるんだ?

334 :java厨:02/10/27 04:01
ポインタではなくて参照でおながいします。

335 :デフォルトの名無しさん:02/10/27 04:01


今 夜 は 出 来 の 悪 い 連 中 一 同 徹 夜 で す か

336 :まつもと@Ruby:02/10/27 04:01
>>334
参照=ポインタです

337 :329:02/10/27 04:02
スマソ漏れは 315 だった・・・
322 サンクス。

338 :デフォルトの名無しさん:02/10/27 04:02
>>334
ここは C のスレです。

339 :デフォルトの名無しさん:02/10/27 04:03
>>335
オマエモナー

340 :デフォルトの名無しさん:02/10/27 04:03
なんか落ちこぼれが集まって教室のすみで、いろいろ議論しているが
間違ったことばかり言っているのを聞いているようだ。

341 :まつもと@Ruby:02/10/27 04:03
>>338
Ruby>>>>>>>>>>>>>>>>>>>>>>>C=Javaです

342 :デフォルトの名無しさん:02/10/27 04:04
おまえらC言語使わないでくれ。
たのむ。

343 :デフォルトの名無しさん:02/10/27 04:05
>>340
オマエモナー
>>342
オマエモナー

344 :デフォルトの名無しさん:02/10/27 04:05
>>333
お前は、リンクもたどれねーのか ?

>>271
0x111 のような文字とは思えないデータでも文字データとして扱うなら必要

>>291
それ余計にまずくない ?

>>299
漏れはマズイと思う。

と言うのなら、「0x111 のような文字とは思えないデータでも文字データとして扱う」なんて状況を何故書く ?

345 :デフォルトの名無しさん:02/10/27 04:05
ここはオマエモナー厨の巣ですか?

346 :デフォルトの名無しさん:02/10/27 04:05
以降

  ruby禁止


347 :デフォルトの名無しさん:02/10/27 04:06
>>340
だったら、お前が正しいことを書いてくれ。
納得して、眠りたい。

348 :デフォルトの名無しさん:02/10/27 04:06
お前ら

         お ど れ   お ど れ

349 :317:02/10/27 04:07
そうか・・・
charで表せない値を渡した場合はstrchrを呼んだ奴が悪いとして、
charで表せる(CHAR_BIT == 8として)8ビット目が1となる値を渡した時はcharにキャストしないと環境によってはうまく動かないのか。


350 :デフォルトの名無しさん:02/10/27 04:08
>>347
今夜は眠れない。
いや、

    眠    ら   せ   な   い 

351 :デフォルトの名無しさん:02/10/27 04:08
以降

  char 禁止


352 :デフォルトの名無しさん:02/10/27 04:08
>>349
まだずれとる。

353 :333:02/10/27 04:08
>>344
  0x111 のような文字とは思えないデータでも文字データとして扱うなら必要
  文字とは思えないデータははじいてしまうなら不要

これは漏れの意思とは関わりのない厳然たる事実。

 > それ余計にまずくない ?
 漏れはマズイと思う。
 
これは漏れの単なる意見。
あんたはその区別がつかないほどの日本語 DQN なのか?

354 :317:02/10/27 04:09
>>352
どこが?
実際に試してみてそういう結論に至ったんですが。


355 :デフォルトの名無しさん:02/10/27 04:10
>>350
楽しませてくれ。

356 :デフォルトの名無しさん:02/10/27 04:11
>>354
試さなくてもstrchr()の仕様が分かれば自明じゃん。
つーか、試して確認するってのはむしろ危険だよ。

357 :デフォルトの名無しさん:02/10/27 04:12
>>351
それツライっす・・・

358 :デフォルトの名無しさん:02/10/27 04:12
>>356
お前の脳内が危険だよ

359 :デフォルトの名無しさん:02/10/27 04:13
ISO原文
"The strchr function locates the first occurrence of c (converted to a char)in the
string pointed to by s. The terminating null character is considered to be part of the
string."

わざわざ、括弧で書いてあるね。余計なことを考えさせる隙がない。























ぐぐる:「ISO/IEC 9899:1999(E) pdf」

360 :デフォルトの名無しさん:02/10/27 04:13
>>358
なんで?

361 :デフォルトの名無しさん:02/10/27 04:13
>>359
無駄な改行うざい

362 :デフォルトの名無しさん:02/10/27 04:14
>>359
おお、それで検索するのか。

363 :デフォルトの名無しさん:02/10/27 04:15
>>350
もう、えっちなんだからぁ。
あと2回はがんばってよ

364 :デフォルトの名無しさん:02/10/27 04:15
そう書いてあるんだから納得しろって、なんか日本の教育みたいだな。
その理由まで考えさせない。

365 :デフォルトの名無しさん:02/10/27 04:16
>>359の改行の下には
ぐぐる:「ISO/IEC 9899:1999(E) pdf」
と書いてあります。

366 :デフォルトの名無しさん:02/10/27 04:16



 夜 は ま だ ま だ こ れ か ら み た い で す 。


 

367 :デフォルトの名無しさん:02/10/27 04:16
>>364
なんでここで、

  日  本  の  教  育  が

出てくるんだ。

368 :デフォルトの名無しさん:02/10/27 04:16
void hoge( char c ) ...
とか宣言してても
char ch;
...
hoge( ch );
のとき char -> int 変換される
これ C の仕様......?

369 :デフォルトの名無しさん:02/10/27 04:18
>>364
いままで、strchr()の挙動(仕様)に関する議論だったんでしょ?
どういう経緯でそういう仕様になったかって話しも興味深いけど、
それは別の話だしね。

370 :デフォルトの名無しさん:02/10/27 04:18
>>368
仕様です。


371 :デフォルトの名無しさん:02/10/27 04:18
Cの仕様は

      し よ う  が  な い な ぁ

372 :デフォルトの名無しさん:02/10/27 04:18
>>368
仕様ですが何か。

373 :デフォルトの名無しさん:02/10/27 04:18
新聞配達がキターヨ

374 :デフォルトの名無しさん:02/10/27 04:19
>>371は和田便。

375 :デフォルトの名無しさん:02/10/27 04:19
>>368
> これ C の仕様......?

違います。
(このスレに約一名そう主張してる方がいますが)


376 :デフォルトの名無しさん:02/10/27 04:19
お前らもうそろそろ結論をまとめようぜ。

377 :デフォルトの名無しさん:02/10/27 04:20
>>375
1名ではないようです

378 :デフォルトの名無しさん:02/10/27 04:21
>>375
主張していないのが約一名です

379 :375:02/10/27 04:21
>>377
"約"の意味も知らない馬鹿ハケーン

380 :デフォルトの名無しさん:02/10/27 04:22
>>379
こいつニセモノ。

381 :デフォルトの名無しさん:02/10/27 04:22
言葉尻を捕らえて揚げ足取るのは

  夜  だ  か  ら  で  す  か  ?


382 :デフォルトの名無しさん:02/10/27 04:22
>>375
「仲間ハズレ一人!」
とか言った本人が仲間ハズレだったという罠ですか?

383 :デフォルトの名無しさん:02/10/27 04:23
>>381
必死だな。


384 :デフォルトの名無しさん:02/10/27 04:23
言葉尻を捕らえて揚げ足取るのは

  C  だ  か  ら  で  す

385 :デフォルトの名無しさん:02/10/27 04:23
ちなみにCの仕様です。

386 :デフォルトの名無しさん:02/10/27 04:24
以降

  独 り 言 解 禁

387 :デフォルトの名無しさん:02/10/27 04:25
>>368 の状況で、char -> int の型変換が起きる余地があるのか?

388 :デフォルトの名無しさん:02/10/27 04:25
>>382
う。
もしかして仲間はずれかな?
仲間はずれでもいいけど、>>368が仕様だっていってるなら、
根拠を示して欲しいね。

389 :デフォルトの名無しさん:02/10/27 04:25
>>387
だからCの仕様だっつってるだろ

390 :デフォルトの名無しさん:02/10/27 04:25
以降

  「 以 降 」 禁 止

391 :デフォルトの名無しさん:02/10/27 04:26
どうでもいいけど誰か結論書いてよ。

392 :デフォルトの名無しさん:02/10/27 04:26
>>391
何に対する結論?

393 :デフォルトの名無しさん:02/10/27 04:26
>>387
うちの gcc では起きました

394 :デフォルトの名無しさん:02/10/27 04:26
>>388
つーかまず仕様書読め

395 :デフォルトの名無しさん:02/10/27 04:26
宣言しなかったらcharがintになっちゃうんだってさ。

396 :デフォルトの名無しさん:02/10/27 04:26
処理系異存です。

397 :デフォルトの名無しさん:02/10/27 04:27
うぉ!
やべ・・・接続時間が2時間すぎた。電話代が・・・

398 :デフォルトの名無しさん:02/10/27 04:27
>>387
変換が起きるといってる人は、winでcharがスタックに積まれるときに
4バイト使われるのを「変換される」「Cの仕様」と言ってました。
アホです。

399 :デフォルトの名無しさん:02/10/27 04:28
つーか何の話してんの?

400 :デフォルトの名無しさん:02/10/27 04:28
異存はありません

401 :デフォルトの名無しさん:02/10/27 04:28
>>399
C言語にきまってんだろ

402 :デフォルトの名無しさん:02/10/27 04:28
>>359 に照らし合わせると、>>45 は正しいな。

403 :デフォルトの名無しさん:02/10/27 04:28
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

404 :デフォルトの名無しさん:02/10/27 04:29
>>398
だから Linux 上の gcc でもなったんだってば

405 :デフォルトの名無しさん:02/10/27 04:29
>>398
つーか「4バイト」なんてキミ以外一言も出てきてませんが。

406 :デフォルトの名無しさん:02/10/27 04:29
>>402
正しい?
コンパイルエラーになりますが。


407 :デフォルトの名無しさん:02/10/27 04:29
結論:キャストは仕様。

408 :デフォルトの名無しさん:02/10/27 04:29
>>401
C言語のなんについての話?

409 :デフォルトの名無しさん:02/10/27 04:30
>>404
やっぱりアホだ。

410 :デフォルトの名無しさん:02/10/27 04:30
結論:

  s t r c h r ( )  は  ク  ソ

という事でよろしいか?

411 :デフォルトの名無しさん:02/10/27 04:30
>>408
俺のムスコについて。

412 :デフォルトの名無しさん:02/10/27 04:30
結論:キャストは仕様で使用

413 :デフォルトの名無しさん:02/10/27 04:30
>>408
strchrの第二引数はcharにキャストする必要があるかないか。

414 :デフォルトの名無しさん:02/10/27 04:30
そろそろ

  厨  房  が  暴  れ  そ  う  で  す

415 :デフォルトの名無しさん:02/10/27 04:31
void hoge(char);
で、引数がintにキャストなんてされません。

416 :デフォルトの名無しさん:02/10/27 04:31
>>409
アホは

  お  ま  え  一  人



417 :デフォルトの名無しさん:02/10/27 04:31
>>413
だから、>>359 に従うとすればキャストする必要があるだろう。

418 :デフォルトの名無しさん:02/10/27 04:32
結論:キャッスルランドは閉鎖。

419 :デフォルトの名無しさん:02/10/27 04:32
>>415
それは

     415  の  希  望


420 :デフォルトの名無しさん:02/10/27 04:33
>>416
どう考えても、アホはお前だよ?

421 :デフォルトの名無しさん:02/10/27 04:33
>>417
話題は何かと聞かれたからそう答えただけだけど・・・

422 :デフォルトの名無しさん:02/10/27 04:33
>>415
だから実際されたんだってば

423 :デフォルトの名無しさん:02/10/27 04:33
>>415
>void hoge(char);
型はcharだけど、intの大きさで渡されるよ。

424 :デフォルトの名無しさん:02/10/27 04:33
>>419
だから根拠しめしてよ。
規格のどこに書いてあるの?

425 :デフォルトの名無しさん:02/10/27 04:34
とにかく仕様でそう決まっているからキャストする必要があるんだよな。
書いていなければしてもしなくてもかまわないと。


426 :デフォルトの名無しさん:02/10/27 04:34
>>423
どれは規格じゃないよ。

427 :デフォルトの名無しさん:02/10/27 04:34
>>424
仕様書全部読んでから出直して来い

428 :デフォルトの名無しさん:02/10/27 04:34
早口言葉:キカクキキカイカイ

429 :デフォルトの名無しさん:02/10/27 04:35
どれ?

430 :デフォルトの名無しさん:02/10/27 04:35
>>423
規格と実装の区別がついてない…

431 :デフォルトの名無しさん:02/10/27 04:35
>>423
なら型変換してないじゃん。単にsize(int)バイト分スタックを消費するというだけで。

432 :デフォルトの名無しさん:02/10/27 04:35
>>168やったら、同じになった。

433 :デフォルトの名無しさん:02/10/27 04:36
>>431
関数の中の演算はintだよ

434 :デフォルトの名無しさん:02/10/27 04:36
>>427
どこにも書いてません。と。

435 :デフォルトの名無しさん:02/10/27 04:36
>>413
strchrの第二引数ってintだろ。char渡したらintにキャストされるだろ。それだけの話か?

436 :デフォルトの名無しさん:02/10/27 04:37
話がずれてずれてずれまくり

437 :デフォルトの名無しさん:02/10/27 04:37
>>435
違う違う。
strchrを実装するさいに、intで渡されたものをcharにキャストする必要があるかないか。

438 :デフォルトの名無しさん:02/10/27 04:37
徹マンみたいだな

439 :デフォルトの名無しさん:02/10/27 04:38
今日のこのスレは楽しいな。

漏れは寝てたんだが、何かに突き動かされるようにして 2 時頃目を覚まし、
PC の電源を入れて 2 ちゃんを覗いてしまったんだが、思えばこのスレが
呼んでたんだろうな。

・・・オェー

440 :デフォルトの名無しさん:02/10/27 04:38
1日で300以上もレスがつくのか。
こえーなあ。

441 :デフォルトの名無しさん:02/10/27 04:38
>>437
だからキャスト必要だってば。

442 :デフォルトの名無しさん:02/10/27 04:38
void hoge(char);
↑で、引数がintにキャストされるなんて言ってるのはアホです。

443 :デフォルトの名無しさん:02/10/27 04:38
>>439
類は友を呼ぶ、ですね(w

444 :デフォルトの名無しさん:02/10/27 04:39
>>441
話題について聞かれたからそう答えただけと何回言えば分かるんだよ(;_;)


445 :デフォルトの名無しさん:02/10/27 04:39
>>442
実際されるんだからしかたないでしょ

446 :デフォルトの名無しさん:02/10/27 04:39
>>437
あんたは >>359>>402>>425 を読め。

447 :デフォルトの名無しさん:02/10/27 04:40
>>446
死ね

448 :デフォルトの名無しさん:02/10/27 04:40
>>442
多分見解の違い
微妙に話しがズレてる

449 :デフォルトの名無しさん:02/10/27 04:40
>>445
されてないよ。

450 :デフォルトの名無しさん:02/10/27 04:41
strchrだけで、400レス以上も消費したのか・・・

451 :デフォルトの名無しさん:02/10/27 04:41
>>445
それは「キャスト」とは言わない。

452 :デフォルトの名無しさん:02/10/27 04:41
>>437
キャストすると決まっていればして
キャストしないと決まっていればしないで
なんも決まってなければてきとーにすればいいだけじゃないのか?
あとは規格を見るだけだろ?

453 :デフォルトの名無しさん:02/10/27 04:42
>>452
嫌がらせですか?それとも単なる煽り?

454 :デフォルトの名無しさん:02/10/27 04:42
>>445
スタックに渡されるのはint(レジスタの大きさ)だけど、
値はcharとして扱ってるはず。
アセンブラに直すと、上位ビットを切り捨てる処理がどっかに入ってるよ。

455 :デフォルトの名無しさん:02/10/27 04:43
キャストと暗黙の型変換を混同してるヤシがいるな

456 :デフォルトの名無しさん:02/10/27 04:43
>>447
オマエガナー

457 :453:02/10/27 04:43
>>452
もしかして、話題について聞いた人?
ならごめん。

458 :デフォルトの名無しさん:02/10/27 04:44
スタックに char が int の大きさで積まれるのは
キャストとも暗黙の型変換とも言わん

459 :デフォルトの名無しさん:02/10/27 04:44
>>454
ずっとその話をしてるんだけど、なかなか納得してくれない。

460 :453:02/10/27 04:44
>>456
文脈を判断できないお前が死ね

461 :デフォルトの名無しさん:02/10/27 04:44
>>451
int にキャストする時と同じアセンブリコードが生成されるんだけどなぁ......

462 :デフォルトの名無しさん:02/10/27 04:45
>>461
それは最適化で省かれたんじゃないの?
どういうコードでテストした?

463 :デフォルトの名無しさん:02/10/27 04:46
結局動くけど、仕様でそうなってるからキャストは必要って理解でいい?

464 :デフォルトの名無しさん:02/10/27 04:46
>>463
だからキャストは必要だって言ってるだろ

465 :デフォルトの名無しさん:02/10/27 04:47
>>457
うん。そうそう。話題について聞いた人。
なんの話してんのよーわからんなぁー。

466 :デフォルトの名無しさん:02/10/27 04:47
>>463
そう。

動く動かないはどうでもよいこと。仕様で決まっているからそうせざるをえない。
なぜと問うてはいけないのだ。

467 :デフォルトの名無しさん:02/10/27 04:47
>>463
どれの話?

468 :デフォルトの名無しさん:02/10/27 04:48
仕様で決まっているから

       し よ う が な い な ぁ 


469 :デフォルトの名無しさん:02/10/27 04:48
くどい

       し よ う が な い な ぁ  禁 止



470 :デフォルトの名無しさん:02/10/27 04:49
>>462
こういうコードです
char foo(char c) {return c + (char)1;}
int bar(int d) {char c = (char)d; int i; c = foo(c); i = (int)c; return i; }

471 :デフォルトの名無しさん:02/10/27 04:49
>>463
> 結局動くけど、
45のコードだと、c=(char)c;がないと挙動が変化する。
(仕様どおりに動かない)

472 :デフォルトの名無しさん:02/10/27 04:50
>>470
そのコードじゃ駄目だ。省かれてそう。
所々の(char)のキャストも無意味。

473 :デフォルトの名無しさん:02/10/27 04:50
>>471
仕様は動きについてはどう定義しているの?


474 :デフォルトの名無しさん:02/10/27 04:50
えー。結論。



        ば か ば っ か   b y ル リ



475 :デフォルトの名無しさん:02/10/27 04:50
>>470
でも、fooの戻値の処理で、切り捨てはされてると思う。

476 :デフォルトの名無しさん:02/10/27 04:51
>>474
ルリって誰だ?


     ル    リ   っ  て   誰    だ   !


お前か?

477 :デフォルトの名無しさん:02/10/27 04:52
>>473
>>359に出てるよ。

478 :デフォルトの名無しさん:02/10/27 04:52
>>467
463は>>45のcharキャストの話

479 :デフォルトの名無しさん:02/10/27 04:52
アニオタウザイ


   ア   ニ   オ    タ    ウ   ザ   イ


480 :デフォルトの名無しさん:02/10/27 04:52
こんな遅くに一体何人参加しているのだろうか?

番号! 1

481 :デフォルトの名無しさん:02/10/27 04:52
strchr程度なら仕様書にこう書けとサンプルコードを示してくれればいいのに。
変数名も同じにしないと仕様書違反と。

482 :デフォルトの名無しさん:02/10/27 04:53
>>480
もう朝ですが......

483 :デフォルトの名無しさん:02/10/27 04:54
>>481
P.J.プラウガーの本でも読め

484 :デフォルトの名無しさん:02/10/27 04:54
文字リテラルってCではintですよね。
8ビットコードは-128〜127なんですか?

485 :デフォルトの名無しさん:02/10/27 04:54
>>483
プ
なんだそのだせー名前は。

486 :デフォルトの名無しさん:02/10/27 04:54
>>484
いったいなんの話をしてるんだ?

487 :デフォルトの名無しさん:02/10/27 04:55
>>484
intじゃなくてchar型の文字列。

488 :デフォルトの名無しさん:02/10/27 04:55
>>484
文字コードはマイナスにならないよ。

489 :デフォルトの名無しさん:02/10/27 04:55
>>484
処理系依存

490 :487:02/10/27 04:55
s/文字列/配列/

491 :デフォルトの名無しさん:02/10/27 04:56
>>485
http://www.yfcbookshelf.com/c%20language's%20books7.htm

492 :487:02/10/27 04:56
文字リテラルか。
文字列リテラルと読み間違えた。スマソ

493 :デフォルトの名無しさん:02/10/27 04:56
アニオタッテダレダ?

   ア   ニ   オ    タ    ッ    テ    オ    レ    ダ    !


494 :デフォルトの名無しさん:02/10/27 04:56
>>488-489
どっちでしょう?ってか489なのかな。

495 :デフォルトの名無しさん:02/10/27 04:57
>>488
printf("%d\n", 'ア'); を実行してから言え。

496 :デフォルトの名無しさん:02/10/27 04:57
>>495
そう、それでやったらマイナスだった

497 :デフォルトの名無しさん:02/10/27 04:58
こうまで話がこじれる原因は、VB厨か?


    V   B   厨   が   い   る   の   か   ?

498 :デフォルトの名無しさん:02/10/27 04:58
>>470 をコンパイルしてできるコード(foo の部分だけ)です(gcc on Linux)
pushl %ebp
movl %esp,%ebp
subl $8,%esp
addl $-12,%esp
movsbl 8(%ebp),%eax
pushl %eax
call foo
movsbl %al,%eax
leave
ret
ここの movsbl ってのか char -> int 変換だと思うんですが、違います?

499 :デフォルトの名無しさん:02/10/27 04:58
>>495
それはprintf内でsigned intとして扱っているだけ。%uにすればマイナスにはならないし。

500 :デフォルトの名無しさん:02/10/27 04:59
>>494
文字リテラルの範囲は0〜UCHAR_MAX

501 :デフォルトの名無しさん:02/10/27 04:59
>>494
charの大きさは8bit以上としか規定されていないので、
処理系に依存する。

さらに、charがsignedかどうかも規定されていないし、
したがって1の補数か2の補数表現をとるかも規定されていない。

502 :デフォルトの名無しさん:02/10/27 04:59
>>498 は s/foo/bar/ です

503 :デフォルトの名無しさん:02/10/27 04:59
>>498
だから、それをキャストとは言わない。

504 :デフォルトの名無しさん:02/10/27 05:00
>>503
なんでよ〜。ぷぅ〜。

505 :デフォルトの名無しさん:02/10/27 05:00
500突破!

506 :デフォルトの名無しさん:02/10/27 05:00
>>498
ボケ。
それは 8bit → 32bit 変換であって、C の char → int 変換ではない。
第一、C の仕様の話をしているのに何でアセンブリコードが出てくるんだ?

507 :デフォルトの名無しさん:02/10/27 05:01
皆なにげに起きてるなあ

508 :デフォルトの名無しさん:02/10/27 05:01
>>500
charはunsigned charとは限らないだろ

509 :デフォルトの名無しさん:02/10/27 05:02
>>506
なんで?
char c; int i;

i = (int) c;
するときと同じコードが引数渡す前にも出てるじゃん

510 :デフォルトの名無しさん:02/10/27 05:02
int c = 'ア';
printf("%d",c);
ってやったらマイナスですた

511 :デフォルトの名無しさん:02/10/27 05:03
>>510
それは何の確認にもならないってば(^^;;

512 :デフォルトの名無しさん:02/10/27 05:03
>>504
たまたま君が調べた処理系がそうなってたってだけで、
Cの仕様とは関係ない。

513 :デフォルトの名無しさん:02/10/27 05:03
>>499
じゃあ printf("%08X\n", 'ア'); にしとけ。
あんたの言う事が正しければ 000000B1 になるはずだ。

514 :デフォルトの名無しさん:02/10/27 05:03
>(^^;;
2chで見るとなんかむかつく!

515 :デフォルトの名無しさん:02/10/27 05:04
%dは影響ないでしょ

516 :デフォルトの名無しさん:02/10/27 05:04
>>508
文字リテラルが0〜UCHAR_MAXというのはANSIで決まってるんで。

517 :デフォルトの名無しさん:02/10/27 05:04
>>514
ゴメソ(^^;;

518 :デフォルトの名無しさん:02/10/27 05:04
>>499はアホ。

519 :デフォルトの名無しさん:02/10/27 05:04
>>509
キャストとはどうゆうことか口に出していってみろ

520 :デフォルトの名無しさん:02/10/27 05:04
ANSI非準拠だったってことですかね

521 :デフォルトの名無しさん:02/10/27 05:05
>>516
うるせーバカ。

522 :デフォルトの名無しさん:02/10/27 05:05
>>509
だから、何で実際に吐き出されるコードの話をするんだ?

523 :デフォルトの名無しさん:02/10/27 05:05
>>519
口に出していってみますた

524 :デフォルトの名無しさん:02/10/27 05:05
"文字コード"はマイナスにはならないでしょ(笑)

525 :デフォルトの名無しさん:02/10/27 05:06
>>524
うるせーバカ。

526 :デフォルトの名無しさん:02/10/27 05:06
>>522
いや......変換されるなんて言ってるやつはアホとか言ってた人がいたから実例を出したまでなんですが......

527 :デフォルトの名無しさん:02/10/27 05:06
>>516は勘違いだった。ごめん。

528 :デフォルトの名無しさん:02/10/27 05:07
ガーン

529 :デフォルトの名無しさん:02/10/27 05:07
(^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;
 (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;
  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;
   (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;
    (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;

530 :デフォルトの名無しさん:02/10/27 05:08
if('ア' < 0) puts("minus"); else puts("0 or plus");

531 :デフォルトの名無しさん:02/10/27 05:09
>>530
その比較は処理系依存(リテラルcharの符号依存)

532 :デフォルトの名無しさん:02/10/27 05:09
>>530
甘い。
puts('ア'<0?"minus":"0 or plus");

533 :デフォルトの名無しさん:02/10/27 05:09
>>532
七行スレにカエレ

534 :530:02/10/27 05:10
532 は何を争ってる (笑)

535 :532:02/10/27 05:11
>>534
コードの見づらさかな、とおもって(w

536 :デフォルトの名無しさん:02/10/27 05:11
>>530
minusでした、always trueだそうです。

書いてなかったけど、環境はbcc32.exeです。

537 :デフォルトの名無しさん:02/10/27 05:13
文字リテラルがマイナスになることはあっても、(少なくとも現存する)文字コードがマイナスになることはない。
違う?

538 :デフォルトの名無しさん:02/10/27 05:13
>>530
うちでも minus (gcc on Linux) でした。

539 :デフォルトの名無しさん:02/10/27 05:13
>>537
文字コードの解釈次第。

540 :デフォルトの名無しさん:02/10/27 05:15
>>536
デフォルトの char が unsigned char か singed char か、
っつー話じゃなくて?

541 :デフォルトの名無しさん:02/10/27 05:15
>>540
それは処理系依存でしょ?

542 :デフォルトの名無しさん:02/10/27 05:16
きっと問題はcharのビット数だろう

543 :デフォルトの名無しさん:02/10/27 05:16
charは無関係では?

544 :デフォルトの名無しさん:02/10/27 05:17
unsignedの実装によるかもしれない

545 :デフォルトの名無しさん:02/10/27 05:18
文字リテラルは文字コードをcharに型変換したうえ更にintに型変換したものと考えていい?

546 :デフォルトの名無しさん:02/10/27 05:18
謎はすべて解けた!

犯人は

547 :デフォルトの名無しさん:02/10/27 05:19
きっと問題はcharの読み方だろう。

548 :デフォルトの名無しさん:02/10/27 05:19
キャー

549 :デフォルトの名無しさん:02/10/27 05:20
'ア'<0 ってintに格上げされるんだっけ?

550 :デフォルトの名無しさん:02/10/27 05:20
>>547
私がチャーと読んでいた犯人です。
おさわがせしてしまって申し訳ありませんでした。

551 :デフォルトの名無しさん:02/10/27 05:20
でもアリバイがあるから犯行は不可能なはず・・・

552 :デフォルトの名無しさん:02/10/27 05:20
>>549
文字リテラルはint型。
sizeof('ア')ってやってみればわかる。

553 :デフォルトの名無しさん:02/10/27 05:20
チャー:天才ギタリスト
キャー:叫び声
シャー:char

554 :デフォルトの名無しさん:02/10/27 05:20
まぁcでchar c = 'ア';なんて書く奴は普通いない訳だが。


555 :デフォルトの名無しさん:02/10/27 05:21
>>554
その場合はwchar_tだな

556 :デフォルトの名無しさん:02/10/27 05:22
ちゃる

557 :デフォルトの名無しさん:02/10/27 05:22
それはこのトリックで説明が出来る

558 :デフォルトの名無しさん:02/10/27 05:22
じっcharの名にかけて!

559 :http:// ppp0329.va-tyo.hdd.co.jp.2ch.net/:02/10/27 05:23
guest guest

560 :デフォルトの名無しさん:02/10/27 05:23
>>532
甘い
puts(&"0 or plus\0minus" [('ア'< 0)*10]);
でも長くなった・・・

561 :デフォルトの名無しさん:02/10/27 05:24
おまえら、もうネタないんだろ?

562 :532:02/10/27 05:24
>>560
読みづらさにおいて負けました。

563 :デフォルトの名無しさん:02/10/27 05:24
すごいですね

564 :デフォルトの名無しさん:02/10/27 05:25
すごいですね(^^;;

565 :デフォルトの名無しさん:02/10/27 05:25
結局、void hoge(char ...
で char -> int 変換されるってのは仕様ではないんですか?

566 :デフォルトの名無しさん:02/10/27 05:25
ちょっと縮んだ
puts("0 or plus\0minus"+('ア'< 0)*10);

567 :デフォルトの名無しさん:02/10/27 05:26
ここはすごいインターネットですね

568 :デフォルトの名無しさん:02/10/27 05:26
寝るね。
お(^о^〃)や(^О^〃)しゅ(^。^〃)みぃ(^-^〃)♪

569 :デフォルトの名無しさん:02/10/27 05:27
>>568
カワイイ!

570 :デフォルトの名無しさん:02/10/27 05:27
>>565
仕様です。

571 :デフォルトの名無しさん:02/10/27 05:27
バイナラ
ラナイバ

572 :デフォルトの名無しさん:02/10/27 05:27
>>565
もうそんなことはどうでもいいんだよ!!

573 :デフォルトの名無しさん:02/10/27 05:28
おはよう!

574 :デフォルトの名無しさん:02/10/27 05:28
謎はすべて迷宮入りになった

575 :デフォルトの名無しさん:02/10/27 05:28
おっはー

576 :デフォルトの名無しさん:02/10/27 05:29
>>570
仕様なのか。じゃあ仕様じゃないって言ってた人はみんなアホだったのね。分かった。寝る

577 :デフォルトの名無しさん:02/10/27 05:30
さて、仕事するか

578 :デフォルトの名無しさん:02/10/27 05:30
ちなみに「変換」って、キャストのことではないよ

579 :デフォルトの名無しさん:02/10/27 05:30
>>577
いまから仕事かよ!
つーか、

  今 日 は 休 日 じ ゃ な い の か ? 



580 :デフォルトの名無しさん:02/10/27 05:31
>>576
おいっちょっと待て逃げるきか。

581 :デフォルトの名無しさん:02/10/27 05:31
>>578
???

582 :デフォルトの名無しさん:02/10/27 05:32
intというか、intと同じサイズのメモリに。じゃないの。
そのメモリから関数側はcharで受けるだけでしょ。

583 :デフォルトの名無しさん:02/10/27 05:32
>>579
ヒッキーが働いているふりをするとそうなります。

584 :デフォルトの名無しさん:02/10/27 05:33
>>579
国王に休日はありません

585 :デフォルトの名無しさん:02/10/27 05:34
これから寝るという、

  大  仕  事  が  控  え  て  ま  す

が何か。

586 :デフォルトの名無しさん:02/10/27 05:35
で、charはintなの?

587 :デフォルトの名無しさん:02/10/27 05:36
>>586
(゚Д゚)ハァ?ネロ!

588 :デフォルトの名無しさん:02/10/27 05:36
飯食おう

589 :デフォルトの名無しさん:02/10/27 05:37
>>586
仕様です。

590 :デフォルトの名無しさん:02/10/27 05:37
>>552
gcc だと
#include <stdio.h>
int main( int argc, char** argv ){
 printf( "%d\n", sizeof( 'a' ) );
 printf( "%d\n", sizeof( int ) );
}
で出力は
1
4
だったわけですが… これは?

591 :デフォルトの名無しさん:02/10/27 05:38
>>590
それは C++ だゴルァ

592 :デフォルトの名無しさん:02/10/27 05:40
>>590
こちらでは
4
4
でしたか何か?

593 :デフォルトの名無しさん:02/10/27 05:40
ちっ、静まったか。

594 :デフォルトの名無しさん:02/10/27 05:40
>>590
ちょっと待て。mainの型省略してコンパイル通るか?
#include <stdio.h>
main(){
 printf( "%d\n", sizeof( 'a' ) );
 printf( "%d\n", sizeof( int ) );
}


595 :594:02/10/27 05:40
>>590
>>591

596 :デフォルトの名無しさん:02/10/27 05:41
>>594
通る場合もある。
その場合は void とみなされ、ANSI 非準拠。

597 :デフォルトの名無しさん:02/10/27 05:41
>>594
全角スペースのせいでコンパイルが通らない罠

598 :594:02/10/27 05:42
あ、通るや。スマソ
>>590
でも、それはC++だから。

599 :デフォルトの名無しさん:02/10/27 05:43
>>591
あ、つい… cppでやっちった。

600 :デフォルトの名無しさん:02/10/27 05:45
590 が、C なんか使う気は全くないと白状しました。

601 :デフォルトの名無しさん:02/10/27 05:47
>>596
Cならint、C++ならvoidだ

602 :デフォルトの名無しさん:02/10/27 06:04
int mainなのに戻り値も無しか…。(プ


603 :デフォルトの名無しさん:02/10/27 06:05
>>602
C++ならなくてもええからなぁ。


604 :デフォルトの名無しさん:02/10/27 08:23
なんでそんなに細かい違いが有るんですか?

605 :デフォルトの名無しさん:02/10/27 09:45
#include <stdio.h>
int main( int argc, char** argv ){
 printf( "%d\n", (unsigned char)( 'a' ) );
 printf( "%d\n", (signed char)( 'a' ) );
 return 0;
}
97
97

お前等一晩でいくつレス作ってるんだ!

606 :デフォルトの名無しさん:02/10/27 09:46
1日経ってないぞ!

607 :デフォルトの名無しさん:02/10/27 09:58
8 頭身スレを超えろ!

608 :デフォルトの名無しさん:02/10/27 10:07
CとC++は別物

609 :デフォルトの名無しさん:02/10/27 10:13
うお、すげー!!

寝てる間にこんな祭りがあったとは。
しかし確かに話の質がやけに低いな、最近。
しかもなぜかC99の規格まで持ち出してるわ。

610 :デフォルトの名無しさん:02/10/27 10:15
ところで >>605のコードは一体何が言いたいんだろう?

611 :デフォルトの名無しさん:02/10/27 10:21
('a')

612 :デフォルトの名無しさん:02/10/27 10:31
あんまりほいほい答るから低レベル化するのかね。とりあえず609にはレベルの高い話とやらをしてもらいたい。

613 :デフォルトの名無しさん:02/10/27 10:52
#include <stdio.h>
int main( int argc, char** argv ){
 printf( "%d\n", (unsigned char)( 'ア' ) );
 printf( "%d\n", (signed char)( 'ア' ) );
 return 0;
}
117
-79

605 も何かとぼけてるな。

614 :デフォルトの名無しさん:02/10/27 11:04
ああ
日本の将来が危ぶまれ

615 :デフォルトの名無しさん:02/10/27 11:39
>>612
おいおい、少数派の正論者が初心者共に厨呼ばわり
されるような場所で、レベルの高い話とやらをしても
馬の耳に念仏だろが。

つーか、煽る暇があるだったら、誰も指摘しない>>180
間違いでも教えてやれ。

616 :デフォルトの名無しさん:02/10/27 11:59
別にどこもおかしくないが。

617 :デフォルトの名無しさん:02/10/27 12:00
>>615
漏れは 612 じゃないが・・・。
・・・。
まさか変数名が間違ってるって事じゃないよな?
そんなコンパイルすれば誰もが気付くような間違いを指摘するような
重箱の隅つつきをしてる訳じゃないよな?
そんな情けない事しないよな?

ついでに訊くと、615 は 609 じゃないよな?
煽られたりしてないよな?

618 :デフォルトの名無しさん:02/10/27 12:00
明日できることは今日しないし明日もしない

619 :デフォルトの名無しさん:02/10/27 12:02
>>615
> 暇があるだったら

プ

620 :デフォルトの名無しさん:02/10/27 12:03
>>615
煽り返す暇があるだったら、誰も指摘しない>>180
間違いでも教えてやれ。

621 :デフォルトの名無しさん:02/10/27 12:04
>>1
> みんな大好きなんです。このシリーズの速さがそれを物語っています。

ワラタ
おう大好きだよ

622 :620:02/10/27 12:06
かぶった (;´Д`)

623 :615=609:02/10/27 13:11
>>616
ん?それだけ?
それよりコードの肝心な誤りの方を指摘してやればいいのに。

>>617
スペルミスならアホでも気付くというか、
いちいち指摘するようなことじゃないわな。
それとも、ここには入力ミスを指摘して喜ぶ
ようなカスでもいるんかいな?

> ついでに訊くと、615 は 609 じゃないよな?
> 煽られたりしてないよな?
よくわからんが、レスを付ける=煽られる
というのなら、煽られてるわけだが。

624 :デフォルトの名無しさん:02/10/27 13:18
>>623
ごちゃごちゃ言わずにコンパイルしてみな。


625 :objective_c--:02/10/27 13:21
typedef struct objective_c
{
  long private_state; // 関数のアドレス
  
  char *public;
  long other;
}

626 :デフォルトの名無しさん:02/10/27 13:22
さぁ面白くなってまいりました。

627 :デフォルトの名無しさん:02/10/27 13:23
>>625
何が言いたい。

628 :デフォルトの名無しさん:02/10/27 13:23
>>624
はいはい。してみたよ。で、何か?

629 :デフォルトの名無しさん:02/10/27 13:28
>627
C最強(...少しデクリメント)

630 :デフォルトの名無しさん:02/10/27 13:35
もともと煽られている色は濃かったが、623 は特濃だな。

>>628
で、どうだった?
strchr() の機能として問題になる動作は出た?
動作テストは当然したんだよね?
まさかコンパイルだけして後は何もしていないなんて間抜けな事はしてないよね?
もちろん変数名の誤りは直した上でコンパイルしたんだよね?
コンパイル通らなかったなんてケチはつけないよね?

631 :デフォルトの名無しさん:02/10/27 13:37
gccって英語のサイトばっかで、どうしたらいいかわかんないですけど・・・
とりあえず、cygwinはインストールしたんですが
コマンドプロンプトみたいなわけわからんものがあるだけで、
コンパイルとか出来ないです
どうしてらいいんですか?

632 :デフォルトの名無しさん:02/10/27 13:38
>>625
関数ポインタの格納に long って・・・。
型が分からないとしても、せめて void *private_state; だろうに・・・。

633 :デフォルトの名無しさん:02/10/27 13:39
>>631
「gcc フロントエンド」 でぐぐってくれ。

634 :デフォルトの名無しさん:02/10/27 13:41
>>632
確かに...

> 関数ポインタの格納に long って・・・。

VB 厨かも知れんな。

635 :デフォルトの名無しさん:02/10/27 13:42
>>631
ウィソ厨はおとなしく bcc でも使ってたらどうかと

636 :デフォルトの名無しさん:02/10/27 13:45
628 必死でコンパイル/テスト中

637 :デフォルトの名無しさん:02/10/27 13:46
>>628
脳内バグは取れましたか?


638 :デフォルトの名無しさん:02/10/27 13:53
あ、終わりですか?

639 :デフォルトの名無しさん:02/10/27 13:54
終わりというか焉わり
628 の

640 :デフォルトの名無しさん:02/10/27 13:54
>>628 はにげだした!

641 :デフォルトの名無しさん:02/10/27 13:55
脳内バグは解決? よかったよかった (・∀・)

642 :デフォルトの名無しさん:02/10/27 13:56
>>628 は昼食を摂っている、とか

643 :デフォルトの名無しさん:02/10/27 13:58
>>642
いや、>>616-617 から 1 時間以上経ってるから、それは無いだろう。

644 :デフォルトの名無しさん:02/10/27 14:00
>>628 の脳内
-------------
Segmentation error (core dumped)
-------------

645 :デフォルトの名無しさん:02/10/27 14:03
しかしまあ、あれだな。
脳内バグか本当にバグがあるかは関係無く、問題があるなら普通それを素直に
指摘するよな。
という事は、つもりがあるかは別として 628 は煽りだったわけだ。
漏れらも煽られたわけだな、くそう。

646 :デフォルトの名無しさん:02/10/27 14:04
ファイルの同期を取るプログラムを作りたいんですが
ファイルのサイズや更新日時の情報を得るにはどうすれば良いのでしょう?
すみませんが、教えてもらえないでしょうか?

647 :デフォルトの名無しさん:02/10/27 14:06
>>646
OSはなんですか?

648 :デフォルトの名無しさん:02/10/27 14:06
fstat

649 :464:02/10/27 14:08
とりあえずunix(solalis)でやっています。
それができたらwindowsのdosでやってみようかなと。


650 :デフォルトの名無しさん:02/10/27 14:09
うーん、stat 系は環境依存なんだが・・・この際仕方ないか。
模範回答は 647 だな。

651 :650:02/10/27 14:14
これだ。
http://www.catnet.ne.jp/kouno/c_faq/c19.html#12

652 :464:02/10/27 14:17
>>651
ありがとうございます。
あとはがんばってネットで調べてみます。


653 :650:02/10/27 14:19
いや、すまん、651 は 646 を解決する情報ではないのだが・・・。 

654 :623:02/10/27 14:24
はあ、なんか煽られてるよ俺。
>>630
回答はすべてYes。
というか、ソースに間違いがあるんだから当たり前だわな。

んで、そういうあんたも動作テストは当然したんだよね?
で、どうだった?
strchr() の機能として問題になる動作は出なかったの?

というか、暇つぶしのネタに乗ってきてくれたのは
うれしいが、低レベルな問題をこれ以上引っ張るのも
アホらしいので答えを教えてあげましょうか?

>>645
> という事は、つもりがあるかは別として 628 は煽りだったわけだ。
煽ってきた612に対してネタを振ったつもりだったんだがな。
こういうのを「たくさん釣れた」っていうのかな?

655 :デフォルトの名無しさん:02/10/27 14:29
/* フィボナッチ数列を求める */
int fibonacci(int n)
{

if(n==1||n==2)
return(1);

else
return(fibonacci(n-1)+fibonacci(n-2));
}

これを再帰を使わずに書くとどうなる?

656 :デフォルトの名無しさん:02/10/27 14:32
>>655
なんか、さんざん出た気がするなぁ
int fibonacci( int n ) {
int a = 1, b = 0;
while ( n-- > 0 ) {
int t = a;
a += b;
b = t;
}
return b;
}

657 :デフォルトの名無しさん:02/10/27 14:32
>>655
n=3からループさせる。

658 :デフォルトの名無しさん:02/10/27 14:34
for(i=0;i<n;i++){a=b+c;b=a;c=b}


659 :656:02/10/27 14:35
しまったボケなきゃいけなかったのか
int fibonacci( int n ) {
switch ( n ) {
case 1: return 1;
case 2: return 1;
case 3: return 2;
case 4: return 3;
case 5: return 5;
.....
}
return 0
}


660 :デフォルトの名無しさん:02/10/27 14:36
>>654
ぜひ答えを教えてくれ。
正直、漏れはあんたが何をいけないと思っているかさっぱりわからん。
お手上げだ。

661 :デフォルトの名無しさん:02/10/27 14:38
昨日も >>654 みたいなヤシがいるから祭りになったんだよな

てか、同一人物?

662 :デフォルトの名無しさん:02/10/27 14:39
>>654
お帰り。ぜひ回答おねがいします。

663 :デフォルトの名無しさん:02/10/27 14:40
654の行動予想。
>>660 >>662などを馬鹿にします。もちろん答えは書きません。

664 :デフォルトの名無しさん:02/10/27 14:41
>>660 >>662
そんな言い方ではダメだ!
「おながいします」 と言え!!

665 :デフォルトの名無しさん:02/10/27 14:42
おなにーしてきていいですか?

666 :660:02/10/27 14:42
おながいします。

667 :660:02/10/27 14:43
>>665
済まないが、654 が回答するまで待っててくれ。

668 :デフォルトの名無しさん:02/10/27 14:43
もっとお母さんみたいに言ってくれ。

669 :デフォルトの名無しさん:02/10/27 14:45
>>654 の脳内でメモリアクセス違反が発生しました
ただいま再起動中です......しばらくお待ち下さい

670 :660:02/10/27 14:47
>>668
言いますた。

671 :デフォルトの名無しさん:02/10/27 14:50
敗者の弁マダー? >>654

672 :デフォルトの名無しさん:02/10/27 14:52
おなにー終わったんですが、ここは進展ないですね

673 :デフォルトの名無しさん:02/10/27 14:52
c言語でオブジェクト指向。


674 :623:02/10/27 14:53
やー何か盛り上がってるね、チミたち。
俺は昨日の祭りの時はいなかったんだよね。

んで、正解は...
180のコードでは第2引数に '\0' が渡された時に
NULLを返してしまう。
strchrでは '\0' も文字列の一部として
その文字位置(ポインタ)を返しましょう。

>>663
お前の予想は外れちゃったね。この馬鹿。

675 :デフォルトの名無しさん:02/10/27 15:00
ん?ピタリとレスが止んだなw

676 :デフォルトの名無しさん:02/10/27 15:00
グゥ。。。

677 :デフォルトの名無しさん:02/10/27 15:00
>>674
ああなるほど、そういう事か。
ありがとう、全然気付かなかった。


・・・とは素直に言えないな。
気付いたなら 615 の時点でも言えたはずだ。
なぜ煽るような事をした?

678 :663:02/10/27 15:06
>>674
漏れのカキコのおかげで未来が変わったんだよ(w

679 :デフォルトの名無しさん:02/10/27 15:07
>>674
やっとわかた。ありがとう。

>>678
その可能性もあるね。

680 :デフォルトの名無しさん:02/10/27 15:08
>>674
性格ワル。キモ

681 :デフォルトの名無しさん:02/10/27 15:08
>>674
俺は今来たから素直にありがとう

682 :デフォルトの名無しさん:02/10/27 15:13
>>673
構造体と対応関数を書けばいくらでもできるだろう。

683 :623:02/10/27 15:14
>>677
上で書いたように、元々は煽ってきた>>612に対する
ネタ振りのつもりだったんだが、それが
なぜか>>617の書き込みを筆頭に煽られまくっちゃったんだわ。

本当に気分を害した人がいれば謝るよ。ごめんね。

>>663
ワロタ。実はそうだったりしてな。

684 :677:02/10/27 15:21
>>683
そうだな、確かに 612 は煽りだ。
だが、客観的に見返してみろ、>>615 も立派な煽りだぞ。
それに、煽るつもりが全く無かったのなら >>645 の時点で反省があったはずだが
「こういうのを「たくさん釣れた」っていうのかな?」 ってちょっと調子に乗ってたな。
そこは気に食わなかった。
でも、ちゃんと詫びも入ったし、ケンカ両成敗と言う事で。

・・・C では負けたがナー。
そう、負け惜しみだが、普通 '\0' を探す場合は strlen() を使うから、
全然気がつかなかった。

685 :684:02/10/27 15:26
そうか、ちゃんと初期化されている文字列なら strchr('\0') が NULL を返す事が
無いから、sprintf(strchr(str, '\0'), "%d", hoge); とかできるわけだ。
今までずっと sprintf(&str[strlen(str)], "%d", hoge); ってやってたよ。

686 :デフォルトの名無しさん:02/10/27 15:34
テストの重要性を思い知らされるな。
まだバグがあるかもしれんな。


687 :デフォルトの名無しさん:02/10/27 15:56
各種ヘッダファイルに対応する関数の説明一覧とかがあるサイトあったら教えて下さい

688 :デフォルトの名無しさん:02/10/27 15:57
ぐぐれば見つかるんじゃない?

689 :デフォルトの名無しさん:02/10/27 16:00
>>687 www.microsoft.com

690 :デフォルトの名無しさん:02/10/27 17:14
time(null)

コレの戻り値って何ですか?

691 :デフォルトの名無しさん:02/10/27 17:19
>>690
リファレンスやヘルプや参考書が手元に無いの?
さらに、Web で検索はできない?

戻り値は現在の日時で、万国標準時 (UCT) の 1970 年 1 月 1 日の 00:00:00
からの経過時間を秒単位で表した数値。
型は time_t で、実装は処理系依存。

692 :デフォルトの名無しさん:02/10/27 17:28
strchrって\0も検索対象にいれるのか?

693 :デフォルトの名無しさん:02/10/27 17:30
>>692
>>359

694 :デフォルトの名無しさん:02/10/27 17:32
>>693
わけわからん。
書いていないから\0も含むってのか?

695 :デフォルトの名無しさん:02/10/27 17:32
MAX_PATHはヌル文字を含めた長さですか?

696 :デフォルトの名無しさん:02/10/27 17:39
夜中の論争は書籍「エキスパートCプログラミング」の52ページに関するものでしょうか・・・


697 :デフォルトの名無しさん:02/10/27 17:40
>>695
ヌル文字を含めた長さであって
ヌル文字を含まない長さである。

って話をどっかで読んだ覚えがある。詳しくは規格書読め下さい。

698 :デフォルトの名無しさん:02/10/27 17:40
>>696
持ってないから引用してくれると嬉しいです。
お願いします。

699 :デフォルトの名無しさん:02/10/27 17:48
>>694
英語が読めないのか ?

"The terminating null character is considered to be part of the string."

ぐらい訳せよ。

700 :デフォルトの名無しさん:02/10/27 17:49
K&R第2版では240ページ?

701 :デフォルトの名無しさん:02/10/27 17:52
>>699
読めますけど。

702 :デフォルトの名無しさん:02/10/27 17:53
ANSIとISOの規格って同じもの?

703 :698:02/10/27 17:54
>>696
>>700に教えてもらったK&Rの方見てみます。お二方どうもありがとう。

704 :デフォルトの名無しさん:02/10/27 17:55
>>697
じゃあMAX_PATH+1としておけば間違いないということ?

705 :デフォルトの名無しさん:02/10/27 17:56
>>704
そこらへんは環境依存

706 :デフォルトの名無しさん:02/10/27 18:00
>>359

C99の仕様書の原文なんて持ってこられても困るんですが。
1989年のANSIの企画書の原文を引用してください。


707 :デフォルトの名無しさん:02/10/27 18:03
>>701
じぁあ、その訳書いてみ。

708 :デフォルトの名無しさん:02/10/27 18:04
情報を小出しにするからCスレはすぐ延びるんだろうな

709 :デフォルトの名無しさん:02/10/27 18:06
自信がないから一気に出せないんだよ。
基本的に他人に意見を聞いてからだもん。

710 :デフォルトの名無しさん:02/10/27 18:11
>>706
何を今さらって感じだけど、人にものを頼むのにずいぶん偉そうな態度の奴だな。
お前が金出して買えよと言いたくなる。

711 :デフォルトの名無しさん:02/10/27 18:11
”終端塗る文字は文字列の一部と考えられる”

712 :デフォルトの名無しさん:02/10/27 18:12
charが式中でintに変換されるのは本当だったんだね…

713 :デフォルトの名無しさん:02/10/27 18:16
>>711
で、理解できた ? > >>692

714 :デフォルトの名無しさん:02/10/27 18:18
Cスレ最速記録達成・・・か・・・

715 :デフォルトの名無しさん:02/10/27 18:27
おお、目を離した隙にまた沸いてるよ。
このスレは 24 時間フル稼動か・・・。

ところで、C99 は C じゃないってつっぱねるのはどうよ?

716 :デフォルトの名無しさん:02/10/27 18:40
アルファブレンディングとかスプライトを使っているのはゲームプログラマくらいな
ものなんでしょうか?

717 :デフォルトの名無しさん:02/10/27 18:50
丸一日で700レスか、、、

718 :デフォルトの名無しさん:02/10/27 18:53
>>716
ああ、普通そんな事する必要無いからな。
時々、デスクトップアクセサリを作ってる人がやるくらいだ。
ところでスレ違いだが大丈夫か?

719 :デフォルトの名無しさん:02/10/27 18:54
>40 :デフォルトの名無しさん :02/10/26 22:07
>strchr()の中身みたいんですけど、どこに書いてありますか?なんでもおk

すべてはここから始まった・・・
40居るか?でてこーい!

720 :デフォルトの名無しさん:02/10/27 19:04
>>717
なんだかんだ言ってCはデファクトスタンダードだね

721 :デフォルトの名無しさん:02/10/27 19:07
おれが有意義な日曜の休日をすごしてる間もおまえらは、
strchrについて、不毛な議論をしてたですか。

722 :デフォルトの名無しさん:02/10/27 19:25
改行コードで始まる行を出力しない簡単なやつをつくってみたんですが
ちゃんと改行されてしまいます
どこがおかしいのでしょうか

#include<stdio.h>
int main(int argc,char **argv)
{
char line[BUFSIZ];
FILE* fp;
if((fp=fopen(argv[1],"r"))!=NULL){
while(fgets(line,BUFSIZ,fp)!=NULL){
if(line[0]=='\n')
continue;
printf("%s",line);
}
}else exit(1);
return 0;
}


723 :デフォルトの名無しさん:02/10/27 19:27
>>722
とりあえず '\r' もとってみたら

724 :デフォルトの名無しさん:02/10/27 19:34
>>722
ん?動かしてみたけどちゃんと動いたぞ?

725 :デフォルトの名無しさん:02/10/27 19:37
>>722
改行コードで始まると思ってる行が、'\t\n' とか ' \n' とかなってないか ?

726 :デフォルトの名無しさん:02/10/27 19:38
>>710
別に頼んでいるわけじゃないんだが・・・
C99を標準だなんて言わないでほしいってこと。

727 :デフォルトの名無しさん:02/10/27 19:40
>>722
きっと改行だけしたつもりが、スペースやタブがはいってしまったんでしょ。

728 :デフォルトの名無しさん:02/10/27 19:42
>>722
漏れのところも動いた。
テストデータのテキストの方に問題ありそう。

>>726
何を言っているんだ?
C99 も 1 つの標準だろう?

729 :デフォルトの名無しさん:02/10/27 19:46
>>728
文書のうえだけでの標準・・・

730 :デフォルトの名無しさん:02/10/27 19:49
>>722
スペースやタブが入っていても大丈夫にしてみたぞ。

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
char line[BUFSIZ];
FILE* fp;

if ((fp = fopen(argv[1],"r")) != NULL) {
while (fgets(line, BUFSIZ, fp) != NULL) {
int i = 0;
while (line[i] == ' ' || line[i] == '\t') i++;
if(line[i] == '\n')
continue;
printf("%s", line);
}
} else exit(1);
return 0;
}

731 :デフォルトの名無しさん:02/10/27 19:56
>>730
isspaceじゃだめ?

732 :デフォルトの名無しさん:02/10/27 19:59
>>731
isspace()では、'\r'や'\n'も飛ばしてしまうよ。

733 :デフォルトの名無しさん:02/10/27 20:00
>>722
windowsでデフォルトがバイナリモードにになってるとか


734 :デフォルトの名無しさん:02/10/27 20:01
>>732
それで問題ないでしょ?

・・・・あれ?なんか勘違いしているかも、、

735 :デフォルトの名無しさん:02/10/27 20:01
isspace()を使って書き換えてみた。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(int argc, char **argv)
{
char line[BUFSIZ];
FILE *fp;

if ((fp = fopen(argv[1],"r")) != NULL) {
while (fgets(line, BUFSIZ, fp) != NULL) {
int i = 0;
while (isspace(line[i])) i++;
if (line[i] == '\0')
continue;
printf("%s", line);
}
} else exit(1);
return 0;
}

736 :デフォルトの名無しさん:02/10/27 20:01
どうでもいいけど
printf("%s", line);
ってヤメてくんねぇかな

737 :デフォルトの名無しさん:02/10/27 20:02
>>736
fputsをstdoutに使うよりも素直じゃない。
俺ならそうするね。

738 :デフォルトの名無しさん:02/10/27 20:03
たとえば以下の部分が

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
char line[BUFSIZ];
FILE* fp;

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
char line[BUFSIZ];
FILE* fp;
っていうふうになります?
なりません
なんでかな
ちなみにcygwin上です
関係ないか

739 :746:02/10/27 20:03
>>736
別にいいんじゃない?
fputs(line, stdout) と書けとでも?
大差ないし。

740 :デフォルトの名無しさん:02/10/27 20:03
>>734
isspace()を使う場合は、最後に'\n'でなく'\0'と比較するように書き換える
必要がある。

741 :デフォルトの名無しさん:02/10/27 20:04
ここはバカばっかですか?
printf(line);
でいいだろーが

742 :デフォルトの名無しさん:02/10/27 20:05
>>736
たとえばどんな風に書いたほうがすきですか?
参考のために教えてください

743 :739:02/10/27 20:05
未来から来てしまった・・・

>>738
何を訴えたいのか読み取れないような。

744 :デフォルトの名無しさん:02/10/27 20:05
>>741
lineに%が含まれていたらどうするんだよ・・・・
フォーマット文字列には定数を与えるのが鉄則。

745 :デフォルトの名無しさん:02/10/27 20:05
空行のあるなしのことでは?

746 :デフォルトの名無しさん:02/10/27 20:05
>>741
ヴォケ。
テキストデータに % が入ってたらどーするんだ。

747 :743:02/10/27 20:07
>>745
ああ、了解。
738 はソースじゃなくてテキストデータなのね。

748 :デフォルトの名無しさん:02/10/27 20:10
>>741
>ここはバカばっかですか?
> printf(line);
> でいいだろーが

 当然ネタだろうが、つられておこう。
 line[]に"%s%d"とか入ってたらどうする。

749 :デフォルトの名無しさん:02/10/27 20:10
>>729
既にgccもDigital MarsもComeauもSGIのもSunのもhpのも、
全部とは言わないが相当程度サポートしてるけど?>C99

750 :デフォルトの名無しさん:02/10/27 20:10
printfは一般的にスタックの消費が激しいって本当ですか?
以前、スタックの消費を100KB以下に押さえた軽いprintfをつくろうというスレッドがあったと思うんですが。


751 :デフォルトの名無しさん:02/10/27 20:13
>>750
printf()でスタックが100KBも消費するならLSI-Cとかどうするんだ?

752 :デフォルトの名無しさん:02/10/27 20:13
>>749
規格のすべてをサポートしていないのでは、準拠しているとはいえないのでは?

753 :デフォルトの名無しさん:02/10/27 20:14
電波ゆんゆん。

754 :デフォルトの名無しさん:02/10/27 20:14
>>751
でもそう書いてあったし・・・
100Bじゃなくて100KBだったはず。

755 :754:02/10/27 20:15
信じられないからきいているんですよ。

756 :デフォルトの名無しさん:02/10/27 20:16
>>752
(゚Д゚)ハァ?
749 の何をどう解釈したらそんな言葉が出るんだ?
749 は全てのコンパイラがサポートしているわけではないと言っているが、
規格のすべてをサポートしていないとはこれっぽっちも言っとらん。

757 :デフォルトの名無しさん:02/10/27 20:17
>>750 >>754 >755
printf() のソース見れ。
ソース無くて読めなくても、実際使って問題が出てないなら深く考えるな。

758 :デフォルトの名無しさん:02/10/27 20:17
>>756
それならANSIの規格だってすべてのコンパイラがサポートしているとは限らないということになるけど?いい?

759 :デフォルトの名無しさん:02/10/27 20:18
>>719
>>40はネタ帳を持っている。

760 :デフォルトの名無しさん:02/10/27 20:19
>>757
じゃあ深く考えないことにします。

(100KBなんて相当再帰処理を繰り返したりしなければ消費しないよな・・・)

761 :デフォルトの名無しさん:02/10/27 20:21
つーかまあ、printf() の処理内容考えると、やっぱり 100 KB じゃなくて
100 Bytes だろう。
100 KB もあったら相当なコードとデータを詰めこめる。

762 :756:02/10/27 20:22
>>758
その上でこのスレは標準規格に則って動いてるんだろ。
何が問題?

763 :デフォルトの名無しさん:02/10/27 20:23
>>762
どっちの標準にそって動いているの?


764 :デフォルトの名無しさん:02/10/27 20:24
VC6 の printf() のソース、_output() ってソースの無いルーチン呼んでる
だけだから読んでも得るものねーYO・・・

765 :デフォルトの名無しさん:02/10/27 20:24
次スレからは>>1にC99の話題は禁止とかいてほしい・・・

766 :デフォルトの名無しさん:02/10/27 20:25
つか、DOSのCではprintfが呼び出せなくなるような。

767 :デフォルトの名無しさん:02/10/27 20:25
>>763
さあ、人それぞれだろ。
でも、ANSI と ISO がこのスレでぶつかっているところを見たことが無い。
何が問題?

768 :デフォルトの名無しさん:02/10/27 20:25
>>764
_output()のソースがどこかにあったと思うよ。

769 :デフォルトの名無しさん:02/10/27 20:26
>>766
えっ・・・そりゃ一体どういう状況??

770 :デフォルトの名無しさん:02/10/27 20:26
>>767

コンパイル時に大きさの決まらない配列とか・・・・

771 :デフォルトの名無しさん:02/10/27 20:27
>764
ハァ?
じゃあoutput.cは何なんだよ?

772 :デフォルトの名無しさん:02/10/27 20:27
ネタ帳に
  標準とは何を指すか
を追加

773 :デフォルトの名無しさん:02/10/27 20:27
>769
スタック100KByte取るような関数はDOSアプリでは
使えない、というだけの話。

774 :デフォルトの名無しさん:02/10/27 20:29
>>735
fgets()のバッファのサイズにBUFSIZを使ってるのって変だよな。

775 :デフォルトの名無しさん:02/10/27 20:29
>>773
>>716
一体どう言うロジックを組めばスタック 100 KB も取ると思うわけ?
それと、実際にDOSアプリで呼べなかった事あるの?

776 :デフォルトの名無しさん:02/10/27 20:30
>>774
なんで?(^_^;)


777 :775:02/10/27 20:32
ああ、773 は、「だから printf() が 100 KB 食うわけない」 と言いたいのか。

778 :デフォルトの名無しさん:02/10/27 20:32
>>775
もしも100KBもとるようならって話でしょ?
でも動くから100KBも消費していないと。

779 :デフォルトの名無しさん:02/10/27 20:33
>>774
それほど変でもない。
困る事がありそうで、実際にはなかなか困らないよ。

780 :デフォルトの名無しさん:02/10/27 20:33
標準関数で100KBも消費するとしたら、再帰使ってかいたqsortくらいか?
多分実用的なライブラリは再帰なんか使っていないと思うけど。

781 :デフォルトの名無しさん:02/10/27 20:35
>>780
前半には同意するが、後半には同意できないぞ。
qsort() は実用的ではないとでも言うのか?

782 :781:02/10/27 20:36
780 の意味を取り違えた。
逝ってきます・・・

783 :デフォルトの名無しさん:02/10/27 20:36
>>781
実用的なqsortの実装は再帰を展開してあると思う。

784 :デフォルトの名無しさん:02/10/27 20:36
コードウォーリアーつかっとる者はおらぬか?
VC++より優れてる点を挙げてくれい、劣ってる点でもよいぞ

785 :デフォルトの名無しさん:02/10/27 20:37
>>781
違う違う。
勉強のためのqsortのサンプルコードなら再帰を使うだろうけど、glibcだとかVC++だとかの実用的なライブラリのqsortは再帰なんか使わないでかくだろうということ。

786 :デフォルトの名無しさん:02/10/27 20:38
>>776
たとえばCLOCKS_PER_SECとかCHAR_MAXなんかを、つかってたら変でしょ。
(別に間違いじゃないけどさ)

787 :デフォルトの名無しさん:02/10/27 20:39
>>786
なんだ・・・マクロの命名の話か・・・


788 :デフォルトの名無しさん:02/10/27 20:40
>>787
命名の問題じゃないけど…

789 :デフォルトの名無しさん:02/10/27 20:43
>>788
ぼやくだけにしないで、きちんと問題をはっきりとさせること。

790 :デフォルトの名無しさん:02/10/27 20:44
そうそう、だから無駄にこのスレは長くなる。

791 :デフォルトの名無しさん:02/10/27 20:46
>>741みたくはっきり言うと墓穴を掘るからなるべくあいまいにレスをつけるのがこのスレの常識

792 :デフォルトの名無しさん:02/10/27 20:47
>>791
「このくらい自分で分かれよ」と思って教えないのですです。

793 :デフォルトの名無しさん:02/10/27 20:49
>>741はいいと思うぞ
簡潔に終了したし

794 :デフォルトの名無しさん:02/10/27 20:53
>>789
BUFSIZはsetvbufで使うための定数だから。

fgets(s,CLOCKS_PER_SEC,fp);
みたいに、標準ヘッダーに定義されてる定数を適当に使うのと同じ。
という話なんでしょ?

795 :741:02/10/27 20:56
人が飯食ってるあいだにバカ供がやけに祭り上げてくれちゃってますね(w











オレが間違ってた。ゴメソ

796 :デフォルトの名無しさん:02/10/27 20:56
>>794
それなら命名の話だから>>787でいいんじゃ?
>>788が違うっていうから何の問題かというのが焦点に。

797 :デフォルトの名無しさん:02/10/27 20:56
>>796
どあほう。
ぐぐったりリファレンス見たりして分かる情報ならそれでもいいが、
そういう問題じゃないんだろう?
そういうのを指摘してやらないのは嫌がらせか偽善のどちらかだ。

>>793
>>744

798 :デフォルトの名無しさん:02/10/27 20:59
>>794
そうだったのか。
setvbufもBUFSIZなんてありきたりな名前を使うなよな。。

799 :797:02/10/27 21:00
ごめんよ 796。
漏れは 792 に言いたかった。
逝ってきます・・・。

800 :デフォルトの名無しさん:02/10/27 21:01
>>797がなぜ>>796に切れてるのかがわからん。

そして>>793>>744を示してる意味もわからん。
>>744のようにすぐ間違いを指摘できたから「簡潔に終了」と言ってるのに。

801 :デフォルトの名無しさん:02/10/27 21:01
>>791 が真理だな。

802 :797:02/10/27 21:03
>>800
漏れ・・・

   も う だ め ぽ

803 :デフォルトの名無しさん:02/10/27 21:03
おいおいもう800越えかよ・・・

804 :デフォルトの名無しさん:02/10/27 21:04
俺が今までひっかからなかったのはBUFSIZじゃなくてBUFSIZEにしていたからか(笑)

805 :デフォルトの名無しさん:02/10/27 21:04
ん〜、やはり相手に「バカ」「アホ」と息巻いてレスをつけると墓穴を掘る方向に・・・

806 :デフォルトの名無しさん:02/10/27 21:07
>>802
ワラタ

807 :デフォルトの名無しさん:02/10/27 21:12
つーか今朝の c=(char)c; ってうやむやのまま終わったよね。
正直に白状すると、俺はまだよくわかりません。

808 :デフォルトの名無しさん:02/10/27 21:13
>>807
蒸し返すな。
C99の規格がそうなっているからキャストが必要なの。
1989年のANSIはしらん。

809 :デフォルトの名無しさん:02/10/27 21:13
>>807
結論出てるよ。やらなきゃダメ

810 :デフォルトの名無しさん:02/10/27 21:25
蒸し返せ (・∀・)

811 :デフォルトの名無しさん:02/10/27 21:32
お、やるか

812 :デフォルトの名無しさん:02/10/27 21:34

追いかけるのが大変だから、ゆっくりしゃべれ

813 :デフォルトの名無しさん:02/10/27 21:35
ところで、strrchr はどうやって実装するのが普通なのかな〜?

814 :デフォルトの名無しさん:02/10/27 21:37
test

815 :デフォルトの名無しさん:02/10/27 21:37
void func_a(char a)
{
  ・・・
}

という関数があったとすると、引数aは関数の中でint型になっちゃうんですか?


816 :test&rlo;tets:02/10/27 21:37
tesst

817 :デフォルトの名無しさん:02/10/27 21:38
>>815
???

818 :デフォルトの名無しさん:02/10/27 21:39
どういう関数を書くときに
c = (char)c;
みたいなことをすればいいのかがわからない。

819 :デフォルトの名無しさん:02/10/27 21:40
>>815
ならない。

呼び出し元からスタックへ char が渡されると一旦 int に変換される実装もある
ようだが、関数に突入した時に結局 char として扱われる。

char 変数の値はあくまで char 型として扱われる。
文字リテラルが int と評価される事とは全く関係無い。

引数の受け渡しがどうなっているかは普通は気にする必要は無い。
可変個引数を受け付ける場合は気にする必要がある場合もある。

820 :デフォルトの名無しさん:02/10/27 21:41
>>818
だから、「規格通りの」 strchr()。
蒸し返すなって。
それとも >>810

821 :デフォルトの名無しさん:02/10/27 21:42
>>818
int に入った文字コードと char を比較するとき

822 :デフォルトの名無しさん:02/10/27 21:42
816 ここでテストするな
↓ に逝け
http://pc.2ch.net/test/read.cgi/prog/1035390611/l50

823 :デフォルトの名無しさん:02/10/27 21:42
>>807
1990年のISOの規格の翻訳でもこうだね。ANSIの方は氏蘭が。

http://www.jisc.go.jp/ ( JIS X3010 )

> 形式
>  #include <string.h>
>  char *strchr(const char *s, int c);
> 機能
>  strchr関数は、sで指される文字列の中のc(char型に変換する。)の最後の出現を探す。
>  文字列の終端を示すナル文字は、もじれつの一部とみなす。

824 :デフォルトの名無しさん:02/10/27 21:42
>>820
てことは規格通りのstrchr以外に書く機会は無いんだ?
ならよかった。

825 :デフォルトの名無しさん:02/10/27 21:43
仮に仕様でなくても、
処理系によっては>>818がないとうまく動作しない。
という結論だったよね?

826 :デフォルトの名無しさん:02/10/27 21:46
>>824
たいていは char 変数に代入する事で済ますな。

827 :デフォルトの名無しさん:02/10/27 21:46
>>825
文字コードが7bit に収まる文字なら処理系関係無くOKじゃないの?
'ア'とかが処理系によっては問題になる

828 :デフォルトの名無しさん:02/10/27 21:47
ごめん、>>818だけど、俺が聞きたいのはstrchrについてじゃなくて、
自分で(strchrとは関係ない)関数を書くときに c = (char)c; みたくキャストする場面が
わからないの。
>>821でいいの?


829 :デフォルトの名無しさん:02/10/27 21:48
>>812
ログはある程度あんたを待っててくれるから、最新レスについて逝けなくても大丈夫だ。
発言したいなら別だがナー。

830 :デフォルトの名無しさん:02/10/27 21:49
>>827
はい。

831 :デフォルトの名無しさん:02/10/27 21:49
821 は 826 でいいと思われ

832 :デフォルトの名無しさん:02/10/27 21:53
>>831
じゃあ、strchr は
char *strchr( const char *str, int c ) {
char ch = c;
......
みたいでもいいの?

833 :デフォルトの名無しさん:02/10/27 21:53
>>813

↓と書いてみたけど、領域が連続していない場合もうまく動作するかわからない。
とりあえずcharにキャストして、第二引数に0を与えても大丈夫。

char *strrchr(const char *s,int c)
{
const char *endp=s;

s=s+strlen(s);
for(;s>=endp;s--)
if(*s==(char)c)
return (char *)s;

return NULL;
}


834 :デフォルトの名無しさん:02/10/27 21:55
>>832
つーか、最初から char *strchr( const char *str, char c ); でいいと思う
んだよなー。
クソな仕様だ。

835 :デフォルトの名無しさん:02/10/27 21:55
引数を int c ではなく最初から char c と宣言しちゃまずいんでしょうか・・・

836 :デフォルトの名無しさん:02/10/27 21:56
>>833
strlen() で余計なコストがかかる罠

837 :834:02/10/27 21:56
かぶった (;´Д`)

838 :デフォルトの名無しさん:02/10/27 21:57
>>833
なんか2度手間じゃない?
char *strchr( const char *str, int c ) {
char *last = NULL;
c = (char)c;
for ( ;*str; str++ ) if ( *str == c ) *last = *str;
if ( *str == c ) *last = *str;
return last;
}

839 :デフォルトの名無しさん:02/10/27 22:01
>>838
おいおい大丈夫か ?
last 自体の値は、NULL のままだぞ。

840 :デフォルトの名無しさん:02/10/27 22:01
>>836
後ろから見てゆくのって駄目?

841 :838:02/10/27 22:02
>>839
すまない。ミスです

842 :21世紀のあいんしゅたいん ◆rGsyzf.Kp2 :02/10/27 22:07
それにしてもこのスレ早いね
何よりこの速さが世間でのCの需要を物語っている
役に立つとかそんなんより
知らなきゃ話にならんレベルなのか・・・

オレもやろ

843 :840:02/10/27 22:08
VC++でもやっぱり後ろから見ているよ?
それとも関数を呼ばないでwhile(*s++) ;とやれということ?

844 :デフォルトの名無しさん:02/10/27 22:09
>>842 のようにして C 厨房が増えていくわけか

845 :デフォルトの名無しさん:02/10/27 22:09
>>840
後ろを見つけるのに文字列全体を1回走査しないといけないからちょっと無駄かもしれない。
>>838 がやろうとしているように、走査している間に指定の文字が見つかったらその位置を覚えておくようにすれば、自然と最後の位置が残る。

846 :843:02/10/27 22:10
while(*++s);じゃないとだめか。

847 :デフォルトの名無しさん:02/10/27 22:11
でも実際どっちがいいかは分からんよね

848 :843:02/10/27 22:12
>>845
ああそういうことね。


849 :デフォルトの名無しさん:02/10/27 22:12
strrchr()すら実装できないカスがいるスレはここですか?

850 :デフォルトの名無しさん:02/10/27 22:13
>>845
strrchr("aabbccabaaabcbcabbbcca", 'a');
こんな感じだと後ろからやったほうが速い

851 :デフォルトの名無しさん:02/10/27 22:13
>>849
ハァ?

852 :デフォルトの名無しさん:02/10/27 22:15
>>851
>>849 は自分のことを言ってるんだよ

853 :C厨房:02/10/27 22:16
C超初心者ですが、質問は許されますか?

854 :デフォルトの名無しさん:02/10/27 22:18
>>853
ここは本来そのためのスレだ (笑)
ただし、内容による。

855 :マチャアキ:02/10/27 22:18
チューボーdeathYO!

856 :デフォルトの名無しさん:02/10/27 22:19
そういえばスレタイ、「聞きなさい」 じゃなくて 「訊きなさい」 だよな。
重箱の隅だけど。

857 :デフォルトの名無しさん:02/10/27 22:20
>>856
>重箱の隅だけど。

これ付け足せば許されると思ってんのかゴルァ

858 :デフォルトの名無しさん:02/10/27 22:21
>>857
あなたに許してもらおうと思ってないから大丈夫です。

859 :C厨房:02/10/27 22:21
「1月〜12月」の中で「3月」が一番大きく認識させるにはどうしたらいいですか?

860 :デフォルトの名無しさん:02/10/27 22:22
>>859
もっと詳しく質問しないとわからないよー
何に認識させるの?

861 :デフォルトの名無しさん:02/10/27 22:23
>>857
ウザいから死ね

862 :デフォルトの名無しさん:02/10/27 22:23
回答があいまいじゃなくて質問があいまいという斬新な切り口

863 :846:02/10/27 22:25
おっと、空文字列だとだめじゃん。
やっぱりstrlenでいいね。

864 :デフォルトの名無しさん:02/10/27 22:25
>>859
C言語の前に日本語(略

865 :デフォルトの名無しさん:02/10/27 22:25
おまいら一体何歳なんだよ!くそっ!!

866 :デフォルトの名無しさん:02/10/27 22:26
>>859
月の値を 3 〜 14 で持つ。
4月 5月 6月 7月 8月 9月 10月 11月 12月 1月 2月 3月
3   4  5   6  7   8   9   10   11   12  13  14
実際に月の数字が必要な場合は (m % 12) + 1 を取る。

つーかこれ C の質問じゃないし。

867 :866:02/10/27 22:26
ずれた Σ(゚д゚lll)ガーン

868 :デフォルトの名無しさん:02/10/27 22:28
>>866
スゲー。あの質問でこの答えが出るか?フツー

869 :C厨房:02/10/27 22:28
>>866 どうも有難うございます!!
>>864>>862 すいません僕って馬鹿なんですよ。エヘ

870 :866:02/10/27 22:29
この方がいいか。

月の値は普通に 1 〜 12 で持つ。
月の比較の時に (m <= 3? m + 12; m) を取る。

871 :C厨房:02/10/27 22:30
>>870
あなたは「救世主(メシア)」です

872 :デフォルトの名無しさん:02/10/27 22:30
ああ、これイヤかも。
最初に厨解を出しておいて、質問者が去ったら正解を出す、と。

873 :デフォルトの名無しさん:02/10/27 22:31
すごい読解力だなあ。
俺いまだにわからんよ。

874 :866:02/10/27 22:31
>>868
何か直感でわかってしまった。
電波ゆんゆんなのかも。

875 :デフォルトの名無しさん:02/10/27 22:33
ああ!!
一番大きくって配列に入れたときの添え字が一番大きいという意味か!!

876 :デフォルトの名無しさん:02/10/27 22:35
きっと enum month{4月, 5月・・・・・12月, 1月, 2月, 3月};

すいません。英語で月を書く自信がありませんですた。

877 :870:02/10/27 22:36
文法エラーだたーよ・・・
(m <= 3? m + 12: m)

878 :C厨房:02/10/27 22:36
みなさんは、どれくらいでC言語はマスターなされたのですか?

879 :デフォルトの名無しさん:02/10/27 22:37
>>878
マスターしていないんで未定です。

880 :デフォルトの名無しさん:02/10/27 22:37
ヘイ、マスター!

881 :デフォルトの名無しさん:02/10/27 22:39
>>878
お腹の中にいるとき。ママから教えてもらってたからさ。

882 :デフォルトの名無しさん:02/10/27 22:39
前スレ 1000 取っちゃったもんね。
995 から連続だけどナー

883 :C厨房:02/10/27 22:40
>>881
いいママですね 僕のママは主婦なんで駄目です

884 :デフォルトの名無しさん:02/10/27 22:41
でもここも 1000 取り合戦間近の気配・・・

885 :デフォルトの名無しさん:02/10/27 22:41
>>882
お前、あのスレは良いとこだったのに何しやがんだ

886 :21世紀のあいんしゅたいん ◆rGsyzf.Kp2 :02/10/27 22:41
>>878
一ヶ月でかなり調子にのれるYO!
実際どうかはわからんけど。
あとCと平行してアルゴリズムの勉強したほうが(・∀・)イイ!

887 :870:02/10/27 22:41
漏れは独学。
ガッコも会社も教えてくれなかったし。

888 :デフォルトの名無しさん:02/10/27 22:43
どうして、ム板のコテは神か糞虫かの2種類しかいませんか?

889 :デフォルトの名無しさん:02/10/27 22:43
>>883
あんた何歳?

890 :21世紀のあいんしゅたいん ◆rGsyzf.Kp2 :02/10/27 22:44
はやくだれかスレ立てて!
寿命約30時間か・・・
日曜だからかな

891 :デフォルトの名無しさん:02/10/27 22:44
うぉーCの話をスレー!Cをやってる人間の話なんかどーでもいいっつーのー!

892 :デフォルトの名無しさん:02/10/27 22:45
>>891
漏れはC歴2年ちょいだ

893 :C厨房:02/10/27 22:46
>>886 今からアルゴリズム勉強します
>>887
僕も今1ヶ月目の独学です。でも詰まった時に聞ける人がいないので皆様のお力を
お借りしました。友達がいないわけじゃないですよ


894 :デフォルトの名無しさん:02/10/27 22:47
俺はC未経験なんだよな・・・彼女もできたことないし・・・

895 :C厨房:02/10/27 22:47
>>891 すいませんもう去ります。有難うございました

896 :デフォルトの名無しさん:02/10/27 22:48
>>893
ガンガレ

897 :870:02/10/27 22:48
漏れも周りに訊ける人いなかったが、ついでにネット環境も無かった。
詰まったときは放置。
でもある日突然ひらめいて続行。
そんな感じ。

898 :21世紀のあいんしゅたいん ◆rGsyzf.Kp2 :02/10/27 22:48
>>894
AとBはしたんでつか?
Bで終わったんでつか?

899 :デフォルトの名無しさん:02/10/27 22:49
>>898
クソムシ

900 :デフォルトの名無しさん:02/10/27 22:50
>>898
彼女ができたことない=全部未経験です

901 :デフォルトの名無しさん:02/10/27 22:50
>>900
雑談は他所でおながいします

902 :デフォルトの名無しさん:02/10/27 22:50
>21世紀のあいんしゅたいん ◆rGsyzf.Kp2
新手の荒らしか?


903 :21世紀のあいんしゅたいん ◆rGsyzf.Kp2 :02/10/27 22:50
>>897
でもその方がいいかもね。
困ったら聞くのも手だけど、
頼りすぎたら自分のものにならんし。
聞いた後に「はいそうですか」じゃなくて
なんでそうなるか死ぬほど考えなきゃ

と、もう既に去った895に語るテスト

904 :デフォルトの名無しさん:02/10/27 22:51
もっとこう殺伐と質問、殺伐と解答ってないのかしら
馴れ合ってんじゃないわよ

905 :21世紀のあいんしゅたいん ◆rGsyzf.Kp2 :02/10/27 22:52
彼女以外の女ともキスまではするべ
そんな事より、だれかオレの問題とけねーがーー

http://pc3.2ch.net/tech/index.html#10

906 :デフォルトの名無しさん:02/10/27 22:53
>>905
あの・・・そのリンクは・・・・

907 :21世紀のあいんしゅたいん ◆rGsyzf.Kp2 :02/10/27 22:53
>>904
この微妙な付き合いが2Chっぽくない?
みんな無言で文字打ち合ってる姿がうける

908 :デフォルトの名無しさん:02/10/27 22:54
>>902
Yes.

909 :デフォルトの名無しさん:02/10/27 22:54
>>905
クソムシは(・∀・)キエロ!!

910 :デフォルトの名無しさん:02/10/27 22:55
>>900
900ゲトとか言ってくれよ!欲しかったのに!

911 :デフォルトの名無しさん:02/10/27 22:56
ははぁ〜ん。さてはおまえら900超えたからやる気なくなったな?
新スレへ体力を温存だな?

軟弱者!

912 :デフォルトの名無しさん:02/10/27 22:56
>21世紀のあいんしゅたいん ◆rGsyzf.Kp2
雑談掲示板から最近2chに着たばかりだと思うに20M$。


913 :デフォルトの名無しさん:02/10/27 22:57
>>911
エスパーハケーン

914 :デフォルトの名無しさん:02/10/27 22:57
新ソバきぼんぬ

915 :デフォルトの名無しさん:02/10/27 22:58
じゃあ俺は2000K&R。

916 :デフォルトの名無しさん:02/10/27 22:59
>>909
ところで、クリムシってなんですか?

917 :デフォルトの名無しさん:02/10/27 23:00
Socket プログラミングについて質問があるんですが。
最初、WSAStartup 関数やって、socket 関数でソケットを取得すると思いますが、
既存のソケット(他のプログラムが作ったソケット)を取得したいんですがやりかたがよくわかりません。
開発環境は WinXP Prp. VC++6.0 です。よろしくお願いします。
API でそういうようのがあればいうことないです。(API なら VB で使える)

918 :デフォルトの名無しさん:02/10/27 23:00
911は絶対にセイラさん。

919 :デフォルトの名無しさん:02/10/27 23:00
>>916
おい・・・

920 :デフォルトの名無しさん:02/10/27 23:01
>>917
Soket スレ逝ってくれ。
http://pc3.2ch.net/test/read.cgi/tech/1034236536/l50

921 :デフォルトの名無しさん:02/10/27 23:01
>>917
俺と同じ開発環境だな

922 :デフォルトの名無しさん:02/10/27 23:01
less()とexch()を使うにはどうしたらいいんですか?

923 :デフォルトの名無しさん:02/10/27 23:01
[栗蟲]クリムシ
昆虫類栗蟲科栗蟲目
主に栗を主食とする昆虫。害虫。

924 :デフォルトの名無しさん:02/10/27 23:02
>>917
この糞バカ野郎!いくら900越えでやる気を失った俺らだからと言って
Cスレのプライドまで捨てたわけじゃねぇぞ!
VCスレもWin32APIスレもネットワークプログラミングスレもあるだろうが!

925 :デフォルトの名無しさん:02/10/27 23:04
うい

926 :916:02/10/27 23:04
>>923
これで今夜は熟睡できそうです。ありがとう

927 :デフォルトの名無しさん:02/10/27 23:05
>>922
何の less() で何の exch() だよ・・・

928 :隊員NO. ◆rhAfp.iLoU :02/10/27 23:07
はーい!
みんな元気かい?

929 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:08
名前変えますタ

930 :デフォルトの名無しさん:02/10/27 23:09
>>928-929
キエロ

931 :デフォルトの名無しさん:02/10/27 23:09
>>929
>>909

932 :デフォルトの名無しさん:02/10/27 23:09
C言語で2つの値を交換するexch()というものだと思うんですが。
ちょっとよくわからないんで、すみません。

933 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:10
いやだ!質問しにきたんだ!
隊長!
コマンドライン引数でどんな時使うんでつか?

934 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:11
>>931
何!?

935 :デフォルトの名無しさん:02/10/27 23:11
>>933
>>864

936 :デフォルトの名無しさん:02/10/27 23:13
>>933
>21世紀のあいんしゅたいん ◆rGsyzf.Kp2
に答えてもらうといいですよ。彼は神だ。

937 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:14
>>936
だれ?
なんで神なの??

938 :デフォルトの名無しさん:02/10/27 23:14
>>932
「C」 にそんな関数は定義されてないです。
普通に 2 値を交換するステートメントを書いてください。
tmp = a; a = b; b = tmp;

a ^= b ^= a ^= b; は例の如く・・・

939 :デフォルトの名無しさん:02/10/27 23:16
>>937
本人に聞くヨロシ


940 :デフォルトの名無しさん:02/10/27 23:17
>>938
返信、ありがとうございます。
自分で作ってみます。

941 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:17
どこにいるんだあああ
21世紀のアインシュタイン!!!!


942 :デフォルトの名無しさん:02/10/27 23:18
いないならいないと返事しろー!!!!

943 :デフォルトの名無しさん:02/10/27 23:19
あいーんしたいん。

944 :デフォルトの名無しさん:02/10/27 23:23
アインシュタイン = 隊員 = アラシ に 1,000,000 ペソ

945 :デフォルトの名無しさん:02/10/27 23:26
>>944
そういわれるとそんな気もしてくるから不思議だ。
まあ、あいんと隊員が何か会話すれば疑惑とかは問題ないでしょ。
さあ!お二方!!
コマンドライン引数(>>933参照)について存分に語りたまへ。

946 :デフォルトの名無しさん:02/10/27 23:27
次スレの予感

947 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:27
アインシュタインこねーーー!!!
ていうか誰か教えてクレーーーー
眠れないーーーーー
があああああ


948 :デフォルトの名無しさん:02/10/27 23:27
>>833
誰も指摘しないようだが、そのstrrchrの動作は禿しく未定義だぞ。
頑張れ。


949 :デフォルトの名無しさん:02/10/27 23:29
>>933
プログラムの起動時にパラメータを与えてやる事によって、再コーディング/再コンパイル
無しに挙動を変えたい時に実装しる。

950 :デフォルトの名無しさん:02/10/27 23:30
>>948
ホントだ。未定義キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

951 :948:02/10/27 23:31
いや、失礼。>>833はそれを承知の上のコードみたいだな。
じゃあ寝る。おやすみ。

952 :21世紀のあいんしゅたいん ◆rGsyzf.Kp2 :02/10/27 23:32
オレ=隊員キタ━(・∀・)━!

953 :デフォルトの名無しさん:02/10/27 23:33
>>952
意味わかんない。
とりあえず、>>933にこたえてあげなよ。

954 :デフォルトの名無しさん:02/10/27 23:34
とりあえず

  9 5 0 は 次 ス レ よ ろ し く



955 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:35
あいんしゅたいんキタ━━━━(゚∀゚)━━━━!
ねね、神なんでつか?

956 :950:02/10/27 23:35
>>954
ヤダ

957 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:35
オレが次スレ立てる!!!!

958 :950:02/10/27 23:36
>>957
頼んだ

959 :デフォルトの名無しさん:02/10/27 23:36
30 時間足らずで次スレ移行か・・・ヽ(´ー`)ノ ヤレヤレ

960 :デフォルトの名無しさん:02/10/27 23:41
新スレのスレタイが・・・

961 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:41
http://pc3.2ch.net/test/read.cgi/tech/1035729526/

NEWすれ立てますた

ただしまちがえますたが何か?
ごめんね、ごめんね・・・

962 :デフォルトの名無しさん:02/10/27 23:41
やべー 5 の前に 4 取っちった

963 :デフォルトの名無しさん:02/10/27 23:42
隊員がスレ立てしてる間アインシュタインがレスをしないのには
強い政治的意図を感じざるを得ない

964 :デフォルトの名無しさん:02/10/27 23:42
>>1
ふんじゃ、削除依頼だしとけよ。

965 :デフォルトの名無しさん:02/10/27 23:43
>>963
なかなか鋭いところに目をつけるな・・・

966 :デフォルトの名無しさん:02/10/27 23:43
>>963
そういわれるとそんな気もしてくるから不思議だ。
まあ、あいんと隊員が何か会話すれば疑惑とかは問題ないでしょ。
さあ!お二方!!
コマンドライン引数(>>933参照)について存分に語りたまへ。

967 :隊員NO.1919072 ◆rhAfp.iLoU :02/10/27 23:48
もうみんな移ろうよ!
せっかくオレがスレたてたのに!!
あいんしゅたいん全然答えてくれないし


968 :デフォルトの名無しさん:02/10/27 23:52
n[(month-4+12)%12]

969 :デフォルトの名無しさん:02/10/27 23:54
enum { april, may, june, july, august, september, october, november, december, january, february, march };

970 :デフォルトの名無しさん:02/10/28 00:06
int main()
{
int i,p;
for( i=-130; i<130; i++ ){
p = (char)i;
if( i != p )
printf("%d %d\n", i, p);
}
}
----
-130 126
-129 127
128 -128
129 -127

971 :デフォルトの名無しさん:02/10/28 00:09
void exch( void **a, void **b ) { void *tmp = *a; *a = *b; *b = tmp }

972 :デフォルトの名無しさん:02/10/28 00:10
&を使わないようにシフトした感じか?

973 :デフォルトの名無しさん:02/10/28 00:12
2日で1000レスですか。。
スゲ━━━━(゚∀゚)━━━━!!

974 :デフォルトの名無しさん:02/10/28 00:15
まだ残ってますよ、ザーボンさん(以下略

975 :デフォルトの名無しさん:02/10/28 00:22
今夜はさすがに落ち着いてるな。月曜だし。

976 :デフォルトの名無しさん:02/10/28 00:23
さて、仕事するか(以下略

977 :デフォルトの名無しさん:02/10/28 01:30
log(X)の近似値をもとめるためにマクローリン展開したとき
x+(-1/2)x^2+1/3x^3+・・・+(-1/n)(-x)^n
となるのですが、これをホーナー法をつかって計算回数をへらして
プログラムしたいのですがどのようにプログラムをかけばいいのか
全然わかりません。どなたか教えていただけませんか。?

978 :デフォルトの名無しさん:02/10/28 01:38
ディスクファイルってなんですか?
高水準出力関数は、OSとの間にバッファを持ち、プログラムではこのバッファとの間で
データの入出力を行うイメージになります。このバッファはOSが管理し、自動的に
“ディスクファイル”とデータの入出力を行います。
という使われ方してんねんけど、ディスクファイルだけ意味わからん。

979 :デフォルトの名無しさん:02/10/28 01:39
>>977
それなんかの本で見たことあるぞ。自分で調べれば

980 :デフォルトの名無しさん:02/10/28 01:41
奥村先生の本にあったようななかったような。
1000Get!


981 :デフォルトの名無しさん:02/10/28 01:51
つーかせめて次スレに書け。
しかも age るな。

982 :デフォルトの名無しさん:02/10/28 01:52
>>977
x+(-1/2)x^2+1/3x^3+・・・+(-1/n)(-x)^n
      ↓
x(1+x(-1/2+x(1/3+x(.....))))



983 :デフォルトの名無しさん:02/10/28 01:53
しかも>>978はマルチ

984 :デフォルトの名無しさん:02/10/28 01:54
>>977
プログラム的には次のものでOKだと思うが。テイラー展開間違って
ないか?値がおかしいぞ。

#include <stdio.h>
#include <math.h>

int main()
{
double x, y = 0.;
int i, n = 20;

printf("x = ");
scanf("%lf", &x);

for (i = n; i > 0; i--)
y = y * x + x / i * ((i % 2) ? 1 : -1);

printf("log(x) = %f, mylog(x) = %f\n", log(x), y);

return 0;
}

985 :デフォルトの名無しさん:02/10/28 01:56
log(x)をテイラー展開したら、
x - 1/2!x + 1/3!x ..... + (-1/n!)(-x)^nにならないか?

986 :デフォルトの名無しさん:02/10/28 01:59
記念パピコV(^o^)V

987 :デフォルトの名無しさん:02/10/28 02:03
できた。log(1+x)のテイラー展開の間違いだったようだね。

x>>1だと精度が悪くて使い物にならないけど。

#include <stdio.h>
#include <math.h>

int main()
{
double x, y = 0.;
int i, n = 10;

printf("x = ");
scanf("%lf", &x);

for (i = n; i > 0; i--) {
y = y * x + x / i * ((i % 2) ? 1 : -1);
}

printf("log(1+x) = %f, mylog(x) = %f\n", log(1+x), y);

return 0;
}

988 :デフォルトの名無しさん:02/10/28 02:03
>>977はマルチ。
http://pc3.2ch.net/test/read.cgi/tech/1029422194/l50
で漏れがレスしたのは無視か?

こんな展開式がlogなわけないだろ。氏ね。

989 :デフォルトの名無しさん:02/10/28 03:07
おいおい、前回と違って今度は次スレよりこっちの方が雰囲気悪いぞ。

990 :デフォルトの名無しさん:02/10/28 04:21
何か争点が昨晩と全く違ってて面白いな。
ここは本当にム板か?

991 :977:02/10/28 12:17
すいません まちがえました

log(X)の近似値をもとめるためにlog(x+1)マクローリン展開したとき
x+(-1/2)x^2+1/3x^3+・・・+(-1/n)(-x)^n
となるので
log(x)=log{(x-1)+1} より (x-1)+(-1/2)(x-1)^2+1/3(x-1)^3+・・・+(-1/n){-(x-1)}^n
これをホーナー法をつかって計算回数をへらして
プログラムしたいのですがどのようにプログラムをかけばいいのか
全然わかりません。どなたか教えていただけませんか。?


992 :977:02/10/28 12:19
>>988さん そのスレへの書きこみは僕ではありませんよ

993 :977:02/10/28 12:26
>>987さん ありがとうございます。
つまり
for (i = n; i > 0; i--) {
y = y * x + x / i * ((i % 2) ? 1 : -1);
}
この部分がホーナー法で計算回数を減らして計算しているプログラムということで
いいんですか?

994 :977:02/10/28 12:29
ここから計算回数をカウントすることもできますか?

995 :デフォルトの名無しさん:02/10/28 12:42
そんな人に聞いてばっかだと何も身につかないよ。そもそも計算回数って既にここで聞く事では無い気がするが。

996 :デフォルトの名無しさん:02/10/28 14:26
よっしゃ! 1000Get

997 :デフォルトの名無しさん:02/10/28 14:31
記念パピコV(^o^)V

998 :デフォルトの名無しさん:02/10/28 14:37
ふふふ

999 :デフォルトの名無しさん:02/10/28 14:38
C

1000 :デフォルトの名無しさん:02/10/28 14:39
1000


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

178 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)