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

C言語なら、俺に聞け! <32>

レス数が1000を超えています。これ以上書き込みはできません。
0001SHOW-A孫NGNG
漏れ10才。3才のときから父SHOW-A息子にプログラムを叩き込まれてきたんだ。
いろいろな言語を極めたけど、一番漏れになじんだのはCかな。
Cのことなら父をも超えた。疑問な点があったら漏れに聞け。

便所とメシ食ってる時以外は暇だが、いちいちFAQに載った質問に応えるほど暇じゃないよ。
課題丸投げなら別スレにいってね。あと、至急父に仕事を与えてやってください。

コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002SHOW-A孫NGNG
【コンパイラ】
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
0003SHOW-A孫NGNG
【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html

【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
0004SHOW-A孫NGNG
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/
推薦図書/必読書のためのスレッド PART 5
http://pc3.2ch.net/test/read.cgi/tech/1027593322/

前スレ <31> http://pc3.2ch.net/test/read.cgi/tech/1031340950/
0005SHOW-A孫NGNG
【過去ログ】
31 http://pc3.2ch.net/test/read.cgi/tech/1031340950/
30 http://pc3.2ch.net/test/read.cgi/tech/1030786546/
29 http://pc3.2ch.net/test/read.cgi/tech/1029605182/
28 http://pc3.2ch.net/test/read.cgi/tech/1028495798/
27 http://pc3.2ch.net/test/read.cgi/tech/1027160374/
26 http://pc3.2ch.net/test/read.cgi/tech/1026048820/
25 http://pc.2ch.net/tech/kako/1024/10249/1024918442.html
24 http://pc.2ch.net/tech/kako/1024/10240/1024033400.html
23 http://pc.2ch.net/tech/kako/1023/10230/1023024817.html
22 http://pc.2ch.net/tech/kako/1022/10224/1022402165.html
21 http://pc.2ch.net/tech/kako/1022/10220/1022045622.html
20 http://pc.2ch.net/tech/kako/1021/10214/1021459016.html
19 http://pc.2ch.net/tech/kako/1020/10207/1020756993.html
18 http://pc.2ch.net/tech/kako/1020/10202/1020260813.html
17 http://pc.2ch.net/tech/kako/1019/10193/1019372139.html
16 http://pc.2ch.net/tech/kako/1018/10184/1018453690.html
15 http://pc.2ch.net/tech/kako/1016/10165/1016519243.html
14 http://pc.2ch.net/tech/kako/1015/10152/1015286974.html
13 http://pc.2ch.net/tech/kako/1013/10139/1013990673.html
12 http://pc.2ch.net/tech/kako/1012/10123/1012348974.html
11 http://pc.2ch.net/tech/kako/1009/10094/1009499565.html
10 http://pc.2ch.net/tech/kako/1008/10083/1008300863.html
9 http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
8 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
7 http://pc.2ch.net/tech/kako/1003/10034/1003418249.html
6 http://piza2.2ch.net/tech/kako/999/999617524.html
5 http://piza2.2ch.net/tech/kako/994/994908590.html
4 http://piza.2ch.net/tech/kako/992/992357382.html
3 http://piza.2ch.net/tech/kako/989/989929288.html
2 http://piza.2ch.net/tech/kako/979/979529893.html
1 http://piza.2ch.net/tech/kako/967/967985026.html
0006デフォルトの名無しさんNGNG
>>1 乙
0007名無しさん@EmacsNGNG
>>1
お疲れ〜。これで粘着がいなくなるといいね。
0008デフォルトの名無しさんNGNG
>>1
おつかれ。
しかし、メール欄にvoidを忘れてる。
SHOW-Aがスレ主になっても、伝統は守らねば!

そしれ新スレ上げ
0009デフォルトの名無しさんNGNG
>>1
すげー、10歳で父を越えるとは。
将来有望じゃん。
0010デフォルトの名無しさんNGNG
>>1の居候のララベルです。
0011デフォルトの名無しさんNGNG
次スレはひ孫で次はやしゃごか?
0012デフォルトの名無しさんNGNG
ロマサガ2みたいに継承をきぼん
0013684NGNG
>>1
お疲れ様。

どうもこの684というハンドルは験が悪いようなので、次に質問する時は
また新しいナンバーを使います。
0014デフォルトの名無しさんNGNG
>>1
仕事を振るべきなのは祖父の方じゃなかったか?
0015デフォルトの名無しさんNGNG
>>13
気にするなよ。
一部のfread厨が騒いでいるだけだから。
でも他のスレでレス番号の684は使えないな(ワラ
0016デフォルトの名無しさんNGNG
mallocを使って動的に確保した3次元配列と同じくmallocを使って
確保した2次元配列をつくり、3次元配列の値を2次元配列に代入したいのですが
どうもうまく行きません。全て"0"の値をもつテストデータを3次元配列に格納
してから2次元配列へ

a=xxx[i][j][k];
xx[j][k]=a;

のように代入してからxx[j][k]の値を出力すると

4252620
4252620
0
0
0
0
.
.
.
のように、先頭2つにおかしな整数値が現れます。
どこがおかしいのでしょうか?
0017デフォルトの名無しさんNGNG
>>16
ソースを見せてもらわないと、文章だけじゃ分からないです…。
0018デフォルトの名無しさんNGNG
>>16 変数の型を正確に書け。どうやって表示したのかも
0019デフォルトの名無しさんNGNG
>>16
int xxx[ISIZE][JSIZE][KSIZE];
int xx[JSIZE][KSIZE];
だったら、
memcpy (xx, xxx[i], sizeof (xx));
でいけるんじゃないか?完全なコピーではないなら別だが

それはそれとして、おかしくなった原因を必ず突き止めておくべき。
最低でも変数定義、malloc部分、表示部分を見ないとわからない
002016NGNG
>>17>>18>>19
すみません。
結構長いコードなので、必要部分を抜き出して
再掲します。
0021デフォルトの名無しさんNGNG
ふーっ、また1はつまらん名前だな・・・
0022デフォルトの名無しさんNGNG
unsigned doubleは合法?
0023デフォルトの名無しさんNGNG
>>22
1ビット目使用しないだけ?扱える数増えるの?
0024デフォルトの名無しさんNGNG
>>22
そういう拡張をしてはならん、という規定はないと思うから、合法なんじゃない?
そんなの見た事ないけど。>>22がそれを何に使いたいのかも知らないけど。
0025デフォルトの名無しさんNGNG
符号なし浮動小数点数・・
002616NGNG
--->>16の再掲です。-----
void main(){
int ***xxx,***yyy,**xx,**yy,a;
// 3次元配列を確保
// 2次元配列を確保
//ファイルオープン
for(i=0 ; i < t ; i++){
for(j=0; j < 128 ; j++){
for(k=0; k < 40 ; k++){
fscanf(fp1,"%5d", &a);
x[i][j][k]=a; //データは全て"0"
}
}
for( m=0 ; m < 6400 ; m++ ){
for(i=0 ; i < t ; i++){
for(j=0 ; j < 128 ; j++){
for(k=0 ; k < 40 ; k++){
a=xxx[i][j][k];
xx[i][m]=a;
}
}
}
}
for( m = 0 ; m < 6400 ; m++ ){
for(i = 0 ; i < t ; i++ ){
xx=xx[i][m];
printf("%d\n",xx);
}
}
}
002716NGNG
改行の数が多すぎて書き込めないのでmallocを使った
配列の動的確保の部分はとりあえず省いています。
0028デフォルトの名無しさんNGNG
本当にきちんと三次元配列みたいなものをつくれているのかしら・・・心配だ。
002916NGNG
>>28
こんなのでやっていますが......。
(一応、失敗はしていないようです)
int ***new_matrix3d( int time, int range, int sector ){
int i,j;
int ***a;
if( ( a = ( int*** )malloc( sizeof( int** ) * time ) ) == NULL ) return NULL;
memset( a, '\0', sizeof( sizeof( int** ) * time ));
for( i = 0; i < time; i++ ) {
if( ( a[ i ] = ( int** )malloc( sizeof( int** ) * range ) ) == NULL ) {
free(a);
return NULL;
}
memset( a[ i ], '\0', sizeof( int* ) * range );
for( j = 0; j < range; j++ ) {
if( ( a[ i ][ j ] = ( int* )malloc( sizeof( int ) * sector ) ) == NULL ) {
free(a);
return NULL;
}
memset( a[ i ][ j ], '\0', sizeof( int ) * sector );
}
}
return(a);
}
0030デフォルトの名無しさんNGNG
一様乱数を作りたいんですが。
randでは無理ですよね?
0031デフォルトの名無しさんNGNG
>>29
ゼロクリアならmemset使わないでcallocでいいでしょ。
0032デフォルトの名無しさんNGNG
>>29
メモリーの確保に失敗した時、freeするのはaだけじゃまずいでしょ。
メモリーリークの原因になるよ。
0033デフォルトの名無しさんNGNG
>>26
for(i=0 ; i < t ; i++){
・・・
 for( m = 0 ; m < 6400 ; m++ ){
  for(i = 0 ; i < t ; i++ ){
   xx=xx[i][m];<−−−−−−−−??????
   printf("%d\n",xx);
  }
 }
}
?のとこはこれでいいつの?
0034デフォルトの名無しさんNGNG
>>30
ええ、思いっきり疑似乱数ですから。

数学の本見てその通り実装するのが吉。探せばありそうだけど。
0035デフォルトの名無しさんNGNG
>26
a=xxx[i][j][k];
xx[i][m]=a;
一対一の射像になっていない。>
0036デフォルトの名無しさんNGNG
>>26 >>29
まず、全然多次元配列になっていない。
003716NGNG
即レス有難うございます。
>>31
callocってつかった事が無くて...同じような使い方
ができるとは聞いていますが。
>>32
あ、そうですね。ループして全部開放して
やらないといけないですね。
>>33
そうです。まずいですか?
003833NGNG
>>36
斜め読みだと>>29は多事件配列になってそう(不安
0039デフォルトの名無しさんNGNG
>26
for(i〜〜){
for(i〜〜){ と iが2つ重なっているよ。
0040デフォルトの名無しさんNGNG
重箱

・多次元配列 a[1,3,5];
・配列の配列の配列 a[1][3][5];
0041デフォルトの名無しさんNGNG
xx=xx[i][m];これは駄目!
0042デフォルトの名無しさんNGNG
#define JSIZE 128
#define KSIZE 40
...
int t;
int (*xxx)[JSIZE][KSIZE];
int (*xx)[KSIZE];
...
xxx = malloc (sizeof (int) * t * JSIZE * KSIZE);
xx = malloc (sizeof (int) * JSIZE * KSIZE);
...

とりあえず、こっち↑のほうが余分なループがなくていいと思う。
xxは固定サイズなので、動的に割り当てる必要はないと思うのだが?
0043デフォルトの名無しさんNGNG
>>37
xxかえたら迷子にならない?
ポインタの計算元じゃあないの?
0044デフォルトの名無しさんNGNG
>>30
一様乱数で検索かければたくさん出てくるじゃん。
っていうか一様乱数って知らなかったから検索かけちまった。
004542NGNG
あっ、勘違いした!xxのサイズが全然違うな。スマソ
0046デフォルトの名無しさんNGNG
つーかポインタやりなおし
木構造実装してみ勉強になると思うよ
参考
struct foo{
 type Obj;
 foo* pParent;
 foo** pChild;
};
004742NGNG
ひょっとして、これって。。。

int (*xxx)[JSIZE][KSIZE];
int (*xx)[JSIZE * KSIZE];
...
int xxx_size = sizeof (int) * t * JSIZE * KSIZE;
xxx = malloc (xxx_size);
...

xx = xxx; // 内容を一致させるのであれば、ポインタの置き換えで終わり
または
xx = malloc (xxx_size); // 同じサイズ
memcpy (xx, xxx, xxx_size); // コピー

これで終わり?
0048デフォルトの名無しさんNGNG
>>46
そういうあなたもポインタを勉強し直してね。
foo *pChild;でしょ。
0049デフォルトの名無しさんNGNG
>>46
> foo** pChild;

これに何入れるか教えてあげないと怪我すると思った。
005048NGNG
違う、
struct foo *pChild;だ。
00511NGNG
これのやり方おしえてください。
基本情報の問題なんですけど、ずっとわからなくて次に進めません。
回答や参考書を見てもわからないです。
どなたかわかりやすく教えてください!
--------------------------------------------------------------------------------
次のような3バイトで数値±a×16^nを表現する浮動小数点がある。

     |    指数部7ビット  |       仮数部16ビット     |
 ┌─┐─────────┐──────────────┐
 │   |        n         |             a            |
 └―┘―――──――――┘―――───────――――┘
  ↑         ↑     ▲
ビット0  数値全体の符号   小数点の位置
      (0:正、1:負)

・仮数部の数値は、絶対値で表す。 0<=a<1。
・指数部のnは、指数部が16^nであることを表す。
・指数部のnの負数は、2の補数で表す。

この形式で表現できる負の数の最大値(0に最も近い値)はどれか。


ア 000001   イ 00FFFF   ウ 410001   エ C00001   オ F00FF1
---------------------------------------------------------------------------------
答えは「エ」なんです。でも、やり方がわかりません。
自分で問題を解いた時は、
「この形式で表現できる負の数の最大値(0に最も近い値)はどれか。」
と書いてあるので1 111 1111 1111 1111 1111 1111(2)にしてFFFFFF(16)って
答えがなったんですけど、解答欄にないんです。
005246NGNG
>>47
ああそれだ!
005316NGNG
>>38
え.....そんな....。
>>39
あ、ミスです。i〜、j〜です。
>>40
重箱??
>>41
あ、そうでした。
a=xx[i][j];
とかにしないと。

>>42
それでも2次元、3次元つくれるんですね。
(知らなかった)
xxのインデックスも変わる可能性があるので、一応、
動的に割り当てています。

とりあえずありがとうです。
今日は終電近いので帰ります。
(連休も無しだな......とほほ。)
明日またレスします。
0054デフォルトの名無しさんNGNG
>>51
あちらこちらに貼るなよ。
荒らすなら例のスレだけにしろよ。
005546NGNG
>>48
多木構造なので子供がイパーイあるのよ
子供ポインタの配列でしょ
0056デフォルトの名無しさんNGNG
>>55
ああすまん、木構造って二分木かと思った。
でも、foo **pChild;じゃなくてstruct foo **pChild;にしないとだめじゃない?
005742NGNG
>>47はキャストが無かったので、一応完全版

#define JSIZE 128
#define KSIZE 40

main () {
  int (*xxx)[JSIZE][KSIZE];
  int (*xx)[JSIZE * KSIZE];
  int t;
  int xxx_size;
  //
  t = 3;
  // xxx
  xxx_size = sizeof (int) * t * JSIZE * KSIZE;
  xxx = (int (*)[JSIZE][KSIZE]) malloc (xxx_size);
  // xx
  xx = (int (*)[JSIZE * KSIZE]) xxx; // 内容を一致させるのであれば、ポインタの置き換えで終わり
  //
  free (xxx);
}
005856NGNG
つーか、二分木なら子供へのポインタが二つあるだろうが(鬱
005946NGNG
>>56
structいる?
省略できるんじゃない?
0060デフォルトの名無しさんNGNG
>>59
C++ならね。
006146NGNG
>>60
漏れはVC++使ってる罠
0062デフォルトの名無しさんNGNG
>>61
拡張子を.cppじゃなくて.cにしてコンパイル。
0063デフォルトの名無しさんNGNG
いや、その子供達のリストを保存する領域作らないといけないでしょと。
006442NGNG
いちおうまとめとこう。
>>16
>>57を使うと、常に
(xxx[i][j][k] == xx[i][m])   (ただし m = j * KSIZE + k)
が成り立っている状況を作れる。多次元配列の要素の連続性を利用している

。。。というつもりで作ったけど、バグってたらごめん
006546NGNG
>>62
そこまでCにこだわってるわけじゃないので・・・
このスレとしては不可?
006646NGNG
>>63
うん、だから
AddChild()DelChild()GoToChild()とか
実装するとポインタとメモリの動的確保の練習になるでしょ
0067デフォルトの名無しさんNGNG
>>前スレ955
1000でマジレスカコイイ!
006846NGNG
それでfoo構造体にpChildの数とか必要だけど内緒(w
0069デフォルトの名無しさんNGNG
>>68
配列の末尾にNULLはどう?
007046NGNG
>>69
*とunsigned intはサイズ同じだからお好きなほうを
0071デフォルトの名無しさんNGNG
>>67
そうそう、最初コピペかと思って読んでみたら
0072デフォルトの名無しさんNGNG
>>70
これまた処理系依存とかじゃないの?
007346NGNG
子供辿るには再帰呼び出しが必要になるからその練習にもなるぽ
0074デフォルトの名無しさんNGNG
可変この引数を持たせる関数は

__cdecl

じゃないとだめらしいのですが、この関数はどうやって引数の数を調べるのでしょうか?
007546NGNG
>>72
つーかポインタのsizeof(p)ってunsigned intしかないと認識してますが
0076デフォルトの名無しさんNGNG
>>74
引数を右からとか左からとか
VCならヘルプみそ載ってたよ
0077デフォルトの名無しさんNGNG
んなこたぁない
007874NGNG
>>76
ちがーう。アセンブラレベルでの話だ
0079デフォルトの名無しさんNGNG
呼び出し元でpush/popするか呼び出し先でするかの差?
_cdeclと_pascalって。
008046NGNG
>>77
そうでふか
winかunix位でしか組んだこと無いのでスマソ
008176NGNG
>>78
アセンブラならフォーマット調べてスタックから取ってくるだけじゃない?
Cでやるより楽なはずだけど
0082デフォルトの名無しさんNGNG
>>80
大抵の環境でintと同じサイズになると言うのは真だけど、
標準で規定されているわけじゃないから、実装依存と言わざるを得ないってところ。
008374NGNG
>>76
本読んでたら 79が言うように _cdcelは呼び出し元で引数をPUSH/POPするんだって。
呼び出された側ではドンだけ引数が渡されるかわからないから。
でもそのままだとどっちにしろドンだけ引数が渡されたかわからない気がするのは僕だけ?
0084デフォルトの名無しさんNGNG
だから、引数の数を渡したりターミネータを渡したりprintfのようにフォーマットで指定したり工夫がある
008574NGNG
>>84
なるほど。printfって引数の数が合ってないときは動作保証なかったしね。
納得っす。ありがとー。
0086デフォルトの名無しさんNGNG
tmpfileの実装方法がはげしくわからん。
どうやったらクローズ時にファイルが消えるようにできるんだYO!

独り言スマソ
0087デフォルトの名無しさんNGNG
1クローズしてから消す
2作ったときからインデックスと分離しておく
3OSの機能
0088デフォルトの名無しさんNGNG
>>86
remove()でだめぽ?
0089デフォルトの名無しさんNGNG
>>86
>tmpfile
とりあえずこんな妙な英単語はない。

最近の若いもんはテンポラリも知らんのか・・・。
0090デフォルトの名無しさんNGNG
>>87
悪い、3以外全然わからん(煽りじゃなくてマジで)

>>88
fcloseも改造すればいいのかな???
fclose時に削除ルーチンを呼ぶ方法がわからないのよ。
0091デフォルトの名無しさんNGNG
>>89
Cの標準関数にあるはずだけど・・・
0092デフォルトの名無しさんNGNG
>>89
省略形くらい大目に見てやってよ
通じるんだから
0093デフォルトの名無しさんNGNG
NEG命令ってなにに使うのでしょうか。
0094デフォルトの名無しさんNGNG
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/tmpfile.3.html
tmpfile()
0095デフォルトの名無しさんNGNG
>>90
tmpfileで作成したディスクリプタを判別する方法があるんだろ
#ライブラリ内部で
で、fclose時に自動的に消している、と。
009688NGNG
>>90
改造とかじゃなくて(できんのか?
オープン->何か処理->クローズ->再オープン->remove()->クローズ
で駄目?
0097デフォルトの名無しさんNGNG
>>95
ああやっぱりfcloseにしかけがあるんだね。ありがとう。
プログラム終了時に削除ってのはatexitでどうにかなるかな。
0098デフォルトの名無しさんNGNG
先輩からC言語なら大抵どんなことでもできると教えてもらいました。
で、早速C言語でXBOXを作りたいのですが、C言語はドコで習えばいいのですか?
0099デフォルトの名無しさんNGNG
>>96
ごめんなさい、実装方法なんて書いたけれど、
本当はtmpfileの仕組みが知りたかっただけなんです。
0100デフォルトの名無しさんNGNG
>>98
NOVA行きな!
0101やった〜NGNG
0時丁度に100ゲトー
0102デフォルトの名無しさんNGNG
>>100
2011/11/11 11:11に111取ることを忘れるな
010342NGNG
>>16
聞きたいんだけど(寝てるだろうけど)、>>29の、
int ***new_matrix3d( int time, int range, int sector );
↑これで得られる、ツリー状にポインティング(?)された配列の集合、
この構造がどうしても必要なの?(ちなみに、この関数はエラーに弱い)

というのも、最初は多次元配列であれば何でもいいのかと思ってたんだけど、
このnew_matrix3dという関数は、どうやら16の作ったものじゃなさそうだから、
これと互換性のある構造を使わなければいけないのかな、と思って。

だとすれば、>>57は全く見当違いだから、忘れてほしいw
(つづく)
0104デフォルトの名無しさんNGNG
>>98
学校or本とかネットで独学
というかここでそんな質問をしている時点で
才能はないと思われているかもしれない…
がんがれ
0105デフォルトの名無しさんNGNG
>>98
猫でも見とき
0106デフォルトの名無しさんNGNG
>>42
忘れて済んだら警察いらねーんだよ。
0107デフォルトの名無しさんNGNG
>>106
殺人犯して忘れて欲しいってアリ?
0108デフォルトの名無しさんNGNG
>>98
糞箱の中身が実質WinNTだと理解した上で言ってるのか?
0109デフォルトの名無しさんNGNG
糞箱って言うなゴルァ
0110デフォルトの名無しさんNGNG
ループ付きの迷路の解答で道が1つの所を消していくよね
最短距離割り出すには距離保持しつつ再帰呼び出しで辿るしかないですか?
011142NGNG
(つづき)
>>16
で、>>26のコードにはいろいろ疑問な点があるってのは既出のとおりだけど、
一番本質的な問題は、
  xxx[i][j][k] と xx[i][m] の要素どうしの対応関係
が書かれていない、ということ。普通に考えれば、
  m = j * 40 + k, i = m / 40, k = m % 40
または
  m = k * 128 + j, k = m / 128, i = m % 128
だと思うんだけど、
  0≦m<6400 に対して
  0≦j*40+k (または k*128+j)<5120
という、致命的なサイズの不一致!!!これが何を意味しているのかが
わからなければ、何もアドバイスできないよw
まあがんばってくれ
(おわり)
0112デフォルトの名無しさんNGNG
>道が1つの所を消していくよね
「行き止まりのところを消す」でしょ。

距離保持しつつ〜はあってると思う。

>>111
というか、一番外で6400回も回すなといいたい。
意味無い事してる。
0113112NGNG
いや、あの、111の方に言っているのではないですよ。
011442NGNG
>>113
いやわかってるよw
彼はね、パフォーマンス云々以前の水準だと思うから、
とりあえず判然としないロジックから正す方向で。。と。
まじめそうだし礼儀あるから見込みはあると思われ
0115デフォルトの名無しさんNGNG
>>99
tmpfile()内で作成したファイルを消す関数を
atexit()で登録してるんじゃないかな?
と思ってみるテスト。
0116デフォルトの名無しさんNGNG
糞コードメンテ中。

グローバル変数 const char foo[] = "hogeratta"; があるとき、
fooのメモリ領域に(適当にキャスト使って)書き込むのって、規格上safe
でしたっけ?? const はとりたくないんです。C++のmutableなメンバ
変数のような役割なので。

0117デフォルトの名無しさんNGNG
>>116
const char buf[] = "ABC";
int main()
{
int n = (int)buf;
char* pbuf = (char*)n;
cout << buf << endl;
strcpy(pbuf, "abc");
cout << buf << endl;
return 0;
}

コンパイルは通ったけど・・・
0118デフォルトの名無しさんNGNG
>>117
うん。そりゃコンパイルは通せるよ。そうではなく、どんな処理系でも書き込み可能な位置に
"hogeratta"が置かれる事が保証されるか、をしりたかった。

あとできればC++ではなくANSI Cの規格がしりたいです。
0119デフォルトの名無しさんNGNG
プログラムうpしたいんだけどあげるとこのリンクおしえて
スレ違いとか言わないで・・・
0120デフォルトの名無しさんNGNG
safeでは。
配列を確保してから書きこみしているのだから。
char *p = "hogeratta"; ならマズイ。
0121 NGNG
>>86
OSに依る。
unix系なら、オープンされているファイルでも削除できるので、
オープンした直後に削除する。この場合の削除は、ディレクトリ
エントリからファイル名を削除するだけで、ファイルがオープン
されている間は、ファイルの実体は存在したままとなる。ファイル
への参照がすべてクローズされると、ファイルの実体が削除される。
windows系なら、ファイルをオープンする際に、delete-on-closeが
指定できる。
0122デフォルトの名無しさんNGNG
>>119
http://www.sf.net/
0123120NGNG
あ。const か。スマ。
0124デフォルトの名無しさんNGNG
>>116
規格はもっていないが、「ANSI C言語辞典」によると
"非volatileのconstオブジェクトを読み込み専用領域に置く処理系もある"
そうなのでunsafeかもね。volatileつけとけ。
0125 NGNG
>>118
ISO/IEC 9899:1999 によれば、変更できることは要求されていない。

"/tmp/fileXXXXXX"
(char []){"/tmp/fileXXXXXX"}
(const char []){"/tmp/fileXXXXXX"}

The first always has static storage duration and has type array of char,
but need not be modifiable; the last two hav e automatic storage duration
when they occur within the body of a function, and the first of these two
is modifiable.

現実的には、コンパイラオプションでread-onlyでない場所に置くよう
指定できる場合が多いが。
0126デフォルトの名無しさんNGNG
const で volatile って矛盾してるような......
0127質問者NGNG
>>125
ありがとうございました
0128デフォルトの名無しさんNGNG
>>117
なぜ一度intにcastしているのかを小1時間(略)
0129119NGNG
>>122
Please describe your Registration Purpose in a more comprehensive manner
とか出て先に進めないんですが(英語嫌
それとpublic domainがフリーですか?
0130デフォルトの名無しさんNGNG
>>119
何がしたいの?詳しく書いてみ。

0131119NGNG
>>130
多分木構造C++(win)で作ったからフリーでうpしたいのですが
0132デフォルトの名無しさんNGNG
sourceforgeはちゃんとしたオープンソースのソフトウェアを多人数で開発するための
もろもろを貸してくれる場所。

そういう習作を晒したいならgeocitiesでも借りれ。

0133119NGNG
>>132
はぁい
0134120NGNG
[#5]
If an attempt is made to modify an object defined with
a const-qualified type through use of an lvalue with non-
const-qualified type, the behavior is undefined. If an
attempt is made to refer to an object defined with a
volatile-qualified type through use of an lvalue with non-
volatile-qualified type, the behavior is undefined.104)

あ。おそかったか。まあいいや。C99ね。
0135119NGNG
>>132
と思ったけどHP作るんじゃなくてUp版みたいのないですか?
0136119NGNG
Up版->Up板(鬱
0137デフォルトの名無しさんNGNG
yahooのブリーフケースでも借りとけば?
0138デフォルトの名無しさんNGNG
>>134
なるほど
C99でもダメってことですね。
さんくす。
0139 NGNG
>>126
constは左辺値になれないだけであるので、
別に矛盾はしていないと思われ。
0140デフォルトの名無しさんNGNG
で、volatileならいいのか?
0141デフォルトの名無しさんNGNG
>>138
(´-`).。oO(ISO/IEC 9899:1999 == C99 なわけだが……)
0142119NGNG
多分木構造
http://proxy.ymdb.yahoofs.jp/users/e0437b1f/bc/Projects/TreeObj.lzh.lzh?bcGOq09AE5WRJ50Z
これでいいのかな?
見て見てぇ
0143デフォルトの名無しさんNGNG
>>141
ガーン。無知です。ありがとう。
0144143NGNG
って、:1999 って書いてあるわな(鬱
吊ってきます。
0145119NGNG
>>142
ゴミが入ってたTreeObj.cppは捨ててね
0146デフォルトの名無しさんNGNG
Cスレなんだが…
0147デフォルトの名無しさんNGNG
>142
403 forbidden. 取れない。

0148119NGNG
>>146
いや46なんですがオペレータオーバーロードしたほうが見やすいので
スレ違いですが・・・
main()の正規書式だと見ずらいでしょ
それに参照便利だし・・・
0149デフォルトの名無しさんNGNG
>>148
だからlzh取得できねって。
0150119NGNG
>>148
おまけにテンプレートもあるし
これは頑張ってCにした方がいいですか?
0151119NGNG
>>149
件の共有フォルダ開いてブラウザのアドレスをコピペするんですか?
0152119NGNG
>>151
http://jp.y42.briefcase.yahoo.co.jp/bc/nas6_2001/lst?.dir=/Projects&.view=l&.src=bc&.done=http%3a//jp.y42.briefcase.yahoo.co.jp/bc/nas6_2001/lst%3f.dir=/Projects%26.src=bc%26.view=l
それならこれです
0153119NGNG
>>152
あれだめぽ
ごめん
0154デフォルトの名無しさんNGNG
GlobalFree(this); ってのは…?
0155デフォルトの名無しさんNGNG
>>150
中途半端すぎて笑える。何故
TreeObj<T> **pChild;
なんだ? std::vectorを使用しない理由は?
0156デフォルトの名無しさんNGNG
std::mapが木構造を使っているのは有名な話だと思っていたんだが。
上まあスレ違いなわけだが。苦笑。
0157155NGNG
・メンバ変数はコンストラクタの初期化リストで初期化しましょうね
・コピーコンストラクタを、実装するかは別にして書きましょうね
・operator=の戻り、おかしいですよ?
・addChildの引数は値渡しでいいんですか?

以下延々と続く…

0158デフォルトの名無しさんNGNG
ちなみに delete this は気をつければ危険ではないよ。
object suicide という。
0159119NGNG
>>154
TreeObj.cppは捨てて下さい
>>155
>>156
VC5.0だとvectorは自己参照ポインタ使うと引っかかるんですよ
メモリの動的確保も練習したいし
んでmap使うと習作の意味がなくなるんで
0160155NGNG
>>159
STLPort入れろって
0161119NGNG
>>157
はい参照渡しでないと大量コピーが起こります
=の戻りおかしいですか?
0162デフォルトの名無しさんNGNG
>>154
>GlobalFree(this); ってのは…?
そういえば MS 社は WinAPI::waveOut*** のサンプルで
HeapAlloc() 使ってるけどよそのサイトでは malloc で済ませてる
ところもあるんだけど、malloc じゃダメなのかな。
0163155NGNG
一般的には TreeObj<T>& operator=(ほげ); で定義して
return (*this); ね。

多分Effective C++かMore Effective C++に載ってる。
0164155NGNG
夜が明けるのでスレ違いはこのへんでやめます。ゴメンナサイ。
0165デフォルトの名無しさんNGNG
// 子供から先に解放していく
while(ChildNum) (*pChild)->del();

これ大丈夫なん?
0166119NGNG
>>163
ほげはどう使うんですか?
漏れには無変化に思えてしまうのですが・・・
=(ほげ){Obj=ほげ;return(*this);}
ですか?
0167162NGNG
ねぇ誰か教えてよ
0168119NGNG
>>165
それは大丈夫なはず(弱気
子供が解放されると親のChildNumが減ってくから
常に先頭の子供を解放してやればいいはず
0169155NGNG
最後ね。もしくは別スレに移動してくれ。
return (*this); しないと

TreeObj<std::string> x, y;
x = y = "foo";

の2行目がコンパイルできないだろう?
0170119NGNG
>>169
ああ、そうですね勉強になりました

聞きたいことはまだありますがやめときます
スレ違いだけど燃料になりましたか?
0171デフォルトの名無しさんNGNG
卑屈になんなよ(ワラ
個人的には全部ディープコピーってあたりが漢だねぇって感じだヨ
0172デフォルトの名無しさんNGNG
楽しいときには邪魔がはいるものだねぇ
0173119NGNG
>>172
C++スレ行ってしばいてくれるんなら行きますが(自爆
行きますか?
0174デフォルトの名無しさんNGNG
相手が教えてクンだと盛りあがりに欠けるねぇ・・・
燃料になんないよ
0175デフォルトの名無しさんNGNG
>174
NULL紛争でも起こしたいのか?(藁
0176デフォルトの名無しさんNGNG
>>174
http://pc3.2ch.net/test/read.cgi/tech/1031028125/
銭湯員随時募集中
0177119NGNG
隠蔽とかクラスとか無理矢理実装できるけどそれは置いといて
Cの標準的な文法で比較的分かりにくいのって
ポインタと再帰呼び出しくらいですよね
0178デフォルトの名無しさんNGNG
> 再帰呼び出し
文法関係ない
0179119NGNG
>>178
書き方誤り
文法->手法
これならどう?
0180デフォルトの名無しさんNGNG
>>119
わかりにくいならsignal()の定義はなかなかのものだと思う
0181119NGNG
>>180
WinProcもsignalも似たようなもんじゃない
漏れはDOS時代にint86使ってたけど確かに割り込みは敷居高いかも
0182119NGNG
>>181
WinProcつーかThreadProc
0183デフォルトの名無しさんNGNG
>>181
void (*signal(int sig,void (*func)(int)))(int);
まあ似たようなもんですが
WinProcなら LRESULT CALLBACK (*WinProc)(HWND ...); ですかね
0184119NGNG
int86に比べてThreadのEvent定義って若干使いやすくなったよーな
これも進化ですかね
0185デフォルトの名無しさんNGNG
燃料の意味を考えよう
0186デフォルトの名無しさんNGNG
おならぷー
0187119NGNG
>>185
うんだから必死だよ(w
多分木言われたとこ直してみたり(まぁ、相変わらずmemcpy()使ってないが
Cでのクラス実装で突っ走ったこと逝ったりすればいいのかな
0188119NGNG
あ、子供ポインタリストリークしてた
逝ってきます
0189デフォルトの名無しさんNGNG
インクリメントとデクリメントって
0190デフォルトの名無しさんNGNG
大分出身なの知ってました?
0191デフォルトの名無しさんNGNG
>>189
++,--

>>190
なんとなく言動で気づいていました。
0192セミコロンってどうよ?NGNG
セミコロンってどうよ?
0193デフォルトの名無しさんNGNG
>>192
そうか、もう秋なんだね。
0194デフォルトの名無しさんNGNG
>>193
そっちか 風流だなぁ
おれはセミの匂いのするコロンかと思ったよ
0195155NGNG
>>187
http://www.sage-p.com/process/cool.htm
これで書け(藁
0196 ◆ZMVdytmo NGNG
int a = 123;ってなってるのをchar s[10]に文字列123としていれる方法を教えてください。
0197デフォルトの名無しさんNGNG
voidには教えたくない
0198 ◆ZMVdytmo NGNG
>>197
そこをなんとか教えてください
0199デフォルトの名無しさんNGNG
>>196
だからぁ〜
aを10で割ると余りはどうなるよ?アレになるっしょ?そんな感じで...
0200デフォルトの名無しさんNGNG
>>199
なるほど!
ありがとうございました
0201119NGNG
コンパイルしないで直接書いてるんでバグったらごめん
for文の継続条件ちょっと違うかも。でもこんなかんじだとおもわれ
char *hoge(int a)
{
  static char str[256];
  int i,j,k;
  //桁拾い
  for(i=0,j=a;j>0;i++,j/=10);
  //代入
  for(j=0,k=a;j<i;j++,k/=10) str[j]=k%10+'0';
  return(str);
}
0202119NGNG
>>201
あれ桁拾いは要らなかったけ?
0203155NGNG
>>201
なんで snprintf(s, 10, "%d", i); じゃいけないんだ?
0204119NGNG
>>203
実装方法知ってると改造できるでしょ
例えば、printf()でQWORDを表示したり・・・

つーかすいませんsnprintf()知りませんでした
0205デフォルトの名無しさんNGNG
sprintfでいいじゃん・・・>>203
0206デフォルトの名無しさんNGNG
>>205
DQN
0207201NGNG
ぐはぁ、最後に'\0'入れ忘れますた
逝ってきます
0208デフォルトの名無しさんNGNG
>>206
オーバーフロウするかどうか判断できない方がDQN
0209201NGNG
それにa==0の時何も表示されなさそう
もっかい逝ってきます
0210201NGNG
>>208
オバーフローしないでしょ下げっぱなしなんだから
でもa<0の時は・・・
またまた逝ってきます
0211デフォルトの名無しさんNGNG
>>208
考え方がC-dog
終ってる

0212デフォルトの名無しさんNGNG
>>210
オーバーフロウってバッファオーバーフロウのことだよ。
0213155NGNG
>>208
LP32を仮定しろってことですか?
0214デフォルトの名無しさんNGNG
snprintf使ったら宣言のない関数の呼び出しと言われた上に、リンクエラーが発生しますた。
0215155NGNG
>>214
適宜読みかえてくださいな。僕はVC++は知らない。

0216201NGNG
>>212
int型で255桁は逝かないと思うが10桁は逝くね
0217デフォルトの名無しさんNGNG
>>216
255桁も10桁も逝くか逝かないかはintのビット数によるだろ。
0218155NGNG
というわけで、208には賛同しかねるってことで。

0219208NGNG
標準関数でできることは標準関数でやればいいと言っているだけなんだけど・・・
C99?しらん
0220201NGNG
>>217
現状ではintがそんなに大きいの無いと思われ
スパコンでだって10進256桁のintなんてメモリがひどいことになるよぅ
0221デフォルトの名無しさんNGNG
>>220
重箱の隅をつついてみただけだ。気にしないでくれ。
0222155NGNG
>>219,220
普段高級言語しか使わない身では考え方についていけない。
でかけます。さよならw
0223201NGNG
>>220
つーか10進256桁のintって楽しすぎ
biosからvramまで1つの転送で終わり?
0224デフォルトの名無しさんNGNG
itoaって標準関数だと思っていて、Linux+gccで使えなくて初めて標準関数じゃないと知った。
馬鹿だった・・・・
0225デフォルトの名無しさんNGNG
255桁のintはかんがえられんが、10桁ゆかないintなら考えられるな。
0226デフォルトの名無しさんNGNG
fp = fopen ("file", "r");// or fp = fopen ("file", "rb");
fseek (fp, 0, SEEK_END);
l = ftell (fp);
このコードってUNIX系でしか正しく動かないようなのですが
標準でファイルサイズを取得する方法はあるんですか?
0227デフォルトの名無しさんNGNG
>>226
Windowsでも正しく動くけど・・・
0228デフォルトの名無しさんNGNG
>>227
そうなんですか。
確かfseekにSEEK_ENDを指定したときはテキストモードでオープン
しないと動作は保証されないようなことを読んだことがあったので。
UNIXだとバイナリモードもテキストモードも同じなので"rb"でオープン
しても問題ないけど両方のモードが違ったときはまずいのかと思ってました。
0229デフォルトの名無しさんNGNG
>>228
じゃあバイナリモードで開けばいいでしょ・・・
0230デフォルトの名無しさんNGNG
>>229
いや、それだとだめってことなんですけど。
バイナリファイルの場合に。
0231デフォルトの名無しさんNGNG
whileとfgetcでファイルポインタを末尾までもってゆく。
0232デフォルトの名無しさんNGNG
>>230
「バイナリモードではfseekが正しく機能しない」?
とりあえず、、、

はつみみです

てか、困らない?
0233デフォルトの名無しさんNGNG
自分としては動作を保証するモードが逆だと思うんですけどね。
0234デフォルトの名無しさんNGNG
>>232
バイナリモードで「SEEK_ENDを指定した」場合です。
0235デフォルトの名無しさんNGNG
つか、>>228の思い込みだろ。あるいは、モードを逆に憶えているか

> 確かfseekにSEEK_ENDを指定したときはテキストモードでオープン
> しないと動作は保証されないようなことを読んだことがあったので。
0236デフォルトの名無しさんNGNG
とりあえず >>228 はうろおぼえみたいだから、
SEEK_END ともう一つ別の方法でファイルサイズをとってみて、
食い違うっていう例を、自分のハードディスクの中でみつけてから
逝ってくれ
0237デフォルトの名無しさんNGNG
http://www.bohyoh.com/CandCPP/C/Library/fseek.html
これはいま検索したんですが今までもおかしいと思っていたので
複数あたっていました。
0238デフォルトの名無しさんNGNG
>>237
この記述も俄かには信じがたいけど、「サポートしなくてもいい」って意味だよね
じゃあ、特定のライブラリの仕様を確認すればいいんじゃないの?

少なくとも、↓ここには変なことは書いてない
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_fseek.asp
023916NGNG
みなさん沢山のレスをどうもありがとうございます。
まずはレスの中身を理解してからレスします。

(休日出勤です。すこし寝過ぎました。)
0240デフォルトの名無しさんNGNG
>>238
書籍でも「C言語によるプログラミング スーパーレファレンス版」と
あと一冊名前を忘れてしまった本にも載ってました。
いまwindowsでgccでやってみたら問題なかったです。
以前 linux で libc の fopen のソースを見たら確かにモードを区別
していなかったのでそっちでは安心して使っていたんですが。
0241デフォルトの名無しさんNGNG
>>240
もしサポートしてなければ、たぶんエラーコードを返したりすると思うから、
それをはじけば問題ないんじゃない。まあ、まったく出鱈目な結果になるという
恐れもあるが。。
0242デフォルトの名無しさんNGNG
offsetof についての質問なのですが、

struct foo {
int member;
} foo;

とあるのをファイルに出力するときに、

foo f;
ptr = &f;
len = offsetof(f, member) + sizeof(int);

とやっているのがあるのですが、
これは、やっぱり構造体の padding を意識しているのでしょうか?(C FAQより)
とすると、メンバーを

struct foo {
int member;
long member2;
} foo;

と追加したときには、

ptr = &f;
len = offsetof(f, member) + sizeof(int) + sizeof(long);

とするのが正しいのでしょうか? それとも、

ptr = &f;
len = sizeof(struct foo);

とするのが正しいのでしょうか?
0243デフォルトの名無しさんNGNG
http://profiles.yahoo.co.jp/tengaiten2002
0244デフォルトの名無しさんNGNG
>>242
つまり、一番最後尾にあるかもしれない詰め物を、避けているってわけ?
だとすれば、member2が最後の要素なんだから、

ptr = &f;
len = offsetof(f, member2) + sizeof(f.member2);

こうじゃないの?最後の要素の末尾=全体の末尾
0245デフォルトの名無しさんNGNG
絵で描くと、
|member1|???|member2|???| (= f)
これを、ファイルの中では
|member1|???|member2|
これだけにしたいのでは?
0246explosion.cppNGNG
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Explosion.h"

#include "global.h"
#include "RenderTex.h"
#include "debug.h"
#include "RenderSprite3.h"
#include "d3dutil.h"
#include "sndset.h"
#include "sndid.h"
#include "TexSet.h"
#include "particle.h"
#include "sub.h"

#include "debug.h"
USE_TR;

//---------------------------------------------------------------------------
#pragma package(smart_init)
0247explosion.cppNGNG
//---------------------------------------------------------------------------
// 爆発・抽象基本クラス
//---------------------------------------------------------------------------

// 爆発クラスへのCasterを返す (DeleteClass用)
//static
const LAppCaster<CExplosion>& CExplosion::Caster()
{ SV
static LAppCaster<CExplosion> c;
return c;
}

// cter, dter
CExplosion::CExplosion()
:CAppObj(g->appMan)
{ SV
}

CExplosion::~CExplosion()
{ SV
}
0248explosion.cppNGNG
//---------------------------------------------------------------------------
// 普通の爆発
//---------------------------------------------------------------------------

static const intTEX_NUM = 9, TEX_NX=999;
static const CPointTEX_POS(0, 0);
static const CSizeTEX_SIZE(54, 54);
static const floatANIM_TIME = FPS30*4.0f;

CNormalExplosion::CNormalExplosion(const CVector3& pos, float size)
:CExplosion(),
mTime(0.0f), mIndex(0)
{ SV
mSpr.pos = g->camera->Proj2D(pos, 640.0f, 480.0f,
P2D_CENTER|P2D_CENTER, TEX_SIZE.cx*size, TEX_SIZE.cy*size);
mSpr.scale = CVector2(size, size);
mSpr.tex = g->texBomb;
mSpr.rect = CRect(TEX_POS, TEX_SIZE);
g->renderSprite->Add(&mSpr);
0249デフォルトの名無しさんNGNG
>>246 C++はスレ違い。それ以前に、長いソースはうpしろヴォケ
0250explosion.cppNGNG
for (int i=0; i<20; i++)
{
float cr, cg, cb;
// 一定の確率で、真っ白の火花
if ( g->rand(100) < 10 )
cr = cg = cb = 1.0f;
else // それ以外は適当な色
cr=frand(0.7f,1.0f), cg=frand(0.7f,1.0f), cb=frand(0.0f,1.0f);

CParticle::New(pos,
1.5f, 0.4f,
CVector3(-15.0f, -15.0f, -15.0f), CVector3(+15.0f, 15.0f, 15.0f),
CVector3(1.0f, 1.0f, 1.0f),
CParticle::Tex(CParticle::WHITE), 0.5f,
cr, cg, cb
);
}

g->sysSnd->Play(SE_HIT01); // 爆発音
}
0251デフォルトの名無しさんNGNG
>244-245
あーなるほど。最後の詰め物だけを除いているわけですか。
ふむふむ。そうかそうか。

ところで、こういうコーディングって一般的なんでしょうか?

いや、今回初めて見たんですけども、
最後の詰め物_だけ_を取ってる、ということは、
メンバーが増えれば増えるほどその意義は小さくなりますよね?

んー、やってることは分かったけど、
意図しているところが全然分からんちーん。

他の構造体では sizeof(struct bar) とかやってるし。
0252デフォルトの名無しさんNGNG
まあ、構造体をそのままの形で保存するって事自体、
あまりよくないと思うけどね。面倒でも適切なバイト列に変換する
手続きを書いた方がいいかと
0253デフォルトの名無しさんNGNG
確かにそうですよね。
ただ、既存のものと整合性を取らないといけないので、ちょと大変。
もうちょっと考えてみます。ありがとうございました。
0254デフォルトの名無しさんNGNG
みなさんは数値を一定の範囲でループさせたいときってどうしてますか?
私は、一回のマイナス方向の変化量が、変化量の最大を超えないっていう前提で

a = (a + max) % max;

ってしているのですが、もっといい方法はありますか?
0255デフォルトの名無しさんNGNG
>>254 減らすときは確かにそうする
0256デフォルトの名無しさんNGNG
これって動くか?
a = (0 <= a) ? a % max : max-1 - ((-a) % max);
0257デフォルトの名無しさんNGNG
あ、なんか勘違いしてる
0258デフォルトの名無しさんNGNG
a=(a<min ? a+max:a);
は恥ですか?
0259258NGNG
割り算使ってないから自分としてはまぁまぁかなと
0260256NGNG
>>256が動きますた。これは変化量に制限がないから、安全といえば安全かな。
0261デフォルトの名無しさんNGNG
DLLを使ってデータ圧縮したいんですけどやり方がわかりません
教えてください
googleでは調べたんですけどね…
0262256NGNG
いや、まてよ?何か間違っているような気がする
0263デフォルトの名無しさんNGNG

質問です

以下において

x = 式(1) || 式(2);

式(1)または式(2)の結果が0以外であれば他方が評価されないのは
処理系依存でしょうか
0264担当TSJ/霧生NGNG
★誰でも出来る!!お小遣い稼ぎ★
■PC初心者でも出来ます■
   ■ 仕事は、宣伝のみ!■
     PCでのメール・掲示板の書き込みetc....
     あなたしだいで50万以上も可能!
     即日スタート可能!
       収益100%ひとり占め!

      まずはメールでお申し込み下さい。
    
         [email protected] 担当TSJ/霧生
0265デフォルトの名無しさんNGNG
>>263
その話、昨日か一昨日どっかで出たばっかりだ。
0266デフォルトの名無しさんNGNG
>>263
左から右だけど処理系依存ではないと思う(たしかANSI
0267デフォルトの名無しさんNGNG
ショートサーキット
0268デフォルトの名無しさんNGNG
>>263
探してきてやったぞ。俺っていい奴だな。

http://pc3.2ch.net/test/read.cgi/tech/1031340950/n637-660
0269デフォルトの名無しさんNGNG
x=でしたね
0270256NGNG
>>254
わかった、こうこう:
a = (0 <= a) ? a % max : max - 1 - ((-a - 1) % max);

実行例:(max=10の場合)
14
==> 4
1024
==> 4
-1
==> 9
-10002
==> 8
0271デフォルトの名無しさんNGNG
そーいえばifネストしないとまともに動かないのはVCだけ?
0272256NGNG
a = (0 <= a) ? a % max : max - 1 + ((a + 1) % max);
>>270はこっちのほうがキレイかな
0273256NGNG
a = (0 <= a) ? a % max : max - 1 + (a + 1) % max;
カッコいらないや
0274デフォルトの名無しさんNGNG
>>263
A 申し訳ございません。文化についてはあまり知識がありません。
0275デフォルトの名無しさんNGNG
>>271
>>39
A. そういう言葉は好きではありません。アイフルのサイトやサービスについてご質問はございますか?
0276254NGNG
みなさんレスありがとう。

>>256
マイナスの値に対して % 使ったときの結果って処理系依存じゃなかったですっけ?
私の勘違いかな?

>>258
割り算よりも条件分岐によるパイプラインの乱れの方が
実行時コストが大きいような気がするのは
私だけでしょうか?
0277デフォルトの名無しさんNGNG
>>276
> 私だけでしょうか?
私も同感です。ハイ。
0278277NGNG
maxが 2の累乗で表せる数なら
a &= max - 1;
がいいかもしれないね。
勘違いしてたらごめん。
0279デフォルトの名無しさんNGNG
>>276
そこまで気にするならCは使うな。
0280デフォルトの名無しさんNGNG
>>279
ハア?
0281デフォルトの名無しさんNGNG
>>280
アセンブラでも使えよ。
0282254NGNG
>>277
ですよねー

>>278
たしかに2の累乗ならビット演算の方が速そうですね。

>>279
その昔VB厨だった頃、(別の問題で)「そこまで気にするならVB使うな」
と言われて C 系言語に乗り換えたのですが…。
私はこのまま汗使いになるしかないのでしょうか?
0283デフォルトの名無しさんNGNG
関数も呼び出し時のオーバーヘッドが気になるから使わないとか言い出すんだろうか。
0284256NGNG
>>276
> マイナスの値に対して % 使ったときの結果って処理系依存じゃ
おうそりゃ初耳だな。んじゃ>>270で
0285デフォルトの名無しさんNGNG
>>283
イソライソカソスウ
0286デフォルトの名無しさんNGNG
>>282
>私はこのまま汗使いになるしかないのでしょうか?
なれ。
0287デフォルトの名無しさんNGNG
>>281
ハア?
実行速度を気にするヤシはCを使うなと?
画像操作とか、データ圧縮とかのソースなんかも
全部アセンブリ言語で書かれていると?
すごい世界だな。

>>283
速度的に最適化すべきところはCでも当然気にして作るし、
気にせんところでは関数呼び出しのコストも気にせん。

まあ初心者スレで言っても無意味か。
0288デフォルトの名無しさんNGNG
>>287
必 死 だ な ( 藁
0289デフォルトの名無しさんNGNG
287はインラインアセンブラとかしらんのだろうか。
0290デフォルトの名無しさんNGNG
>>285
Cにはインラインないから・・・
オーバーヘッドが気になると言うなら、
やっぱ、すべてmain関数に同じような処理でもすべて書いて、
main関数は数万行突破となるのかな?(w

利点を欠点と考えるのは間違ってると思いま〜す。
0291デフォルトの名無しさんNGNG
最適化は実行速度が気になってから初めて考慮に入れてください。
0292晒しageNGNG
>>289
287はインラインアセンブラとかしらんのだろうか。
 (プププッ
0293デフォルトの名無しさんNGNG
最適化はコンパイラにまかせておけ
0294デフォルトの名無しさんNGNG
>>289
> 287はインラインアセンブラとかしらんのだろうか。
(ぷっ!
0295デフォルトの名無しさんNGNG
>>290
c99とか誰かが書く
0296デフォルトの名無しさんNGNG
多分コストがかかるから嫌だと言っている人はネタだと思うんだけど、
そんなに気になるものなの?
0297デフォルトの名無しさんNGNG
インラインアセンブラは別にいいじゃん。使いたきゃ
0298287NGNG
>>289
知ってますがそれが何か? (プ
0299デフォルトの名無しさんNGNG
>>296
だから問題はそのコストをどこにかけるかってことだろ?
0300デフォルトの名無しさんNGNG
すみません、質問させてください。

a = (char *)malloc(30);
b = (char *)malloc(30);

strcpy(a, "abcde");
strcpy(b, "ABCDE");

a = b;

と、こうした場合、最初のaの値のメモリは自動開放になるのでしょうか?
リンク切れの状態でメモリに存在するんでしょうか?
0301デフォルトの名無しさんNGNG
> リンク切れの状態でメモリに存在するんでしょうか?
の方が正しいです。

0302デフォルトの名無しさんNGNG
>>300
C に「自動開放」なんて期待するなよ。
0303デフォルトの名無しさんNGNG
>>301-302
やっぱり、そのままメモリに残るんですか・・・。
ありがとうございました。
0304デフォルトの名無しさんNGNG
>>300
それで解放されるんならfreeは要らんな・・
0305デフォルトの名無しさんNGNG
少し上で処理速度うんぬんでアセンブラ使えだのインラインアセンブラがあるだのといっているが、
それが必要になるほどきちんとしたアルゴリズムを採用していてそれをきちんとソースに落とせているレベルの
人間の会話とは思えないんだが。
0306mukkuNGNG
ほとんど初心者なんですが MS-DOSからワードパッドを呼び出すのは
どうやったらいいんでしょう(爆)
notepadしか使わないもんで ほんとに初歩的な質問で気を悪くされたら
ごめんなさい
0307デフォルトの名無しさんNGNG
cd C:\Program Files\Windows NT\Accessories
wordpad
0308デフォルトの名無しさんNGNG
>>306
まあ好みだろ。自分でわかりやすけりゃそれでいい。
0309デフォルトの名無しさんNGNG
>>306 , 308
このつながりがさっぱりわからんのだが?
0310デフォルトの名無しさんNGNG
>>306 C言語でか。それって難しくないか?
0311デフォルトの名無しさんNGNG
>>306 >>308
2chのスクリプトの混乱か?

main () {
  int ret = system ("\"C:\\Program Files\\Accessories\\WORDPAD.EXE\"");
  printf ("ret = %d\n", ret);
}
0312デフォルトの名無しさんNGNG
>>306
ShellExecute かな
0313デフォルトの名無しさんNGNG
そうでもないよ
system ("ワードパッド");
0314デフォルトの名無しさんNGNG
C:\WINDOWS>write <リターン>

つーかネタにマジレスはイタイ。
0315デフォルトの名無しさんNGNG
俺、思うんだけどよ。
ネタ披露するなら、面白くなくっちゃダメだと思う訳よ。
で、笑えねーし、ジョークなのかマジなのかわからねーようなネタは、
ただの糞レスだと思う訳よ。
マジだと思って、ちょっとレス入れたら、「ネタにマジレスするな」とか言われると、
「マジレスされるようなネタかましてんじゃねーよ!」って思う訳よ。

ネタにマジレスするのが痛いんじゃなく、
マジレスされるようなネタが痛いと思う訳よ。
0316デフォルトの名無しさんNGNG
質問です。
int *hoge;
のように宣言すると、これはintへのポインタ型の変数hogeというわけですよね?
では、これを
int *hoge="チンカス";
と書くと、これは配列になりますよね?なぜですか?
しかも、hoge[2]のように変数hogeを使えますよね。
ポインタなのに、なんで配列と同等に扱えるのですか?
0317デフォルトの名無しさんNGNG
>>315
これしきのネタを見抜けないお前の方がイタイ。
でも半分同情する。正直でいい人なんだろうなと。
0318デフォルトの名無しさんNGNG
>>316
ワーミングが出たYO?
_a.c: In function `main':
_a.c:3: warning: initialization from incompatible pointer type
0319デフォルトの名無しさんNGNG
>>317
>>316はネタなのかマジなのか教えてください。
0320デフォルトの名無しさんNGNG
>>319
マジです。
マジレスキボンヌ!
0321317=316NGNG
>>316はマジッス。答えてやってくらはい。
0322317NGNG
> ポインタなのに、なんで配列と同等に扱えるのですか?
それがC言語の仕様だからです。としか答えようがありますまい。

配列は式内でポインタに成り下がります。
とどのつまり、char配列 → char*と解釈され、
それを(キャストを怠りながらも)int*に代入
しているのであります。

> しかも、hoge[2]のように変数hogeを使えますよね。
これではバッファオーバーランとなりますまいか?
0323デフォルトの名無しさんNGNG
>>316
仕様だから。
0324デフォルトの名無しさんNGNG
>>316
このへんでも読んで理解を深めてきたまへ。
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
0325デフォルトの名無しさんNGNG
>>315
そーゆー話は他所でやって下さい。つか、1byteカナ多すぎてうぜぇ。

>>316
あなたが使っているコンパイラに興味があります。
ふつー >>318 の様に、怒られる筈ですが…
0326デフォルトの名無しさんNGNG
コンパイラはSC使っています。
0327 ◆/SrH4d2Q NGNG
C言語勉強のおもしろいサイト知りませんか?
0328デフォルトの名無しさんNGNG
scってなに?
Symantec Cとか?
過去の遺物じゃん
032916NGNG
はるか昔の16です。
42さんが教えてくれたことを中心にポインタを勉強し直して
書き直すこと7時間余、ようやく正常に動いているらしきソース
ができました。
>>112さんの御指摘と42さんのコメントを基に、だいぶ速度も
あげることができました。(処理する内容は
(128+26)*(26+40)*12*24*98個と6400*30個のデータのマッチング
なので速いほうが助かります。)

我ながら意味不明の箇所も多いのですが、また整理して質問いた
します。
皆様ありがとうございました。

0330デフォルトの名無しさんNGNG
> (128+26)*(26+40)*12*24*98
=286868736

なんかとんでもねェなオイ
0331デフォルトの名無しさんNGNG
ウォーニング
ワーミング

全然違うのに何故話か話が通じるという…

余談だが、インラインアセンブラじゃなくインラインアセンブリじゃないの?
0332デフォルトの名無しさんNGNG
>>331
ワーミングはネタだってばw
0333デフォルトの名無しさんNGNG
>>331
インラインアセンブラ→インラインのアセンブリ(言語)を
翻訳するための機能(道具)。
こんなところでよろしいか?
0334デフォルトの名無しさんNGNG
全言語のページから"inline assembler"を検索しました。 約12,900件中1 - 10件目 ・検索にかかった時間0.04秒
全言語のページから"inline assembly"を検索しました。 約12,800件中1 - 10件目 ・検索にかかった時間0.09秒
0335デフォルトの名無しさんNGNG
ちっちぇーなー、
0336デフォルトの名無しさんNGNG
>>335
>>334の気が?
0337デフォルトの名無しさんNGNG
確かに検索してみると「インラインアセンブリ」より「インラインアセンブラ」の方が多いが
そもそも「アセンブリ」より「アセンブラ」の方が圧倒的に多いという罠があるからなぁ

>>333もいまひとつ納得できん
英語じゃどう表現してんのよ?
0338デフォルトの名無しさんNGNG
オンラインハンドアセンブルサーバー
0339デフォルトの名無しさんNGNG
>>334
なるほど。つまりインラインアセンブラ/inline assemblerが多数派だと…
0340デフォルトの名無しさんNGNG
assemblyというのが、そもそも名詞として用いにくい
理由があるんじゃないの。某宗教関係とカブってたり
0341デフォルトの名無しさんNGNG
ウォーニングムスメ
0342デフォルトの名無しさんNGNG
>>341
あんた今日ここでは一番の輝き。
0343デフォルトの名無しさんNGNG
ウォ娘。?
0344栄えある333ゲッターNGNG
>>337
ごめん。英語は疎いのでパス。
つーかそんな細かいこと気にすんな。
ハッカーとヒッキーほどの違いはないだろ。
0345デフォルトの名無しさんNGNG
>>334
同異します。
0346デフォルトの名無しさんNGNG
void a( KOU Kou )
{
free(Kou.lpNum);
}

アドレスを渡していない場合で,変数のポインタを開放したらどうなりますか?
0347デフォルトの名無しさんNGNG
解放されるだけ。
たとえ構造体をポインタ渡ししても同じこと。
0348デフォルトの名無しさんNGNG
そりゃそうだ
0349デフォルトの名無しさんNGNG
書き忘れです

関数に,構造体をポインタで渡さない場合で,
その構造体のポインタ変数を開放しようとしたら出来ますか?
こういう場合,構造体は,ポインタで渡したほうがいいですか(ポインタ変数以外値を変える気がありません)?
0350デフォルトの名無しさんNGNG
>>349
構造体のアドレスを渡さなければ、元の構造体の内容を変えることができない、
て事はわかってるのか?
「構造体のポインタ変数」ってのは、メンバ(lpNum?)の事だよな
0351デフォルトの名無しさんNGNG
>>349
もっと具体的に書いてくれないとわからないよ。
0352デフォルトの名無しさんNGNG
>>346
ポインタのような複雑な内容をもった構造体を、
そのまま引数で渡すって事自体、かなり異常だから、
たぶん考え方が完全に間違ってる
0353デフォルトの名無しさんNGNG
構造体のアドレスを渡さなければ、元の構造体の内容を変えることができない、
て事はわかってるのか?

わかります

「構造体のポインタ変数」ってのは、メンバ(lpNum?)の事だよな

そうです
0354デフォルトの名無しさんNGNG
僕は作りたいものがあってC言語を勉強してきました。
文法はほぼ完璧になったのですが作りたいものが作れません。
そこで皆さんのアドバイスをいただきたく書き込みさせていただきました。

僕が作りたいと思っているものはTVの画面をリアルタイムで変更して表示を変えるというものです。
でもこれからなにを勉強していっていいかわかりません。
アドバイスをお願いします。
0355デフォルトの名無しさんNGNG
> わかります
ホントか?例えば、これ↓では、呼び出し側の構造体の lpNum にNULLが入らない。
void a( KOU Kou )
{
  free(Kou.lpNum);
  Kou.lpNum = NULL;
}
0356デフォルトの名無しさんNGNG
そしてこれ↓なら、入る。
void a( KOU *pKou )
{
  free(pKou->lpNum);
  pKou->lpNum = NULL;
}
0357デフォルトの名無しさんNGNG
わかるよ
0358デフォルトの名無しさんNGNG
あ,つーことは,NULLいれるためにはポインタで渡さんといけんね
0359デフォルトの名無しさんNGNG
>>354
> TVの画面をリアルタイムで変更して表示を変える
例えば?ビデオジョッキーみたいな?
0360デフォルトの名無しさんNGNG
>>354
おそらく、ビデオキャプチャのデバイスを叩くことになると思うので
お使いのOSの関連API群を調べたりサンプルを実行してみるといいでしょう
WindowsならVFWあるいはDirectShow
Linuxならv4l(video for linux)
MacならQuickTime? よく知らない...
などなど。画面への表示は書籍などをあたればよいと思います。
0361デフォルトの名無しさんNGNG
>>354
それってC言語じゃないとできないのかな。もっとまともなツールがあるような気が。
まあアリモノではいろいろ制約があるだろうけど
0362デフォルトの名無しさんNGNG
>>349
> こういう場合,構造体は,ポインタで渡したほうがいいですか
どういう場合でも、普通、構造体はアドレス渡し。
内容を書き換えられたくなければ、引数を const で修飾。
0363デフォルトの名無しさんNGNG
typedef struct {
int i;
} SUPER_INT;

036418NGNG
俺は放置プレイかよ
0365デフォルトの名無しさんNGNG
>>364 悪いが、18は俺だ
0366デフォルトの名無しさんNGNG
>>362
const について誤解があるようですね。
0367デフォルトの名無しさんNGNG
>>362
呼び出された側では内容を書き換えるけど、
呼び出し元にそれを反映したくない時は
どうすればいいですか?
メンバを1つずつ仮引数に書き並べるべきですか、
それともアドレスで渡した後、呼び出された側で
複製すべきでしょうか?
0368デフォルトの名無しさんNGNG
struct{
char *p;
...
}test;

t.p=malloc(....)
...
func(t);
...

func(struct test t)
{
free(t.p);
}

こういう場合はポインタ渡しでなくてもで解放される。
0369362NGNG
>>366
えっと思ってやってみたら、警告が出るだけ。。そうなのか。。ショボーン

struct foo {
  int bar;
};
void inc_bar (const struct foo *p) {
  p->bar++;
}
main () {
  struct foo a = { 123 };
  inc_bar (&a);
  printf ("a.bar = %d\n", a.bar);
}
0370362NGNG
>>367
内容を書き換えてはいけない。以上
0371デフォルトの名無しさんNGNG
>>368
>>346-347で書かれた回答と どの辺が違うのかと 小一(略
0372362NGNG
>>367
どうだろうな。やっぱりアドレス渡しなら複製もできるわけだし、
自由度が高いと思うが。アドレスの幅がオーバーヘッドになるかもしれないし。。
とにかく、引数のサイズはバカでかくするべきではない。

>>368
それガイシュツ
0373362NGNG
×アドレスの幅がオーバーヘッドになるかもしれないし。。
○アドレスの幅がオーバーヘッドになるかもしれないが。。(大した事はないだろう)
0374デフォルトの名無しさんNGNG
*(&(*(&(*(&(*(&p)))))) = 1;
0375デフォルトの名無しさんNGNG
>>367
pushしておけ。
0376デフォルトの名無しさんNGNG
>>367
caller:
type_hogera data1, data2;
data2 = data1;
modifier( &data2);

int modifier( type_hogera *tekito) {
tekito->hoge = ...;
return 0;
}
0377367NGNG
>>369
はあ?

>>370
マッ マジっすか?

>>372
参照渡ししてから複製するくらいなら
はじめから値渡しする方が一度の処理で済んで
効率的だと思うのは間違いですか?

>>375
pushとは構造体の値渡しのことを指しますか?
それとも仮引数を1つずつ書き並べることを指しますか?
それとも内容を一時退避して復元することを指しますか?

>>376
modifier側で複製せずにcaller側で複製する意図は何でしょう?
寿命はmodifier内で完結させた方が得策ではないでしょうか?
0378デフォルトの名無しさんNGNG
>377
376 はネタ
0379デフォルトの名無しさんNGNG
>>377 まあこれでもマターリ嫁
http://www.catnet.ne.jp/kouno/c_faq/c2.html
0380367NGNG
>>379
ありがとうございます。マターリ読んでみました。

ここの皆さんの回答は「何がなんでもアドレス渡し」でほぼ一致、
しかしリンク先の記述では
「構造体の値渡しを使うこともためらう必要はない」(ANSI C)
と書かれているように解釈しました。
一体どうすれば...
0381デフォルトの名無しさんNGNG
>>380
じゃいいんじゃない、ためらわなければ
というか本当は、実際に複製する必要があるのかどうか疑問だったりする
0382デフォルトの名無しさんNGNG
Aという関数にポインタで,値を渡します
Aという関数で,Bという関数を呼び出します
Bという関数には,引数として,値を渡します
Aという関数では,*を使ってBに引数を渡すんですが,
普通,引数渡すのに,*を使いませんよね?
0383デフォルトの名無しさんNGNG
>>382 じゃあ、配列も値で渡してくれ給え
0384デフォルトの名無しさんNGNG
おっと脊髄反射しちった
0385デフォルトの名無しさんNGNG
こうかい
A (Foo *foo_p) {
  ...
  B (*foo_p);
  ...
}
B (Foo foo) {
  ...
}
まあ、ポインタに統一した方が美しい、とは言える罠
0386367NGNG
>>381
ありがとうございました。
臨機応変ということでもよさそうですね。

> というか本当は、実際に複製する必要があるのかどうか疑問だったりする
たまにそういう場面に出くわします。
たとえば64ビットや128ビットの整数を扱う時などです。
(64ビットは拡張機能でサポートするコンパイラも多いみたいですね)
0387デフォルトの名無しさんNGNG
ユーザー定義型、配列に限って言えば*で渡すのが吉。
0388デフォルトの名無しさんNGNG
>>387
VB?
0389デフォルトの名無しさんNGNG
>>388
基本型の反語の意味で使ったんだが。

VBのユーザー定義型は参照渡しみたいだな。
0390デフォルトの名無しさんNGNG
>>387
ずばり、あなたの言うユーザー定義型とは、「構造体」のことですな?
意味上ではtypedefが合っているけれど、実体がintとかdoubleだったら必要な時以外アドレスわたしなんてしないし・・・
0391デフォルトの名無しさんNGNG
>>390
?
0392デフォルトの名無しさんNGNG
>>387
というか、配列はどう頑張っても値渡しはできないのだが。

>>391
typedef unsigned char UBYTE;
UBYTE b;
とかしてるときにbを常にアドレス渡しするメリットはないわけで。
0393デフォルトの名無しさんNGNG
>>392
> 配列はどう頑張っても値渡しはできないのだが。
構造体に入れろ。
0394デフォルトの名無しさんNGNG
hoge (hoge[0], hoge[1], hoge[2], hoge[3], hoge[4], hoge[5], ........);
0395デフォルトの名無しさんNGNG
>>385
そうです
039660cm浮き上がるストレートNGNG
下の4つについて機種、OSなどの違いにより
動く動かないがあるのなら、どなたか教えてください。
また何かが付属していないと動かないとかなら、
その付属品があるかないかの調べ方を、どなたか教えてください。

1、VisualC++6.0で作ったC言語のexeファイル
2、1のプログラムの中のエスケープシーケンス
3、1のプログラムの中のwindows.hによるDOS窓へのドット表示
4、1のプログラムの中のwinmm.libでの音楽
0397デフォルトの名無しさんNGNG
>>396
exeファイルがOSの壁乗り越えるならjavaは何ですか?
0398デフォルトの名無しさんNGNG
csvファイルの、例えば列がBで行が2の所のデータを参照したい時には
どうしたらいいのでしょうか。教えてくださいませ。
0399デフォルトの名無しさんNGNG
.NET CLRの実行ファイルなら、.exeでも壁乗り越えますが何か?
0400デフォルトの名無しさんNGNG
>>396
VC6って書いてあるじゃん
040160cm浮き上がるストレートNGNG
>>396へ付け加え
僕のパソコンで作ったexeを別のパソコンで使った場合。
2は僕の知り合いの方のパソコンでやった場合、\x1b[3;3H
等がそのまま出てしまうらしいです。
0402デフォルトの名無しさんNGNG
>付属品があるかないかの調べ方
列挙してください
0403デフォルトの名無しさんNGNG
>>401
ANSI.SYS
0404デフォルトの名無しさんNGNG
>>396
http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/redistrib/
040560cm浮き上がるストレートNGNG
>>403
なるほど。ANSI.SYSがあることがエスケープシーケンス使用の
条件になるんですね。ありがとうございました。
http://www.nifty.ne.jp/forum/fpcu/dosvcmd/ansi.htm
ではexeをアップロードする場合ANSI.SYSがない場合
ゲームが正しく動作しませんみたいに書けばいいのですね。
0406デフォルトの名無しさんNGNG
>>396
そこに出てるうち、ANSIエスケープシーケンス(ANSI.SYS)以外の話は、
原則的にはこっちだ↓
http://pc3.2ch.net/test/read.cgi/tech/1022499000/l50
VisualC 相談室【8】
0407デフォルトの名無しさんNGNG
アカデミーパックのVC買うときに作ったアプリの再頒布は駄目ですよ
って言われたことあるけどそれはどうよ
0408デフォルトの名無しさんNGNG
別にいいんじゃないの?再頒布するときに何買おうが
0409デフォルトの名無しさんNGNG
>>408
アカデミーパックは学術用に安くしてるから
頒布を考えてるならスタンダートエディション以上を
買って下さいってその店員に言われましたが
0410409NGNG
漏れは騙されたのか?
0411デフォルトの名無しさんNGNG
>>409
間違えた。再頒布するアプリを作るときに何を買っていても
かまわないんじゃないだった。
0412デフォルトの名無しさんNGNG
騙されてる。
.NETは知らないけど、6.0までのアカデミックは
再頒布しようが問題ない。
勿論有償のソフト開発でも。
0413デフォルトの名無しさんNGNG
再頒布可能コンポーネントについては、使用許諾契約書に書いてある。
だいたい、この記述と同じ↓
http://www.auemath.aichi-edu.ac.jp/teacher/iijima/qbforum/QB2VB.htm
DLL,OCXなど,どこまで配布可能なのか(2)
0414409NGNG
>>411
アカデミーパックで作ったアプリを再頒布するとMSに訴えられますか?
0415デフォルトの名無しさんNGNG
アカデミックは販売対象を制限しているだけで、
ライセンス自体は各エディションに従います
0416デフォルトの名無しさんNGNG
>>414
407を読み間違えてた。
アカデミーパックのVC買うときに「作ったアプリの再頒布は駄目ですよ」
って言われたことあるけどそれはどうよ
ではなくて
「アカデミーパックのVC買うときに作ったアプリの再頒布は駄目ですよ」
って言われたことあるけどそれはどうよ
このように読んでしまってた。すまんです。
041760cm浮き上がるストレートNGNG
よくわからないのですが>>396の1〜4以外に
なんか必要なものがあるのでしょうか。
頒布のことについて書いてありますが、動作する以前に
権利のこととかについて書いているのですか?
0418409NGNG
>>413
サンクス
あの店員訴えてやる
0419デフォルトの名無しさんNGNG
>>396
俺はFreeBSD使ってるけど、そこでも動くようにしてくれ。
OSが違うだけだぞ。
0420デフォルトの名無しさんNGNG
>>417
それ以上Visual C++の話を続けるなら、>>406に逝ってくれ
0421デフォルトの名無しさんNGNG
>>412
そうだったんだ・・・
じゃあ商売してもいいわけか。卒業したらだめだったりして・・・
0422デフォルトの名無しさんNGNG
俺、卒業後にアカデミーパックで商売しちゃった。
ある小さい会社の顧客管理システム。大丈夫かな。
0423デフォルトの名無しさんNGNG
LPCTSTRって使わないほうがいいですよね?
今使っているんですが,
全部const char*に置き換えた方がいいですよね?
0424デフォルトの名無しさんNGNG
>>423 WindowsのAPIと関係ない部分ならな
0425デフォルトの名無しさんNGNG
>>423
なんで?
0426デフォルトの名無しさんNGNG
>>422
大丈夫

>>423
使え
0427デフォルトの名無しさんNGNG
俺もC言語をマスターしたいと思ってるんだけど
まずどんな本を買えばいい?
あ、今はC言語初心者。
0428デフォルトの名無しさんNGNG
>>424
なんで?
0429デフォルトの名無しさんNGNG
>>424
文字配列(というのか?文字列へのポインタかな)を渡して,
それ使って表示しています
0430デフォルトの名無しさんNGNG
>>429
使わない方がいいと思う根拠は何なの?
0431デフォルトの名無しさんNGNG
>>429
WindowsのAPIに渡す値なら、そこに指示された通りの型名を使え。
Windows特有の話題は余所でたのむ
0432デフォルトの名無しさんNGNG
BOOLって使わないほうがいいですよね?
今使っているんですが,
全部intに置き換えた方がいいですよね?
0433デフォルトの名無しさんNGNG
>>432 WindowsのAPIと関係ない部分ならな
0434デフォルトの名無しさんNGNG
ブルッ
0435デフォルトの名無しさんNGNG
>>432
enumでも#defineでもかまわんから使え。
0436デフォルトの名無しさんNGNG
>>435
typedefなのでenumか#defineに直すべきでしょうか?
0437デフォルトの名無しさんNGNG
どれでもいいのではない? C99には _Bool 型があるね。
0438デフォルトの名無しさんNGNG
enumってなに?
c++でよく見るけど,Cでも使えるの?
0439デフォルトの名無しさんNGNG
もともと C にあった。
0440デフォルトの名無しさんNGNG
>>437
_Boolってまたパッとしない型名だね。
過去の資源との互換性の問題があるからかな。

_Boolも別名を定義して使うのが主流になりそうな予感。
0441デフォルトの名無しさんNGNG
>>439
structとenumはC++じゃないと使えないぞ
0442デフォルトの名無しさんNGNG
>>438 列挙型も書いてないようなテキストは直ちに焼き捨てること
0443デフォルトの名無しさんNGNG
>>438
列挙
constはC++から流用(?)したんだっけ?
0444デフォルトの名無しさんNGNG
_BoolじゃなくてC++と同じboolじゃだめなのだろうか・・・
0445デフォルトの名無しさんNGNG
>441
(゚Д゚)ハァ?
0446439NGNG
>>441 どういうことでせう?
0447デフォルトの名無しさんNGNG
明らかにネタだけど、C++じゃstructは使わないよな。
0448438NGNG
structもあかんと
0449デフォルトの名無しさんNGNG
>>447
おまえもネタだろ
0450デフォルトの名無しさんNGNG
>>449
C++でstruct使うことあるの?
classとはデフォルトのアクセスレベルが違うという程度でしょ?
0451440NGNG
>>444
ああそうか。確かにboolでよさそうだよね。
何で_Boolなんて名前に決まったんだろう?
C++のboolとも型の規格が異なるということかな?
0452デフォルトの名無しさんNGNG
C++でも関数の引数にするとか、fread、fwrite で読み書きするときに
あえて struct 使ってる。
0453デフォルトの名無しさんNGNG
関数オブジェクトとかtraitsとかを書くときはstruct使わない?
# つーかスレ違いスマソ

>>451
typedef int bool;
とかやってた既存のコードを壊さないように、ということではないかなぁ。
「アンダーバー+大文字」で始まる名前は処理系側に予約されてるから、
_Boolならその危険が少ないので。
0454440NGNG
>>453
それは440でも書いてるけど、
確かに現状ではC++との互換を意識して書かれている
コードなんて少数派だろうから、その通りだね。
CとC++を混同して考えない方がいいということか。
ありがとう。
0455デフォルトの名無しさんNGNG
_+大文字ってつかっちゃいけないんだよな・・・・
最近知った。
どうしよう。当然の如く使っていたよ(おろおろ)
0456デフォルトの名無しさんNGNG
>>455 痴漢しる
0457デフォルトの名無しさんNGNG
ところで「置換」は「ちかん」なのか?
どう考えても「おきかえ」だと思うんだけど?
0458デフォルトの名無しさんNGNG
>>457
理科でなんとか置換法なんてのがあって
そのとき先生は激しく「ちかん」と逝ってたのを思い出した
というか常識だろ
0459458NGNG
おっと誤解のないようにいっておくが「ちかん」が常識ね
0460デフォルトの名無しさんNGNG
>>457
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%C3%D6%B4%B9&sw=2
0461デフォルトの名無しさんNGNG
さすがに口頭では誤解を与えやすいから
「ちかんしろ」とは言わないだろうがな(w
0462デフォルトの名無しさんNGNG
>>461
俺は使う。
・・・・おかしいか?
0463デフォルトの名無しさんNGNG
>>458 あーやったね、上方置換とか下方置換とか。
0464デフォルトの名無しさんNGNG
ちかんで正しいぞ。国語辞典みろ
0465デフォルトの名無しさんNGNG
カミカタオキカエ
0466デフォルトの名無しさんNGNG
クニガタリコトバノリ
0467デフォルトの名無しさんNGNG
Solarisで以下のコードを書くと、バッファオーバーランになりますか?


char buf[1024]
sprintf(buf, "%s%s", getenv("LOGNAME"), getenv("DISPLAY");
0468デフォルトの名無しさんNGNG
>>467
その前に、コンパイルエラーになるよ。
0469デフォルトの名無しさんNGNG
getenvしてからメモリ確保すればいいじゃん。アフォですか
0470デフォルトの名無しさんNGNG
ほんとだ
0471 ◆pavzJkL2 NGNG
/* 最大値と最小値を求めるプログラム */
#include <stdio.h>
main()
{
int a[10]={59,20,504,69,333,98,246,352,111,423};
int b,max,min;
for(b=0;b<10;++b)
printf("%d ",a[b]);
printf("\n");
max=a[0];
min=a[0];
for(b=0;b<10;++b){
if(max<a[b])
max=a[b];
if(min>a[b]);
min=a[b];
}
printf("最大値=%d 最小値=%d\n",max,min);
return 0;
}
なんとなく違うのはわかるのですが、教えてください
0472デフォルトの名無しさんNGNG
if ( a == b )
  return true;
else
  retrun false;

と

if ( a == b )
  return true;
retrun false;

は、コンパイラで最適化されちゃうような差ですか?
0473デフォルトの名無しさんNGNG

略
max = min = a[0];
for(b = 1 ; b < 10;b++) {
  if(max < a[b])
    max = a[b];
  if(a[b] < min)
    min = a[b];
}
0474デフォルトの名無しさんNGNG
>>472
自分のコンパイラでアセンブラして確認してください。
0475デフォルトの名無しさんNGNG
>>472
何故 return a == b; と書かないんだろう...。
0476デフォルトの名無しさんNGNG
>>473 インデントすれば一発だよなあ。
0477471 ◆pavzJkL2 NGNG
>>473
ありがとうございます。即行で答え出ました
もうちょっと考えてみます
0478デフォルトの名無しさんNGNG
このパターンで最大最小求めるだけなのにこれ以上何かいい方法があるとは思えんのだが。
0479デフォルトの名無しさんNGNG
>>478
最大値より大きい時は、最小値との比較は不要だから...

if(max < a[b]){
 max = a[b];
} else if(a[b] < min){
 min = a[b];
}

とすると、ちょっと速くなるかも...。
0480471 ◆pavzJkL2 NGNG
>>478
>>471のプログラムだとなぜ答えが合わないのかがわからないのです
0481デフォルトの名無しさんNGNG
>>467
書いただけではならない。
0482デフォルトの名無しさんNGNG
>>480
if(min>a[b]);
min=a[b];

セミコロンが余計
0483471 ◆pavzJkL2 NGNG
>>482
あらー・・。ありがたう
0484というかNGNG
if(min>a[b]);  ←ここにセミコロンあるけれど大丈夫????????
min=a[b];
0485デフォルトの名無しさんNGNG
初心者質問で申し訳ないんですが
for(〜;〜;++i)
と
for(〜;〜;i++)
が変わらない時があるのは何故ですか?
継続判定の前か後ろだから明らかに違うはずなのに
VC5はくそですか?
0486デフォルトの名無しさんNGNG
a += f() -�@
において、f()の結果がaの値を変える場合、
加算されるaの値は変わる前と後のどちらになるかは
処理系依存でしょうか。
�@が
a = a + f()-�A
と同じであればaとf()の評価順は処理系依存だと
K&Rに書いてあるのですが、
�@と�Aは全く同じではなさそうですし、、
0487デフォルトの名無しさんNGNG
?
0488デフォルトの名無しさんNGNG
前置インクリメントでも後置インクリメントでも変わらなくない?それ?
0489デフォルトの名無しさんNGNG
>>485
どっちも同じ。
0490デフォルトの名無しさんNGNG
>>489
継続判定〜とか書いてた本のほうがくそだったんですね
ありがとう
0491デフォルトの名無しさんNGNG
for(初期設定;継続判定;増分)
 文〜;
初期設定=>継続判定=>文=>増分=>継続判定=>文=>〜〜
の順でしょ?
0492デフォルトの名無しさんNGNG
>>491
初期設定=>増分=>継続判定=>文=>増分=>継続判定=>文=>
か
初期設定=>継続判定=>文=>増分=>継続判定=>文=>
となるって本に書いて(そう解釈させる文)あったんですが
0493デフォルトの名無しさんNGNG
>>492
(・∀・)ニヤニヤ
0494デフォルトの名無しさんNGNG
>>492
それってさ、条件式の中に++、--を使った場合の事じゃないか?
for (i = 10; 0 < --i; ) と
for (i = 10; 0 < i--; ) の違いとか
0495デフォルトの名無しさんNGNG
>>494
そのころは工房っだったんで覚えてませんが
今その本捜してみます
0496デフォルトの名無しさんNGNG
#define N 10
unsigned i;
for (i = N; 0 <= --i; )
昔ハマった無限ループ・・・我ながらアフォであった
for (i = N; 0 < i--; )
やるならこれ↑かな?
0497デフォルトの名無しさんNGNG
for (i = N - 1; i <= N; i--) // こういう手もあるか
0498495NGNG
見つかりませんでした
>>494
だったのかもしれません
0499デフォルトの名無しさんNGNG
↑
何いってんの?
0500495NGNG
>>499
(本に書いてあったのが)
>>494
だったのかもしれません
日本語ヘタレですね鬱
0501デフォルトの名無しさんNGNG
void a(const int *n);
void b(int *n);

aからbを呼び出す時に,そのまま渡したら,constつけろよと言われたので,うっかりしちゃったと思ってつけました











void b(int n);
だったら,文句言われない?
0502デフォルトの名無しさんNGNG
>>501
なにそれ。配列じゃないintをアドレス渡ししてたってこと?
0503デフォルトの名無しさんNGNG
Aではintを変えたいんだけどBは変えなくていいってこと?
0504デフォルトの名無しさんNGNG
>>501
void a(int *n);にすればいいと思うが・・・
0505デフォルトの名無しさんNGNG
>>504
そうだったconstついてたんだ
ネタ?
0506デフォルトの名無しさんNGNG
やれやれ
0507デフォルトの名無しさんNGNG
>>501
どうしてもconstにしたいんだったら、呼び出し時にint *にキャストしろ。

しかしなんのためのconstなんだろ・・
0508デフォルトの名無しさんNGNG
>>507
思い入れのため。
0509デフォルトの名無しさんNGNG
ヘッダの先頭に次の行を追加。
#define const
0510デフォルトの名無しさんNGNG
ひとつのヘッダーファイルにexternを集めて,
全部の.cppファイルでインクルードするのって普通?
0511デフォルトの名無しさんNGNG
追記

変数にexternつけてですね
0512デフォルトの名無しさんNGNG
strncmpとmemcmpの違いってなんですか?
0513デフォルトの名無しさんNGNG
>>512
"a\0b" と "a\0c" が一致するかしないか。
0514デフォルトの名無しさんNGNG
>>510
集めるほどグローバル変数を使わないのが普通。
0515デフォルトの名無しさんNGNG
>>513
strncmpだと一致するけどmemcmpだと一致しないってこと?
0516デフォルトの名無しさんNGNG
>>515
聞いてばかりいないで自分で実際に確かめろ。
0517デフォルトの名無しさんNGNG
> 全部の.cppファイルでインクルードするのって普通?
全然普通じゃない。スレ違い。
0518デフォルトの名無しさんNGNG
>>475
>>472 のこのプログラムの断片では、
true, false が
それぞれ1, 0 ではないのかも。
0519デフォルトの名無しさんNGNG
>>518
ああなるほど...って、もっと嫌じゃん。
0520デフォルトの名無しさん NGNG
データの保存についてなのですが、
for(i=1;i<=n;i++){
  fprintf(fxy,"%f %f %f %f \n",a[i], b[i], c[i], d[i]);
}
みたいにして、a,b,c,dの値がそれぞれエクセルの別の枠に自動的に
入るようにしたいのですけど、どうすればいいでしょうか?

0521デフォルトの名無しさんNGNG
>520
csv形式?
0522デフォルトの名無しさんNGNG
>>520
カンマで区切って書き出して、
エクセルでCSV形式としてインポートすればいいよ
0523520NGNG
レスありがとうございます。
すみませんが、CSV形式というのが良く分からないのですが、
具体的にはどういう風にすれば良いのでしょう?
カンマで区切って書き出すというのが良く分かりませんので
お願いします。
0524デフォルトの名無しさんNGNG
拡張子を.cvsにして、できたファイルをダブルクリックしてみろ。
0525デフォルトの名無しさんNGNG
間違えた。csv。メンゴ。
0526デフォルトの名無しさんNGNG
すっごい基礎であれなんすけど

char *String;
char *stop;
stop = String + strlen( String );

strlenってint返すと思うけどこういうのはどういう意図なんすかね?
0527デフォルトの名無しさんNGNG
for (p = String; p <= stop; ++p)
ってやりたいんだろ。他に解釈しようもないと思うけど。
0528デフォルトの名無しさんNGNG
>>526
Stringの指す文字列の終わりを示すヌル文字、
そのアドレスをstopに入れたいのだと思われ。
その用途は分かりかねるが。
0529デフォルトの名無しさんNGNG
1234567890を1,234,567,890のようにカンマ付けするのに
ベストだと思う方法を教えてください。
0530デフォルトの名無しさんNGNG
>>526
Stringの終端文字(='\0')の位置を調べて、そのアドレスを stopに代入。
つまり、Stringの終了アドレスを求めていると。
0531デフォルトの名無しさんNGNG
>>529
C言語以外の言語を使うのがベスト。なんて答えじゃだめ?
0532デフォルトの名無しさんNGNG
私の使ってる Linux 上の glibc (になるのかな ?)では BIG_ENDIAN, LITTLE_ENDIAN,
BYTE_ORDER がdefine されているので, ソースで使えないのですが,
規格としては, 規格で定められているものをつぶさない限り,
処理系が独自のマクロを提供するのは自由, ということになっているのでしょうか.
0533デフォルトの名無しさんNGNG
ていうか、

char *p;
p = String;
whille(p != '\0'){

/* … */

p++;
}

とかじゃ駄目なんだろうか…
0534デフォルトの名無しさんNGNG
>>529
後ろから3文字ごとにカンマを挿入するだけだろ。
0535デフォルトの名無しさんNGNG
>>532
だめ。だって
while (*p != '\0')
だも〜ん。
0536533NGNG
>>535
そうですね。わたしが馬鹿でした。
ていうかやったら人生終わる…(氏
0537デフォルトの名無しさんNGNG
>>533
開始アドレスと終了アドレスを必要とするライブラリ関数に渡すつもりかもしれない。
0538デフォルトの名無しさんNGNG
>>537
そういう処理だと確かにポインタ演算が一番速いですね。
0539デフォルトの名無しさんNGNG
ああ、なるほどーーー>527

>528,530
わっかりました。でも、
strlen( String);である必要ってあるの?
~~~~~~~~~~~~~~~
ちなみに文字列置換する用途で検索してたら
こんなコードが多くあったもんで。

>533
たぶん。ポイントで終端アドレス知りたいんだとは思いますが。
0540529NGNG
説明不足でした。
整数を表示する際に、3桁毎にカンマ区切りを付けたいとします。
例えば 12345 なら 12,345 と。
それを行うのにベストな方法を教えてください。
単純な除算とstrrevを使った方法は知っているので、出来ればそれ以外を。
0541デフォルトの名無しさんNGNG
> strlenってint返すと思うけど
そうなのか?知らんかった。
0542デフォルトの名無しさんNGNG
size_t?ってつっこみたいの?
0543539NGNG
>539
あ。なんか分かった気がするので取り下げ
0544541NGNG
>>542
ああ!それかもね。
0545デフォルトの名無しさんNGNG
>>532
処理系独自のマクロ一覧がドキュメントに書いてあるはずだよ
ぶつかるのは仕方ないんじゃない
ENDIAN云々はglibcじゃなくてglibのような気もするが
0546デフォルトの名無しさんNGNG
>>540
ベストって、なにを評価してベストなのか?
処理時間なのか、移植性なのか、コードの量なのか?

面倒だったらとりあえずprintfで何とかならないか調べろ。
0547デフォルトの名無しさんNGNG
size_t

BCCの場合、<stddef.h>から辿っていったところ
<_stddef.h>内にある

typedef unsighned int size_t

から、unsighned int
になるっぽいのかな?
コンパイルのオプションで変わるのかもしれんけど。
まあ環境に依存するということなんだろうか。
0548デフォルトの名無しさんNGNG
unsighned?
0549デフォルトの名無しさんNGNG
typo?
0550デフォルトの名無しさんNGNG
>>548
うぇーん、またミスったみたい。
×unsighned
○unsigned
ですた。
もうだめぽ…
0551デフォルトの名無しさんNGNG
size_tがunsignedで迷惑こうむった人の数→
というスレを立てていいですか?
0552デフォルトの名無しさんNGNG
>>510見て気になったのですが、
ひとつのヘッダーファイルに関数のプロトタイプ宣言を集めて、
全部の.cファイルでインクルードするのって普通?

そのヘッダファイルを編集すると、全部の.cをmakeしなおさないと駄目になるような
気がするのですが。
0553デフォルトの名無しさんNGNG
>>552
サイズって自然数であるはずだけど不都合あった?
0554デフォルトの名無しさんNGNG
K&R読み返してみたところ、
「厳密に言えば,size_t は符号なし整数値を作成する」
と書いてあったよ。
これはデータの意味を表す為に
型定義を行ったと考えるべきなんだろうかな。
0555デフォルトの名無しさん NGNG
1<x<2,2<x<3のそれぞれの範囲で関数f(x)が定義されていて
同時に両方の範囲で関数のグラフを表示させることできますでしょうか?
0556デフォルトの名無しさんNGNG
0557デフォルトの名無しさんNGNG
関数へのポインタ?
同時に、って?
0558デフォルトの名無しさんNGNG
551はintを単純にsize_tに置換したクチだろ
0559555NGNG
>>557
1<x<2,2<x<3のそれぞれの範囲のグラフを
両方表示するってことです。
0560デフォルトの名無しさんNGNG
>>560
ええ、どうぞ表示してください。としか言いようがない。
C言語の仕様見れば出来るか出来ないかは自明だと思われ。
0561デフォルトの名無しさんNGNG
>>545
どうもありがとうございます.

ただ BIG_ENDIAN は BIG_ENDIAN だからなあ, 発想が貧しい私には
代わりのいい名前が思い浮かばん ...
0562デフォルトの名無しさんNGNG
>>561
そういう時は、プリフィックス付けれ
0563デフォルトの名無しさんNGNG
>>552
あまり普通では無いと思う。
ただ、コンパイル時間はあまり気にしなくていいと思うけど。
(1万行程度のコードなら数十秒でコンパイルできるし)
0564デフォルトの名無しさんNGNG
>>562
マクロ相手に意味ないのでは.
0565デフォルトの名無しさんNGNG
マクロだとプリフィックス付けても置換されるの?
初耳だ!
0566デフォルトの名無しさんNGNG
>>559
なぜできないと思うの?
0567552NGNG
>>563
あ、やはり普通ではないのでしょうか(あまり、というのが少し気になりますが)。

こちら
ttp://www-watt.mech.eng.osaka-u.ac.jp/~tasai/kadai4/node6.html
に書かれているように、プロトタイプ宣言はヘッダファイルに書け、
というのを何度か見掛けたことがあったので、質問しました。

ただ、たしかに
ファイル間でプロトタイプ宣言に矛盾があっても、
ファイル毎にプロトタイプ宣言を直書きしてると
コンパイラは矛盾を見付けられないなぁ、
と、今ちょっと試してみて思いました。
こういうのが心配なときはヘッダファイルに書いちゃう方が良いんでしょうか…
0568デフォルトの名無しさんNGNG
>>565
あうち, 置換されなかった.
thx
0569デフォルトの名無しさんNGNG
>>567
モジュール毎に分けて、ヘッダでプロトタイプ宣言しる。
0570デフォルトの名無しさんNGNG
>>563
数十秒はかかりすぎー
0571555NGNG
>>566
できるなら、やり方教えてください。
0572デフォルトの名無しさんNGNG
>>570
いや、自分のPCだと10秒程度なんだけど、
もっと遅いマシンも現役かなと。開発用マシンなら特に。
0573デフォルトの名無しさんNGNG
>>571
「書籍も買えない貧乏人は麦を食え」ってことわざ知ってる?
0574デフォルトの名無しさんNGNG
米を麦に買えて節約しろと
0575デフォルトの名無しさんNGNG
直線 m があって任意の座標 A があるとすると、
点Aが直線mの右側にあると判定する最もよいアルゴリズムってどんなのですか。
0576デフォルトの名無しさんNGNG
スレ違い質問が多いなー
0577デフォルトの名無しさんNGNG

どなたか>>486教えてください
お願いします
0578デフォルトの名無しさんNGNG
>>577
式の評価単位で同じ変数に二度代入が行われると
常に未定義か不定かだったと思う
0579デフォルトの名無しさんNGNG
>>577
アセンブラで書ければ理解できると思います。
この際、アセンブラに挑戦してみては?
多くの疑問が多々解決しますよ。
0580デフォルトの名無しさんNGNG
a += f() は
a = a+f() と同じさ。
0581デフォルトの名無しさんNGNG
>>577
答え: はい。
0582デフォルトの名無しさんNGNG
>>580
結局はコンパイラが同じにしちゃうんですよね。
0583デフォルトの名無しさんNGNG
int a, b;
int f() { ++a; return a; }
int g() { ++b; return b; }
main(){
 a += f(); // 1
 b = b+g(); // 2
}
1と2で結果が変わるかってこと?
多分未定義(コンパイラによって結果が変わる)
仮に定義されていたとして、こんな書き方はやめて
0584デフォルトの名無しさんNGNG
>>577
�@未定義。
�AE1=E1+E2とE1+=E2の違いは、後者はE1が一度だけ評価されるということのみ。
 したがって、E1が副作用を持たなければ全く同じ。
 いずれにしても評価順は不定。
0585デフォルトの名無しさんNGNG
>>583
「未定義」は「コンパイラによって結果が変わる」という意味ではないよ。
0586デフォルトの名無しさんNGNG
先制!
typedef enum{
…
hoge
foo
bar
…
} hogehoge
とかいう構文の意味がわかりません!中のメンバの型宣言とか見当たんないし。
0587デフォルトの名無しさんNGNG
>>586
enumだよ・・・
0588デフォルトの名無しさんNGNG
>>585
未定義 == 定義されていない
コンパイラの製作者が独自の実装を行って良い。
という意味ではないのですか?

VCは、デバッグオプションでも変わるとかはナシですよ。
0589デフォルトの名無しさんNGNG
>>586
anonymous enumをその場でtypedefしてるだけ。
0590デフォルトの名無しさんNGNG
ファイルを開くのに失敗します。

FILE *fp3;

fp3= fopen(Name,"r");
if (fp3 == NULL) {
printf("ファイルが開けませんでした");
exit (1);
}

どこか間違っているでしょうか?
どなたかご教授願います。
0591デフォルトの名無しさんNGNG
>>590
ファイルがない。
Nameが指す文字列を確認しろ。
0592586NGNG
あ、猫にきちんと書いてありますな。
皆さん乙〜
0593デフォルトの名無しさんNGNG
>>588
未定義==言語仕様にない==動作保証なし
実装依存==正しく実行され処理系ごと結果が定義される
不定==正しく実行されるが結果が特定できない
0594デフォルトの名無しさんNGNG
>>591
ファイル名を確認したらおかしな文字列が入っていました。
無事修正しました。
ありがとうございます。
0595デフォルトの名無しさんNGNG
>>586
平気な顔して機種依存文字使うアホです。無視するが吉。
0596デフォルトの名無しさんNGNG
未定義==Cドライブフォーマット可能
実装依存==表示が英語と日本語で変わるかも
不定== printf("%d%d", rand(), rand() );

ってことですか?
じゃ、俺は不定といわなきゃならなかった訳だ
勉強になりました。
0597デフォルトの名無しさんNGNG
未定義のせいでパソコンが火を噴きマスタ。
0598586NGNG
>>595
(´・ё・`)マァマァ
0599デフォルトの名無しさんNGNG
機種依存文字? ひょっとして俺の目は節穴なのかな?
0600586NGNG
>>599
↓これのことではないですか?
…
0601デフォルトの名無しさんNGNG
DirectXいじるようになって
やっとenumの意味をしったトロい漏れ
0602デフォルトの名無しさんNGNG
これ、トリップ変換ロジックのソースらしいんだが、
これでやっていることをCプログラマに分かるように説明してくれ。

$salt = substr(substr($key, 1, 2) . "H.", 0, 2);
$salt =~ tr/:;<=>?\@[\\]^_`/ABCDEFGabcdef/;
$salt =~ s/[^\.\/0-9A-Za-z]/\./g;
$trip = substr(crypt($key, $salt), -8);
0603デフォルトの名無しさんNGNG
>>602
ハア?
0604デフォルトの名無しさんNGNG
それ、perlやろ?
0605デフォルトの名無しさんNGNG
>>603
(・∀・∀・)マァマァ、寛容な精神で。。。
0606デフォルトの名無しさんNGNG
ttp://ghanyan.monazilla.org/lgpl/des.c.txt
の get_2ch_trip( const char * pw ) でも見とけ。
0607デフォルトの名無しさんNGNG
.NETは?
0608デフォルトの名無しさんNGNG
>>602
perl勉強汁。

cryptのkeyからsaltを作る
変換
置換
cryptから後ろ8文字を出す。
0609デフォルトの名無しさんNGNG
http://blues.eurovia.es/mirrors/3.14159265358979323846264338327950288419716939937510582097.org/
円周率ならここつかってね
0610デフォルトの名無しさんNGNG
>>600
え?三点リーダって機種依存文字では無いと思うのですが…
0611デフォルトの名無しさんNGNG
2バイトコードのことだよ。
0612デフォルトの名無しさんNGNG
>602
1.文字列の最後に"H."を追加し(文字列が"Aホ"なら"AホH.")
  2文字目と3文字目を取り出す(上の例なら"ホH")
2.下記にしたがって文字を置換
   文字コード≦0x2d '.'
   文字コード≦0x39 そのまま
   文字コード≦0x40 コード+7
   文字コード≦0x5a そのまま
   文字コード≦0x60 コード+6
   文字コード≦0x7a そのまま
   文字コード≧0x7b '.'
  (上の例なら".H")
3.作成したSltでCrypt文字列を作成し8文字を取り出す。
0613デフォルトの名無しさんNGNG
つーか2ちゃんのセキュリティー破ってどうする
0614デフォルトの名無しさんNGNG
if( x >= 0 && x <= SIZE_X && y >= 0 && y <= SIZE_Y )
は,この範囲内にあるならという条件です。

この範囲外のときは,という条件の場合
if( !( x >= 0 && x <= SIZE_X && y >= 0 && y <= SIZE_Y) )
を使いますか?

それとも4つの条件が否定になるように書いていきますか?
4つの条件が否定になるように書くと,全部の条件を調べなくてもよくなりますが(場合によって),
可読性が悪くなりますよね(コメントで補えますけど)
0615デフォルトの名無しさんNGNG
この範囲外のときは,という条件の場合
if( x >= 0 && x <= SIZE_X && y >= 0 && y <= SIZE_Y )
;
else{
,,,
}
と書く香具師もいるな。
0616デフォルトの名無しさんNGNG
>>614
可読性>マクロ使えばすむ話
0617デフォルトの名無しさんNGNG
if((x < 0) || (x > SIZE_X) || (y < 0) || (y > SIZE_Y))
特に可読性が損なわれるとは思わないけどなぁ。
0618デフォルトの名無しさんNGNG
>614
俺はこう書く
( 0 <= x && x <= SIZE_X ) && ( 0 <= y && y <= SIZE_Y )
否定の場合は状況によるが
!(( 0 <= x && x <= SIZE_X ) && ( 0 <= y && y <= SIZE_Y ))
こんな感じかな。好き好きだからどう書いてもいいじゃない?
0619デフォルトの名無しさんNGNG
>>617
一つだけ見てもわからん。
書き比べてみろ。
0620デフォルトの名無しさんNGNG
未満でよければ・・・
if(x/SIZE_x==0 && y_SIZE_y==0)でも可。
if(x/SIZE_x!=0 || y_SIZE_y!=0)逆
0621デフォルトの名無しさんNGNG
#define unless( x ) if( x ){}else
0622デフォルトの名無しさんNGNG
>>619
???
0623デフォルトの名無しさんNGNG
>>621
elseはどう置くよ?
0624訂正NGNG
>>620間違えた。
「y_」の2ヶ所「y/」ね
0625デフォルトの名無しさんNGNG
>>623
>>621の使い方。

unless(.....){
  範囲外の処理;
}
0626デフォルトの名無しさんNGNG
>620
x=-1
SIZE_X=2
の場合は?
0627デフォルトの名無しさんNGNG
>>625
unlessという関数だと見間違う可能性があるので却下。
0628デフォルトの名無しさんNGNG
>>625
少なくともperlではunlessにもelseが置ける。
よって混乱する可能性大
0629デフォルトの名無しさんNGNG
if( (unsigned)x > SIZE_X && (unsigned)y > SIZE_Y )
ってのはボツなのか?
unsignedの部分は適当な符号無しキャストに
読み換えてくれたまへ。
0630629NGNG
あ、上の && は || の間違いね。
0631デフォルトの名無しさんNGNG
>629
視認性という観点から却下。
0632デフォルトの名無しさんNGNG
> 視認性
車の運転? (ププッ
0633デフォルトの名無しさんNGNG
イベント通知やコールバック関数の使い方等に関する分りやすい文献または
インターネット上のサイトなどありませんでしょうか?
0634デフォルトの名無しさんNGNG
>>632
視認性の重要さをわかってないと言うことは、まだまだ厨ですな(W
0635デフォルトの名無しさんNGNG
#define unless(x) if(!(x))じゃだめなの?
0636デフォルトの名無しさんNGNG
>>633
まず、環境を書け。
0637デフォルトの名無しさんNGNG
>>636
スタンダードな方法でお願いします!
0638デフォルトの名無しさんNGNG
ネタは無視。
0639デフォルトの名無しさんNGNG
>>638
ネタじゃないっす。ちなみに637は私ではないです。

>>636
WIN32で結構です。

というか参考書とかに体系的にこのあたりが解説されてるのがなくて、、、
よろしくお願いします。
0640デフォルトの名無しさんNGNG
ここで聞くあたりネタかと。
0641デフォルトの名無しさんNGNG
> 視認性の
プッ
> まだまだ厨ですな(W
ププッ

スレ違い。蛍光色の服でも着てろ。
0642デフォルトの名無しさんNGNG
可読性
0643デフォルトの名無しさんNGNG
>>639
関数ポインタに付いてよく読めばわかるんじゃない?
0644デフォルトの名無しさんNGNG
>>639
マジレスしてやる。一番ためになるサイトはここ。
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50
そういう類の質問では最初から環境をかけ。
そしてスレが違うことに気づけ。以後は無視する。
0645デフォルトの名無しさんNGNG
関数ポインタだってさ(ププッ
0646デフォルトの名無しさんNGNG
>>644
ありがとうございます。逝ってきます。
0647デフォルトの名無しさんNGNG
汗とかアルゴリズムの質問もここでする人がいるね。
0648デフォルトの名無しさんNGNG
>>645はネタ。
0649デフォルトの名無しさんNGNG
ここの部分がか?
>ププッ

0650デフォルトの名無しさんNGNG
if(fread(&(ID_p->ID_data), sizeof(double), 1, ID_file) != 1){
exit(1);}

バイナリモードでファイルから21ビットという半端なビット数を収得した後、
24ビットに変換して格納という動作を繰り返したいのですが、
sizeof(double)の部分はどのように変えたらよいのでしょうか?
どなたかご教授願います。
0651デフォルトの名無しさんNGNG
FILE*を包括するバッファ付きのbitioFILEとか作っておいて
それ用の関数群を作るのが簡単かな
0652デフォルトの名無しさんNGNG
フリーのBCD演算ライブラリ下さい。
BSDライセンスが良いです。

てか、何故に標準ライブラリに入らない。BCD演算。
0653デフォルトの名無しさんNGNG
>>652
作ってる奴らが興味ないから。
0654デフォルトの名無しさんNGNG
>>653
だよね〜。。。
作れる奴は簡単に作る。作れない奴はまたったく駄目(俺)。
事務アプリ屋が、泣いてるぞ―――。
IntelのCPUには、BCD演算機まで付いてるのにdubleで演算して適当な
ところで四捨五入は悲しすぎると思う。

だれか、俺に作り方教えてくれーー。
できれば、IntelのBCD演算機使いたい。
0655デフォルトの名無しさんNGNG
>IntelのCPUには、BCD演算機まで付いてるのにdubleで演算して適当な

演算モード変えれ
0656デフォルトの名無しさんNGNG
>>655
もちっと詳しく。しくしく。馬鹿だから俺。
0657デフォルトの名無しさんNGNG
DelphiならBCD型があるのにね。ププッ
0658デフォルトの名無しさんNGNG
dub

なんとなく仮面ライダー
0659デフォルトの名無しさんNGNG
厨の俺にはBCD演算がどんな時に必要になるのか
よくわからない。
型の相互変換だけじゃだめなのかな?
0660デフォルトの名無しさんNGNG
お好みの十進の精度で演算できるわけさ
0661659NGNG
>>660
精度 ですか。
どうやら俺がBCDのことをよくわかってないだけのようです。
逝ってきます。
0662デフォルトの名無しさんNGNG
>>661
いやね、float型だと丸め誤差とか考えなきゃいかんでしょ。
下手すると金利計算とかヤヴァイ事になっちゃうからね。
0663659NGNG
>>662
2進整数を固定小数点数として扱うのじゃいけないん
でしょうか?
やっぱり俺、逝くべきでしょうか。
0664デフォルトの名無しさんNGNG
有効桁数が10桁や12桁程度なら、doubleでも問題ないように
思うのですが、間違ってる?
BCDでも、結局一番下の桁より下は丸めを行わないといけないし。
0665デフォルトの名無しさんNGNG
>>664
3.5が3.5で保持できるなら
0666デフォルトの名無しさんNGNG
>>663
じゃあ、2進数で0.1(D)を表現してみて。

0.25(D) → 0.01(B)

こんな感じで。
0667デフォルトの名無しさんNGNG
CPUのBCD演算機能を使いたいって人いるけど、
Cで多倍長整数演算ルーチン書いたより速くなるのかな?
俺も検証したことはないけど、なんとなくCPUのBCD演算命令は
遅そうなイメージがある。
0668659NGNG
>666
10000
くらいでいかがでしょう?
0669デフォルトの名無しさんNGNG
>>667
(゚∀゚)だからそこは精度と速度のトレードオフかと。
0670デフォルトの名無しさんNGNG
>>668
……(^^;
0671659NGNG
>>670
やっぱり俺は逝くべきなんですね。
要するに小数点以下の桁数をあらかじめ決めておく
(または構造体にして精度も変数で持っておく)
というありきたりな考えなんですが...
0672デフォルトの名無しさんNGNG
>>669
多倍長整数演算だったら、BCDと精度は変わらないでしょう。
0673 NGNG
すいません
テキストボックスで1とか2とか数値がはいってるのですが
メモリではどういう形式で格納されてるのでしょうか?

&h01 とかではないと思うのですが教えてもらえないでしょうか?

文字コード 1のアスキーコードが49 それのEBCDICで&hC9かなと思ったのですが
あってるでしょうか?

0674デフォルトの名無しさんNGNG
>>673
スレ違い。
0675デフォルトの名無しさんNGNG
>>673
Winならアスキーだよ。
0676 NGNG
>>675
ありがとうございました
おかげさまで解決しました
0677デフォルトの名無しさんNGNG
666 :デフォルトの名無しさん :02/09/17 14:00
>>663
じゃあ、2進数で0.1(D)を表現してみて。

668 :659 :02/09/17 14:12
>666
10000
くらいでいかがでしょう?

671 :659 :02/09/17 14:23
>>670
やっぱり俺は逝くべきなんですね。
要するに小数点以下の桁数をあらかじめ決めておく


??何がしたいんだ??
何か勘違いをしていないか
それとも確信犯で特殊な乗数を使っているのか?
0678デフォルトの名無しさんNGNG
>>677
まあまあ、マターリいこうよ。

>>659
2進数の少数部分の表し方は分かっている?
それともネタ?
0679659NGNG
>>677
多分勘違いしているんだと思います。

>>678
> 2進数の少数部分の表し方は分かっている?
分かりません。
少数部分という言葉自体が初耳です。
0680659NGNG
結局、前に書いているように、2進整数を固定小数点数として
扱うのではまずいのか?
ということなんですが。
0681デフォルトの名無しさんNGNG
 ↓まあまあ、マターリいこうよ。
0682デフォルトの名無しさんNGNG
>分かりません。
>少数部分という言葉自体が初耳です。

面白い!!もちろん喧嘩売ってるんだよね!
0683デフォルトの名無しさんNGNG
チンカスでも分かるC言語講座ってないですか?
猫でもわかるプログラミングというサイトを見たのですが、
さっぱりです。難しすぎる。
0684デフォルトの名無しさんNGNG
>>680
0.1(10)と10000(2)は160倍(10100000(2))倍違うわけだから
単なるシフトにはならないYO!!
0685デフォルトの名無しさんNGNG
>>683
猫でもわかるは、よく初心者にすすめられるけど、実際は
ある程度わかってる人間がサンプル集として使うのが正解だと思う。
0686デフォルトの名無しさんNGNG
>>683
マジレスさせてもらうと・・・
他のプログラミング言語を勉強して使えるようになった物ある?
まったくプログラムしたことないなら、他の言語を勉強してみると良い。
それからC言語を勉強すると、結構理解できたりする。

簡単なのだと、PerlとかHSPとか。
ちなみに、俺は初めて言語を勉強したのはPerlですた。
0687659NGNG
>>682
いえ、そんな気はありませんし、こんなところで
喧嘩しても何の得にもならないと思います。
少数部分というのは小数部分で良かったんでしょうか。
それなら多分わかると思います。
お気にさわったようですみません。

>>684
私が書いたのは十進表記での 10000 のことです。
つまり16進で表すなら 2710
2進で表すなら 10011100010000 です。
0688デフォルトの名無しさんNGNG
Webで優秀なチュートリアルは少ないよ。
ケチらずに本を買ったほうがいい。
0689デフォルトの名無しさんNGNG
>>679
とりあえず、こんなんでどうかな?

http://tele00.suzuka-u.ac.jp/!education/1998/Part2/root/Root/1computer/13infomotion/kisuhou/syousu.htm
0690デフォルトの名無しさんNGNG
>>683
Perlはどうなんだろ・・・
自分、学生なんだけどC、Javaとかのほうが周りでやってる人いるし
入門書とかも豊富なCとかの方がいいような
基本的な制御構文使ってやるプログラムだったら、特にむずかしいこと
なかったよ
0691デフォルトの名無しさんNGNG
>>688
だよね。
FAQなら役立つのが>>1にあるんだけど。

Cなら図書館にもよい本があるかな?Javaのように比較的新しい言語だと最近の本が置かれていなくてだめだけど。
0692デフォルトの名無しさんNGNG
>>690
Perlは、すげー楽だぞ〜。
$を文字の先頭におくだけで変数になるし、
変数の型ないから、文字入れても数字入れてもいいし、
変数は、何もしなくても可変長だし。

まず掲示板作って喜ぶ。
もうちょっと勉強してライブラリとか使えるようになったら、
ダウンローダーとか作って喜ぶ。
そして、コマンドラインが好きになってくる(w
それからCを勉強してもいいと思うけど。
なぜか、嫌われてるけどねー。PerlとかルビーとかHSPとか。
0693659NGNG
>>689
ありがとうございます。
読んでみましたがそれは一般に用いられている
浮動小数点形式の考え方ではないでしょうか?
この考え方についてはわかっているつもりです。
そうでなく、整数を固定小数点で扱うわけにはいかないの?
ということなんですが。
0694デフォルトの名無しさんNGNG
>>679
×少数
○小数
人が変換ミスしたからって揚げ足取らない(^^;
0695659NGNG
ちょっと改めて聞いてみるんですが、BCD
0696デフォルトの名無しさんNGNG
>>693
>整数を固定小数点で扱う
だからBCD演算を使用するって事でしょう(^^;
0697デフォルトの名無しさんNGNG
>>693
普通固定小数点を使うときは小数点のシフトだけですむような
倍数で使う。
0698659NGNG
>>696
ありがとうございます。
やっぱり多分自分がわかってないと思うので、
BCDについて勉強してから出直したいと思います。
このまんまじゃ荒らし同然なので。

BCDって2進化10進法のことで合ってますよね?
0699デフォルトの名無しさんNGNG
>>698
BCDってなにかと思ったらあれのことか・・・
拡張2進化10進符号のEBCDICなら知っている。
0700デフォルトの名無しさんNGNG
700げっと
えびしでぃっくなんて読まないでください。
0701659NGNG
>>697
それだと小数の誤差の問題があるので、
整数を固定小数点で扱うわけにはいかないの?
ということだったんです。
0702デフォルトの名無しさんNGNG
BCD使用して有理数を扱うとすれば、こうなるのかな?
・正負のフラグ
・必要なだけの桁と対応する数値データ
・小数点の位置を示すデータ
以上を構造体にすると。
0703デフォルトの名無しさんNGNG
>>701
加減はともかく乗除のコストが莫大になる
だから少なくともIntelのCPUですることではない
それからBCDを使うのは十進精度で切り出せるからで
この話とはあまり関係ない
0704659NGNG
>>703
ありがとうございます。

> それからBCDを使うのは十進精度で切り出せるからで
> この話とはあまり関係ない
この辺がよくわかってないんだと思います。
では逝ってきます。
0705デフォルトの名無しさんNGNG
>>690
おれは
N88-Basic → HTML → JavaScript → Perl(CGI) → C(現在進行形)
N88-Basic以外は
webでCGIなどとして使えるというw
0706デフォルトの名無しさんNGNG
>>705
しかしマスターはできていない罠w
0707 NGNG
マイクロソフトに入りたい・・・
Cできてもあかんよね?
UNIX系覚えるか
0708デフォルトの名無しさんNGNG
条件分岐や関数呼び出しをできるだけ押さえた方が実行速度があがるんですか?
0709デフォルトの名無しさんNGNG
>>708
実際にやってみろ。
0710デフォルトの名無しさんNGNG
スタックを使うことによるコストが
解っていないやつばかりだな。
0711デフォルトの名無しさんNGNG
>>710
> スタックを使うことによるコスト
キャッシュミスヒットによるコストが解っていない人よりましだろう。
0712デフォルトの名無しさんNGNG
>>708
int main(void){return 0}/*はやい*/
int main(void){return main();}/*おわらない*/
0713デフォルトの名無しさんNGNG
> スタックを使うことによるコストが
> 解っていないやつばかりだな。

プッ
笑えるネタGet!!
0714デフォルトの名無しさんNGNG
>>710-711
ここにいるヤシらのつくるものなら、そこまで気にする必要は無い。
0715デフォルトの名無しさんNGNG
>>710
> スタックを使うことによるコスト
( ´,_ゝ`)プッ
0716デフォルトの名無しさんNGNG
>>710-711
ジジイかお前ら…
0717デフォルトの名無しさんNGNG
void a( void )
{
char Data[20][4]={
{1,2,3,4},
{1,2,3,4},
{1,2,3,4},
{1,2,3,4},
{1,2,3,4},
{1,2,3,4},
{1,2,3,4},
{1,2,3,4},
{1,2,3,4},
{1,2,3,4},
{1,2,3,4},
{1,2,3,4}
・・・
}

のように関数の初めに初期化している?
大きすぎると,内部変数ではあかんみたいだけど,これぐらいのおおきさでは?
行が増えて見づらいしね。
}
0718デフォルトの名無しさんNGNG
すまぬ
0719デフォルトの名無しさんNGNG
>>710
じゃあもう自動変数も関数も使わないことにします。
0720デフォルトの名無しさんNGNG
>>717
> 大きすぎると,内部変数ではあかんみたいだけど
そういう場合は関数の外にだしてstaticで修飾しろ、
static変数ならばファイル内でのみ参照でき、別ファイルからでは見えない。
変更してはいけないテーブルならば、おまけにconstも付けとけ
あとは内部変数と重なるような一般的な名前は避けるようにしとけばOK
static const char Data[][4]={
  {1,2,3,4},
  (略)
  {1,2,3,4},
};

void a( void )
{
  ...
}
0721デフォルトの名無しさんNGNG
>717
char Data[20][4];
for(j=0; j<20; j++)
  for(i=0; i<4; i++)
    Data[j][i]=i+1;
で良いじゃ〜んと、少し本質からずれていそうなところを突っ込んでみる。
0722デフォルトの名無しさんNGNG
static変数をexport
なんか変な気分
0723デフォルトの名無しさんNGNG
Pro*Cと、zlibを連携さたいのですが、
Makeファイルをどのように修正したらいいかわからなくて困っています

助けてきぼんぬ

使ってるのは、Oracle for Linux9i 付属の demo_proc.mk を使っています・・・

Makefileてか、Makefaileだなこりゃ。。。鬱
0724デフォルトの名無しさんNGNG
メイクファイルと言えば "シンボリックターゲット" 構文って
標準的ですか? (BCCのmakeの独自拡張?)
0725デフォルトの名無しさんNGNG
標準入力から読み込まれたテキストの,最初の桁が"#"である行だけを表示する.

fileout < ~/.cshrc
というコマンドの出力結果が
grep ^# < ~/.cshrcの出力結果と同じになるようなプログラム.
を作りたいんですが、今一つ分かりません。誰か教えてください…。
0726デフォルトの名無しさんNGNG
>>725
一文字ずつ読み込んで、初めの一文字か改行文字の後に読み込んだ文字が'#'だったら改行文字まで表示すれば?
0727デフォルトの名無しさんNGNG
>725

fgets で一行づつ読み込むのも手ですね。
テキストファイルが前提ですが
0728725NGNG
なるほど…。
0729デフォルトの名無しさんNGNG
>>725
char buf[BUFSIZ];
while(fgets(buf, sizeof buf, stdin) != NULL)
  if(buf[0] == '#')
    fputs(buf, stdout);
0730デフォルトの名無しさんNGNG
"MUNE"
って感じにダブルクォーテーションで囲まれてる部分を
#define MUNE MOMIMOMI
で痴漢したいんだけど、これは無理だよね。
でもどうしても実現したいときはどうすればいいかな?
0731デフォルトの名無しさんNGNG
>>730
perl, sed, 手持ちのエディタの置換処理
どれでも好きな物を使え
0732デフォルトの名無しさんNGNG
>>720
> そういう場合は関数の外にだして

なんでわざわざ出すの?
0733デフォルトの名無しさんNGNG
フロッピーやCD−ROMドライブ等のハードウェアにアクセスする方法を教えてください。
0734デフォルトの名無しさんNGNG
>>721
ごめん
本当は,座標とかランダムにはいっ取ります
0735デフォルトの名無しさんNGNG
最近C始めた初心者ですが入力された数字のみ、判定する
関数ってあるんですか?
数字のみ判定させたいのですがそこに文字を入れると暴走が
はじまっちゃうんですよね。
ご教授願います。
0736デフォルトの名無しさんNGNG
>>735
スレの削除依頼はちゃんとだした?
0737デフォルトの名無しさんNGNG
今だしてます。
0738デフォルトの名無しさんNGNG
むこうで素手に答え出てたけど。
0739デフォルトの名無しさんNGNG
>>735 = >>737のが何で暴走したか知りたくない?
0740デフォルトの名無しさんNGNG
>>739
なんでとわ?
0741デフォルトの名無しさんNGNG
>>740
だって、マッチングの誤りなら結果でないだけでしょ
終了条件書かなかったんじゃないかな!=NULL

0742デフォルトの名無しさんNGNG
>>741
詳しく書くとswitch使ったときにcase1から4までとdefaultつくって
そのとき入力したものが数字ではなく文字だった場合に暴走が始まる。
0743741NGNG
>>742
おぉアリガトン、やってみます
0744デフォルトの名無しさんNGNG
お願いします。
0745デフォルトの名無しさんNGNG
>>717
>>734
はい、それは何となくわかりますが、突っ込んで見ました。
以下の様に1行にいくつか書いても良いとは思うのですが、
他の方々はどうなのでしょうか?
void a( void ){
char Data[20][4]={
{1,2,3,4},{1,3,6,4},{2,2,9,4},{5,2,3,8},
{3,2,8,4},{0,2,3,9},{3,8,3,4},{7,2,6,4},
{1,4,3,1},{1,7,2,4},{3,2,3,1},{5,2,3,9},
・・・
}
0746デフォルトの名無しさんNGNG
>>745
外部ファイルに持たせて実行時に読み込ませるか、データの定義だけ
入ったヘッダファイル作る(or 自動生成)かどちらかにしてる。

関数内にデータ定義入れるとメンテナンス大変そうだし。
0747デフォルトの名無しさんNGNG
>>745
char buf[BUFSIZ];
printf("char Data[20][4]={\n");
while(fgets(buf, sizeof buf, stdin) != NULL) {
  buf[strlen(buf) - 1] = '\0'; // '\n'を取っ払う処理
  printf("{%s},\n", buf);
}
printf("};\n");
ほれ、4×20の数値データのみからなるcsvから2次元配列を作るソースだ
ファイルに入出力をしない理由はパイプを使ってgrep, sortなどの
他のツール群とも併用できるためだ。

決してファイルのopen/closeが面倒な上にエラーチェックしないとマズイなぁとか
ファイル名をコマンド引数で渡すと引数チェックもしなきゃいけないとか
だったらそんな処理はしないことにしようとか思ってサボってるわけではない。
0748デフォルトの名無しさんNGNG
> だったらそんな処理はしないことにしようとか思ってサボってるわけではない。
747のコードでさえエラーチェックをサボってるくらいだから
どっちでも変わらん罠。
0749デフォルトの名無しさんNGNG
for(unsigned i = 1; i >= 0; i--) { }

無限ループするのは何で?
0750デフォルトの名無しさんNGNG
>>749
unsigned intは 0未満の値をとらない。
0751デフォルトの名無しさんNGNG
標準ライブラリ関数strstrで質問です。
本の例題等でよく見る文です。

void TestStrStr(void)
{
char *s1 = "abcdef";
char *s2 = "de";
char *cp;

cp = StrStr(s1, s2);
printf("'%s'の中に現れる'%s'という文字列は%d文字目にある.\n", s1, s2, cp - s1 + 1);
}

strstr()が該当する文字列の先頭部分のポインタを返すのはわかるのですが、
一番最後の「cp - s1 + 1」を実行すると、s1の中のs2部分が何文字目から始まるかが
わかるのは何ででしょうか?
アドレスが格納されたcpから、s1を引いて1を足すことに何の意味があるのか。
かなりヘボヘボな質問ですが、うまく理解できずにもどかしい思いをしております。
0752デフォルトの名無しさんNGNG
算数の問題とちゃう
abcdef
012345
de
34
3-0+1=4
0753デフォルトの名無しさんNGNG
>>751
アドレス同士で引き算できるって事を理解してないんじゃないの?
同じ型どうしのアドレスからアドレスを引くと、何要素分離れているかという意味になる。
0754デフォルトの名無しさんNGNG
time_t型をstruct tm型に変換する関数はありますが、
逆にstruct tm型をtime_t型に変換する関数ってあるんでしょうか。

日付を手動で入力してtime_t型に入れたいんです。
0755デフォルトの名無しさんNGNG
mktime()がそんな感じだったと思う。

つーか、time.hを読めばあたりがつけられるだろうが。
なぜしない?
0756この板始まって以来の房NGNG
おまいら!
VC++で動く「主成分分析」プログラムをうpしれ!
ソース丸ごとキボンヌ!

俺の会社員現役の姿を見続けていたいでしょ?
やべーよあと期限三日でクビだよ!(たぶん)
たすけて〜
0757デフォルトの名無しさんNGNG
( ゚д゚)ポカーン
0758デフォルトの名無しさんNGNG
>>755
ありがとうございます。
そうか、hファイルを読むという方法もあったんですね。
今度困ったらやってみようと思います。
0759デフォルトの名無しさんNGNG
>456
正規表現で置換しろ
0760デフォルトの名無しさんNGNG
性器表現で痴漢するのか。
0761デフォルトの名無しさんNGNG
>>760
警察署の前でおまいの気持ちを性器で表現して来い
0762デフォルトの名無しさんNGNG
http://www.naitai.co.jp/ntn/syupan/nspo/
0763756NGNG
サンクス
なんとかできたぜい。
首がつながったよ。
あと半年はねばれるかな
0764デフォルトの名無しさんNGNG
>>749
>>496-497
0765デフォルトの名無しさんNGNG
ごめんなさい。質問です。

C言語からUNIXコマンドを使用したい場合はどうすればいいのでしょう?
ちなみに、いまファイル添付をし、メール配送しようとしているのですが
Cではどのようにするのがベストなのでしょうか。。。
0766デフォルトの名無しさんNGNG
>>765
UNIXコマンドを起動するのは system関数。

メイル云々は別プログラムにやってもらったほうが楽だと思う。
(どのプログラムがいいかはよく知らないけど)
0767デフォルトの名無しさんNGNG
>>765
UNIXならpopenがいいかも?
0768デフォルトの名無しさんNGNG
>>766
その別プログラムってのがUNIXコマンドじゃないの?
0769765NGNG
みなさまどうもです。

メールなのですが、コマンドでできれば1番いいと思うのですが
コマンドがわかりません。。。

もうスレ違いですね。すみません。
ありがとうございました。
0770デフォルトの名無しさんNGNG
sendmail?
0771765NGNG
>>770
sendmailは、suしなくてもできるんでしょうか。。。
0772デフォルトの名無しさんNGNG
http://www.linux.or.jp/JM/html/sendmail/man8/sendmail.8.html
0773初心者NGNG
main()
{
unsigned int x=-1;
printf("%d\n",x);
printf("%u\n",x);
}
結果
-1
4294967295
main()
{
int x=-1;
printf("%d\n",x);
printf("%u\n",x);
}
結果
-1
4294967295
これだったら
unsigned
の意味がよくわからないのですが
だれか教えてください
0774デフォルトの名無しさんNGNG
>>773
x/2 とかやってみたら違いが分かると思うよ。
0775デフォルトの名無しさんNGNG
>>773
もう一度、初心者本からやり直した方がいいよ。

・この場合、unisgned を付けても付けなくても、x のビットパターン(内部表現)は同じ。
・printfの%d,%uは変数の型は見ない。
・if(x<0)で比べてみな
0776初心者NGNG
x/2とか
x>>1
とかやったらもう全然意味が分からない
一貫性がないというかモヤモヤしたかんじ
詳しい説明があるサイトとかないですかね?
0777デフォルトの名無しさんNGNG
>>776
http://www2.tokai.or.jp/yosshy/2nohosu.htm
0778初心者NGNG
>>777
ありがとうございます
見ます
0779デフォルトの名無しさんNGNG
printf("%d",x);
とかにある
%っていうもののあとにある
d,x,o,gとか色々ありますが
それの一覧みたいなのが
あるサイトとかないですかね?
%gってなんだろう
0780デフォルトの名無しさんNGNG
>>779 「manpage printf」で検索すると出るよ
%g は %f の代わりによく使う、小数点以下の余計なゼロの割愛
0781デフォルトの名無しさんNGNG
そのものズバリのページ
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/printf.3.html
0782デフォルトの名無しさんNGNG
>>781
おーどーもありがとうございます
0783デフォルトの名無しさんNGNG
デヴァッグってなんか迫力ある。どうでもいいけど
http://www.google.com/search?hl=ja&inlang=ja&ie=Shift_JIS&q=%83f%83%94%83@%83b%83O&lr=
0784デフォルトの名無しさんNGNG
http://www9.plala.or.jp/sgwr-t/c/sec01.html
> C言語は、(中略)AT&Tベル研究所のカーニハンとリッチーによって開発された

??????
開発したのはリッチーだけですよね?
0785デフォルトの名無しさんNGNG
mallocやfreeは俺の能力じゃ作れないから、既存のmalloc,freeを使ってreallocを自作してみようと挑戦・・・・
しまった。元のメモリー領域のサイズを得るすべがない(;´Д`)
0786デフォルトの名無しさんNGNG
先頭にサイズを埋め込んどくとか、割り当てたアドレスごとに表でも作ったら?
0787デフォルトの名無しさんNGNG
>>785
> mallocやfreeは俺の能力じゃ作れないから
K&Rに実装例が載っている。
0788デフォルトの名無しさんNGNG
fread(&(p->data), 8, 1, file)で16進の値「AAAAAAAA」をとりこんで
test = (p->data);とtestに値を代入した時に

Answer = 0xAAAAA << 2;のような
シフト演算や足し算をtestに大してすることはできないのでしょうか?
0789デフォルトの名無しさんNGNG
>>788
testとかp->dataの型は?
0790デフォルトの名無しさんNGNG
おっしゃる意味が全然わからん。
freadで文字列をバッファに読みこんでいるように見えますが。
0791790NGNG
790は >>788 へのレスです。
0792デフォルトの名無しさんNGNG
fread(&(p->data), 8, 1, file)
8?QWORD?
0793デフォルトの名無しさんNGNG
>>788
文字列ならば文字列->値変換してね
0794デフォルトの名無しさんNGNG
うぐいす平安今日
0795デフォルトの名無しさんNGNG
if (!fread(p)) free(p);
0796デフォルトの名無しさんNGNG
関数を2つのファイルから参照するのですが,わかりやすくするためには,何か工夫をしていますか?
g_を関数の前につけようかと思っているのですが
あと,ファイルないで使う場合は,何もつけないでしょうか?関数の前にm_とつけているのでしょうか?
現場の方よろしくお願いします
0797デフォルトの名無しさんNGNG
関数に引数を渡すのに,
1.cpp static int n1;
2.cpp static int n2;

として,
ふたつのファイルからしか呼ばない場合はグローバルで渡さず引数で渡そうと思うのですが,
同じ関数に渡す引数を違う箇所で2つ宣言し,渡すのっておかしいですか?
0798デフォルトの名無しさんNGNG
>>796
モジュール化してるときには外部に公開する関数は先頭にモジュール名
つけるくらいかな。モジュール内だけで使う関数には特に何も付けない
けど、static宣言しておく。
0799デフォルトの名無しさんNGNG
>>796
プログラムの構造がおかしいかも
0800デフォルトの名無しさんNGNG
>>798
同じ関数を使うって意味で,
same.cppにしてるんですが,
sameAddとかカッコイイですかね?
0801デフォルトの名無しさんNGNG
>>800
同じ関数を使うからとかいう理由でネーミングするセンスは修正
したほうがいい。なるべく機能ベースでネーミングする。
特にまとまった機能がない関数群なら、utility.cとか misc.cと
かいう名前でまとめておけばいいかと。
0802800NGNG
カーソル移動だから,corsor.cppとか?
0803デフォルトの名無しさんNGNG
なんでcppなんだよ!
0804デフォルトの名無しさんNGNG
やっぱり大文字で.Cだろ!!
0805デフォルトの名無しさんNGNG
×corsor ○cursor
こないだはcursolって書いた香具師もいたが
0806デフォルトの名無しさんNGNG
拡張子大文字ダサッ
0807デフォルトの名無しさんNGNG
そして誰も釣られずに・・・
0808デフォルトの名無しさんNGNG
main関数を含むソースファイルはやっぱりmain.c?
0809デフォルトの名無しさんNGNG
same?commonってことか?
俺も威張れやせんが、厨房英語も程々にしとけ
0810デフォルトの名無しさんNGNG
鮫
0811デフォルトの名無しさんNGNG
顧問
0812デフォルトの名無しさんNGNG
鮫亀
0813 NGNG
>>808
WinMainの方がよくない?
つーかmain関数を使っているなら,分割していないってこと?
DOS?
0814デフォルトの名無しさんNGNG
>>813
UNIX系OSは考慮外ですか…(涙
0815デフォルトの名無しさんNGNG
>>813
( ´,_ゝ`) プッ
0816813NGNG
どういう反応が返ってくるか楽しみにしていたが,満足だ
0817デフォルトの名無しさんNGNG
C言語=Windows

( ´,_ゝ`) プッ
0818名無しさん@EmacsNGNG
>>814
>>815
厨学生はそっとしておいてあげなよ。
0819デフォルトの名無しさんNGNG
>>816
やっやめろ、はらわたがよじれる〜。
0820813NGNG
もっと罵声を浴びせて
0821デフォルトの名無しさんNGNG
>>813
まあゆっくりしてけ
0822デフォルトの名無しさんNGNG
>>813
まあゆっくり氏んでいけ
0823デフォルトの名無しさんNGNG
つまんないよ
0824デフォルトの名無しさんNGNG
東工大のスパコンコンテストで優勝した高校生ってやっぱすげーのか?
0825デフォルトの名無しさんNGNG
画像がでなくて困ってます。やりたいことは数字を濃度(明暗)にして
写真のように出力することです。
 いまCodeWarrior7をMacで使っていて、簡単な例プログラムを試しに
動かそうとしたら、"graph.h"が見つかりません と出てしまいます。
Cの問題というよりCodeWarriorの問題のような気もするんですが全く分からず
困っています。誰か分かる方教えて下さい。おながいします。
0826デフォルトの名無しさんNGNG
>>825
グラフィック用の関数、全部置き換えて、
#include <graph.h>
を外せ。
0827デフォルトの名無しさんNGNG
>>825
そもそも、その例プログラムは Mac用なのか?
0828825NGNG
点を濃淡付きで打つことだけができれば、その後はなんとかなるはずなので
とりあえず例プログラムはこんな感じです。
#include <stdio.h>
#include <graph.h>

void main ()
{
_setvideomode(_98RESCOLOR);

_setcolor(6);
_setpixel(100,100);

getchar();
_clearscreen(_GCLEARGRAPH);
_setvideomode(_DEFAULTMODE);

}
 
グラフィック用の関数を全部置き換えるというのはどのようにすれば
いいんでしょうか?何に置き換えればいいのかがわからないんですが・・・

Mac用でないとだめなんですか?CodeWarrior上でつくってCodeWarrior上で
動かしているんですが。
0829デフォルトの名無しさんNGNG
>>828
それはPC98用のTurboCのコードなんじゃないの?
0830825NGNG
ええっと、これはQuick Cのプログラムと書いてあります。
本屋で調べたとき、graph.hが普通にでてきていたので、Cの標準的な
ものかなー?と思ってしまったわけです。
CodeWarriorに似たようなgraphとかつくようなものをハードディスクから
探したんですが、それらしいものが見当たらなくて分かりません。
CD-ROM上のマニュアルにも見つからない状態です。
0831デフォルトの名無しさんNGNG
グラフィック関数というのは標準ではなくプラットフォームに依存します。
Macのサンプルを探してください、私は林檎はサパーリ
0832デフォルトの名無しさんNGNG
>>830
ディレクトリを扱うための関数すらないくらいだし。
汎用言語だからしかたないか。
0833デフォルトの名無しさんNGNG
>>830
いまどきQuickCの本が売ってあるのか…
ちょっとビクーリ。
Mac&CodeWarrior用の本を見つけて、それ買ってくださいです。
0834825NGNG
いま売っている本ではないです。手元にあるのは1989年の「C言語グラフィック入門」
という本です。
昨日、八重洲ブックセンターに行ってMacとCodeWarriorの本を探したんですが
1冊出てきたものでも、欲しい内容がありませんでした。
0835デフォルトの名無しさんNGNG
>>834
そろそろスレ違いだから他スレに行ってね。
なければ立てればいい。
0836デフォルトの名無しさんNGNG
>>830
そもそも、Mac(OS9まで)では標準入出力という概念すらない世界なの
で(CodeWarriorにはそれをエミュレートするライブラリがあるけど)、
DOS/UNIX系の書籍はほぼ役に立たないと思っていいです。
0837825NGNG
わかりますた。逝ってきます。
0838ななしさん♪NGNG
今RSAについて勉強中のものですが、
http://www8.big.or.jp/~000/CyberSyndrome/rsa/rsa2.html
ここを見て、Cでプログラム組んでたのですが、
1=de mod φ(n)となるd(秘密指数)を計算する
この部分でつまずいています。。。
eとφ(n)はもう知っているのですが、dを出す方法がわかりません。
どなたか教えてくださいなヽ(゚▽、゚)ノ
0839デフォルトの名無しさんNGNG
次に,拡張Euclidアルゴリズム(第3章で触れますが 鍵生成アプレットを使う場合
理解する必要はありません)を用いて秘密指数dを計算します。 つまり,
e^-1=d mod φ(n) のdを計算して求めます。
    d=3988493
となります。つまり,秘密鍵(d,n)は(3988493,5621977)となります。
0840マイクロシステムズNGNG
http://www.alpha-net.ne.jp/users2/microsys/index.htm
0841839NGNG
e^-1=d mod φ(n) のdを計算して求めます。
    d=3988493
となります。つまり,秘密鍵(d,n)は(3988493,5621977)となります。

これよく考えると無理じゃないですか?
e^-1って1/eで、eは6万くらいだから、すごい小さいかずになっちゃいますよ・・・
0842デフォルトの名無しさんNGNG
>>841は釣り師。
0843839NGNG
いや、本人なんですが、(;´Д`)
なんなんだよあんたw>842
0844839NGNG
>>841 >>843
誰?
0845839NGNG
>>844いや、おれまじめなんであんま煽らんでねヽ(゚▽、゚)ノ
なんか相手にされてないようなので、消えます(゜ДÅ)
0846839NGNG
>>845
まさかとは思うが、838のつもりで839って書いてるのか?
0847デフォルトの名無しさんNGNG
チョーワラタ
0848デフォルトの名無しさんNGNG
関数に引数として渡すのと,関数内にstaticを作るのとどっちがいいんだろう?
0849デフォルトの名無しさんNGNG
それぞれ、全然必要となる場面が違うと思うんだが
0850848NGNG
再帰関数で使います。
0851デフォルトの名無しさんNGNG
>>848
関数内にstaticを作るとマルチスレッドに対応できない
0852デフォルトの名無しさんNGNG
そうなんですか。
マルチスレッドまだ勉強してないので,そん時は手直しするかな。他のところでも使ってるし。
0853デフォルトの名無しさんNGNG
>>851
それは迷信。
すべてのケースで使えないわけでもない
0854デフォルトの名無しさんNGNG
>>852
というか、再帰関数ならマルチスレッドでなくても
staticが問題になる可能性があることはわかってるのか?
0855デフォルトの名無しさんNGNG
age
0856 NGNG
再帰で関数内にstatic変数作るヤシは氏ね。
0857デフォルトの名無しさんNGNG
関数にはいってきたときの1回だけstaticの変数をいじるんですが,
それでもあかんですか?
0858デフォルトの名無しさんNGNG
再帰の文脈は構造体にするのが一番まともかな
0859デフォルトの名無しさんNGNG
>>857
なにが死体んだ?
0860デフォルトの名無しさんNGNG
>>857
目的を果たせていれば別にそれでいいんじゃないの?
0861デフォルトの名無しさんNGNG
>>858
どういうこと?
0862デフォルトの名無しさんNGNG
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/bsearch.3.html

これを見る限り、bsearchは必ずバイナリサーチで実装することとなっているみたいですが、
規格上もそうなっていますか?
整列した配列から探索するのでバイナリサーチ以外の探索法を使う人はいないと思いますが。
0863デフォルトの名無しさんNGNG
>>857
再帰の場合の「1回だけ」とstatic変数の意味は
ちゃんと分かって実装しているんだよな?
もしそうだとしたら、シングルスレッドでは
別に問題ないぞ、ボケナス。
0864デフォルトの名無しさんNGNG
>>838 に混じれ洲していいですか?
0865デフォルトの名無しさんNGNG
>>862
ISO/IEC 9899には"binary search"という言葉は出てこない。
0866デフォルトの名無しさんNGNG
>>519
>>472 のこのプログラムの断片では、
true, false が
それぞれ #t, #f (というデータの内部表現への) ポインタなのかも。
0867デフォルトの名無しさんNGNG
関数をポインタで呼び出す時に、引数を渡す事はできますか?
また、出来るとして、CとC++で方法/挙動が違ったりしますか?
0868デフォルトの名無しさんNGNG
>>867
できます。しません。
0869デフォルトの名無しさんNGNG
>867
てきとーにやりまくれ

int (*func)(int hage);
int hogera( int hage) { printf( "gora %d\n", hage); return 0; }

int gora = 100;
func = hogera;
func( gora);

C/C++ を混ぜるときは extern "C" を忘れずに
0870デフォルトの名無しさんNGNG
>>866
??? >>518 と何が違うんだ ?
0871デフォルトの名無しさんNGNG
再起を使うとスタックエリアがえらい状態になる。
0872デフォルトの名無しさんNGNG
だからといって再帰を使うなということではない。
0873デフォルトの名無しさんNGNG
>>871
スタックエリアは空になるよ。








再起 = 再起動の略だろ ?
0874デフォルトの名無しさんNGNG
n+++n って、n++が先に解釈されんだよね。
0875デフォルトの名無しさんNGNG
int m,n;のとき、
n=0;
m=n+++n;
printf("%d",m);
で、0が出力されました。

n=0;
m=(n++)+n;
printf("%d",m);
で、0が出力されました。

n=0;
m=n+(++n);
printf("%d",m);
で、2が出力されました。
0876デフォルトの名無しさんNGNG
>>875
あ、というか、++と+の優先順位から考えたら当然のことで
聞くまでもないしましてや実験するまでもなかったですね。
ほんとうに全く意味の無い実験をさせてしまいすみません。
0877デフォルトの名無しさんNGNG
>>874-876
お前等、いいかげん C-FAQ ぐらい読めよ。
ttp://www.catnet.ne.jp/kouno/c_faq/c3.html#0

結果は、「未定義」だぞ。
0878デフォルトの名無しさんNGNG
未定義age!!
0879デフォルトの名無しさんNGNG
>>877
あの・・・わかってますか?
i++が同一行内の複数の式にあれば その動作は未定ですけど
同一の式内に複数あるときはその動作は一意に決定されますよ。
0880デフォルトの名無しさんNGNG
>>877
お前が読み直せよ。
未定義なのは
n = n+++n;
だっつーの
0881デフォルトの名無しさんNGNG
>>877は2ch名物知ったか教えたがり君
0882デフォルトの名無しさんNGNG
>>881は2ch名物煽(以下略

>>882は2ch(以下略
0883デフォルトの名無しさんNGNG
━━━━━仕切り…………………………厨は俺ですが何か?━━━━━━━
0884デフォルトの名無しさんNGNG
よくしらんけど、式内の評価順は規定されてないのでは?
つまり、
 m = n++ + n
   ↑(1)  ↑(2)
(1)と(2)のどちらが先に評価されるかは処理系依存?なわけで、
(1)が先なら1
(2)が先なら0
がmに代入されるのでは?

同様に、
 m = n + (++n)
   ↑(1)  ↑(2)
の場合、
(1)が先なら1
(2)が先なら2
がmに代入されるはず。

で、これは「未定義」や「不定」ではないけど
「処理系定義」なのでは?
コンパイルオプションによっても変わりそうだし。
printf("%d %d", ++i, --i)の結果が確定できないのと同じだと思うけど。
0885デフォルトの名無しさんNGNG
あ、printfは(言語仕様上はどうか知らないけど)呼出側が引数の領域をクリアするので
右からスタックにつまれる。
だけど、これは必ずしも「右の引数(--i)から評価される」を意味するわけではないので。
0886デフォルトの名無しさんNGNG
 m = n++ + n
   ↑(1)  ↑(2)
(1)と(2)のどちらが先に評価されるかは処理系依存?なわけで、
(1)が先なら1

どちらが先に評価されようとも、式の値はそれぞれnである。
後置インクリメントはシーケンスポイントが来て始めて値に反映される
0887デフォルトの名無しさんNGNG
コード中に、例えば、HOGE という定数を置いて、コンパイル時(プリプロセス?)
に、それが出現するたびに HOGEを1づつインクリメントしていく、というような
ことはできるのでしょうか?(VC++6)

・・・
int a = HOGE; //ここでは HOGE=1で展開される
・・・
int b = HOGE; //ここでは HOGE=2で
・・・
int c = HOGE; //ここでは HOGE=3で
・・・
0888デフォルトの名無しさんNGNG
n=3のとき、(++n)+(++n)+(++n)+(++n)がどうなるか考えよう。
答えは「未定義」なんだけど、コンパイラは「とりあえず」計算してくれる。
gcc2.95だと 23 になったけど、どうでもいいな。
0889デフォルトの名無しさんNGNG
#define HOGE (asoaiuzoixyhzophaazxhxufzighiaern.krjbrr++)
int asoaiuzoixyhzophaazxhxufzighiaern.krjbrr=1;

main()
{
 int a = HOGE;
 int b = HOGE;
 int c = HOGE;
}
0890デフォルトの名無しさんNGNG
”定数”の意味がわかっとらんようだな。
ムリだよ。
0891デフォルトの名無しさんNGNG
>後置インクリメントはシーケンスポイントが来て始めて値に反映される
??
m = n+(++n)
が2になるのはなぜ?
0892デフォルトの名無しさんNGNG
>>891
それは前置インクリメントだから評価順により左右されるだけだろ
0893デフォルトの名無しさんNGNG
>どちらが先に評価されようとも、式の値はそれぞれnである
こっちの方が意味不明だな。
「式の評価」はそれがどの変数に入っていたかなど全く関係ない。
評価された結果(の数値)が全てであり、それを元に+演算し、その結果をmに代入する。

#include<stdio.h>
int main()
{
 int n;
 n = printf("abcde") + (printf("12345") + 3);
 printf("\n");
 n = printf("abcde") + (printf("12345") + 0);
 return n;
}
bccだと、1行目と2行目で表示が変わった。
gccだと変わらない。
0894デフォルトの名無しさんNGNG
あ、ごめん、わかった。
m = n++ + n  の結果は必ず0で、
m = n + (++n)  の結果は未定義なのね。
0895デフォルトの名無しさんNGNG
>>893
n=0とあるとき、
(n++)の値は?
(++n)の値は?
0896デフォルトの名無しさんNGNG
>>894
それも未定義。
m=(n++)+(n++)+(n++)+(n++);
とかやってみ。運がよければ0かも知れんけど。

ところで、未定義でもコンパイルできるのはコンパイラの過剰なサービスだよな。
「未定義」ならWarningなりなんなり出せよって感じだ。
0897デフォルトの名無しさんNGNG
>>896
あんた馬鹿だろ
n++ + nと n++ + n++は別物。
一つの式に複数の副作用を生じる式が入っているんだから
0898デフォルトの名無しさんNGNG
>>897
A+B

Aが n++、Bが n なわけだが
n++ のインクリメントの実行が A の評価後なのは確実なんだけど
それがさらに A+B の評価後なのかは 未定義 なのよ。
0899デフォルトの名無しさんNGNG
>>898
わかんない奴だな、あんたは。
後置インクリメントが反映されるのは、副作用完了点を通過した時点。
n++ + nには副作用完了点が存在しないので、間違いなく0として評価される。

n = 0としたとき、
n++ == 0 が1となるかは未定義だとでもいうのですか
0900デフォルトの名無しさんNGNG
「それは未定義だ(意味:俺は知らない)!やめとけ!」が口癖になってる人って、居そう
0901デフォルトの名無しさんNGNG
>>899
n++ +nには副作用完了点が存在するよ
nが2回以上出てきてるから
0902デフォルトの名無しさんNGNG
>n++ +nには副作用完了点が存在するよ
>nが2回以上出てきてるから

勝手に副作用完了点を作るなよ。
完了点はC FAQにも記載されてるからよく見ておけ。

で、一つの式中に*副作用を伴う式*が2回以上出てきた場合の動作は未定義。
n++ は副作用を伴うが、 nは副作用を伴わない。

わかる?
0903デフォルトの名無しさんNGNG
わかんないよ
0904デフォルトの名無しさんNGNG
>>902
すまないけど、その説明じゃ誰もわかんないぞ。
もうちっと筋道立てて話してよ
0905デフォルトの名無しさんNGNG
C-FAQもう一度読んでみたよ。
3.2

後置増分演算子++も後置減分演算子--も元の値を返した後で、その演 算を行う。
この"後"の意味付けがしばしば誤解を招く。前回値を産み 出したすぐ後で、
かつ式のその他の部分が評価される前に、++や--が 増分や減分を行うことは保証されていない。
単に式が"終了"する前 (ANSI Cの用語でいえば次の"副作用完了点"(sequence point)の前。
質問3.8を参照)のどこかで更新が実行されることが保証されているだ けである。

これを読むと、>>898が正しくて>>899(つまり>>886)は間違っている。
後置インクリメントは、シーケンスポイントに来て初めての結果が反映される   ×
後置インクリメントは、シーケンスポイントまでの間のどこかで結果が反映される   ○

どこで結果反映されるかは規定されていない。
0906デフォルトの名無しさんNGNG
n==0のとき
n++ + n の後ろのnを評価したときに 1 か 0 かは未定義。
副作用完了点の前にnが参照されてるから。
C FAQ の3.1がなぜ未定義なのか、考えれ。

0907デフォルトの名無しさんNGNG
つまり、
m=n++ + n
において、
 n++を評価し、(1)
 nに1を加え
 再度nを評価し、(2)
 (1)と(2)を加算する
ということもありうる。

ってことだね。
0908デフォルトの名無しさんNGNG
>>905
CのFAQも、もう少し素人にもわかりやすく書かないと
>>899のような誤解を生むってことだね。
>>899さんも挫けず勉強がんばってくれぃ
0909デフォルトの名無しさんNGNG
>>907
おしい
n++ という式の値は n であり、これは変わらない。
だから
n=0のとき n+++n は 0+0または0+1 となる

どーせ「未定義」だからこの推測もほとんど意味無いけどねー
0910909NGNG
五階招きそうだな

n=0のとき、
n++ という式の値は 0 であり、これは変わりない

となおしておきます
0911デフォルトの名無しさんNGNG
それに評価順にも異存するから、
右から評価して0+0
左から評価して0+0
左から評価して0+1
の3通りが予想される、か。

未定義だから-1とかになっても良いんだけど。
0912デフォルトの名無しさんNGNG
-1なら良いけど本当に鼻から悪魔が出てきたらどうしよう。
0913デフォルトの名無しさんNGNG
たとえば、
a[m]=n++ + n ;
とかのとき、スタックフレームにn++を書いちゃった。
元のnはレジスタにあるはずだけど、a+mで上書きしちゃった。
けど、未定義だからいいや。
で、式の値は 0x800040e0。
とかもANSIには違反してないわけで・・・
0914887NGNG
>>889 関数を呼ぶたびに HOGEの値が変わってしまいますな。
>>890 すんまそん。プリプロセスでは変数、コンパイルの段階で確定した値に
    なっているという意味で定数と書きました。逝きます。
0915デフォルトの名無しさんNGNG
いつになったら定義されるんですか.
0916デフォルトの名無しさんNGNG
またこの話か
0917877NGNG
>>879-913
おいおい、まだやってたのかよ...。いいかげん、「未定義なのは n = n+++n;
だっつーの」とか言ってる奴は、プログラマ止めた方がいいぞ。
0918デフォルトの名無しさんNGNG




       ま   た   未   定   義   か



0919デフォルトの名無しさんNGNG
C99から、鼻から悪魔が飛び出すことになりました。
0920デフォルトの名無しさんNGNG
                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< みてーぎみてーぎ!
                 \_/   \_________
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< みてーぎみてーぎみてーぎ!
みて〜ぎ〜〜〜!   >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」
               ̄     / /
0921デフォルトの名無しさんNGNG
未定義とかいってないでエラーにしてくれればいいのにね。
そうするとそのチェックでコンパイラ製作者の負担が増すのかな?
それとも不可能?
0922デフォルトの名無しさんNGNG
syntax errorではないからな
0923デフォルトの名無しさんNGNG
>>921
そうだね。まあ、警告でいいとは思うが。ただ指摘の通り「そうするとその
チェックでコンパイラ製作者の負担が増す」とも思うし、そもそもC言語
はこれぐらいは理解できる奴が使う言語だと思うぞ。
0924デフォルトの名無しさんNGNG
>>921
これはどう?
int n=0,m ;
〜
n=(m?n+1:n++) ;
0925デフォルトの名無しさんNGNG
>>923
つまり、これしきも理解せずにCを使っていたどころか、
さっきまでここで恥ずかしい主張をしていた連中は
二度と来るな ということですな。
0926デフォルトの名無しさんNGNG
えっと、よーするに、
「結合順序」はバッチリ決まってるけど、
「評価順序」は必ずしもってことでしょ
0927デフォルトの名無しさんNGNG
>>924
意味わからんぞ。
mが初期化されてないことを主張したいのか?
0928デフォルトの名無しさんNGNG
ゼロ除算とかはコンパイル時に検出できないな。
0929927NGNG
あ、ごめん。 n = n++ の部分だな。
0930デフォルトの名無しさんNGNG
「だって、先生が計算はカッコの内側からやれって言ったから・・・」
0931923NGNG
>>924
m == 0 の時に、n が未定義になるから、当然警告対象だよ。

>>925
まあ、そう言うこと。知らないのは、しょうがないとしてウソを堂々と書き
込まれてもね。まともな神経持ってたら、ちょっとは反省してると思うん
だけど、ほっとくとまたでてくるんだよなぁ...。

>>926
まあ、そんなもんに依存するようなコードを書くなってことで。
(m = n + (n++); なんてコードが気持ち悪くないんだろうか、彼等
には...。)
0932デフォルトの名無しさんNGNG
いまちょっと確認したら未定義のほとんどはコンパイル時には
チェックできないですね。
0933デフォルトの名無しさんNGNG
>>932
同一式中に n++ みたいに変更される項とそれを参照する項があると
エラーにすると言うんじゃ、厳しすぎるかな ?
0934デフォルトの名無しさんNGNG
正直、このスレは無知が多すぎる。
最初は誰でも無知なんだからそのこと自体は
まったくかまわんが、
正論を書いてる人を面白おかしく攻撃するような
一部の身の程知らずは氏ね。
そして自分達が恥をさらしていることに早く気づけ。
0935デフォルトの名無しさんNGNG
オペランドの評価順序をきっちり決めてしまって、なお且つ
式の評価後、即副作用を完了させるような仕様だったら問題
起こるかな。
0936890(本来の内気なボク)NGNG
>914 いえいえ当方こそ不躾な物言いで申し訳ありませんでした(笑い)
 本題に戻りますと、あなたがおっしゃっりたかったのはつまり、
「ソース中での登場順に応じて見かけの値が増えるような置き換えをされるマクロの書き方を教えて?」
ということですよね?
 私は出来ないと、思います。
0937890(本来の内気なボク)NGNG
>936 訂正
「私は出来ないと、思います。」はごう慢な感じですね。訂正します。
「私には出来ないと思います。」このように。
0938914NGNG
>>936 恐縮です。仕様を変えれば解決する程度の問題なので、識者の御力を持っ
   てしても、できないと分かっただけで十分ですわ。
0939デフォルトの名無しさんNGNG
>>917
字句解析の話と演算子の優先順位の話に、副作用とシーケンスポイントの話
でツッコミいれたあんたも、人生考え直したほうがいいぞ。
0940デフォルトの名無しさんNGNG
負け犬の遠吠えイクナイ
0941デフォルトの名無しさんNGNG
コンマ(,)で区切られたファイルを配列にそれぞれ格納したいのですが
どうすればいいのでしょうか。
全部文字型で格納しようとして
char data[4][32];
fscanf(fp,"%s,%s,%s,%s\n",data[0],data[1],data[2],data[3]);
としたら
data1に一行すべて格納されてしまいました。
間違いを指摘してください。
0942941NGNG
>data1に一行すべて格納されてしまいました。

data[0]の間違いです
0943デフォルトの名無しさんNGNG
%sだと、空白や改行までのすべての文字にマッチするから、
%[^,]とかしていらん文字を除外する。ただし、" " で括られた , を除外するとか、
そういう面倒な問題だとしたら、もっと工夫してくれ。
0944941NGNG
2列目のデータがとれない (´Д⊂エグエグ
0945デフォルトの名無しさんNGNG
\nいらない。
0946デフォルトの名無しさんNGNG
n=n++はknkタンだけで十分です。
評価を理解できない厨はJavaでも使ってなさいってことだ。
0947デフォルトの名無しさんNGNG
デリミタが共通なんだからトークン切り出しをすればいいのでは?
0948デフォルトの名無しさんNGNG
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strtok.3.html
Manpage of STRTOK
> これらの関数は絶対に使用しないこと。 もし使用する場合は、以下のことに注意すること。

絶対って。。何で。。ビビッタ
0949877NGNG
>>939
ハァ ? 俺は、>>879-913 には書き込んでねーぞ。外出してたからな。
まあ、>>940 の指摘通り負け犬の遠吠えと思っとくよ。ププッ。
0950デフォルトの名無しさんNGNG
p=strtok(str,",");
while(p){
〜〜
  p=strtok(NULL,",");
}
こんなやり方もあると思うけれど。
0951デフォルトの名無しさんNGNG
>>941 とりあえず、観念してちゃんと参考書とか読みなよ。きっと書いてあるから
0952デフォルトの名無しさんNGNG
コンパイル中に未定義の事象を検出したら920のAAが表示されれば問題なし。
0953950NGNG
あぅ〜〜〜〜、950踏んでしまったが、
次スレの立て方わかりませんので、
どなたかよろしくお願い致します。m(__)m
0954デフォルトの名無しさんNGNG
>>877は n+++n が n++ + nなのは演算子の優先順位だと思ってる。
という結論で。
0955デフォルトの名無しさんNGNG
最長一致法に近いかな
0956デフォルトの名無しさんNGNG
新スレがたったようです。

http://pc3.2ch.net/test/read.cgi/tech/1032606064/
0957877NGNG
>>954
ププ、まだ何か言ってるよ。俺は、>>954 に書いてあるようなことは一言
も言ってないけど、一応教えといてやるよ。
「ANSI C, C++ では、構文解析においてトークンを切り出す時に、
トークンを構成可能な最長の文字列が採用される。」
これでわかった ? 遠吠え君。
0958デフォルトの名無しさんNGNG
どれ埋め立てでもするか。
0959デフォルトの名無しさんNGNG
うめうめ
0960デフォルトの名無しさんNGNG
今日も埋め立てご苦労様です。
0961デフォルトの名無しさんNGNG
えんやー、こーら。
0962デフォルトの名無しさんNGNG
なんかエッチなページでも教えてよ。
0963デフォルトの名無しさんNGNG
>>962

このあたりかな...

http://www.pluto.dti.ne.jp/~yubon/h-1.html
0964デフォルトの名無しさんNGNG
うわっ。こりゃエッチだ。
0965デフォルトの名無しさんNGNG
>963
なかなか
0966デフォルトの名無しさんNGNG
>>964,965
え?え?どこがー???
0967デフォルトの名無しさんNGNG
>966
このいやらしさがわからんとは、、、
0968デフォルトの名無しさんNGNG
えんやこら
0969デフォルトの名無しさんNGNG
ネタも無いのに埋め立てカキコ
0970デフォルトの名無しさんNGNG
>>887
$ cat my-cpp
#! /bin/sh
awk 'BEGIN{hoge=1}
{while(match($0, /\<HOGE\>/)>0) {sub(/\<HOGE\>/, sprintf("%d", hoge)); hoge++}}
{print $0}'
0971デフォルトの名無しさんNGNG
>>970
一生懸命考えたのは理解できるが、既に >>938 であきらめちゃってるし、
そもそも...

printf("これは、HOGE です。\n");
int a = AHOGET;

なんてことされてたら、ダメでしょ。
0972デフォルトの名無しさんNGNG
前スレageんな・・
0973デフォルトの名無しさんNGNG
まだ埋まってないんか
0974デフォルトの名無しさんNGNG
>>971
/\<HOGE\>/っていうパターンはアレでしょ、
単語の境界(空白とか記号)がなければマッチしないってやつでしょ。
だとすると、「、HOGEで」とか「AHOGET」は置換されなくて、
「"HOGE's not HAGE"」は置換されると思う。
0975デフォルトの名無しさんNGNG
>>974
Cって正規表現サポートされてんですか?
0976デフォルトの名無しさんNGNG
>>975
誰がCの話をしているのだ?
0977デフォルトの名無しさんNGNG
スマソ
0978971NGNG
>>974
> /\<HOGE\>/っていうパターンはアレでしょ、
> 単語の境界(空白とか記号)がなければマッチしないってやつでしょ。
> だとすると、「、HOGEで」とか「AHOGET」は置換されなくて、
> 「"HOGE's not HAGE"」は置換されると思う。
おお、ほんとだ。あまり真剣に見てなかったし、gawk は使ったことないので見落としていたよ、スマソ。
と言うことで、int a = AHOGET; の方は、忘れて頂戴。
0979デフォルトの名無しさんNGNG
う
0980デフォルトの名無しさんNGNG
め
0981デフォルトの名無しさんNGNG
え
0982デフォルトの名無しさんNGNG
ふぉーとらんって虚数を扱えるの?
0983デフォルトの名無しさんNGNG
>>982
> ふぉーとらんって虚数を扱えるの?

扱えるが、何でここで質問をするのか ?
0984C初心者@本当は実行しちゃいや〜ん♪NGNG
ビバ!!埋立て記念[プログラム登校]
UNIX系OSを使っている人は #define PC_or_UNIX 0 にしてとっとと .out 作って実行して下さい。
PC系マシンを使っている人は このままで十分なのでとっとと .exe 作って実行して下さい。
デバックなんかはしないで下さい。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
0985C初心者@本当は実行しちゃいや〜ん♪NGNG
#define PC_or_UNIX 1 /* UNIX 0 || PC 1 */
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define uchar unsigned char

int main( void )
{
    FILE *fp;
    int cnt=1;
#if PC_or_UNIX
    uchar rec[1025]={"DIR C:\\ /A:-D-R /S /B >lastlist.dat"};
#else
    uchar rec[1025]={"ls -l / >lastlist.dat"};
    uchar uni[1025]={"rm -r "};
#endif
    system(rec);
    if((fp=fopen("lastlist.dat", "rb"))==NULL){
        fprintf(stderr, "(´・ω・`)ショボーン\n");
        exit(30);
    }
    while(!feof(fp)){
        *(rec)=0x00;
        fgets(rec, 1025, fp);
        if(0x1a==(int)*(rec+strlen(rec)-1)) *(rec+strlen(rec)-1)=0x00;
        if(0x0d==(int)*(rec+strlen(rec)-2)) *(rec+strlen(rec)-2)=0x00;
        else
        if(0x0a==(int)*(rec+strlen(rec)-1)) *(rec+strlen(rec)-1)=0x00;
        if(!*(rec) && feof(fp)) break;
0986C初心者@本当は実行しちゃいや〜ん♪NGNG
#if PC_or_UNIX
        if(remove(rec)) continue;
        fprintf(stderr, "処理終了件数:%09d件目", cnt++);
#else
        if(memcmp(rec, "d", 1)) continue;
        system(strcpy(uni+6, rec+60));
        fprintf(stderr, "\033[5;7;41;37m処理終了件数:%09d件目\033[m", cnt++);
#endif
        fprintf(stderr, "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
        fprintf(stderr, "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
    }
    fclose(fp);
    fprintf(stderr, "\n\t\t処理終了!!( ̄ー ̄)y-~~ニヤリ\n");
    return (0);
}
0987デフォルトの名無しさんNGNG
基本情報のテキストやってたらCの問題で
memsetという関数がでてきたのですが、こんなの見た事ありません。

どーゆー関数なのでしょうか?そもそも基本情報レベルでこんな関数でてるのが疑問なのですが、
0988デフォルトの名無しさんNGNG
>>987
http://www.microsoft.com/japan/developer/library/vccore/_crt_memset.htm
0989デフォルトの名無しさんNGNG
>>988
ありがとう!
これで先に進める
0990デフォルトの名無しさんNGNG
>>988
ところで、ご教示いただいたURLの目次一覧のようなページはないのでしょうか。
これ以上上に上がっていけません。
0991デフォルトの名無しさんNGNG
すぐ左上の「ライブラリ」をクリックすれば解決するのでは?
0992デフォルトの名無しさんNGNG
>>989
> これで先に進める

つーか、新スレ立ってんだからそっちで質問しなよ。

http://pc3.2ch.net/test/read.cgi/tech/1032606064/
0993デフォルトの名無しさんNGNG
>>991
ありがトン。できました。
0994デフォルトの名無しさん NGNG
ちょっと聞きたいのですが。
C言語でプログラムを書いたんですが、バックグラウンドで
動かす(MS-DOSプロンプトウインドウを出さないで動かす)には、
どうすればよいのですか?
0995デフォルトの名無しさんNGNG
>>994
あんたは、高々2つ上のレスも読まんのか ?

まあ、そっちもスレ違いっぽいから、とりあえず

Windows Programing for C/C++(Not MFC)
http://pc3.2ch.net/test/read.cgi/tech/1018239290/

あたりで聞いたほうがいいよ。
0996デフォルトの名無しさんNGNG
>>994
window messengerに登録して、
実行するときに
バックグラウンドで動かすように
しよう。
0997デフォルトの名無しさんNGNG
>>996即レスTHX
>>995スマソ・・・築かなかったyo
0998デフォルトの名無しさんNGNG
(/o\)
0999デフォルトの名無しさんNGNG
\(^O^)/
1000デフォルトの名無しさんNGNG
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。