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

C言語の質問スレッド<42>

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C言語に関する質問はここでしてください。

問題をちゃんと切り分けて、Cの話かそうでないか洗ってから質問してくれ。
というより、聞く前に一応 Web で検索しろ。
コンパイラを探してるなら >>2 を見ろ。
過去ログ(DAT落ちあり)なら>>3-100あたりにあるかも。

GUIとか、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/


前スレ <41>
http://pc3.2ch.net/test/read.cgi/tech/1036876790/
0079デフォルトの名無しさんNGNG
俺としては
if(flag)
これは良いんだが(というかしょうがない)
if(!flag)これも併用すると複雑な式の中で'!'を見逃す可能性があるから
if(flag == FALSE)と明示した方が良いと思うが。

if(!*s)やif(!s)では意味が違う訳だろ?
簡潔だが見間違いが起こりやすい。
if(*s == '\0')
if(s == NULL)
これなら明解だろ。
0080デフォルトの名無しさんNGNG
>>75
ネタは他いけ。
008132NGNG
 わかっとるわ〜い( ゚Д゚)ゴルァ!
0082デフォルトの名無しさんNGNG
>>79
それは誰も問題にしてない。
前提は>>55
0083デフォルトの名無しさんNGNG
>>76
そのソースを愚弄したんじゃなくて、意味不明な質問を注意したんでしょ?
0084デフォルトの名無しさんNGNG
>>78
おまえのいう「たいていの言語」ってなんだよ?(ワラ
0085デフォルトの名無しさんNGNG
(´-`).。oO(DQNの>>75祭りの予感…)
0086デフォルトの名無しさんNGNG
>たいていの言語
CスレなんだからCの話すればいいじゃんよ・・・
0087デフォルトの名無しさんNGNG
>>84
無知だな(藁
0088デフォルトの名無しさんNGNG
32 ってまじやばくない?
さっきから挙動不審なんだけど?
0089デフォルトの名無しさんNGNG
CならCらしいプログラムを書く。
他の言語ならその言語らしいプログラムを書く。

これじゃだめなのか?統一しないとだめなのか?
0090デフォルトの名無しさんNGNG
Cで叩かれたので他の言語を持ち出して優位になろうと必死
しかしスレ違いでまた叩かれる罠
0091デフォルトの名無しさんNGNG
Javaだとそもそもif文の条件にはboolean型しかかけない。
だからif (flag == true)なんて書くアフォはいない。
0092デフォルトの名無しさんNGNG
Cでこの程度じゃ(以下自粛
0093デフォルトの名無しさんNGNG
>>87
おまえは無知かつ無恥だな(W
009432NGNG
 だったらこれ、一致させてみてくだちゃい。
  なお、printf("%3c",str1[i1][j1]);修正したぞ

ABCD
EFGH
IJKL

D B C ヘ
G H F ヘ
J K L ヘ
0095デフォルトの名無しさんNGNG
>>82
無意味なことをしているという点では同じだろ。
0096デフォルトの名無しさんNGNG
つーかこっそりと去ればいいのにこじつけるからまた叩かれるんだよな・・・
0097デフォルトの名無しさんNGNG
これで統一すれば解決。論争は起こらない。
if (flag == FALSE){
}
else{
/* 処理 */
}
0098デフォルトの名無しさんNGNG
>>94
目的を明確にしないと分からないんだってばー
0099デフォルトの名無しさんNGNG
>>91
へー。Javaはifではboolean型しか書けないのか不便だな(w
0100デフォルトの名無しさんNGNG
>>97
うひょーーー!とんでもないあふぉ発生!
0101デフォルトの名無しさんNGNG
もしflagがtrueかfalse(=0)しか取らないなら、
if (flag == true)は単に冗長で無駄で見にくいだけ。

もしflagがtrueやfalse以外もとるなら、
if (flag == true)で真偽をテストするのは単なる間違い。
0102デフォルトの名無しさんNGNG
>>100
これ以上醜態を晒すな
0103デフォルトの名無しさんNGNG
>>97
そんなのむだ。
if (flag){
/* 処理 */
}
else{
}
でいい。
0104デフォルトの名無しさんNGNG
今日は、(・∀・)イイ!!
0105デフォルトの名無しさんNGNG
>>99
これだから C 言語しかしらないやつは.......
0106デフォルトの名無しさんNGNG
「if(flag==true)が可読性が上がって良い」と言ってる奴が去って
実はもうこの話題は終了してる罠。
0107デフォルトの名無しさんNGNG
>>103
それをやるとif(flag == true)の方がと言い出す奴がいるから
>>97のように書いたんだが。
0108デフォルトの名無しさんNGNG
Javaではifでbooleanしかかけないので、==を=と書いてしまう
バグはめったに起きない。

起きるとしたら普段if (flag == true)と書いてるアフォが
if (flag = true)としちゃったときだけ。
0109デフォルトの名無しさんNGNG
おやおや、またbool争いですか?

結局ifの中にbool以外を書けるC言語の仕様が糞ということでしょ。
011032NGNG
 だから、ユーザーが指定した数をカウントする関数
 をつくるのが目的なんだよ。
   for(i1=0;i1<ij;i1+=j2){
putchar('\n');
for(j1=0;j1<j2;j1++){
printf("%c",str1[i1/j2][(len++)%i2]=('A'+i1+j1));
}
}
for(i1=0;i1<i2;i1++)
for(j1=0;j1<j2;J1++)
 str[i1][j1]=i1+j1ではカウントできなでしょ。
  色々、試していくうちにこう言う形になったんだよ。
 
0111デフォルトの名無しさんNGNG
32の主治医でs(略
011232NGNG
>>111おまえ、完全に荒らしじゃねか〜.
じゃあ!!どの変がやばい・・・いってみろ
0113デフォルトの名無しさんNGNG
>>108
> 起きるとしたら普段if (flag == true)と書いてるアフォが
> if (flag = true)としちゃったときだけ。
それってJavaの話だよね。そんなことって出来たっけ?
0114デフォルトの名無しさんNGNG
>>32
( ゚Д゚) ポカーン……
0115デフォルトの名無しさんNGNG
カウントするだけで配列、それも二次元配列使うのがよくわからん。
0116デフォルトの名無しさんNGNG
>>109
bool以外を書けたほうが便利だろ。
0117デフォルトの名無しさんNGNG
ソース読んでないけど、そもそも「ユーザーが指定した数をカウントする」
ってのが具体的に何をすることなのかよく分からない。
0118デフォルトの名無しさんNGNG


 >>32 は こ の 先 放 置 で お な が い し ま す
0119デフォルトの名無しさんNGNG
boolの話はもう終わってるし、>>32は違う意味で終わってるから、
他の話題きぼんぬ。
0120デフォルトの名無しさんNGNG
>>116
だから、具体的にどんなときだよ
ってこれ昨日もでたネタだな
0121デフォルトの名無しさんNGNG
>>116
単に !=0 が省けるだけやん。
そのおかげでどれだけみんな苦労してるか。
0122デフォルトの名無しさんNGNG
>>120
Cの実装が楽になる。
0123デフォルトの名無しさんNGNG
>>121
苦労するほどのものか?
0124デフォルトの名無しさんNGNG
>>121
同じ処理をするならソースは短い方が無条件に(・∀・)イイ!!
0125デフォルトの名無しさんNGNG
>>122
C の実装?????????????????????
0126デフォルトの名無しさんNGNG

          釣  ら  れ  る  な

012732NGNG
 >>115ご返答・・・ありがとうございます。C言語いじってるうちに
 配列の格納にABC
DEF
GHIのようにカウントできたらいいなと思ったんです。
  C言語は、人によって色々記述がかわってくる。 それが、
 特徴であるはず。 まあ、わかりやすいはべつだが。

  つまり、めんどくさかったんです。strcpy(str[i],"ABC");のように
 するのが。  今はint型だけど、最終的にはchar型にも
 
 使えるようになったらなと思って作ったのよ。
0128デフォルトの名無しさんNGNG
>>29
やっぱりな(ワラ
0129デフォルトの名無しさんNGNG
>>103
俺の場合は判定はエラー捕獲が多いから

if(flag == NULL){
/*エラー処理1*/
} else if(flag2 == NULL) {
/*エラー処理2*/
} else {
/* 通常処理 */
}
と書く時が多いな。最後のelseを省略すると更に簡潔になる。
因みに同じ事をTRUE判定でやろうとすると,

if(flag) {
if (flag2) {
/* 通常処理 */
} else {
/* エラー処理2 */
}
} else {
/*エラー処理 */
}
ネストができ、elseも取り除けない。
「プログラム作法」で学んだ。
0130デフォルトの名無しさんNGNG
あのな、boolしか書けないようにしとけば、
== と = を取り違えるバグが99%くらい
無くなるだろうが。
0131デフォルトの名無しさんNGNG
>>124
7行スレへカエレ!
0132デフォルトの名無しさんNGNG
32 は何?
アルコール? クスリ? ビョーキ?
0133129NGNG
s/NULL/FALSE/g
だった、失礼。
0134デフォルトの名無しさんNGNG
>>129
flagにポインタ入れんなよT_T)
0135デフォルトの名無しさんNGNG
>>129
まじか?
if ( !flag )
で解決だと思うんだが
0136デフォルトの名無しさんNGNG
>>127
カウントって数えるという意味で使っているよな?
0137デフォルトの名無しさんNGNG
>>135に激しく同意。
0138デフォルトの名無しさんNGNG
if not (condition...)と読めたほうが素直だね。
0139デフォルトの名無しさんNGNG
>>129
なぜNULLなんてものを使う? これでいいだろ。
if(!flag){
/*エラー処理1*/
} else if(!flag2) {
/*エラー処理2*/
} else {
/* 通常処理 */
}
0140デフォルトの名無しさんNGNG
>>130
でもそれ警告してくれるじゃん
014132NGNG
 >>136 これ以上、折れになんの答えを求める。 なぜ、実際に
 みてわかろうとしない。
0142デフォルトの名無しさんNGNG
!flagかflag==FALSEなんかスタイルだろ。
スタイル論争は不毛だからやめてクレヨン。
0143デフォルトの名無しさんNGNG
>>32
誰が見ても理解不能。ちゃんと説明シレ。
0144デフォルトの名無しさんNGNG
>>113
>> if (flag = true)としちゃったときだけ。
>それってJavaの話だよね。そんなことって出来たっけ?
できるよ。
0145デフォルトの名無しさんNGNG
>>135
flag==FALSEは
flagがFALSEな時は特別な場合でそれを強く明示できる効果がある。
別に!でも悪くは無いが。
上に書いてあったがif(!s),if(!*s)のようなケアレスミスも起こりやすい。
(起こす方がバカと言うのは無しね。)
0146デフォルトの名無しさんNGNG
>>140
毎回警告に従うくらいならエラーの方が良い。
0147デフォルトの名無しさんNGNG
!sがなぜミスを起こしやすいのか分らんが...
フォントが小さいのでは?
0148デフォルトの名無しさんNGNG
if ( (a = true) && (b = false) && (c = true) )
こういうのは gcc では -Wall しても警告してくれないね
0149デフォルトの名無しさんNGNG
>>141
あーーーー!!
もしかして配列の添え字に文字列を使いたいとか思っている?
Perlなどでお馴染みの連想配列のように。
0150デフォルトの名無しさんNGNG
最近「そうだったのか!勉強になったYO!」という話題が無いな・・・
0151149NGNG
でないと配列に格納するときにカウントってのがさっぱりわからん
015232NGNG
 >>132 からっている、バカリでなくその根拠を述べよ。
  折れのソースのどこがやばい・・・。
0153デフォルトの名無しさんNGNG
>>145
慣れだと思う。
0154デフォルトの名無しさんNGNG
>>144
そうだっけか。それが出来ないのはC#だっけ?
0155デフォルトの名無しさんNGNG
>>135
*p++ = *q++ も警告してほしいか?
コンパイラに、=が正しいか==が正しいか区別できるか?
(人間でもぱっと見 まようけどなー)
0156デフォルトの名無しさんNGNG
ぱっと見 まようようなコードは書くな。
015732NGNG
>>149 まあ、ハッシュを使えばそうなるが。
  色々と、C言語のポインタとかにも悩んでいてな。
   型の性質を、知るためにこれで実験してるわけだ。
  色々と・・・・。
0158デフォルトの名無しさんNGNG
>>155
だれにレス?
0159155NGNG
>>135じゃなくて>>140ですた。
0160109NGNG
反論が無いのでオレの言うとおりとする。
0161デフォルトの名無しさんNGNG
>>159
ああおれか、
警告出して欲しくないのは括弧でくくってる。
0162デフォルトの名無しさんNGNG
詭弁の特徴のガイドライン
4:主観で決め付ける
147 :デフォルトの名無しさん:02/11/13 02:24
!sがなぜミスを起こしやすいのか分らんが...
フォントが小さいのでは?
0163デフォルトの名無しさんNGNG
このスレ、さっさと1000付けてセンスのある別の1の次スレきぼんぬ。
0164デフォルトの名無しさんNGNG
>>162
議論に負けると必ずそれ出すやついるけど、同一人物か?
0165デフォルトの名無しさんNGNG
>>161
うん。そうするくらいなら
(*p++ == *q++)と
(*p++ = *q++) != 0と
書き分ければよいだろう?

(*p++ = *q++)と書ける便利さが、
これをエラーにしてくれるときの安全さを
上回るか?というと疑問だと思う。
0166デフォルトの名無しさんNGNG
・・・なのでは?

これって決めつけだったのか。
016732NGNG
 >>163 確かに・・・。 人のソースを読まずに馬鹿にする奴だからな。
0168デフォルトの名無しさんNGNG
>>32

int a;
printf("整数を入力しる:");

scanf("%d",&a);

printf("入力された値は %d ですが何か?",a);

っでカウントしたことにならんのか?
0169デフォルトの名無しさんNGNG
!sがミスを起こしやすいってのは主観的だよね。
それもかなり偏った…
0170デフォルトの名無しさんNGNG
>>169に禿同。
0171デフォルトの名無しさんNGNG
>>169
ネタはもういいって。
0172デフォルトの名無しさんNGNG
安全を犠牲にして便利さを追及するやつは原子力推進派
0173デフォルトの名無しさんNGNG
詭弁の特徴のガイドライン
7:的を射たことを言われると「ネタはもういい。」と言う。
0174デフォルトの名無しさんNGNG
詭弁の特徴のガイドライン
4:主観で決め付ける
!sがミスを起こしやすいってのは主観的だよね。
それもかなり偏った…
017532NGNG
>>168 ならないのです。 あくまでも、カウントって
 count++;みいたいに、1,2,3,4,5,6←これが、カウントだ。
  まあ、こんな簡単なんじゃないけどね。
   ようは、for文を使った簡潔な記述をしたいわけ。
0176デフォルトの名無しさんNGNG
>>171
ワラタ
0177デフォルトの名無しさんNGNG
>>32
まずは日本語の勉(ry
0178170 ( != 169) だが…NGNG
if(!flag)でいいだろ?
簡潔に逝こうよ…
■ このスレッドは過去ログ倉庫に格納されています