トップページ⇒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/
0046デフォルトの名無しさんNGNG
flagが87だろうと-1だろうと1000だろうと==trueは真だよね?と聞きたいのだろう。
004740NGNG
>>45
そうですた。
004832NGNG
本や2ちゃんねらは、あてにならないのでこのカウントする
プログラムでC言語を実験することにした。 
004946NGNG
ごめん。間違いた。
0050デフォルトの名無しさんNGNG
>>48
頭は大丈夫ですか?
0051デフォルトの名無しさんNGNG
前スレで
「if (flag == true)と書くと、flagの値が真偽値であることが
はっきりする」
と書いてた白痴がいたんだよ。
0052デフォルトの名無しさんNGNG
ここはみっともないインターネットですね。
005332NGNG
 >>50う〜ん!!どこか渡し、アタマ変でチュカ・・・!
   まともな事書いてるつもりなのにょににゃ〜。
0054デフォルトの名無しさんNGNG
>>32は真性?
0055デフォルトの名無しさんNGNG
話の前提は
C99ではないCで
#define false 0
#define true 1
int flag;
 :
 :
if(flag == true)
とする。
0056デフォルトの名無しさんNGNG
> 俺あんな次スレやだよ。伝統守って欲しいよ。だからこれきぼん。

タイトルが〜に聞けじゃなかったことなんて何回かあったと思うが・・・
0057デフォルトの名無しさんNGNG
前スレ1000にワロタ
0058デフォルトの名無しさんNGNG
>>51
あれはネタだって
0059デフォルトの名無しさんNGNG
そんなに型を確定させたいなら、
if( bFlag )
とかにでもしとけ
0060デフォルトの名無しさんNGNG
つーかさC言語しか知らん奴が多すぎ。もっと広い目を持て。
006132NGNG
 このスレに、ジサクジエンがいまちゅね・・・!!
 >>54
0062デフォルトの名無しさんNGNG
ハンガリアンキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0063デフォルトの名無しさんNGNG
あの熱さはネタじゃない。そうさ、奴はいつだって全力投球さ。
0064デフォルトの名無しさんNGNG
>>60
Cスレで何言ってんだ
0065デフォルトの名無しさんNGNG
if (flag)擁護派はC言語しか知りません。
0066デフォルトの名無しさんNGNG
>>65
逆
0067デフォルトの名無しさんNGNG
>>65
Cスレで何言ってんだ
0068デフォルトの名無しさんNGNG
>>65
PerlでもPHPでもそう書いています。
0069デフォルトの名無しさんNGNG
>>65-66 ジサクジエーン
0070デフォルトの名無しさんNGNG
>>68
JavaやC#やVB.NETではどうですか?
0071デフォルトの名無しさんNGNG
>60

#define begin {
#define end }
とかやる人でつか?(w
0072デフォルトの名無しさんNGNG
で、この話題で得ってあんの?
0073デフォルトの名無しさんNGNG
1レス10円だそうです
0074デフォルトの名無しさんNGNG
なんでCスレで他の言語を持ち出すのか謎。
0075デフォルトの名無しさんNGNG
>>74
C使いが他の言語を知っていることを証明するためです。
007632NGNG
 このソースを愚弄した奴がわるい。

i2=3;
j2=4;
ij=i2*j2;
if((str1=(int**)malloc(sizeof(int*)*i2))==NULL){
printf("メモリー確保の失敗:1");
exit(1);
}
for(i1=0;i1<i2;i1++)
if((str1[i1]=(int*)malloc(sizeof(int)*j2))==NULL){
printf("メモリー確保の失敗:2");
exit(1);
}


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));
}
}
putchar('\n');
for(i1=0;i1<i2;i1++){
putchar('\n');
for(j1=0;j1<j2;j1++)
printf("%3d",str1[i1][j1]);
}
0077デフォルトの名無しさんNGNG
Lisp では
(if flag <then節> <else節>)
(if (eq flag true) ...) なんて書くやつぁDQN

ML では
if flag then <then節> else <else節>;
if flag = true then .. なんて書くやつはDQN
0078デフォルトの名無しさんNGNG
プログラミング初心者の方へ:

たいていの言語では、

0 - 偽
それ以外 - 真

と評価されます。
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)のようなケアレスミスも起こりやすい。
(起こす方がバカと言うのは無しね。)
■ このスレッドは過去ログ倉庫に格納されています