ぱっと見て「ヘタだな ..
[2ch|▼Menu]
237:デフォルトの名無しさん
07/10/27 04:36:45
>>233
無効なポインタがどれかを調べたいなら、
if (NULL == xxx)って書いたほうが分かりやすいかもね。


238:デフォルトの名無しさん
07/10/27 04:37:29
>>223
後者のケースだと、for文を使うべきだよ。
whileを使う時は主にカウンタ変数がいらない時だな。
forとwhileを使い分ける人が居るように、
定数を右に書いたり左に書いたりする人が居ても良いだろ。
そして、定数が左だからってそんなに怒るほどのものでもない。

239:デフォルトの名無しさん
07/10/27 04:40:31
電車の座席に座るヤツが居るように
電車の床に座ってもいいだろ!
公園のベンチに座るヤツが居るように
コンビニの駐車場に座り込んでもいいだろ!
そんなに怒るほどのものでもない。

240:デフォルトの名無しさん
07/10/27 04:43:02
>>226
眠いのはお前だろ。眠くてしょうがないお前が勝手に勘違いしただけだろ。
「AよりBの方がまだマシ」という言い方をした場合、
「Bが良い」と主張しているということには決してならないよ。

糞と尿、どっち食うかと言われて、
「糞より尿の方がまだマシ」と答えた場合、
「尿が良い」と言うことにはならないだろ。

要はお前が勝手に勘違いしてるんだよ。
お前みたいなおっちょこちょいが居るから、文句言われようとも、
わざわざ定数を左に書かざるを得なくなる。その辺わかれ。

241:デフォルトの名無しさん
07/10/27 04:43:16
もう「比較演算子の左オペランドに定数を置く奴は死ね」スレでも立ててそっちでやってくれんかね

242:デフォルトの名無しさん
07/10/27 04:46:20
>>240
おまえ、実は>>80だろ?
もう、定数を左に置いても苛めないからさ、どこの会社かだけは教えてくれ。
お前を真人間に教育するよりも、関係を持たないようにする方が、遥かに安上がりだわ。


243:デフォルトの名無しさん
07/10/27 04:46:23
寿司食いたいフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ

244:デフォルトの名無しさん
07/10/27 04:48:19
if (0 == a)
  ↑  ↑
  糞  尿

245:デフォルトの名無しさん
07/10/27 04:49:43
俺なら尿を選ぶ。糞はちょっとな・・・

246:デフォルトの名無しさん
07/10/27 04:52:19
>>230
230は単に釣りだと信じたいのだが・・・。
strcmpはあくまで整数を返す。boolを整数で代用しているわけではなく、
正真正銘、整数としての戻り値を返す。
だから整数と比較するべき。
意味上も型上も正真正銘整数なものを、
ただ偽が0だからという理由だけで、あえてboolとして比較する、なんてのはナンセンスだよ。

逆に、if (!strcmp(str1, str2)) {} が OK な人なら、他は何やってもOKでしょ。
Cの禁じ手全部 OK じゃね?
定数が左にきたぐらいでごちゃごちゃ言う立場に無いね。

247:デフォルトの名無しさん
07/10/27 04:58:36
やばい、真性のキ印だったのか。

>>246
そもそも、Cにはboolなんて型は存在しないぞ。
ifとかの条件式は、単に0か非0かを見ているだけ。


248:デフォルトの名無しさん
07/10/27 05:01:44
>if (!strcmp(・・・)) と書くのが一番わかりやすい
てのは、いくら何でも間違いだろ。
勢いで書き込んだ後、おっといけね、strcmp だった〜orz ってとこだろね。

249:デフォルトの名無しさん
07/10/27 05:02:52
>>232
>引数よりも==NULLの方が重要ならifの中に
>関数呼び出しを丸ごと入れたりなんてしないでしょ
そうとは限らんよ。関数として見れば、関数が大事だし、
if文として見れば、条件が大事だ。

>人からコードを引き継いで改修箇所付近のコードを切れてるからって見ないなんて
>そんな人のケアをする自信なんて、俺にはないな
改修するならしっかり読むが、さらっと目を通すだけという場合も有るだろ。
おっちょこちょいなやつは何処にでも居るもので、そういう奴が変な勘違いを起して、
面倒を起したら困る。
実際、このスレにも自分の反論しようとしている相手の文章すら、
まともに読まない奴が居るわけで。
んで、自分のミスなのに、「お前の書き方が悪い」と開き直る。
だから、自分から相手が読みミスらないような書き方をする必要が出てくる。
結局こっちにも火の粉は飛んでくるからね。

250:デフォルトの名無しさん
07/10/27 05:05:45
最高にド低脳な発言してください in ム版(XVII)
スレリンク(tech板)

125 名前:デフォルトの名無しさん[sage] 投稿日:2007/10/27(土) 05:00:40
 strcmpはあくまで整数を返す。boolを整数で代用しているわけではなく、
 正真正銘、整数としての戻り値を返す。
 だから整数と比較するべき。
 意味上も型上も正真正銘整数なものを、
 ただ偽が0だからという理由だけで、あえてboolとして比較する、なんてのはナンセンスだよ。

 逆に、if (!strcmp(str1, str2)) {} が OK な人なら、他は何やってもOKでしょ。
 Cの禁じ手全部 OK じゃね?
 定数が左にきたぐらいでごちゃごちゃ言う立場に無いね。

↑最高にド低脳な発言!

251:デフォルトの名無しさん
07/10/27 05:09:05
>>250
ワロタ

自分で「ド低脳」って認めてどうするw

252:デフォルトの名無しさん
07/10/27 05:09:26
>>234
だから好きにやれば良いじゃん。

ウマいコードってのは、プロジェクトが停滞しづらいコードだろ。
逆にヘタなコードってのは、プロジェクトを停滞させるコードだろ。

あなたにウマいコードは必要ないじゃない。

253:デフォルトの名無しさん
07/10/27 05:10:09
オチがついたところで、また明日。おやすみなさい。

254:デフォルトの名無しさん
07/10/27 05:11:08
>>239 は コンパイルエラー

255:デフォルトの名無しさん
07/10/27 05:13:27
>>242
違う。
この議論は前スレから永遠と続いている。
というか、このスレは今現在俺だけで持ってるようなものなんだけど、
前スレからの流れを見てもらえれば、俺が>>80でないことは分かる。
物事への認識のレベルが違いすぎるからすぐ判るはず。

256:デフォルトの名無しさん
07/10/27 05:18:14
>>247
boolが無いから整数で代用しているんだろ。
>>247の2行目に、
>boolを整数で代用している
という文がちゃんと入ってるだろ。
単に整数値といっても、C言語の場合は、意味の上では、整数だったりboolだったりするから、
その辺は使い分けるべきだろ。
その程度の意識も無いのに、ウマいもヘタも無いね。
そういうやつは定数が左にきたぐらいでグダグダいう立場に無い。
糞食いながら、「しょんべんマズー」と言ってるようなものだ。

257:デフォルトの名無しさん
07/10/27 05:27:13
つーかもう今日は寝る。
返事はまた明日気が向いた時に返すかも。

今日は張り合い無かったなぁ。
if (!strcmp(str1, str2)) {} が 汚いって事すらもわからないような奴では、
ちょっと流石に相手にならないよ。
そういうやつが、他人のコードを綺麗汚いと、いきり立ってるのかと思うと、泣けてくるね。
身の程をわきまえるべき。

>>250>>125 をド低脳スレに貼ったらしいが、この始末どうつけるつもりなんだろうな。
他の右派(というか、単なるアンチ俺、もとい、暇つぶしの友)が可愛そうだ。

258:デフォルトの名無しさん
07/10/27 05:35:47
仮にif (!strcmp(str1, str2)) {}がif (0==strcmp(str1, str2)) {}に劣るとしても、
if (0==strcmp(str1, str2)) {} がif (strcmp(str1, str2)==0) {} に劣ることには変わりないのに。

259:デフォルトの名無しさん
07/10/27 07:33:42
変数左辺派による工作
URLリンク(ja.wikipedia.org)

260:デフォルトの名無しさん
07/10/27 07:38:41
腹減った

261:デフォルトの名無しさん
07/10/27 07:43:11
>>257
>暇つぶしの友
他所でやれ脳足りん。

262:デフォルトの名無しさん
07/10/27 07:49:35
if (!strcmp(str1, str2)) {} は綺麗

*dst++ = *src++ と勝るとも劣らないくらい綺麗


263:デフォルトの名無しさん
07/10/27 07:50:41
while(*dst++ = *src++);

264:デフォルトの名無しさん
07/10/27 08:24:17
英語ができると、if (!strcmp を、if not string compare と読んでしまうので
等値性をテストしているとは認識しにくいな。

!をnotと読まない人は気にならないんだろうけど。

265:デフォルトの名無しさん
07/10/27 08:55:17
if (!strcmp(str1, str2)) {} の何がいけないのか分からない

266:デフォルトの名無しさん
07/10/27 08:56:01
if(str1 == str2) {}
だろ上官

267:デフォルトの名無しさん
07/10/27 08:59:28
>>266
その発想は無かった

268:デフォルトの名無しさん
07/10/27 09:06:07
・・・なんでこんなことを議論しているのかがよく判らない。

269:デフォルトの名無しさん
07/10/27 09:14:44
おまいらおはよう。未だに左定数の話をしていて正直がっかりだ。

>>169
賛同ありがとう。「簡単なことをこんなに難しく書くやつがいるんだぜ」「頭
痛いよなぁ」で済むと思ったら、予想外の展開になって別の意味で頭が痛かっ
たよ。

>>171
皮肉? いや、いたってマジだぞ? だってソース見たとき本気で頭かかえたもの。
ちなみにこういうコードへの対策は、「10行以上書いたらレビューしろ。毎日
レビューしろ。動いてからレビューするな」以外に知らないんだ。(そういう
意味でペアプログラミングはすげー有用だと思うんだが、まだ実現できたこと
がない)

>>189
> の中で重要な処理をしているかもしれない。
それだったら「本質の抜粋」にならないでしょーが。
for文の中は、変数名と定数値以外、「そのまんま」だ。
違う点は、オリジナルはC++じゃなくてJavaなこと、関数(メソッド)のシグネチャ、
書いた処理の前にもコードがあること、最後のif文のブロックの中身。


270:デフォルトの名無しさん
07/10/27 09:39:00
>>269
補足しておくと、ここで言ってる「本質」とは、
「b-N<a≦b (a, b, Nは整数) を判定する、ただそれだけのために、大小比較じゃなくてループを使ってる」
ってことだと書けば理解してもらえるか?>>189

271:デフォルトの名無しさん
07/10/27 09:58:28
ぱっと見て「ヘタだなぁ」と思うスレ

272:デフォルトの名無しさん
07/10/27 10:06:30
くだらねー議論してんなぁ。
定数を左に置くか否かなんてとっくの昔に結論でてるだろうが。

>>196のような例外を除いて定数を左において可読性落としたり、
スクロールしないと全部が見渡せないような条件式なんか書くな。

コンパイラが警告出さない時の数十年前に編み出された小手先を
未だに神の一手が如く崇拝してんじゃねぇよ、ボケ。
これを知ってる俺って技術力たけぇなんて思ってたかもしれんが、
ド低脳の証明だ。玉石混交の石のほうだ、カス。

273:デフォルトの名無しさん
07/10/27 10:14:14
おまえら、何度も同じことをくりかえすならfor文の中にでも入れとけよ

274:デフォルトの名無しさん
07/10/27 10:18:04
>271
禿同

275:デフォルトの名無しさん
07/10/27 10:18:23
おはよう。しつこいがもう一度爆弾投下!

test.cpp
 if (a = 0) printf("x");

D:>bcc32 test.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.cpp:
警告 W8060 test.cpp 7: おそらく不正な代入(関数 main() ) ←←←【ここ注目!】
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

>>80
わざわざひねくれて if (0 == a) としなくても、ちゃんと警告出してくれるから。
ミスを防ぐため、というのは全然理由にならない。

「定数は左」って書き方って、15年以上も前に「Cマガジン」って雑誌が流行らせたんだよね。
当時の古いコンパイラは上のような警告は出していなかったかもしれない。
でも今は無料のタダのコンパイラでさえ警告出すようになって、「定数左」は意味の無いものになった。
15年も前に決着が付いて廃れたことを、いまだに「神の福音」のように信じ込んでいるヤツがいるんだな。
おまいは隠れキリシタンかw

276:デフォルトの名無しさん
07/10/27 10:21:53
>275
if文の中身間違えてない?

277:デフォルトの名無しさん
07/10/27 10:30:11
>>269
あまりにもスレタイトルに沿ったコードだったからレスつけるまでもないと思った。

278:デフォルトの名無しさん
07/10/27 10:50:13
>>275
コンパイラによっても違うな。さすがゴミクズ撒き散らすマイクロソフトって感じだ。

C:>bcc32 test.cpp  【borlandのコンパイラ】
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.cpp:
警告 W8060 test.cpp 5: おそらく不正な代入(関数 main() )  【警告が出る】
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland


C:>cl test.cpp  【マイクロソフトのコンパイラ】
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

test.cpp
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.
                   【警告は出ない】
/out:test.exe
test.obj

279:276
07/10/27 10:55:07
間違った;ごめん

280:デフォルトの名無しさん
07/10/27 11:02:33
>>278
cl は /W4 で使うもんだ。
gcc は最低でも -Wall で使うもんだ。

281:デフォルトの名無しさん
07/10/27 11:11:33
おれ定数左派だけど定数を左におく場合の欠点って何?
可読性落ちる?
でも落ちるか?
慣れてないとえっ?って思うかもしれないけど別にそれぐらい大丈夫でしょ。
javaでも
"hoge".equal(var);
ってイディオムあるぐらいだし。

lintなんて毎回通さないし、コンパイラの警告も丸カッコついてるとスルーされるし。
(論理式で繋がってたり、マクロが絡んだりすると丸カッコつく場合があるよね)
あとたまたま警告を見過ごしてオブジェクトファイルになってしまうと、次にファイル更新しないと警告でないよね。
おれ注意散漫だから1年に2、3度ぐらいは==と=の間違いやってしまうけど定数左のおかげで早期発見できてるよ。

もちろん定数右でもコンパイラの警告で見つかってるかもしれないけど
定数左にして損はなしと思うから昔から今までずっとそのスタイル。

282:デフォルトの名無しさん
07/10/27 11:16:37 BE:789120656-2BP(125)
ソースファイル内でそのスタイルで統一されてるなら、別に定数が右だろうが
左だろうが、個人の好みだからいいと思うけどなあ。

会社とかで、規約がちゃんとある場合は別で。

283:デフォルトの名無しさん
07/10/27 11:22:03
C:\test>cl /W4 test.c
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

test.c
c:\test\test.c(7) : warning C4706: 条件式の比較値は、代入の結果になっています。
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.

/out:test.exe
test.obj

>>278
clでもちゃんと警告出るじゃねぇか

284:デフォルトの名無しさん
07/10/27 11:25:11 BE:1473024487-2BP(125)
gccも-Wallつけないと警告でないね。
まあ、普通は付けてると思うけど。

285:デフォルトの名無しさん
07/10/27 11:37:51
>>282
スタイルには単に好みの問題と、実際にメリットのあるものとがある。
前者は ifの条件式の後に中カッコつけるか、改行してからつけるか、など。
後者はif のあとには必ず中カッコをつける、など。
定数左は後者だと思う。(可読性に問題はないと思うので)

286:デフォルトの名無しさん
07/10/27 11:52:10
>>282
「統一されてればいい」ってことなら、あえて少数派のスタイルを選ぶことはないんじゃないの? >>72



287:デフォルトの名無しさん
07/10/27 12:10:59 BE:526080454-2BP(125)
>>285
定数左は確かに代入によるバグを防げるときもあるけど、
その反面、慣れないとぱっと見てわかりづらいよね?

例えば、代入文は
x = 0;
などと書くわけで、大抵の文は左から右に読んでいく。
そして、定数は右にある。これへの慣れが強いので、
if(0 == x)などと書かれると、ここで思考が停止してしまう。

ソースコードの理解しやすさ(可読性?)も考えると、トレードオフで
どちらを選ぶかは個人の趣味レベルになるのかなあと。
上で議論されてるように、コンパイラとかで容易にチェックできるわけだし。

288:デフォルトの名無しさん
07/10/27 12:12:39
コーディングスタイルに拘りすぎる奴はヘタクソ
コーディングスタイル論争に突入する奴はさらにヘタクソ

289:デフォルトの名無しさん
07/10/27 12:15:18 BE:1262592386-2BP(125)
>>286
少数派ではあるけれども、>>285の言うようにチェッカとかを使わなくても
ミスに気づくことができるという利点があるので選ぶんだろうね。

ちなみに漏れは定数は右派。
右におくソースがほとんどだし、慣れてるし。



漏れが見たオープンソースなソフトウェアのソースは定数が右にあった。
もし、定数が左にあることにもっと優位な点があるなら、とっくに
ほとんどのソースが定数左になってると思うんだけど、いかがだろう。

290:デフォルトの名無しさん
07/10/27 12:49:32
とヘタクソ厨がもうしております

291:デフォルトの名無しさん
07/10/27 12:57:03
>>281
主語と目的語の区別がつかないアホには
自然言語からやり直せといいたい。

292:デフォルトの名無しさん
07/10/27 13:05:06
読む分にはどっちでもいい。何の違いもない。
書くときはsubject == compareの方が流れ的に書きやすい。

293:デフォルトの名無しさん
07/10/27 13:50:50
288の書いたコードは汚そうだな。


294:デフォルトの名無しさん
07/10/27 14:23:51
おまえら…。

【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'

【結果発表】
パッ   パッ   パッ    パッ   パッ    パッ
 [チラ]  [シの]  [裏に]  [書き]  [やが]  [れ!]
  ‖∧,,∧ ‖∧,,∧ ‖∧,,∧ ‖∧,,∧ ‖∧,,∧ ‖∧,,∧
  ∩・ω・`) ∩・ω・`) ∩・ω・`) ∩・ω・`) ∩・ω・`) ∩・ω・`)
   (    ). (    ). (    ) (    ) (    ) (    )
   `u-u´  `u-u´   `u-u´  `u-u´  `u-u´  `u-u

295:デフォルトの名無しさん
07/10/27 14:31:10
if(*dst++ = *src++){
hogehoge
}

みたいなとき警告でないようにしたいのですが


296:デフォルトの名無しさん
07/10/27 14:33:15
if((*dst++ = *src++) != 0){


297:デフォルトの名無しさん
07/10/27 15:11:01
もうね、コーディングスタイルスレでも立ててそこでやれと

298:デフォルトの名無しさん
07/10/27 15:40:13
しかし、無茶苦茶な低能が居たものだな...
if (!strcmp(str1, str2)){}
は、知らない者に対して、文字列が等価で無いこと比較しているような誤解を与えることがあるので好ましくは無いだろう
では、
if (strcmp(str1, str2) == 0){}
これはどうだろうか?
この場合、!strcmp()よりも悪化していると言える
本質的な問題を解決していないからである
しかも、余分に入力した上で、知らない者に対し更なる誤解の種をまいていると言えるからである

故に、C FAQでは、
#define Streq(s1, s2) (strcmp((s1), (s2)) == 0)
と言うマクロを用意することで
if (Streq(str1, str2)){}
と記述させる事により、文字が等価であることを比較している事を判りやすくしましょうと書いているのだ

つまり、定数を左に置く正当の理由とは言えない
その上、彼の主張の一つである、定数を左に置くことで、何と比較しているのか判りやすくなると言う弁からすると
"文字列が等価では無いことを調べている"ように強調されてしまった駄目なコードの例と化しているのである

彼は、これを大まじめに、こちらの方が判りやすいと言っているが、どう考えても、判りにくなっていると思われる


299:デフォルトの名無しさん
07/10/27 15:41:35
わかったから月曜になったらちゃんとハロワ池よ

300:デフォルトの名無しさん
07/10/27 15:54:07
;`;:゙;`(;゚;ж;゚; )ブフォッ!

301:デフォルトの名無しさん
07/10/27 16:04:59
strcmpでの定数の右左に関して言えば、圧倒的に右だろう。
if (strcmp(str1, str2) < 0)

を読むとき、不等号が見たままの形として利用できる。
つまり、 str1 < str2 として直感的に理解することができる。

同様の条件を右定数で書くと、
if (0 > strcmp(str1, str2)) となって、見たままの直感と反してしまう。

そのつどリファレンスを引いたりしたくないし、
機械的に右へ書いてしまう習慣は役に立つ。

302:デフォルトの名無しさん
07/10/27 16:05:07
できる奴ほどスタイルにこだわる

303:デフォルトの名無しさん
07/10/27 16:14:56
大きいほうを右に配置したいし、常にそうするから、
結果的に不等号の「>」は不要だと思うんだよなぁ。

勿論、流儀の問題でぶつかったりする心配はあるけど、
そうじゃなくて自分ひとりで「>」無しでやっていくうえで、
どうしてもでてくる不都合ってあるのかな?
「<」じゃ困ってしまうような事態があるのかな?

チラシの裏にでも書いておけって? すまんね。

304:デフォルトの名無しさん
07/10/27 16:31:17
だれか、288を日本語に翻訳してくれ。

で、実際のところ、定数は左に置けとか頑張ってるのって、一人だけだろ?


305:デフォルトの名無しさん
07/10/27 17:26:57
>>301
それは「定数を左辺に」と主張している派の本質と話題をそらせて釣りだと思うけど

306:デフォルトの名無しさん
07/10/27 17:28:27
ぱっと見て「バカだなぁ」と思うコード

307:デフォルトの名無しさん
07/10/27 18:09:07
スレスピードがきもいよお前ら

308:デフォルトの名無しさん
07/10/27 18:14:17
いまム板で一番勢いがあるスレだぜここは

309:デフォルトの名無しさん
07/10/27 18:15:40
昨夜から今朝にかけての速度はもう、ある種の祭りだった。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5383日前に更新/89 KB
担当:undef