ぱっと見て「ヘタだなぁ」と思うコード その6
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/10/25(木) 03:35:55・長い関数
・深いネスト
・グローバル変数
・goto
・memset
・malloc - free
・局所ブロック
・サンプルコードのtypo
・記述スタイル
・関数・変数名
過去スレ
その5: http://pc11.2ch.net/test/read.cgi/tech/1155315371/
その4: http://pc8.2ch.net/test/read.cgi/tech/1153312202/
その3: http://pc8.2ch.net/test/read.cgi/tech/1149986051/
その2: http://pc8.2ch.net/test/read.cgi/tech/1142741989/
初代 : http://pc8.2ch.net/test/read.cgi/tech/1141867015/
0002デフォルトの名無しさん
2007/10/25(木) 03:50:580003デフォルトの名無しさん
2007/10/25(木) 03:52:310004デフォルトの名無しさん
2007/10/25(木) 08:59:170005デフォルトの名無しさん
2007/10/25(木) 10:48:00左定数も禁止ネタに入れとけよ
0006デフォルトの名無しさん
2007/10/25(木) 10:50:46はでメリットがない上に明確なメリットがある以上
やらない奴は低能。
0007デフォルトの名無しさん
2007/10/25(木) 10:56:030008デフォルトの名無しさん
2007/10/25(木) 10:57:01・malloc - free
の禁止ネタって何だ?
0009デフォルトの名無しさん
2007/10/25(木) 12:32:550010デフォルトの名無しさん
2007/10/25(木) 15:27:37と
if( 0 == a ){}
では、同じコードになる保証は何処にもない
判りやすく、C++で解説するならば
前者は
if ( a.operator==( 0 ) ){} // オブジェクトaの==メソッドの呼び出し
であり
後者は、
if ( operator==( 0, a ) ){} // グローバルな==関数の呼び出し
となるからである
0011デフォルトの名無しさん
2007/10/25(木) 15:29:070012デフォルトの名無しさん
2007/10/25(木) 15:43:23>>10は左定数擁護派だ
0013デフォルトの名無しさん
2007/10/25(木) 16:53:26> ・memset
char* p = malloc(1024);
memset(p, 0x00, 1024);
とするのは是か非かという話題。
・必要ないのになんでヌルクリアするの?派
・したってそれほど実害ないじゃん派
の二派に分かれる。
[私見] 前者が妥当
> ・malloc - free
main()が終了する前に、free()は必要なのかという話題。
・自分でmalloc()したんだから、free()するのは当然派
・OSが回収する資源だからしなくても良い。free()が難しいデータ構造だってあるじゃん派
過去に何度かfj.lang.cでも長大なスレッドになったことも有名。
[私見] 後者が妥当
0014デフォルトの名無しさん
2007/10/25(木) 17:51:51> 過去に何度かfj.lang.cでも長大なスレッドになったことも有名。
ありがとううう!! そういう具体的な情報は嬉しいね。
俺の私見:
char *pの事前のmemsetは不要なのでしない。
(ただしcalloc(1, sizeof(hoge));は多用する)
main終了前のfreeは不要なのでしない。
↑禁止ネタにこういうレスしたらダメでしょうか?わかりません><
0015デフォルトの名無しさん
2007/10/25(木) 17:53:020016デフォルトの名無しさん
2007/10/25(木) 18:13:18memsetはした方がいいし、できる限りfreeする方がいいだろう
しかし、定数は右に置くべきだろう
0017デフォルトの名無しさん
2007/10/25(木) 18:18:450018デフォルトの名無しさん
2007/10/25(木) 18:20:580019デフォルトの名無しさん
2007/10/25(木) 18:25:06その書き方なんか気持ち悪いんだけど...
char *p = malloc(size);
strcpy(p, "");
の方が好き
0020デフォルトの名無しさん
2007/10/25(木) 18:45:300021デフォルトの名無しさん
2007/10/25(木) 18:57:230022デフォルトの名無しさん
2007/10/25(木) 19:54:22スルー力って、新種のイカかと思った
0023デフォルトの名無しさん
2007/10/25(木) 20:10:27【審議中】
∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
【結果発表】
パッ パッ パッ パッ パッ パッ
[チラ] [シの] [裏に] [書き] [やが] [れ!]
‖∧,,∧ ‖∧,,∧ ‖∧,,∧ ‖∧,,∧ ‖∧,,∧ ‖∧,,∧
∩・ω・`) ∩・ω・`) ∩・ω・`) ∩・ω・`) ∩・ω・`) ∩・ω・`)
( ). ( ). ( ) ( ) ( ) ( )
`u-u´ `u-u´ `u-u´ `u-u´ `u-u´ `u-u
0024デフォルトの名無しさん
2007/10/25(木) 20:12:56お前がな!
(顔ズレてるじゃんよ)
0025デフォルトの名無しさん
2007/10/25(木) 20:24:260026デフォルトの名無しさん
2007/10/25(木) 20:44:100027デフォルトの名無しさん
2007/10/25(木) 21:25:46>>19
無駄な関数呼び出しをして、処理速度を遅くしたい人ですね?
コンパイラの最適化で*p='\0';と同じコードを吐いてくれるようになるのかな??
0028デフォルトの名無しさん
2007/10/25(木) 21:29:24> 過去に何度かfj.lang.cでも長大なスレッドになったことも有名。
fj.lang.cの時は、プロセス終了時にmallocで確保したメモリを開放しない(できない)OSもあるから、main()終了直前でもfreeしたほうがいい、って結論だった記憶が。
今でもwindowsだと信用ができない。
0029デフォルトの名無しさん
2007/10/25(木) 21:37:480030デフォルトの名無しさん
2007/10/25(木) 21:49:26fjで結論なんて出るわけないだろ。
0031デフォルトの名無しさん
2007/10/25(木) 22:31:57いや、*p='\0';だと、馬鹿な奴が、*p="Init Strings";とかやってくれそうで...
0032デフォルトの名無しさん
2007/10/26(金) 00:15:42Decの後の\についてはスルーするとして、こういうのってどうよ
0033デフォルトの名無しさん
2007/10/26(金) 00:18:17埋め込むなら、
char *month[] = {"Jan", "Feb", ・・・, "Dec"};
でいいじゃねえかと言いたくなります。
0034デフォルトの名無しさん
2007/10/26(金) 00:48:36それ、後者はコンパイル通らないよ。
0035デフォルトの名無しさん
2007/10/26(金) 01:40:17仮想記憶の無いOSもある
ex.DOS
ex.ITRON
アプリケーションが死ぬ時にOSも道連れなら別にかまわんが、違うだろう?
0036デフォルトの名無しさん
2007/10/26(金) 01:48:400037デフォルトの名無しさん
2007/10/26(金) 01:56:53そういうばか者は、要らない工夫をするから怖いよ〜♪
しなくていい工夫はするのに、しなきゃいけない工夫をしないんだ...orz
0038デフォルトの名無しさん
2007/10/26(金) 02:01:32コーディング規約でいくら縛っても縛っても、とんでもないコード書いてくるよな。
逆に言えば、コーディング規約でどうにかなる程度の問題なんて、初めからどうでも良い。
つまり、コーディングスタイルなんて、どうだっていいって事だな。
縛ろうと思えば、いつでも縛れるんだから。
0039デフォルトの名無しさん
2007/10/26(金) 02:17:01>縛ろうと思えば、いつでも縛れるんだから。
いつでも縛れるからといっても、単体試験も終わろうかという時にコーディング規約を
変更するのは無しだろ、、、
0040デフォルトの名無しさん
2007/10/26(金) 02:17:060041デフォルトの名無しさん
2007/10/26(金) 02:29:11そりゃ途中で変更は出来んだろうな。
だけど、コーディングスタイルは縛ろうと思えば縛れるんだから、全然いいんだよ。
むしろ問題は、どうやっても縛ることのできない、糞コードの方。
網の目をかいくぐるように余計なことをする。
0042デフォルトの名無しさん
2007/10/26(金) 02:54:10自分以外がその変更をする場合でも恐らく大丈夫だろうと思われる
*p = '\0';では、>>31みたいな変更をされた挙げ句、>>37な奴で、結果mallocした領域を駄目になって謎のエラーに悩むはめに...
猫の手を借りるためには、猫に理解できるコードを書かなければならない...orz
0043デフォルトの名無しさん
2007/10/26(金) 03:10:130044デフォルトの名無しさん
2007/10/26(金) 10:35:48NULLと'\0'(NUL)は違うっていうのはわかってるよね?
いちよう。
0045デフォルトの名無しさん
2007/10/26(金) 10:36:480046デフォルトの名無しさん
2007/10/26(金) 14:09:32たぶん、判ってるよぅ(^-^;
NULLは、ナルっとしてて
NULは、ヌルっとしてるんだよね!
*p = '\0';にしてんじゃん...
判ってなきゃ、*p = NULL;にするし...
0047デフォルトの名無しさん
2007/10/26(金) 14:21:330048デフォルトの名無しさん
2007/10/26(金) 14:23:11いくらなんでも、それは無い
0049デフォルトの名無しさん
2007/10/26(金) 14:24:030050デフォルトの名無しさん
2007/10/26(金) 15:12:13もう終わったけど、if (定数 == 変数)の話がC FAQに載ってることに誰も言及しなかったのが不思議。
三田テンゲンは、C FAQから持ってきたか、comp.lang.cをwatchしてたかのどっちかじゃないかな。
0051デフォルトの名無しさん
2007/10/26(金) 15:14:27何もないならWiiFitでも買ってたるんだ腹でも引っ込めたらどうだw
0052デフォルトの名無しさん
2007/10/26(金) 15:19:050053デフォルトの名無しさん
2007/10/26(金) 15:47:540054デフォルトの名無しさん
2007/10/26(金) 15:48:560055デフォルトの名無しさん
2007/10/26(金) 15:49:06ASSERTの説明が入っているかどうか。
0056デフォルトの名無しさん
2007/10/26(金) 15:58:140057デフォルトの名無しさん
2007/10/26(金) 16:01:21変数を何と比較しているのか判りやすくするってのは、当該関数の中で、その定数が比較対照になることは決まりきっているので、態々定数を先に持ってくる意味はない
当該関数で、比較に用いられる定数がなんなのか判りにくいのであれば、それは、関数が適切に作られてはいないことを意味するのでは無いだろうか?
また、どうしても定数を最初に出さなければ何を調べてるのか判らないような場合は、if文ではなく、switch文を使用する方が適切なのではないだろうか?
0058デフォルトの名無しさん
2007/10/26(金) 16:07:250059デフォルトの名無しさん
2007/10/26(金) 16:09:100060デフォルトの名無しさん
2007/10/26(金) 16:22:45だからクビになるんだよ
はやく次の仕事見つけろよ
0061デフォルトの名無しさん
2007/10/26(金) 16:36:06自己紹介乙!
0062デフォルトの名無しさん
2007/10/26(金) 17:44:27これの意味がさっぱり分からない…。何の話をしようとしているのかさえ分からない。
0063デフォルトの名無しさん
2007/10/26(金) 18:03:48ほんとは if(a==1) と判定したかった
でも if(1=a) こうすればコンパイル時に忘れてても分かる
ところが変数同士の比較 if(b=a) はどうしようも無い
というお話
0064デフォルトの名無しさん
2007/10/26(金) 18:08:23ってこと? し、しかし比較は癖も何も==なわけで。
> ところが変数同士の比較 if(b=a) はどうしようも無い
そんなのは既出どころかスタート地点であって、その上で、
「せめて定数の場合の代入だけは検出できるようにしよう」
ってのが定数左派の主張では?
いつも役に立つ、ではなくて、役に立つ場合があるから左に書く、と。
0065デフォルトの名無しさん
2007/10/26(金) 18:10:11> ところが変数同士の比較 if(b=a) はどうしようも無い
これは、そもそも左も右もねぇ!
0066デフォルトの名無しさん
2007/10/26(金) 18:13:300067デフォルトの名無しさん
2007/10/26(金) 18:35:130068デフォルトの名無しさん
2007/10/26(金) 19:51:18右定数が左定数より優れている点って何?
0069デフォルトの名無しさん
2007/10/26(金) 19:52:160070デフォルトの名無しさん
2007/10/26(金) 19:56:280071デフォルトの名無しさん
2007/10/26(金) 20:01:38警告でるから、その利点いらね。
0072デフォルトの名無しさん
2007/10/26(金) 20:11:59"== NULL" lang:c 約1,240,000件
"NULL == " lang:c 約56,800件
特に利点もないのに、圧倒的少数派のスタイルを選んでる時点でヘタクソ臭が。
0073デフォルトの名無しさん
2007/10/26(金) 20:21:45C FAQに載っているけど、それは定数左置きにダメ出ししているってことを理解できてるか?
0074デフォルトの名無しさん
2007/10/26(金) 20:25:53デブ専、ブス専、フケ専、ハゲ専なんかと同じ人種なんだろう。
自分の感覚が世間とずれていることを認めたがらない。
0075デフォルトの名無しさん
2007/10/26(金) 21:55:50テンポラリ用の奇怪な共用体を使い回したりダミーデータの隙間を拝借したりするような奴にはどう言ってやればいいと思いますか
メモリ節約すること自体は大切だし
0076デフォルトの名無しさん
2007/10/26(金) 21:58:140077デフォルトの名無しさん
2007/10/26(金) 22:16:11引数をshortにしてるコードとかもあるな。
よっぽど気をつけてコードを書かないと、すぐintへ変換するコードがはいるから、それで、節約した
2バイトなんて簡単にとぶ。
アライメントの問題もあるな。
0078デフォルトの名無しさん
2007/10/26(金) 22:16:18そのくせプロファイラの使い方すら判らないとか
0079デフォルトの名無しさん
2007/10/26(金) 22:39:36数バイトでも節約したいとか実行速度がシビアだったりしなければ。
0080デフォルトの名無しさん
2007/10/26(金) 22:43:44"== NULL"
"NULL =="
こんなの多数決で考える頭はもうちょっと働かせたほうがよい
if(変数 = NULL)
が引き起こすバグをどうやって見つけるのか考えた事がある?ない?
難しい正規表現でも作る?`NULL'以外の場合もあるよ。
それより定数を左辺にもってくる方法を身につければいいだけじゃない?
自分がグループリーダーになったとき、部下のミスを見つけられるレベルになれる?
これはただの忠告。>>72はそれでいいならいい。私に累が及ばなければどんなコーディングでも結構。
プログラミングの先生だって×は出さないだろうしなw
0081デフォルトの名無しさん
2007/10/26(金) 22:45:53ええ? そのバグを防ぐ方法を知らないの?
こういう話のときには必ずでるのに。。。
基礎の基礎だよ。
0082デフォルトの名無しさん
2007/10/26(金) 22:49:59そんなもんコードチェッカーにかければすぐ見つかるだろ。
まさかコードチェッカー使ってないのか?
0083デフォルトの名無しさん
2007/10/26(金) 22:50:110084デフォルトの名無しさん
2007/10/26(金) 22:53:50フツーに警告出ないようにコードを書いてるだけで防げるな。
警告出さないようなコンパイラはコードチェッカを使うか、捨てるべきか、悩むこところ。
0085デフォルトの名無しさん
2007/10/26(金) 22:57:32> こんなの多数決で考える頭はもうちょっと働かせたほうがよい
コーディングスタイルなんて、よっぽどのセンスと見識があるやつ以外は、自分で考えたりしないで、
一般的なものに従うほうがいいよ。
(どうしてそういうスタイルになっているか、それ以外ではいけないか、考察したりするのは勉強になるけど)
0086デフォルトの名無しさん
2007/10/26(金) 22:59:39> これはただの忠告。>>80はそれでいいならいい。私に累が及ばなければどんなコーディングでも結構。
> プログラミングの先生だって×は出さないだろうしなw
しかし、これは真実w
>>79
実行速度なら、shortよりintの方が有利のはず。
0087デフォルトの名無しさん
2007/10/26(金) 23:01:09警告を無視する習慣があることはよく分かった
その悪習を直すほうがよっぽどいいよ
008980
2007/10/26(金) 23:26:14ちなみに、ウチ(60人ぐらいかな?)にはコードチェッカーを使う人は滅多にいない。
先人の知恵を借りれば、文字間違いのエラーぐらいしか出てこないし、そんなのはコンパイルエラーで出てくるから。
コードチェッカーに頼る前にコーディングスタイルに気を配る方がよっぽどよいよ。
その方が、コードレビューやバージョン管理に割く時間が増えるからね。
もっとも、バージョン管理はCVSで一瞬で済んでしまうが
0091デフォルトの名無しさん
2007/10/26(金) 23:29:00ん?
「数バイトでも節約したい」とか「実装速度がシビアだったりしなければ」{shortを使う}って読ませたいのか?
(「数バイトでも節約したい」とか「実装速度がシビアだったり」)「しなければ」{int}って読めるぞ。
人のことを言う前に、ちゃんとした分かりやすい日本語を書け。
設計書や資料を作るときの基本だろ?
#include <stdio.h>
int main(int argc, char *argv[]){
int a = 2;
if(a = 1)
printf("%s\n", argv[0]);
return 0;
}
というプログラムを-Wall付きでコンパイルしてみたら、
test.c:6: 警告: 真偽値として使われる代入のまわりでは、丸括弧の使用をお勧めします
という警告が出た。まあこれで何か起こってることはわかるだろう。
0093デフォルトの名無しさん
2007/10/26(金) 23:30:23そこだけには仕事は頼まないようにするから、教えてくれ。
0094デフォルトの名無しさん
2007/10/26(金) 23:31:000095デフォルトの名無しさん
2007/10/26(金) 23:32:41アホなコンパイラ使ってるなら、せめてlintとか使えよ。
こわー。
0096デフォルトの名無しさん
2007/10/26(金) 23:33:07009779
2007/10/26(金) 23:38:15・普通はshortを使う。
・数バイトでも節約したい場合は>>77のようにintを使った方がよい場合もある。
・実行速度がシビアならintを使った方がよい。
という意味のつもりで書いたが分かりにくかったか。
0098デフォルトの名無しさん
2007/10/26(金) 23:40:01> が引き起こすバグをどうやって見つけるのか考えた事がある?ない?
最悪、ホワイトボックスの分岐網羅カバレッジ100%のテスト段階で見つかるわけだが。
それより早く見つかったほうがコストが安いから、どうしようという話。
で、ちゃんとしたコンパイラかlint使えって結論。
009980
2007/10/26(金) 23:41:10何のデモか知らないけど、わざわざ-Wallで例示するなんてヒマなんだね。
>>93
いや、もう遅いかもしれんよwww
>>94
警告は全部潰してるよ。
そもそも、コーディングスタイルで蹴ってるからそんな警告があること自体知らなかった。
君ら無駄な努力払ってるね。
>>96
妄想強すぎ
0100デフォルトの名無しさん
2007/10/26(金) 23:41:24コードチェッカの類を使ったことないだろ。
0101デフォルトの名無しさん
2007/10/26(金) 23:41:48| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ >>80
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0102デフォルトの名無しさん
2007/10/26(金) 23:42:42ループ変数に、いつもshort iとか書いてるのか?
いやすぎる。
0103デフォルトの名無しさん
2007/10/26(金) 23:44:57> そもそも、コーディングスタイルで蹴ってるからそんな警告があること自体知らなかった。
どんだけ情報弱者なんだよ・・・
0104デフォルトの名無しさん
2007/10/26(金) 23:45:030106デフォルトの名無しさん
2007/10/26(金) 23:47:00おまえの、定数を左にもってくるってのも、コーディングスタイルじゃなくて、コンパイラに頼って
バグを見つけるって発想だろ。 >>80
警告出るから、そんなことしなくていいってがコンセンサスになってるから >>72 みたいな結果になるわけよ。
0107デフォルトの名無しさん
2007/10/26(金) 23:49:29レッテルを貼られるリスクを考えたことがないようだ。
0108デフォルトの名無しさん
2007/10/26(金) 23:50:08010980
2007/10/26(金) 23:54:01コードチェッカーの類?最近は全くないね。
VC++6、VS2005、gcc3.4.4などまあ常識の範囲内のコンパイラ
最近はやむを得ずSDCC使ってるけど、エンバグすら直ぐ分かっちゃうのでlint通す意味ナシ。
0110デフォルトの名無しさん
2007/10/26(金) 23:54:52普通じゃない
0111デフォルトの名無しさん
2007/10/26(金) 23:55:36日本語でOK
0112デフォルトの名無しさん
2007/10/26(金) 23:57:28if (0 = a)はコンパイラに任せるのに、その他の複雑なバグが簡単に見つかるコードチェッカーは使わないと?
わけわからん
0113デフォルトの名無しさん
2007/10/26(金) 23:59:10コードチェッカの意義とか理解してないっぽいな。。。
0114デフォルトの名無しさん
2007/10/26(金) 23:59:260115デフォルトの名無しさん
2007/10/27(土) 00:00:09なんか必死だけど、どれだけ言葉を重ねても、レベルが低いことを証明することになるだけだぞ。
0116デフォルトの名無しさん
2007/10/27(土) 00:00:35ほう、そんなリスクがあっても引く手あまたのウチの会社って凄すぎるってこと?wwww
>>106
どういたしまして。負け犬の遠吠えと受け取っておきますm(_ _)m
0117デフォルトの名無しさん
2007/10/27(土) 00:01:29コードチェッカが無意味なくらい完璧にコードを書けるなら、定数を左にもってくるとか、
姑息なテクニックを使わなくてもいいよな。
0118デフォルトの名無しさん
2007/10/27(土) 00:03:08使わなくなるなんて考えられない。
ライセンスの関係で全員がコードチェッカーを使えないとしても、レビュアーがコードチェッカーを
使うことで、レビューの工数をかなり減らせる。なので、以前使ってて、使わなくなるなんてやはり考えられない。
つまり、部下のミスを見つけてなんかいないってこった。
あ、部下がいないという線もあるな。
0119デフォルトの名無しさん
2007/10/27(土) 00:04:480120デフォルトの名無しさん
2007/10/27(土) 00:05:350121デフォルトの名無しさん
2007/10/27(土) 00:06:440122デフォルトの名無しさん
2007/10/27(土) 00:07:030123デフォルトの名無しさん
2007/10/27(土) 00:07:24コーディングルールを守ってるから、警告でなくて知らないって話だけど、
そういうのは教条的に守るんじゃなくて、どうしてそうなってるかとか考えたほうがいいよ。
0124デフォルトの名無しさん
2007/10/27(土) 00:09:43自分がレベル低いなんて夢にも思ってなかったから、現実を突きつけられて自我の危機に陥ってる。
0125デフォルトの名無しさん
2007/10/27(土) 00:12:01今ではまるで意味が無い。
0126デフォルトの名無しさん
2007/10/27(土) 00:12:16それを使っているからといって、声高に自慢するようなことではない。
0127デフォルトの名無しさん
2007/10/27(土) 00:13:59お前ら自重しろ。
0128デフォルトの名無しさん
2007/10/27(土) 00:14:080129デフォルトの名無しさん
2007/10/27(土) 00:15:42コンパイルエラーになることを理由にしているようだが、
それは右に置いてもコンパイラの警告が出るので互角(散々既出)。
となると、ほかに理由を提示しない今、残る理由は各人の好み。
そこで80は左を選択したということだろう。
0130デフォルトの名無しさん
2007/10/27(土) 00:19:37・この警告は出るのが当たり前、気にするな
・この警告は出てもいいけど本当に大丈夫かチェック汁
・この警告出したバカは氏ね
みたいに警告のランク分けとかするよね。
0131デフォルトの名無しさん
2007/10/27(土) 00:20:020132デフォルトの名無しさん
2007/10/27(土) 00:23:50> それは右に置いてもコンパイラの警告が出るので互角(散々既出)。
単にこれを知らないだけだと思うよ。
0133デフォルトの名無しさん
2007/10/27(土) 00:24:11そんなに有効なものですか?
有名なものではどんなものがありますか?
0134デフォルトの名無しさん
2007/10/27(土) 00:27:490135デフォルトの名無しさん
2007/10/27(土) 00:30:19ttp://www.swtest.jp/tools.html
静的解析ツールでぐぐれ
0136デフォルトの名無しさん
2007/10/27(土) 00:32:31何でもいいですが、自分の普段の仕事ではWindowsでC++です
Cygwinも常用しているのでUNIX系でも試せると思います
0137デフォルトの名無しさん
2007/10/27(土) 00:36:390138デフォルトの名無しさん
2007/10/27(土) 00:37:420139デフォルトの名無しさん
2007/10/27(土) 00:41:10ttp://www.techmatrix.co.jp/products/quality/download/index.html
0140デフォルトの名無しさん
2007/10/27(土) 00:41:52「ヘタだなぁ」と思うコードを貼ってくれ。
0141133
2007/10/27(土) 00:42:06あ、QACとかのことですか
使ったことはないけどプレゼンは受けたことがあります
そのときは、馬鹿に使わせるのは怖いツールだなと思いました
0142デフォルトの名無しさん
2007/10/27(土) 00:43:280143デフォルトの名無しさん
2007/10/27(土) 00:44:18test.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
0144デフォルトの名無しさん
2007/10/27(土) 00:47:00ところで、見てくれ、このコード。(実物はJavaで、本質的な部分だけ抜粋してるのだが)
おまいら、レビュー以外でこんなコードが涌いて出るのを防ぐ手段、知らないか?
void hoge(int a, int b) {
bool result = false;
for (int i = 0; i < 3; i++) {
if (a == b - i) {
result = true;
break;
}
}
if (result == true) {
cout << "OK\n";
} else {
cout << "NG\n";
}
}
0145デフォルトの名無しさん
2007/10/27(土) 00:47:210146デフォルトの名無しさん
2007/10/27(土) 00:55:08うん、君の会社が凄すぎるから、下民たちの為に会社名を教えてくれ。
> 警告は全部潰してるよ。
コンパイラの設定を変更して、特定の警告は表示させないようにしたのか?
0147デフォルトの名無しさん
2007/10/27(土) 00:56:080148デフォルトの名無しさん
2007/10/27(土) 01:00:53何を問題にしているのか分からないけど。
if (result == true)を気にしているのだとしたら、全員にメールでも出したら?
一番いいのは、タコなコードを書く奴は、片っ端からプロジェクト外に追放することなんだけど。
それをやったら、誰も残らなかったなんてのが笑い話じゃなくなるからな。
0149デフォルトの名無しさん
2007/10/27(土) 01:02:49b-a が0〜2ならOK,それ以外ならNGを出力ってこと?
不等号演算子とか教えるといいんじゃないかな。
0150デフォルトの名無しさん
2007/10/27(土) 01:05:15ま、こんなもんかと思って、放置しておいたら、上のヒトの目にとまって、
警告が出てるじゃないかと注意されてしまった。
で、警告の原因を調べたら、そのコードを動かす環境にインストールされてる、その部署の
ライブラリがバージョン古くて、プロトタイプが、K&R方式になってやんの。
仕方ないので、makefileを書き換えて、警告を全部抑制した。
0151デフォルトの名無しさん
2007/10/27(土) 01:05:37if (b - a < 3)
OK;
ということでしょ
境界の辺が自信ないが
0152デフォルトの名無しさん
2007/10/27(土) 01:19:53b<aだとダメじゃね?
0153デフォルトの名無しさん
2007/10/27(土) 01:20:110154デフォルトの名無しさん
2007/10/27(土) 01:22:32そういうことではない?
酒が入ってるので不安
0155デフォルトの名無しさん
2007/10/27(土) 01:26:07ああ、そうだっけ。
int hoge();
みたいに、戻り値だけで、引数のないプロトタイプだった。
0156デフォルトの名無しさん
2007/10/27(土) 01:31:26先に宣言が
int f();
とあって後で定義が
int f(int a) { ... }
とANSIならばエラーエラーかな?
うろ覚えでごめん
0157デフォルトの名無しさん
2007/10/27(土) 01:33:18仕事は来ていて技術力は無いという辺りから、
・富士通
・日立
・NEC
の関連会社を予想。
しかし、仕事を大量に受けているという記述から想像するに、
・人材派遣会社
に所属しているのではないだろうか。
こう考えると、技術力が無いのにそれに気が付かない理由も説明できると思う。
#JAVAのswingで画面を作っているんだけど、クラス図もイベントトレース図も存在しないって、此の先木大丈夫なんだろうか。
0158デフォルトの名無しさん
2007/10/27(土) 01:39:31から3時間足らずで約70レスか。
このペースで行けば、39時間かからずに埋め立て完了か。
今までの過疎化が嘘のようだなw
0159デフォルトの名無しさん
2007/10/27(土) 01:41:01レビューしてすら、さくっとスルーされそうなことはわかりますた。
>>149
yes. 問題は、コレと同レベルのコードがと某社のおひさるなサイト上で動いてたってことなんだ。
さらに恐しいことは、a, bは日付を8桁の整数に変換したものだったりしたんだ……。
>>154
条件式が足りてないれす。こんな感じ?
int d = b - a; if (0 <= d && d < 3) ...
0160デフォルトの名無しさん
2007/10/27(土) 01:47:510161デフォルトの名無しさん
2007/10/27(土) 01:50:10冗長すぎるのを問題にしていると思う
0163デフォルトの名無しさん
2007/10/27(土) 02:02:36問題によっては、冗長に見えるやり方が最適解になったりすることもあるし。
0164デフォルトの名無しさん
2007/10/27(土) 02:05:190165144
2007/10/27(土) 02:11:50です。冗長過ぎるというより、きっぱりはっきり無駄かつ無意味。
>>160>>163
一般論としてクソコードであると賛同を得られないことに絶望した。
つか、釣りか? 釣りなのか?
0166デフォルトの名無しさん
2007/10/27(土) 02:18:21このスレになじまない内容なので、あまり興味を持たれなかっただけかと
0167デフォルトの名無しさん
2007/10/27(土) 02:18:220168デフォルトの名無しさん
2007/10/27(土) 02:24:40あぁ、希だからか
ちなみに自分は144ではないです
0170デフォルトの名無しさん
2007/10/27(土) 02:32:58} else {
}
とか
for (;;)
if (cond1)
if (cond2)
{
}
ってありなの?
0171デフォルトの名無しさん
2007/10/27(土) 02:34:06これは質問じゃなくてただの皮肉だったのか
0172デフォルトの名無しさん
2007/10/27(土) 02:34:05レベル低すぎてどうしようもない。ちげーだろ。
if( NULL == hoge_func(hoge_arg1, hoge_arg2, hoge_arg3, hoge_arg4, hoge_arg5, hoge_arg6, hoge_arg7, hoge_arg8) )
{
}
if( hoge_func(hoge_arg1, hoge_arg2, hoge_arg3, hoge_arg4, hoge_arg5, hoge_arg6, hoge_arg7, hoge_arg8) == NULL )
{
}
前者と後者、どっちが読みやすいかって話だ。
そもそも関数の引数が多すぎる、とか言われても困るぞ。
Win32APIとかだと、引数8個程度のなんてゴロゴロあるからな。
あと、後者だと、環境によっては==NULLがエディタの外に出てしまって、見えないことがあることも付け加えておく。
0173デフォルトの名無しさん
2007/10/27(土) 02:39:46関数より定数の方が長い場合もあるわけで
0174デフォルトの名無しさん
2007/10/27(土) 02:41:33文法的には間違っては無さそうだが、ひどく読みづらいな。
0175デフォルトの名無しさん
2007/10/27(土) 02:41:49その場合は定数を後ろに書けば良いだろ。
0176デフォルトの名無しさん
2007/10/27(土) 02:43:44定数左が当然といってるのなら>>173が正解
0177デフォルトの名無しさん
2007/10/27(土) 02:50:31>>172
こういう発想は無いの?
if( hoge_func(hoge_arg1
, hoge_arg2
, hoge_arg3
, hoge_arg4
, hoge_arg5
, hoge_arg6
, hoge_arg7
, hoge_arg8) == NULL )
{
}
0178デフォルトの名無しさん
2007/10/27(土) 02:51:18疲労困憊のときに>>172の後者の文を見て、本当に==NULLを読み飛ばさない自信が有るか?
==NULLはエディタの外に出てしまっていて見えてないかもしれないんだぞ。
必ずスクロールして確かめる自身はあるか?
また、他人が読んだとき、必ずスクロールしてくれる自身はあるか?
そんなリスク背負うぐらいなら、場合によっては定数を先に書いても良いんじゃないか?
コーディングスタイルに拘るあまり、意固地になっちゃってどうするの。
0179デフォルトの名無しさん
2007/10/27(土) 02:57:03CreateWindowを使った後にHWNDを定数と比較する
その定数は何かなんて、誰だって判る問題だ
ファイルポインタを定数と比較する
その定数はなんなのか判らない奴は、Cで真面にプログラム組む事が出来るとは思えない
変な定数と比較するのなら、定数を前に持っていくより、何のためのテストかコメントを残す方が余っ程気が利いている
0180デフォルトの名無しさん
2007/10/27(土) 02:59:16どこで折り返すかって話になるが、
結局、自分のプログラムが何処で誰に読まれるか判らない以上、
「何列以上になったら折り返す」ということを語るのは難しい。
読み手のエディタのサイズを予測するすべは無い。
それに、どの様な書き方をしても、後に書くものは先に書くものに比べて
目立ちにくいということには変わりない。
条件式の場合は、関数の引数よりも条件そのものの方が大事だから、
大事なものを先に書いちゃおうという視点から、読み手のことを考えれば、
定数は自然と左に出てくる。逆に自分のスタイルを貫けば右に行く。
0181デフォルトの名無しさん
2007/10/27(土) 03:02:31なんでWin32API限定で話を進めるんだよ。
>>172のどこにもWin32APIに限定しますなんて書いてないだろ。
離散数学の基礎からやり直してください。
0182デフォルトの名無しさん
2007/10/27(土) 03:02:42マウスの付いてるパソコンしか使ったことの無い世代が増えたなぁ。
・・・しみじみ。
0183デフォルトの名無しさん
2007/10/27(土) 03:04:58今の人だけど、常識としてちゃんと知ってるよ。受け継がれてるから安心して。
0184デフォルトの名無しさん
2007/10/27(土) 03:09:370185デフォルトの名無しさん
2007/10/27(土) 03:10:42別にWin32API限定でなくても、定数を比べる場合はif文以前に比べる定数は決まってるだろう
自分で作った関数だろうと、人の作った関数だろうと、定数で比較する時点で、どんな定数と比較するのか決まっているじゃないか
0186デフォルトの名無しさん
2007/10/27(土) 03:17:30繰り返し文は、かならずfor文で書くべきで、whileとかdo-whileを使うなとか言うのか?
(俺は繰り返し文は全部forで書くがな)
分岐は必ずifで行うべきで、switchは使うなとか言うのか?
(俺はswtich文嫌いだがな)
gotoだって、使うなといわれてはいるけど、例外処理に使うのならなんら問題ない。
どうして、場合場合によって使い分けようとしないの?
0187デフォルトの名無しさん
2007/10/27(土) 03:22:49「普通の感性を持っている人」は、そういう場合は次のようなコードを書くから、なんら心配することはありません。
void *p = hoge_func(hoge_arg1, hoge_arg2, hoge_arg3, hoge_arg4, hoge_arg5, hoge_arg6, hoge_arg7, hoge_arg8);
if (p == NULL) {
}
理解できましたか?
0188デフォルトの名無しさん
2007/10/27(土) 03:25:32全ての関数の仕様が頭に入ってる人なんて居ない。
他人の使っている関数の仕様まで全部事細かに覚えてる人なんて居ない。
比べる定数は決まっているが、それはあくまで仕様上での話。
今、バグを防ぎたいと考えているのだから、全てのプログラマが仕様を完全に網羅しているとは
考えるべきではない。そういう甘い考えがバグを生む。
それから、プログラマの集中力の問題もある。
先に書いたものの方が、高い集中力を持って読んでもらえる可能性が高い。
だから、条件式の条件は成るべく先に持っていったほうが良いだろう。
長い長い関数呼び出し部を読み終わったころには、集中力がなくなっているかもしれないから。
0189デフォルトの名無しさん
2007/10/27(土) 03:27:31おまえ自身が
> 本質的な部分だけ抜粋してるのだが
と言っているんだよな。
本来のコードだと
for (int i = 0; i < 3; i++) {
}
の中で重要な処理をしているかもしれない。
144は本質じゃないと切り捨てたかもしれないけど、その判断が間違っている可能性は高いわけだ。
だから、何をしようとしたコードなのか分からないと、冗長かどうかの判断は出来ないといっているのだが。
ここまで丁寧に説明してあげれば、144も自分のおろかさを理解してくれるかな?
0190デフォルトの名無しさん
2007/10/27(土) 03:28:23そう書くのが一番良いんだけど、書かない奴も居るだろ。
0191デフォルトの名無しさん
2007/10/27(土) 03:32:51int ret = strcmp(str1, str2);
if(ret == 0){}
なんて書く奴がどれだけ居るのか気になるが。
0192デフォルトの名無しさん
2007/10/27(土) 03:35:07その程度なら、
if (!strcmp(str1, str2)) {}
と書くのが一番分かりやすいから。
0193デフォルトの名無しさん
2007/10/27(土) 03:40:29つまり「程度」によるわけだよな。
だから、程度によっては定数を左に持ってきても良いだろ。
それから、
if (!strcmp(str1, str2)) {}
が許されるなら、
if (0==strcmp(str1, str2)) {}
も許されるだろ。
if ( strcmp(str1, str2) ! ) {}
と、後ろに「!」は書かないからな。
後、if (!strcmp(str1, str2)) {} は C langage FAQ では悪い例として取り上げられている。
こうかかれるぐらいなら、if (0==strcmp(str1, str2)) {} とかかれた方がまだマシだと
考える人も多いだろう。
0194デフォルトの名無しさん
2007/10/27(土) 03:42:30NULLとの比較は読み飛ばしにくくなるかもしれんが
hoge_arg8を読み飛ばす可能性はかなり大きくなるだろ?
引数8つもある関数を直接ifに入れるって事は
文脈上ifよりも関数呼び出し自体が重要って事だろ
それなら、エラー処理系であろうifの条件よりも
hoge_arg8が見えやすいほうが良くないか?
0195デフォルトの名無しさん
2007/10/27(土) 03:43:07あっちのが色物に思えるが。
0196デフォルトの名無しさん
2007/10/27(土) 03:43:16if ((LOW_AGE < age) && (age <= HI_AGE)) {}
こういう場合は、定数が左にあることに対して意味があるが
if (NULL == pointer) {}
この場合は、定数が左にあることの意味は無い
しいて言うならば、コードを何れだけ見づらくできるか位の意味はあるかもしれない
(我々は、NULLがポインタなのかを知りたいのではなく、ポインタがNULLであるのかを知りたいのだから)
0197デフォルトの名無しさん
2007/10/27(土) 03:50:28そもそもstrcmpって定数が右を想定した作りだと思う
if (0<strcmp(str1, str2)) {}
どっちが大きい時ifの中に入るかすぐわかるか?
0198デフォルトの名無しさん
2007/10/27(土) 03:50:48C FAQより
----------
17.3:
ほら、このわざを見て。
if(!strcmp(s1, s2))
これはよい書き方?
とくによい書き方ということはない。ただし人気のある書き方ではある。このテストは、二つの文字列が同じときに成功する。しかしこの 形は等しくないことをテストしているようにみえる。
より優れた選択肢としては以下のようなマクロを使うことがある。
#define Streq(s1, s2) (strcmp((s1), (s2)) == 0)
コーディングスタイルに関する考え方は、宗教に関する考え方と同じ で、議論に終りがない。よい書き方は価値ある目標であるし、たいて いは見ればよいか悪いかわかるが、文章にすることはできない。質問 17.10も参照のこと。
----------
どこにもif (!strcmp(str1, str2)) {} よりif (0==strcmp(str1, str2)) {} の方がいいとは書いてありませんが?
より良い書き方としてあげている例も、
#define Streq(s1, s2) (strcmp((s1), (s2)) == 0)
と、定数は右側に来ていますよ。
0199デフォルトの名無しさん
2007/10/27(土) 03:50:53hoge_arg8は見えにくくなるが、引数が途中で切れている場合、プログラマは気づく。
だって構文的に変なところで切れているからね。
だけど、==NULLがあるかないかまでは想像が及ばないかもしれない。
・・・hoge_arg6, hoge_arg7, |エディタの端| hoge_arg8) )
と
・・・hoge_arg6, hoge_arg7, |エディタの端| hoge_arg8) == NULL)
は、エディタ上では同じに見えるからな。
実は後者だったのに、早とちりして、前者だと思い込んでしまうかもしれない。
0200デフォルトの名無しさん
2007/10/27(土) 03:51:32どこまでが左でどこからが右なんだ
0201デフォルトの名無しさん
2007/10/27(土) 03:51:39--------------------------------------------------------------------------------
17.4:
どうしてif(x == 0)と書くかわりに、if(0 == x)と書く人がいるのか。
A:
これはよく以下のように書いてしまうことを防ぐためのコツである。
if(x = 0)
定数を==の前に持ってくる習慣を付けておけば誤って、
if(0 = x)
と打ち込むとコンパイラが文句を付ける
どうやら2回=を打ち込むことを覚えるよりは、テストのオペランドの順をひっくり返す ことを覚えることのほうがやさしい。
(訳注:本のほうには、これは特によい書き方というわけではないと書 いてある。実際これでは両辺が変数の場合のif(a = b)という誤りを 捉えることはできない。こんな技を覚える暇があれば、lintの使い方 を覚えること。)
0202デフォルトの名無しさん
2007/10/27(土) 03:53:55てゆうか、折り返しもできずに、右端がスクロールしないと見えないような腐ったエディタは使うなよ。。。
0203デフォルトの名無しさん
2007/10/27(土) 03:54:12だけど、NULLと比べてポインタがどうなのか? という考え方をすれば、NULLが先に来る。
逆に、ポインタと比べてNULLがどうなのか? とは言わない。
ポインタが先に来るときは、ポインタがNULLであるか? と言う。
つまり、どっちでもいいということだ。
0204デフォルトの名無しさん
2007/10/27(土) 03:55:19ケースバイケースで、比較の主体が左にきたり右にきたりするソースが、一番見難い(醜い)です。
0205デフォルトの名無しさん
2007/10/27(土) 03:57:02>>193のどこにも
>C lang FAQ に if (!strcmp(str1, str2)) {} よりif (0==strcmp(str1, str2)) {} の方がいいと書いてある
なんて書いてないだろ。本当に離散数学の基礎からやり直せ。
何を述べていて、何を述べていないのかの判断ぐらいつくようにしろよ。
じゃないと議論も糞も無い。
0206デフォルトの名無しさん
2007/10/27(土) 03:57:10ああ、確かに
つまりあなたは「{」の前に改行すべきではない、と俺に言わせ
別の論争を勃発させたいのだなw
0207デフォルトの名無しさん
2007/10/27(土) 04:00:11C langage FAQ なんてみんな一通り目を通してるんだよ。
一々貼り付けんでも良い。
今時定数を左に持ってくる人達は、>>201のような理由で左に持ってきているわけではない。
左に書いたほうが目立って言いと考えたから、左に持ってきているだけ。
それ以上でもそれ以下でも無い。目立つか目立たないか、ただそれだけ。
>>202
visual studio の初期状態ではそうですよ。
0208デフォルトの名無しさん
2007/10/27(土) 04:02:06ケースバイケースで、繰り返し文がforになったりwhileになったりdo-whileになったら
読めない人ですか?
ケースバイケースで、分岐がifになったりswitchになったりすると、読めない人ですか?
0209デフォルトの名無しさん
2007/10/27(土) 04:04:08改行しなくても一緒だよ。
・・・hoge_arg6, hoge_arg7, |エディタの端| hoge_arg8) ){
と
・・・hoge_arg6, hoge_arg7, |エディタの端| hoge_arg8) == NULL){
は、エディタ上では同じに見えるからな。
俺も通常は改行させないな。
0210デフォルトの名無しさん
2007/10/27(土) 04:04:58夜はちゃんと寝なさい。
0211デフォルトの名無しさん
2007/10/27(土) 04:06:48それより、do-whileの方が気持ち悪くないか?
いやマジで。
do{
}while(exp); ← このセミコロンとか。
これは良くて、定数左は駄目とか言ってるやつって、どういう思考なのかわからん。
0212デフォルトの名無しさん
2007/10/27(土) 04:09:18「,」で終わってたらその後に続くのはいやでも解るでしょ
端を見ようとしないのはそいつの責任だよ
0213デフォルトの名無しさん
2007/10/27(土) 04:16:44そうだよな
繰り返し文なんていっぱいあるもんなー
#define loop(x) for(int iloop=0;iloop<(x);iloop++)
#define twice loop(2)
#define infinite for(;;)
#define never for(;0;)
#define strpatrol(s) for(char *strpatrolp=(s);*strpatrolp;++strpatrolp)
0214デフォルトの名無しさん
2007/10/27(土) 04:16:58だんだん苦しくなってきたね。論理が破綻してきたよ、キミ。今夜が山だ。
>後、if (!strcmp(str1, str2)) {} は C langage FAQ では悪い例として取り上げられている。
>こうかかれるぐらいなら、if (0==strcmp(str1, str2)) {} とかかれた方がまだマシだと
>考える人も多いだろう。
0215デフォルトの名無しさん
2007/10/27(土) 04:17:24a=1;は「aに1を入れる」と読むなら
if(a==1)は「aに1が入っているなら」と読むからであって
=と==を混同させたいんだよ
そもそも混同させたくて同じ記号を使ってるんじゃないかと思えてくるほどだよ
0216デフォルトの名無しさん
2007/10/27(土) 04:17:37続いていても、==NULLがあるかないかは、スクロールしてみるまで判らない。
引数がそれほど重要でない場合なら、スクロールを惜しむかもしれない。
実際、もうへとへとの状態でプログラムを読んでる場合だってあるわけで。
他人の責任だから関係ない、とは言っても、プロジェクトが停滞すると、
結局自分も巻き込まれるわけで。誰の責任かは正直どうでも良い。
0217デフォルトの名無しさん
2007/10/27(土) 04:19:59おいおいw
それじゃあ、>>193が全くの主観で何の根拠も無いって事を白状しているだけじゃないかw
で、より良い例として挙げられているコードでは、定数が右側に来ているのは、軽くスルーですか?
FAQを根拠に!strcmp()を否定するなら、よりよい書き方についてもFAQを根拠にしたほうがいいんじゃないかね?
0218デフォルトの名無しさん
2007/10/27(土) 04:20:57>後、if (!strcmp(str1, str2)) {} は C langage FAQ では悪い例として取り上げられている。
>こうかかれるぐらいなら、if (0==strcmp(str1, str2)) {} とかかれた方がまだマシだと
>考える人も多いだろう。
のどこをどう読んだら、
>C lang FAQ に if (!strcmp(str1, str2)) {} よりif (0==strcmp(str1, str2)) {} の方がいいと書いてある
という意味になるの?
ねぇねぇ教えて。中学生とか? 日本語読める?
「〜の方がまだマシ」という表現を使っているわけだから、よりベターな方法があることも
暗に示しているのだが。
0219デフォルトの名無しさん
2007/10/27(土) 04:21:09変数っぽい面して実はconstでしたみたいなのが右や左にいるとうざいから
ある程度統一するのはいいんじゃないの?
0220デフォルトの名無しさん
2007/10/27(土) 04:21:41だから、単体テストをすればちゃんとエラーは検出できますよ。
テストをやらないって企業文化なら、仕方ないかもしれませんが。
0221デフォルトの名無しさん
2007/10/27(土) 04:21:52こんなくだらない事で眠れなくなっちまった・・・
0222デフォルトの名無しさん
2007/10/27(土) 04:23:30だから、なんでNULLとポインタを比較するのかが問題なんだろ
ポインタが有効なのか無効なのかを知りたいんであって、NULLと比較してポインタがどうなのかを調べたい人は誰一人居ない
定数が左にあって、唯一読みやすいのは、変数が一定の値の範囲内にある事を知りたい場合のみだろ
それ以外で、定数が左にあっても、読みにくいことはあれ、読みやすく感じることは有り得ない(そのコードを書いた奴だけは、読みやすいのかも知れないが)
0223デフォルトの名無しさん
2007/10/27(土) 04:26:28例えば、10回処理を繰り返す部分で、
for (i = 0; i < 10; i++) {}
と
i = 0;
while (i < 10) {
i++;
}
の両方が適当に使われたとしたら、読む人は苦労するだろうな。
forとwhileの使い分けにどんな意味が隠されているのか悩むだろうか。
0224デフォルトの名無しさん
2007/10/27(土) 04:26:29一時的に条件式を無効にしたくなったらどうする?
誰だってif(0&&condition)って書くよな?
定数0を左に書いた方がいいことは分かり切っている
0225デフォルトの名無しさん
2007/10/27(土) 04:27:25>>193 の 後半は余談だよ。
if (!strcmp(str1, str2)) {} なんて書いちゃう奴のいうことなんて信用できないね、てこと。
それならまだ定数左派の方が信用できるよねって。
ロジカルに何か述べているわけではなくて、単に人格批判です。
だけど、if (!strcmp(str1, str2)) {} なんてコードをシレっと書いちゃうやつの言うことなんて、
信用できないよね。読みやすいコードを書くためのスタートラインにも立ってない。
0226デフォルトの名無しさん
2007/10/27(土) 04:28:03もうヤケクソ?
>>193 「〜の方がまだマシ」
そりゃ確かに、「〜の方がいい」 とは書いてないけど。
「いいとは書いてない、マシと書いた」ってアンタ、小学生の喧嘩レベルやんw
眠いの?
0227デフォルトの名無しさん
2007/10/27(土) 04:28:33書かないよ。
0228デフォルトの名無しさん
2007/10/27(土) 04:29:43何いってんの?
だったら初めからコーディングなんて拘らなきゃいいだろ。
どうせ単体テストするので、好きにやればいいじゃないという話になる。
0229デフォルトの名無しさん
2007/10/27(土) 04:29:50もうif(0 == a || a == 0)でよくね?
右にも左にも定数が来てて完璧だろう
0230デフォルトの名無しさん
2007/10/27(土) 04:31:12> if (!strcmp(str1, str2)) {} なんて書いちゃう奴のいうことなんて信用できないね
根拠は?
単に俺が気に食わないだけ、なんて言わないよねw
もしかして、==とか<とか>=なんかが書いてないと、条件文が理解できない人ですか?
0231デフォルトの名無しさん
2007/10/27(土) 04:31:43//if (condition)
if(0)
0232デフォルトの名無しさん
2007/10/27(土) 04:32:32引数よりも==NULLの方が重要ならifの中に
関数呼び出しを丸ごと入れたりなんてしないでしょ
人からコードを引き継いで改修箇所付近のコードを切れてるからって見ないなんて
そんな人のケアをする自信なんて、俺にはないな
0233デフォルトの名無しさん
2007/10/27(土) 04:32:51ポインタが有効か無効かを知りたい、と考えることも出来るし、
逆に、有効なポインタなのか、無効なポインタなのか、と考える人も居るかもしれない。
どっちで考えてもいいし、何の問題も無い。
0234デフォルトの名無しさん
2007/10/27(土) 04:33:34単に、「プロジェクトが停滞する」に対する反証をしただけですよ。
こんなことも読み取れないなら、ひとまず睡眠を取って、頭をクリアさせたらどうですか?
え、クリアさせても今と変わらない?
それは、もう、どうしようもないかな。
0235デフォルトの名無しさん
2007/10/27(土) 04:35:06ドッカン
m ドッカン
=====) )) ☆ ___________
∧_∧ | | / / おらっ!出てこい
( )| |_____ ∧_∧ < Cマガジン ●田
「 ⌒ ̄ | | || (´Д` ) \ おまいのせいで、こんだけ・・・
| /  ̄ | |/ 「 \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
0236デフォルトの名無しさん
2007/10/27(土) 04:36:29C++0xでは定数をLvalueにしてもらうしかないな
0237デフォルトの名無しさん
2007/10/27(土) 04:36:45無効なポインタがどれかを調べたいなら、
if (NULL == xxx)って書いたほうが分かりやすいかもね。
0238デフォルトの名無しさん
2007/10/27(土) 04:37:29後者のケースだと、for文を使うべきだよ。
whileを使う時は主にカウンタ変数がいらない時だな。
forとwhileを使い分ける人が居るように、
定数を右に書いたり左に書いたりする人が居ても良いだろ。
そして、定数が左だからってそんなに怒るほどのものでもない。
0239デフォルトの名無しさん
2007/10/27(土) 04:40:31電車の床に座ってもいいだろ!
公園のベンチに座るヤツが居るように
コンビニの駐車場に座り込んでもいいだろ!
そんなに怒るほどのものでもない。
0240デフォルトの名無しさん
2007/10/27(土) 04:43:02眠いのはお前だろ。眠くてしょうがないお前が勝手に勘違いしただけだろ。
「AよりBの方がまだマシ」という言い方をした場合、
「Bが良い」と主張しているということには決してならないよ。
糞と尿、どっち食うかと言われて、
「糞より尿の方がまだマシ」と答えた場合、
「尿が良い」と言うことにはならないだろ。
要はお前が勝手に勘違いしてるんだよ。
お前みたいなおっちょこちょいが居るから、文句言われようとも、
わざわざ定数を左に書かざるを得なくなる。その辺わかれ。
0241デフォルトの名無しさん
2007/10/27(土) 04:43:160242デフォルトの名無しさん
2007/10/27(土) 04:46:20おまえ、実は>>80だろ?
もう、定数を左に置いても苛めないからさ、どこの会社かだけは教えてくれ。
お前を真人間に教育するよりも、関係を持たないようにする方が、遥かに安上がりだわ。
0243デフォルトの名無しさん
2007/10/27(土) 04:46:230244デフォルトの名無しさん
2007/10/27(土) 04:48:19↑ ↑
糞 尿
0245デフォルトの名無しさん
2007/10/27(土) 04:49:430246デフォルトの名無しさん
2007/10/27(土) 04:52:19230は単に釣りだと信じたいのだが・・・。
strcmpはあくまで整数を返す。boolを整数で代用しているわけではなく、
正真正銘、整数としての戻り値を返す。
だから整数と比較するべき。
意味上も型上も正真正銘整数なものを、
ただ偽が0だからという理由だけで、あえてboolとして比較する、なんてのはナンセンスだよ。
逆に、if (!strcmp(str1, str2)) {} が OK な人なら、他は何やってもOKでしょ。
Cの禁じ手全部 OK じゃね?
定数が左にきたぐらいでごちゃごちゃ言う立場に無いね。
0247デフォルトの名無しさん
2007/10/27(土) 04:58:36>>246
そもそも、Cにはboolなんて型は存在しないぞ。
ifとかの条件式は、単に0か非0かを見ているだけ。
0248デフォルトの名無しさん
2007/10/27(土) 05:01:44てのは、いくら何でも間違いだろ。
勢いで書き込んだ後、おっといけね、strcmp だった〜orz ってとこだろね。
0249デフォルトの名無しさん
2007/10/27(土) 05:02:52>引数よりも==NULLの方が重要ならifの中に
>関数呼び出しを丸ごと入れたりなんてしないでしょ
そうとは限らんよ。関数として見れば、関数が大事だし、
if文として見れば、条件が大事だ。
>人からコードを引き継いで改修箇所付近のコードを切れてるからって見ないなんて
>そんな人のケアをする自信なんて、俺にはないな
改修するならしっかり読むが、さらっと目を通すだけという場合も有るだろ。
おっちょこちょいなやつは何処にでも居るもので、そういう奴が変な勘違いを起して、
面倒を起したら困る。
実際、このスレにも自分の反論しようとしている相手の文章すら、
まともに読まない奴が居るわけで。
んで、自分のミスなのに、「お前の書き方が悪い」と開き直る。
だから、自分から相手が読みミスらないような書き方をする必要が出てくる。
結局こっちにも火の粉は飛んでくるからね。
0250デフォルトの名無しさん
2007/10/27(土) 05:05:45http://pc11.2ch.net/test/read.cgi/tech/1179424842/
125 名前:デフォルトの名無しさん[sage] 投稿日:2007/10/27(土) 05:00:40
strcmpはあくまで整数を返す。boolを整数で代用しているわけではなく、
正真正銘、整数としての戻り値を返す。
だから整数と比較するべき。
意味上も型上も正真正銘整数なものを、
ただ偽が0だからという理由だけで、あえてboolとして比較する、なんてのはナンセンスだよ。
逆に、if (!strcmp(str1, str2)) {} が OK な人なら、他は何やってもOKでしょ。
Cの禁じ手全部 OK じゃね?
定数が左にきたぐらいでごちゃごちゃ言う立場に無いね。
↑最高にド低脳な発言!
0251デフォルトの名無しさん
2007/10/27(土) 05:09:05ワロタ
自分で「ド低脳」って認めてどうするw
0252デフォルトの名無しさん
2007/10/27(土) 05:09:26だから好きにやれば良いじゃん。
ウマいコードってのは、プロジェクトが停滞しづらいコードだろ。
逆にヘタなコードってのは、プロジェクトを停滞させるコードだろ。
あなたにウマいコードは必要ないじゃない。
0253デフォルトの名無しさん
2007/10/27(土) 05:10:090254デフォルトの名無しさん
2007/10/27(土) 05:11:080255デフォルトの名無しさん
2007/10/27(土) 05:13:27違う。
この議論は前スレから永遠と続いている。
というか、このスレは今現在俺だけで持ってるようなものなんだけど、
前スレからの流れを見てもらえれば、俺が>>80でないことは分かる。
物事への認識のレベルが違いすぎるからすぐ判るはず。
0256デフォルトの名無しさん
2007/10/27(土) 05:18:14boolが無いから整数で代用しているんだろ。
>>247の2行目に、
>boolを整数で代用している
という文がちゃんと入ってるだろ。
単に整数値といっても、C言語の場合は、意味の上では、整数だったりboolだったりするから、
その辺は使い分けるべきだろ。
その程度の意識も無いのに、ウマいもヘタも無いね。
そういうやつは定数が左にきたぐらいでグダグダいう立場に無い。
糞食いながら、「しょんべんマズー」と言ってるようなものだ。
0257デフォルトの名無しさん
2007/10/27(土) 05:27:13返事はまた明日気が向いた時に返すかも。
今日は張り合い無かったなぁ。
if (!strcmp(str1, str2)) {} が 汚いって事すらもわからないような奴では、
ちょっと流石に相手にならないよ。
そういうやつが、他人のコードを綺麗汚いと、いきり立ってるのかと思うと、泣けてくるね。
身の程をわきまえるべき。
>>250 が >>125 をド低脳スレに貼ったらしいが、この始末どうつけるつもりなんだろうな。
他の右派(というか、単なるアンチ俺、もとい、暇つぶしの友)が可愛そうだ。
0258デフォルトの名無しさん
2007/10/27(土) 05:35:47if (0==strcmp(str1, str2)) {} がif (strcmp(str1, str2)==0) {} に劣ることには変わりないのに。
0259デフォルトの名無しさん
2007/10/27(土) 07:33:42http://ja.wikipedia.org/w/index.php?title=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E4%BD%9C%E6%B3%95&diff=15617960&oldid=13976161
0260デフォルトの名無しさん
2007/10/27(土) 07:38:410261デフォルトの名無しさん
2007/10/27(土) 07:43:11>暇つぶしの友
他所でやれ脳足りん。
0262デフォルトの名無しさん
2007/10/27(土) 07:49:35*dst++ = *src++ と勝るとも劣らないくらい綺麗
0263デフォルトの名無しさん
2007/10/27(土) 07:50:410264デフォルトの名無しさん
2007/10/27(土) 08:24:17等値性をテストしているとは認識しにくいな。
!をnotと読まない人は気にならないんだろうけど。
0265デフォルトの名無しさん
2007/10/27(土) 08:55:170266デフォルトの名無しさん
2007/10/27(土) 08:56:01だろ上官
0267デフォルトの名無しさん
2007/10/27(土) 08:59:28その発想は無かった
0268デフォルトの名無しさん
2007/10/27(土) 09:06:070269デフォルトの名無しさん
2007/10/27(土) 09:14:44>>169
賛同ありがとう。「簡単なことをこんなに難しく書くやつがいるんだぜ」「頭
痛いよなぁ」で済むと思ったら、予想外の展開になって別の意味で頭が痛かっ
たよ。
>>171
皮肉? いや、いたってマジだぞ? だってソース見たとき本気で頭かかえたもの。
ちなみにこういうコードへの対策は、「10行以上書いたらレビューしろ。毎日
レビューしろ。動いてからレビューするな」以外に知らないんだ。(そういう
意味でペアプログラミングはすげー有用だと思うんだが、まだ実現できたこと
がない)
>>189
> の中で重要な処理をしているかもしれない。
それだったら「本質の抜粋」にならないでしょーが。
for文の中は、変数名と定数値以外、「そのまんま」だ。
違う点は、オリジナルはC++じゃなくてJavaなこと、関数(メソッド)のシグネチャ、
書いた処理の前にもコードがあること、最後のif文のブロックの中身。
0270デフォルトの名無しさん
2007/10/27(土) 09:39:00補足しておくと、ここで言ってる「本質」とは、
「b-N<a≦b (a, b, Nは整数) を判定する、ただそれだけのために、大小比較じゃなくてループを使ってる」
ってことだと書けば理解してもらえるか?>>189
0271デフォルトの名無しさん
2007/10/27(土) 09:58:280272デフォルトの名無しさん
2007/10/27(土) 10:06:30定数を左に置くか否かなんてとっくの昔に結論でてるだろうが。
>>196のような例外を除いて定数を左において可読性落としたり、
スクロールしないと全部が見渡せないような条件式なんか書くな。
コンパイラが警告出さない時の数十年前に編み出された小手先を
未だに神の一手が如く崇拝してんじゃねぇよ、ボケ。
これを知ってる俺って技術力たけぇなんて思ってたかもしれんが、
ド低脳の証明だ。玉石混交の石のほうだ、カス。
0273デフォルトの名無しさん
2007/10/27(土) 10:14:140274デフォルトの名無しさん
2007/10/27(土) 10:18:04禿同
0275デフォルトの名無しさん
2007/10/27(土) 10:18:23test.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
0276デフォルトの名無しさん
2007/10/27(土) 10:21:53if文の中身間違えてない?
0277デフォルトの名無しさん
2007/10/27(土) 10:30:11あまりにもスレタイトルに沿ったコードだったからレスつけるまでもないと思った。
0278デフォルトの名無しさん
2007/10/27(土) 10:50:13コンパイラによっても違うな。さすがゴミクズ撒き散らすマイクロソフトって感じだ。
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
0279276
2007/10/27(土) 10:55:070280デフォルトの名無しさん
2007/10/27(土) 11:02:33cl は /W4 で使うもんだ。
gcc は最低でも -Wall で使うもんだ。
0281デフォルトの名無しさん
2007/10/27(土) 11:11:33可読性落ちる?
でも落ちるか?
慣れてないとえっ?って思うかもしれないけど別にそれぐらい大丈夫でしょ。
javaでも
"hoge".equal(var);
ってイディオムあるぐらいだし。
lintなんて毎回通さないし、コンパイラの警告も丸カッコついてるとスルーされるし。
(論理式で繋がってたり、マクロが絡んだりすると丸カッコつく場合があるよね)
あとたまたま警告を見過ごしてオブジェクトファイルになってしまうと、次にファイル更新しないと警告でないよね。
おれ注意散漫だから1年に2、3度ぐらいは==と=の間違いやってしまうけど定数左のおかげで早期発見できてるよ。
もちろん定数右でもコンパイラの警告で見つかってるかもしれないけど
定数左にして損はなしと思うから昔から今までずっとそのスタイル。
左だろうが、個人の好みだからいいと思うけどなあ。
会社とかで、規約がちゃんとある場合は別で。
0283デフォルトの名無しさん
2007/10/27(土) 11:22:03Microsoft(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でもちゃんと警告出るじゃねぇか
まあ、普通は付けてると思うけど。
0285デフォルトの名無しさん
2007/10/27(土) 11:37:51スタイルには単に好みの問題と、実際にメリットのあるものとがある。
前者は ifの条件式の後に中カッコつけるか、改行してからつけるか、など。
後者はif のあとには必ず中カッコをつける、など。
定数左は後者だと思う。(可読性に問題はないと思うので)
0286デフォルトの名無しさん
2007/10/27(土) 11:52:10「統一されてればいい」ってことなら、あえて少数派のスタイルを選ぶことはないんじゃないの? >>72
定数左は確かに代入によるバグを防げるときもあるけど、
その反面、慣れないとぱっと見てわかりづらいよね?
例えば、代入文は
x = 0;
などと書くわけで、大抵の文は左から右に読んでいく。
そして、定数は右にある。これへの慣れが強いので、
if(0 == x)などと書かれると、ここで思考が停止してしまう。
ソースコードの理解しやすさ(可読性?)も考えると、トレードオフで
どちらを選ぶかは個人の趣味レベルになるのかなあと。
上で議論されてるように、コンパイラとかで容易にチェックできるわけだし。
0288デフォルトの名無しさん
2007/10/27(土) 12:12:39コーディングスタイル論争に突入する奴はさらにヘタクソ
少数派ではあるけれども、>>285の言うようにチェッカとかを使わなくても
ミスに気づくことができるという利点があるので選ぶんだろうね。
ちなみに漏れは定数は右派。
右におくソースがほとんどだし、慣れてるし。
漏れが見たオープンソースなソフトウェアのソースは定数が右にあった。
もし、定数が左にあることにもっと優位な点があるなら、とっくに
ほとんどのソースが定数左になってると思うんだけど、いかがだろう。
0290デフォルトの名無しさん
2007/10/27(土) 12:49:320291デフォルトの名無しさん
2007/10/27(土) 12:57:03主語と目的語の区別がつかないアホには
自然言語からやり直せといいたい。
0292デフォルトの名無しさん
2007/10/27(土) 13:05:06書くときはsubject == compareの方が流れ的に書きやすい。
0293デフォルトの名無しさん
2007/10/27(土) 13:50:500294デフォルトの名無しさん
2007/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
0295デフォルトの名無しさん
2007/10/27(土) 14:31:10hogehoge
}
みたいなとき警告でないようにしたいのですが
0296デフォルトの名無しさん
2007/10/27(土) 14:33:150297デフォルトの名無しさん
2007/10/27(土) 15:11:010298デフォルトの名無しさん
2007/10/27(土) 15:40:13if (!strcmp(str1, str2)){}
は、知らない者に対して、文字列が等価で無いこと比較しているような誤解を与えることがあるので好ましくは無いだろう
では、
if (strcmp(str1, str2) == 0){}
これはどうだろうか?
この場合、!strcmp()よりも悪化していると言える
本質的な問題を解決していないからである
しかも、余分に入力した上で、知らない者に対し更なる誤解の種をまいていると言えるからである
故に、C FAQでは、
#define Streq(s1, s2) (strcmp((s1), (s2)) == 0)
と言うマクロを用意することで
if (Streq(str1, str2)){}
と記述させる事により、文字が等価であることを比較している事を判りやすくしましょうと書いているのだ
つまり、定数を左に置く正当の理由とは言えない
その上、彼の主張の一つである、定数を左に置くことで、何と比較しているのか判りやすくなると言う弁からすると
"文字列が等価では無いことを調べている"ように強調されてしまった駄目なコードの例と化しているのである
彼は、これを大まじめに、こちらの方が判りやすいと言っているが、どう考えても、判りにくなっていると思われる
0299デフォルトの名無しさん
2007/10/27(土) 15:41:350300デフォルトの名無しさん
2007/10/27(土) 15:54:070301デフォルトの名無しさん
2007/10/27(土) 16:04:59if (strcmp(str1, str2) < 0)
を読むとき、不等号が見たままの形として利用できる。
つまり、 str1 < str2 として直感的に理解することができる。
同様の条件を右定数で書くと、
if (0 > strcmp(str1, str2)) となって、見たままの直感と反してしまう。
そのつどリファレンスを引いたりしたくないし、
機械的に右へ書いてしまう習慣は役に立つ。
0302デフォルトの名無しさん
2007/10/27(土) 16:05:070303デフォルトの名無しさん
2007/10/27(土) 16:14:56結果的に不等号の「>」は不要だと思うんだよなぁ。
勿論、流儀の問題でぶつかったりする心配はあるけど、
そうじゃなくて自分ひとりで「>」無しでやっていくうえで、
どうしてもでてくる不都合ってあるのかな?
「<」じゃ困ってしまうような事態があるのかな?
チラシの裏にでも書いておけって? すまんね。
0304デフォルトの名無しさん
2007/10/27(土) 16:31:17で、実際のところ、定数は左に置けとか頑張ってるのって、一人だけだろ?
0305デフォルトの名無しさん
2007/10/27(土) 17:26:57それは「定数を左辺に」と主張している派の本質と話題をそらせて釣りだと思うけど
0306デフォルトの名無しさん
2007/10/27(土) 17:28:270307デフォルトの名無しさん
2007/10/27(土) 18:09:070308デフォルトの名無しさん
2007/10/27(土) 18:14:170309デフォルトの名無しさん
2007/10/27(土) 18:15:400310デフォルトの名無しさん
2007/10/27(土) 18:24:05(・∀・)イイヨイイヨ-
0311デフォルトの名無しさん
2007/10/27(土) 18:28:430312デフォルトの名無しさん
2007/10/27(土) 18:31:34恥をさらした奴に違いない。
0313デフォルトの名無しさん
2007/10/27(土) 18:36:000314デフォルトの名無しさん
2007/10/27(土) 18:52:520315デフォルトの名無しさん
2007/10/27(土) 18:54:590316デフォルトの名無しさん
2007/10/27(土) 19:06:440317デフォルトの名無しさん
2007/10/27(土) 19:08:09ええ? そのバグを防ぐ方法を知らないの?
こういう話のときには必ずでるのに。。。
基礎の基礎だよ。
0318デフォルトの名無しさん
2007/10/27(土) 19:08:230319デフォルトの名無しさん
2007/10/27(土) 19:12:48そんなもんコードチェッカーにかければすぐ見つかるだろ。
まさかコードチェッカー使ってないのか?
0320デフォルトの名無しさん
2007/10/27(土) 19:34:080321デフォルトの名無しさん
2007/10/27(土) 19:34:570322デフォルトの名無しさん
2007/10/27(土) 19:56:44さわらせてくれよ
0323デフォルトの名無しさん
2007/10/27(土) 20:04:59早く来ないかな wktk wktk
0324デフォルトの名無しさん
2007/10/27(土) 20:26:22それ以外の原因で起こるバグの方が100000000倍くらい多いと思う
0325デフォルトの名無しさん
2007/10/27(土) 20:48:57仮にコンパイラのwarningすり抜けた場合、==と=の間違い見つけるの結構きついよ
同様に!=と=!の間違いも見つけるのもきつい
実際はまった経験があると見方が変わると思う
0326デフォルトの名無しさん
2007/10/27(土) 20:50:300327デフォルトの名無しさん
2007/10/27(土) 21:03:42ホワイトボックステストやれ
0328デフォルトの名無しさん
2007/10/27(土) 22:37:350329デフォルトの名無しさん
2007/10/27(土) 22:39:18if/* ∧∧ */
/*〜*/(*b == '-')/*<ニャー */
/* >> >> */
/*=====================*/
0330デフォルトの名無しさん
2007/10/27(土) 22:46:26コードレビューで、「このコメントは何ですか?」って真面目に質問する
0331デフォルトの名無しさん
2007/10/27(土) 22:53:20生産性落とす奴等と同列に見えるのは気のせいかな。
こーいう奴等が権力握ると、ifと括弧の間に空白を入れろとかいう
どーでも良いルールを作るのだろうな。
0332デフォルトの名無しさん
2007/10/27(土) 22:56:03ということにしたいのですね。
>>315
このスレ的にはgotoは禁止ですw
0333デフォルトの名無しさん
2007/10/27(土) 22:58:33その程度の事ならコード整形ツールを使いましょう
0334デフォルトの名無しさん
2007/10/27(土) 23:03:00下手に見えるコードではないな
問題は人間性なのでなるべく遠ざけましょう
権限があるのなら閑職を与えてそっとしておきましょう
0335デフォルトの名無しさん
2007/10/27(土) 23:03:42そういう遊びは大事だと思う。
ちゃんと仕事してんならそれくらいは大目に見てやれ。
0336デフォルトの名無しさん
2007/10/27(土) 23:03:55どこにスペースを入れるかは、コーディングルールに入れるよ。
入れないと、if(a==0){}とか書く奴いるし。
0337デフォルトの名無しさん
2007/10/27(土) 23:06:260338デフォルトの名無しさん
2007/10/27(土) 23:10:000339デフォルトの名無しさん
2007/10/27(土) 23:10:38それを守らないときに、お前のコードを読む、数倍の人間がストレスが溜まるのだ。
0340デフォルトの名無しさん
2007/10/27(土) 23:14:030341デフォルトの名無しさん
2007/10/27(土) 23:17:34数多く他人のソース読んでるうちに
そういうことはいちいち気にならなくなる
君は経験が足りないようだね
0342デフォルトの名無しさん
2007/10/27(土) 23:19:52>that is formatted a little differently than they're used to.
0343デフォルトの名無しさん
2007/10/28(日) 00:23:22ニャー を ワン に書き換えてやれ
0344デフォルトの名無しさん
2007/10/28(日) 00:29:120345デフォルトの名無しさん
2007/10/28(日) 00:48:24プロフェッショナルプログラマーならそうかも知れんが、それを底辺コーダーに要求しちゃだめだろw
0346デフォルトの名無しさん
2007/10/28(日) 00:55:260347デフォルトの名無しさん
2007/10/28(日) 00:57:190348デフォルトの名無しさん
2007/10/28(日) 00:59:59正しい条件式を書けるように意識したがいいよ
0349デフォルトの名無しさん
2007/10/28(日) 01:05:11コーディングスタイルに拘ってる、とか偉そうに言ってるが、
if( !strcmp(str1, str2) ){} とかシレっと書いちゃったりするのが現実なんだよ。
結局、コーディングスタイルってのはある種のエゴみたいなものだからな。
逆に、コーディングスタイルには拘らないよ、といってる奴は、
つまりこれは、私はあなたにとことん合わせます、といってるわけで、
実際には、こういう協調性のあるやつの方が良いコードを書く。
要はこのスレにたむろしている連中なんてのは、単なるオナニストであって、
プロフェッショナルとは程遠いところに居るって事だよ。
真のプロなら、「どんなコードでも書きます!!」と言うはずさ。
それからもう一つ分かったことは、
このスレは俺が居ないと進まないって事だ。
0350デフォルトの名無しさん
2007/10/28(日) 01:07:550351デフォルトの名無しさん
2007/10/28(日) 01:09:30if (!strcmp(str1, str2)) {} ぐらいなんでもないだろう。
だけど、コーディングスタイルに拘ります!!とか言ってるやつが、
if (!strcmp(str1, str2)) {} なんて書いてたら、そりゃ滑稽だろう。
「拘ってそれですか?」と言いたくなる。
0352デフォルトの名無しさん
2007/10/28(日) 01:10:26> このスレは俺が居ないと進まないって事だ。
これは恥ずかしい。
また昨日みたいな祭りを繰り返すつもりか?
0353デフォルトの名無しさん
2007/10/28(日) 01:14:34自分はこんなコード書いといて、他人のコードにつべこべ難癖つけてる姿を滑稽に思い、
そこに粘着しているんだよなー。
「おれウンコ大好きです」と言いながらウンコだべてるなら、ご自由にと思うし、
「たまには尿もいいよね」と言いながら尿を飲んでるなら、まぁ仕方ない。
だけど、「尿のんでるやつプギャー」とバカにしながら自分はウンコ食ってるなら、
もう笑うしかないじゃない。
0354デフォルトの名無しさん
2007/10/28(日) 01:19:21よりも
if(!strcmp(s,s2)){}
の方が読みやすいと思うけど、結局どっちでもいい
0355デフォルトの名無しさん
2007/10/28(日) 01:19:58事実だろ。
お前らみたいな自分勝手で我侭で、我が強く、多感で、
自分の価値観を犯されることを心底嫌う奴らをおちょくると、
すぐ発狂するから面白い。
おれが「好きにすりゃ良いじゃん」って言ってるのに、
「いや、好きにするべきではない」とかわけ分からんこと返してくるし。
好きにすりゃ良いじゃんって言ってるんだから、好きにすりゃ良いのに。
0356デフォルトの名無しさん
2007/10/28(日) 01:22:270357デフォルトの名無しさん
2007/10/28(日) 01:22:54Cを投げ捨てればよい
0358デフォルトの名無しさん
2007/10/28(日) 01:23:49所詮 >>354 の レベルだってことだよ。
0359デフォルトの名無しさん
2007/10/28(日) 01:30:12だから、お前は好きなようにコーディングしていいよ。
ただ、お前のスタイルが一番優れていると、回りに宣伝するのだけはやめてくれ。
0360デフォルトの名無しさん
2007/10/28(日) 01:32:330361デフォルトの名無しさん
2007/10/28(日) 01:40:16http://www.kouno.jp/home/c_faq/c17.html
0362デフォルトの名無しさん
2007/10/28(日) 02:18:55別に読みづらくない
いつも、"!"を「0じゃない」って読んでるから
0363デフォルトの名無しさん
2007/10/28(日) 02:19:06自分が「下手だ」と思うならどんどん貼って、議論したい奴が議論するスレだろ。
0364デフォルトの名無しさん
2007/10/28(日) 02:19:37こだわり見せるのは自分のオナニープログラムだけにしとけ
それなら誰も文句言わんから
0365デフォルトの名無しさん
2007/10/28(日) 02:19:49恣意的に引用するのは止めような。
C++ Coding Standards
Tried-and-true guidelines for C++ programmers
ttp://www.ddj.com/architect/184401863
>Don't sweat the small stuff. (Or: Know what not to standardize.)
>
>Don't enforce matters of personal taste. Don't enforce obsolete practices.
>
>Issues that are really just personal taste and don't affect correctness or readability don't belong in a coding standard.
>Any professional programmer can easily read and write code that is formatted a little differently than they're used to.
>
>Do use consistent formatting within each source file or even each project, because it's jarring to jump around among
>several styles in the same piece of code. But don't try to enforce consistent formatting across multiple projects or
>across a company.
0366こだわるのはイクない派
2007/10/28(日) 02:22:11どの立場で言ってるのか分からんレスが多すぎる。
#正直そんなレス書く奴はコードも…
0367デフォルトの名無しさん
2007/10/28(日) 02:25:11>>342の引用で十分だと思う
0368クレハ
2007/10/28(日) 02:25:330369デフォルトの名無しさん
2007/10/28(日) 02:27:19君には違って見えなくても、違った解釈したレスしてる奴いるじゃん
0370デフォルトの名無しさん
2007/10/28(日) 02:30:01PGにはプロフェッショナルもコーダーもない。PGはPGだ。
0371デフォルトの名無しさん
2007/10/28(日) 02:30:130372るくは
2007/10/28(日) 02:31:36自作自演しているのって、80くらいしかいなさそうだけど。
0373デフォルトの名無しさん
2007/10/28(日) 02:32:08お前の会社は、新人君を野放しにするのか?
0374デフォルトの名無しさん
2007/10/28(日) 02:32:25>Don't sweat the small stuff. (Or: Know what not to standardize.)
だね
0375デフォルトの名無しさん
2007/10/28(日) 02:33:05お前、前スレでif a <= 0が読めないとか言ってたやつだろ。
いい加減に粘着やめろよwww
0377デフォルトの名無しさん
2007/10/28(日) 02:37:030378デフォルトの名無しさん
2007/10/28(日) 02:38:430379デフォルトの名無しさん
2007/10/28(日) 02:40:480380デフォルトの名無しさん
2007/10/28(日) 02:41:57チームでもこだわらないの?
0381デフォルトの名無しさん
2007/10/28(日) 02:43:060382デフォルトの名無しさん
2007/10/28(日) 02:44:06でも、従うことがあまりにもコスト高なら代案を提案してみたりはする
0383デフォルトの名無しさん
2007/10/28(日) 02:44:33if (条件) {
1000行くらいのコードA
3行くらいのコードX
500行くらいのコードB
} else {
1000行くらいのコードA(上のAと全く同一)
3行くらいのコードY
500行くらいのコードB(上のBと全く同一)
}
なんて素敵コードは見たことあるが。
0384デフォルトの名無しさん
2007/10/28(日) 02:45:470385デフォルトの名無しさん
2007/10/28(日) 02:48:35一番素敵なのは、拘らないといいつつ、定数を左辺に置くことに拘りまくり
Cの文法が自分の趣味に合わないと言い続けてる人が居ることだけどね
0386こだわるのはイクない派
2007/10/28(日) 02:50:30ルールでスタイルまでガチガチに縛るのはナンセンス。
比較式の書き方や空白の入れ方とか、そんなルールを決めても
デメリットの方が大きい。
一番怖いのはルールが細かすぎるあまり徹底し切れず、
最も重要なルールも守られない事。
ルールは必要最低限に留めて、その分徹底させた方がいい。
0387デフォルトの名無しさん
2007/10/28(日) 02:50:42これに反論する奴はいないだろう。
気を使った結果、if (0 == a)と書けというコーディング規約を作るかもしれんが。
0388デフォルトの名無しさん
2007/10/28(日) 02:51:42慣れれば、そのスタイルで自然に記述できるようになるだろ?
0389デフォルトの名無しさん
2007/10/28(日) 02:57:01インデントをタブにするとか空白4文字にするとか、カッコをどこにおくかなんて、どうでもいいんだよ。
大抵の開発だとCVSなんかにチェックインするだろうから、チェックインの前にインデント変換ツールに通すだけだから。
スタイルが統一されているコードがチェックインされているなら、個人で開発中のコードはどんなに汚くても、周りの人には影響なし。
0391デフォルトの名無しさん
2007/10/28(日) 02:59:36拘るのはオナニー野郎だけ。
0392デフォルトの名無しさん
2007/10/28(日) 03:01:290393デフォルトの名無しさん
2007/10/28(日) 03:03:080394こだわるのはイクない派
2007/10/28(日) 03:03:52if(定数==変数)とか強制されたい?
>389
なぜ漏れに反論するのか分からない。
同じ意見なのだが。
>390
名前見て下さい
0395デフォルトの名無しさん
2007/10/28(日) 03:08:250396デフォルトの名無しさん
2007/10/28(日) 03:13:08shared_ptrだけは許してください
0397デフォルトの名無しさん
2007/10/28(日) 03:23:16str1とstr2が等しければ0を返し
str1がstr2より大きければ正を返し
str1がstr2より小さければ負を返す
つまり、関数名通りに文字列を比較する関数と見た場合
比較した文字列が等しければ偽を返し、比較した文字列が等しくなければ真を返す関数である
故に、文字列が等しいことをテストしたければ、not演算子で真偽を逆転させるのが正しい比較となるが
それでは、おっちょこちょいが、文字列が等しくないことをテストするのだと勘違いする可能性があるため
#define StrEq(s1, s2) !strcmp(s1, s2)
とでも定義して、文字列が等しいことを調べているのだと主張する方がいいだろうと言うのがC FAQの趣旨だ
それを、
if (!strcmp(s1, s2)) {}
なんて事を書くのはおかしいと書くのがおかしいのでは無いのだろうか?
定数を左辺に置く以上に恥ずかしい発言だと思うのだが
0398デフォルトの名無しさん
2007/10/28(日) 04:01:21それはむしろまともだろう
0399デフォルトの名無しさん
2007/10/28(日) 04:40:31触っちゃダメ
0400デフォルトの名無しさん
2007/10/28(日) 04:41:56strcmpなんてifで使うためにあるんじゃないんだよ
qsortの引数に渡すためにあるんだよ
0401デフォルトの名無しさん
2007/10/28(日) 04:51:110402デフォルトの名無しさん
2007/10/28(日) 05:41:35>つまり、関数名通りに文字列を比較する関数と見た場合
>比較した文字列が等しければ偽を返し、比較した文字列が等しくなければ真を返す関数である
なんで、わざわざそう「見る」必要があるんだ?
>strcmp(str1, str2)は、
>str1とstr2が等しければ0を返し
>str1がstr2より大きければ正を返し
>str1がstr2より小さければ負を返す
と自分でも書いている通り、strcmpは真偽ではなく、あくまで整数値を返すわけだが。
等しい時0になるってだけで、真偽は関係ない。
等しい時にたまたま0が返って、それがたまたま偽だってだけだ。
0歳かどうか調べるのに、わざわざ if( !age ){} なんて書く奴は居ない。
0403デフォルトの名無しさん
2007/10/28(日) 05:51:33str1 < str2かどうか調べる時は strcmp(str1, str2) < 0 と書き、
str1 >= str2かどうか調べる時は strcmp(str1, str2) >= 0 と書き、
str1 <= str2かどうか調べる時は strcmp(str1, str2) <= 0 と書くのに、
等しいかどうか調べる時は、!strcmp(str1, str2) と書くのは不自然じゃないか?
また、if( !strcmp(str1, str2) ){} と書く奴は、等しくないかどうか調べる時には、
if( strcmp(str1, str2) ){} と書くのか?
0404デフォルトの名無しさん
2007/10/28(日) 06:04:17例えば、年齢をあらわす整数型の変数ageが有ったとする。
この場合、ageは年齢を表す、と考えるのが普通だろう。
それをどうしてわざわざ、
ageは0歳の時は偽を表して、0歳でないときは真を表します、
と考えなければならないのだろう。
if ( !age ){ /* 0歳のとき */ }
else if( age == 1 ){ /* 1歳のとき */ }
else if( age == 2 ){ /* 2歳のとき */ }
とか書くのかい?
ageは元々整数を表しているのに、わざわざ真偽を考え、0歳の時だけ特別扱いする意味はあるのかい?
そして、そういうことをして、一体どういうメリットが有るの?
0405デフォルトの名無しさん
2007/10/28(日) 06:23:340406デフォルトの名無しさん
2007/10/28(日) 06:24:340407デフォルトの名無しさん
2007/10/28(日) 06:44:49同じ整数型でも、真偽として扱っている場合と、整数として扱っている場合がある。
例えば、int isdigit(int c) は 「cが10進数なら真の値を返す」 と有り、
これの戻り値は整数型だが、整数型で真偽を代用して返している。
一方、int strcmp(const char *cs, const char *ct) は、
「文字列 cs と 文字列 ct を比較する. cs > ct なら 0より大きい数,
cs < ct なら 0未満の数, 等しければ 0 を返す.」
とあり、「数」と言う言葉を使っていることからも分かるとおり、あくまで整数値を返す。
整数と真偽の区別も出来ないなんて、分別なさすぎ。味噌も糞も一緒なんだね。
そういう奴が、他人のコードに文句言ってるのがこのスレの実態なんだよね。
必ずしも分別が必要とは思わんが、物事の分別もつかないレベルのくせに、
他人のすることをいちいち評価しようとするなよな。
0408デフォルトの名無しさん
2007/10/28(日) 07:02:580409デフォルトの名無しさん
2007/10/28(日) 07:18:20Cの標準関数の定義にも、整数型における整数と真偽の区別があるので根拠性はある。
isdigit は真偽を返すと明記してあり、strcmp は数を返すとしっかり明記してある。
むしろ、わざわざ、それに従わないようにする事に対する根拠やメリットの方が無い。
0410デフォルトの名無しさん
2007/10/28(日) 07:25:48一方、strcmpに関しては、C言語の定義に「数を返す」と書いてある以上、
数として評価すべきだと思うが、どうだろう。
どうして「数」をわざわざ真偽値とみなして評価する必要がある?何のメリットも無いのに。
0411デフォルトの名無しさん
2007/10/28(日) 07:30:32はいw
0412デフォルトの名無しさん
2007/10/28(日) 07:34:00==0よりも!のほうが2文字少ないとか思ってたりして。
何も知らない初心者なら、たぶんstrcmp(a,b)==0と書くはずで、!strcmp(a,b)とは書かないだろう。
Webで見たか、本で読んだかわからないが、どこかで!strcmpという書きかたを見つけて
これがC流のやりかただと思いこんじゃったんだろうねえ。
定数を左におく書き方もおそらく同じだろう。
0413デフォルトの名無しさん
2007/10/28(日) 07:35:06if(!age)
に全く抵抗がない
0414デフォルトの名無しさん
2007/10/28(日) 07:36:05JZ と JE を区別しないほうですか?
0415デフォルトの名無しさん
2007/10/28(日) 07:37:060416デフォルトの名無しさん
2007/10/28(日) 07:38:26その結果、>>403に書いた、記述に一貫性が無くなるというディメリットを生んで、
一体何がしたいの?
それはつまり・・・・ヘタって事じゃないの?
お前らの嫌いな、わざわざ余計なことをしてディメリットを生む、いわゆる冗長性ってやつだろ。
これの場合はコードの冗長性というわけじゃなくて、思考の冗長性のことだけど。
0417デフォルトの名無しさん
2007/10/28(日) 07:40:05>その結果、>>403に書いた、記述に一貫性が無くなるというディメリットを生んで、
一貫性はある
バカにはそれがわからないだけ
0418デフォルトの名無しさん
2007/10/28(日) 07:41:12str1 > str2かどうか調べる時は strcmp(str1, str2) > 0 と書き、
str1 < str2かどうか調べる時は strcmp(str1, str2) < 0 と書き、
str1 >= str2かどうか調べる時は strcmp(str1, str2) >= 0 と書き、
str1 <= str2かどうか調べる時は strcmp(str1, str2) <= 0 と書くのに、
その通り
等しいかどうか調べる時は、!strcmp(str1, str2) と書くのは不自然じゃないか?
不自然じゃないです
また、if( !strcmp(str1, str2) ){} と書く奴は、等しくないかどうか調べる時には、
if( strcmp(str1, str2) ){} と書くのか?
はい
0419デフォルトの名無しさん
2007/10/28(日) 07:43:35どうして?
strcmpは「数」を返すと定義してあるのに、
どうしてわざわざ真偽値とみなして評価する必要があるの?
数が返ってくるのだから、数として評価すれば良いのでは?
わざわざ数を真偽値とみなして評価することが、どう不自然でないか説明してください。
0420デフォルトの名無しさん
2007/10/28(日) 07:43:420421デフォルトの名無しさん
2007/10/28(日) 07:48:38あともう一つ聞きたいんだけど、
等しいかどうか調べる時は、!strcmp(str1, str2) と書くくせに、
str1 >= str2かどうか調べる時は、どうして
!(strcmp(str1, str2) < 0)
と書かずに、
strcmp(str1, str2) >= 0
と書くのですか?
strcmp(str1, str2) >= 0 と書くのなら、
等しいかどうか調べる時も、
strcmp(str1, str2) == 0
と書いた方が自然ではないですか?
0422デフォルトの名無しさん
2007/10/28(日) 07:49:260423デフォルトの名無しさん
2007/10/28(日) 07:49:31おれは
strcmp(str1, str2) > 0 や strcmp(str1, str2) < 0 を使うケースは
if(strcmp(str1, str2) > 0){
hage
}else if(strcmp(str1, str2) < 0){
hoge
}else{ // !strcmp(str1, str2) == 0
huga
}
のときしかありえんからな
そもそも上のような議論の発生の余地がない
0424デフォルトの名無しさん
2007/10/28(日) 07:51:57実行速度を考えればそうだが、
>}else{ // !strcmp(str1, str2) == 0
はコメントがバグってる。
0425デフォルトの名無しさん
2007/10/28(日) 07:52:02!strcmpがOKな人は、C/C++しか使わない人じゃないかと思うんだけど。
0426デフォルトの名無しさん
2007/10/28(日) 07:52:15str1 >= str2かどうか調べる時は、どうして
!(strcmp(str1, str2) < 0)
と書かずに、
strcmp(str1, str2) >= 0
と書くのですか?
どっちも使うよ
文脈に沿ったものを使う
0427デフォルトの名無しさん
2007/10/28(日) 07:54:32(strcmp(str1, str2) < 0)
が真偽値である以上、!(strcmp(str1, str2) < 0) は正しいんだけどね。
!strcmp(str1, str2) は相変わらず変だが。
0428デフォルトの名無しさん
2007/10/28(日) 07:54:36Perlも使ってるけどあっちのほうがめちゃくちゃ破綻してるだろ
0429デフォルトの名無しさん
2007/10/28(日) 07:57:08!strcmp(str1, str2)
の意味を瞬時に出来ない奴は素人か頭悪いだろ。
0430デフォルトの名無しさん
2007/10/28(日) 07:57:19数として評価すべきでは?
ちなみに、isdigit は真偽を返すと定義してある。
こっちは if( !isdigit(c) ){} で問題ないが。
0431デフォルトの名無しさん
2007/10/28(日) 07:59:34perlはパズルみたいなものだから。
0432デフォルトの名無しさん
2007/10/28(日) 08:01:31もっと根本的な部分でおかしなソース書いてそう。
0433デフォルトの名無しさん
2007/10/28(日) 08:29:05些細なことを
些細なこととして切り捨てる人と
些細なことなので、優先順位の低い問題として考慮する人との差は
結構でかいよ
0434デフォルトの名無しさん
2007/10/28(日) 08:47:390435デフォルトの名無しさん
2007/10/28(日) 08:51:130436381
2007/10/28(日) 08:56:280437デフォルトの名無しさん
2007/10/28(日) 09:33:08些細でかつ優先順位の低い問題だからこと
討論する場所は2chでいいんじゃないか?
0438デフォルトの名無しさん
2007/10/28(日) 09:34:25http://pc11.2ch.net/test/read.cgi/tech/1193316535/
0439デフォルトの名無しさん
2007/10/28(日) 10:05:300440デフォルトの名無しさん
2007/10/28(日) 11:07:09お前のコーディングスタイルはおかしいと言われると、こだわりまくってファビョる件について。
0441デフォルトの名無しさん
2007/10/28(日) 11:15:24正常終了のときはNULL、異常終了のときはエラーメッセージを返します。
*/
char* Func()
{
}
0442デフォルトの名無しさん
2007/10/28(日) 11:15:26本当にこだわってないなら、アホらしくて書き込みすらしないはずだ。
0443デフォルトの名無しさん
2007/10/28(日) 11:47:180444デフォルトの名無しさん
2007/10/28(日) 12:13:55異論は認めない。
0445デフォルトの名無しさん
2007/10/28(日) 12:30:57ここ
0446デフォルトの名無しさん
2007/10/28(日) 12:57:58Cではboolの代わりに整数を使うとか、電波流しまくり。
ifとかwhileなんかの条件判断はboolではなくて、0か非0かを判断しているだけ。
あくまでも数値でしか判断してないの。
そこを理解できないから、頭が悪いと言われているのに。
バカの賛同者が誰もいないのがいい証拠。
0447デフォルトの名無しさん
2007/10/28(日) 13:07:270448デフォルトの名無しさん
2007/10/28(日) 13:11:05strcmp関数の仕様が「戻り値として0か非0を返す」となってたら別に問題なし
それ以外なら下らん自己満足のハックでしかないよ
0449デフォルトの名無しさん
2007/10/28(日) 14:17:04strcmp(str1, str2) は文字列に対する str1 - str2 の結果を整数値で
返しているのであって真偽を返している訳ではない。
で、(str1 - str2 == 0) は (str1 == str2) であり、str1 - str2 < 0 は str1 < str2 であるから
#define StrEq(s1, s2) !strcmp(s1, s2)
なんかより
#define STRCMP(S1,EQ,S2) (strcmp((S1), (S2)) EQ 0)
として、 if( STRCMP(s1, ==, s2) ) とか if( STRCMP(s1, <, s2) とか書くほうが良い。
いずれにせよ左辺値に定数を持ってくる奴はバカ。
0450デフォルトの名無しさん
2007/10/28(日) 14:25:20同意。
>>446
!strcmp() が理解できないのではなく、お前の思考回路が理解できない。
文字列 p の i 番目の要素にアクセスするときに
p[i] ではなく i[p] を使えとか言われても「バカか、こいつ」って思うだろ?
0451デフォルトの名無しさん
2007/10/28(日) 14:29:49左辺に定数を絶対に持ってきてはいけない!と主張する奴は、
同程度にウザい
0452デフォルトの名無しさん
2007/10/28(日) 14:30:04!str.. は 整数比較の系ではないということだよ
0453デフォルトの名無しさん
2007/10/28(日) 14:36:46ifが0か非0要求してんだろ
0==0は戻り値を返してることに気づけよ
0454デフォルトの名無しさん
2007/10/28(日) 14:44:27if(strcmp(s,s2) == 0){}
だけど、人のコード読んでいても
if(!strcmp(s,s2)){}
を、ぱっと頭の中で切り替えることはできる。
でも、等しくない場合の
if( strcmp(str1, str2) ){}
これはダメ。コーディングミスと思って読み直してしまう。
(そして意図と合っていたことが判って愕然としてしまう)
#define StrEq(s1, s2) !strcmp(s1, s2)
はギリギリOKだけど、
#define STRCMP(S1,EQ,S2) (strcmp((S1), (S2)) EQ 0)
これはどうかと。
あまり俺様マクロを大量導入するとソースを引用するとき困るような。
0455デフォルトの名無しさん
2007/10/28(日) 14:53:340456デフォルトの名無しさん
2007/10/28(日) 14:56:230457デフォルトの名無しさん
2007/10/28(日) 14:59:550458デフォルトの名無しさん
2007/10/28(日) 15:01:44if (strcmp(s1, s2) == 0)とか、
if (strcmp(s1, s2) != 0)とかの方がreadabilityに優れてる。
0459デフォルトの名無しさん
2007/10/28(日) 15:01:46いいや、こだわりすぎの奴と何にも考えてない奴は、同等にクズ
0460デフォルトの名無しさん
2007/10/28(日) 15:08:54C++なら
if ( s1 == s2 )だけでいいのに
0461デフォルトの名無しさん
2007/10/28(日) 15:16:14Cのifが0か非0受け取るのは、意図してやってることだし
漏れもそう思って、そういうスタイルに戻した。
前は
if(!strcmp(s1, s2)
とか
if(!fp)
とか書いてたけど。
0463デフォルトの名無しさん
2007/10/28(日) 15:26:310464デフォルトの名無しさん
2007/10/28(日) 15:28:19strcmpの返す値を、"0"より"大きい"のか"小さい"のか"等しい"のかで比べる以外に使用するのはナンセンスだろ
また、Cの場合、intが整数型だから、返ってくる値が、整数だなんて思うのはとんでもない誤解
Cにはboolenは無く、bool値の定義は、「0以外は真である」となっている
故に、文字列が等しいのか等しくないのかを判断するのに、not演算子を使うのは妥当(数に意味が無いのであれば、boolと同じ)
0465デフォルトの名無しさん
2007/10/28(日) 15:29:310466デフォルトの名無しさん
2007/10/28(日) 15:31:31「0か非0」ということに拘るのであれば
while (-1) {
}
なんてのは -1 に意味がないから駄目で、
あくまで
while (! 0) {
}
と書くべきという主張?
0467デフォルトの名無しさん
2007/10/28(日) 15:33:15whileの仕様知ってなきゃ可読性も糞もねえな
ifも然りだ
0468デフォルトの名無しさん
2007/10/28(日) 15:34:23どんとはらい。
0469デフォルトの名無しさん
2007/10/28(日) 15:47:39もちろん逆は駄目なので、
#define TRUE -1
とか問題外だが。
個人的に無限ループは
for(;;){
が好き。
0470デフォルトの名無しさん
2007/10/28(日) 15:48:46...正気か?
「0以外は真」であると定義されている
whileは、条件が真の間ループする
で、-1は真なの偽なの?
0471デフォルトの名無しさん
2007/10/28(日) 15:52:17readabilityは上がるだろうけど
if (!strcmp(s1, s2))が読めるものにとっては
読みやすさは下がると思うのよ
単語全てを日本語に頑張って翻訳している技術書の翻訳本みたいな
0472466
2007/10/28(日) 15:52:40自分は if (!strcmp(s1,s2)) で構わないと思う派。
これが不自然だという人は、while の時にどう書くのだろうと。
0473466
2007/10/28(日) 15:53:54>strcmp(str1, str2) は文字列に対する str1 - str2 の結果を整数値で
これ本当ですか?たとえば
strcmp(s1, s2) = -1 * strcmp(s2, s1)
って仕様で保証されているの?
0474デフォルトの名無しさん
2007/10/28(日) 15:56:110475デフォルトの名無しさん
2007/10/28(日) 15:57:05readabilityと読みやすさはどう違うんだ?
0476デフォルトの名無しさん
2007/10/28(日) 15:59:40未定義と思う
http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
0477デフォルトの名無しさん
2007/10/28(日) 15:59:51if (strcmp(s1, s2) != 0)と書くのはナンセンスで、
ret = strcmp(s1, s2);
if (ret < 0 || ret > 0) {}
と書けということだね。
0478デフォルトの名無しさん
2007/10/28(日) 16:00:57コーディングスタイルにこだわるスレ
http://pc11.2ch.net/test/read.cgi/tech/1193554741/
0479デフォルトの名無しさん
2007/10/28(日) 16:02:12あのさー、if (!strcmp())は、知らない人間でもちょっと考えれば読めるけど、
誰でもノーストレスで読めるように書きましょうっていうのが、可読性を上げましょうってことなんだけど。
0480466
2007/10/28(日) 16:06:35!strcmp(s1, s2) と
strcmp(s1, s2) == 0
で読みやすさに違いがあるってのは鈍いだけでは?
strcmp(s1, s2)
strcmp(s1, s2) != 0
これだったら上の方がノーストレスで読めたりとか。
「否定演算」の理解に 1 クロックを要する人ってだけな気がする。
0481デフォルトの名無しさん
2007/10/28(日) 16:07:08・ぱっと見て「ヘタだなぁ」と思うコード
だと思うけどね。
なんで、このスレで話す内容であっている。
コーディングスタイル以外の話がしたければ、自分でネタを振ればOK。
0482デフォルトの名無しさん
2007/10/28(日) 16:07:26if (strcmp(s1,s2))
だけで正確な動作が保証されてしかるべき
0483デフォルトの名無しさん
2007/10/28(日) 16:11:07絶対誘導されないし意地でも居座り続けるの法則。
0484デフォルトの名無しさん
2007/10/28(日) 16:13:26一貫性がないだろって話
0485デフォルトの名無しさん
2007/10/28(日) 16:14:120486デフォルトの名無しさん
2007/10/28(日) 16:15:370487デフォルトの名無しさん
2007/10/28(日) 16:19:37ttp://www.kumei.ne.jp/c_lang/cpp/cpp_32.htm
0488デフォルトの名無しさん
2007/10/28(日) 16:19:37プログラマならスレ立てに慎重であってしかるべき。
0489デフォルトの名無しさん
2007/10/28(日) 16:21:500490デフォルトの名無しさん
2007/10/28(日) 16:25:37まるでこのスレのような。
0491デフォルトの名無しさん
2007/10/28(日) 16:26:440492デフォルトの名無しさん
2007/10/28(日) 16:32:360493デフォルトの名無しさん
2007/10/28(日) 16:35:42禁止ネタ(超既出)
・長い関数
・深いネスト
・グローバル変数
・goto
・memset
・malloc - free
・局所ブロック
・サンプルコードのtypo
・記述スタイル
・関数・変数名
らしいよ
0494デフォルトの名無しさん
2007/10/28(日) 16:36:09偉いな。
491も自覚しろよw
0495デフォルトの名無しさん
2007/10/28(日) 16:37:56・main関数しかない
・変数名がa,b,c,...
だな
ちなみに、zまで逝った後はaa,ab,ac,...な
0496デフォルトの名無しさん
2007/10/28(日) 16:39:350497デフォルトの名無しさん
2007/10/28(日) 16:40:40言っとくが仕事で見たんだぜ?
半端ねぇよ
0498デフォルトの名無しさん
2007/10/28(日) 16:42:230499デフォルトの名無しさん
2007/10/28(日) 16:45:55まあ、だから、構造化プログラミングってのが考え出されたんだけどな...
肝心のコボラーに伝わってないんだよな...
0500デフォルトの名無しさん
2007/10/28(日) 16:48:41data[0]=0;
data[1]=0;
・
・
・
data[1022]=0;
data[1023]=0;
ってのがあった。これは酷い、と思ったらもう1箇所初期化処理があって
data[1024]=0;
・
・
・
0501デフォルトの名無しさん
2007/10/28(日) 16:51:52std::fill(data, data+N, 0);
とか修正すると
data[238] = 4;
を見落としたりするんだろうか
0502デフォルトの名無しさん
2007/10/28(日) 16:57:18>>500は行数を稼いで売上げアップ。
を狙ったのかな?
0503結局
2007/10/28(日) 17:15:20でおk?
0504デフォルトの名無しさん
2007/10/28(日) 17:19:16比較での左定数にはなんの意味もないが正解
0506デフォルトの名無しさん
2007/10/28(日) 17:27:06それは面白い!
その人に座布団一枚やってください
0507デフォルトの名無しさん
2007/10/28(日) 17:27:37hoge==0だろうが0==hogeだろうが大して見易さ変わらないんだから
どっちでもいいんじゃないかと思うんだが
0508デフォルトの名無しさん
2007/10/28(日) 17:35:40貴様が一人でコーディングして、自分だけで使うプログラムなら、その通り好きにしたらしい。
0509デフォルトの名無しさん
2007/10/28(日) 17:38:00hage
} else if (strcmp(str1, str2) < 0) {
hoge
} else {
huga
}
0510デフォルトの名無しさん
2007/10/28(日) 17:40:14次からは、その様なコードを見つけたとき、作った人を最大限に褒め称え
自分にはこの様な天才的コードを保守する自信は無いと辞退しましょう
恐らく作った本人が鼻高々で保守してくれることでしょう
そして、その様にすれば、その様な天災的コードが他のプロジェクトに出現しにくくなります
天災的コードの保守は天災的コードを書いた本人が保守するのですから...
0511デフォルトの名無しさん
2007/10/28(日) 17:41:28俺ならそのコードを生成するのに使うPerlなんかのスクリプトのコードをコメントに残しておくな。
これで保守性がかなり高まる。
0513デフォルトの名無しさん
2007/10/28(日) 17:46:24○醜い・・・じゃ無かった、見難い
これは主観によるものが大きいだけに、論争しても決着は付かない気がする。
例えるなら、ツートップ横のじゃんがらラーメンは美味しいか?不味いか?
くらいバカげている。そんなの、好みやん!
「見やすい」「見難い」 というのでは無く、「メリット」「デメリット」
「○○防止のため」 などのような、主観に影響されない事で論争して頂きたい。
0514デフォルトの名無しさん
2007/10/28(日) 17:46:50違う違う、その様な天災的コードが、無限に増殖することよりもマシだと考えるんだ
0515デフォルトの名無しさん
2007/10/28(日) 17:52:25いつまで引っ張ってんだよ。
一人でやってろ、クズ
0516デフォルトの名無しさん
2007/10/28(日) 17:52:47まぁ、左右定数の「見やすさ」に関しては似たり寄ったりだしな
「左に定数持ってくればコーディングミス防止になる」が最近の開発環境じゃ
意味がないって言うなら、いくら熱弁したところで好みの問題でしかない
0517デフォルトの名無しさん
2007/10/28(日) 17:57:20それぞれについての、客観的なメリット・デメリットを語ってください。
0518デフォルトの名無しさん
2007/10/28(日) 18:00:26いつまで定数で引っ張るじゃモルァ
0519デフォルトの名無しさん
2007/10/28(日) 18:01:250520デフォルトの名無しさん
2007/10/28(日) 18:02:37お前、何レスしてんだよwww
0521デフォルトの名無しさん
2007/10/28(日) 18:03:050522デフォルトの名無しさん
2007/10/28(日) 18:05:40左定数だと=と間違えたときにどんなコンパイラでもエラーになるYO
0523デフォルトの名無しさん
2007/10/28(日) 18:06:080524デフォルトの名無しさん
2007/10/28(日) 18:07:15それ、ビミョーだね。
int cc = strcmp(str1, str2);
if (cc > 0) {
hage
} else if (cc < 0) {
hoge
} else {
huga
}
こう書けば strcmp は1回しか評価されない。
シビアな面ではパフォーマンス改善につながるかもしれない。
だが1行増える、捨て変数が1個増える。書くのメンドクサイ。
トレードオフだね。
たまたま strcmp が例だけど、副作用のある関数ならアウトかも。
ケースバイケースだね。
0525デフォルトの名無しさん
2007/10/28(日) 18:08:100526デフォルトの名無しさん
2007/10/28(日) 18:14:040527デフォルトの名無しさん
2007/10/28(日) 18:14:530528デフォルトの名無しさん
2007/10/28(日) 18:15:060529デフォルトの名無しさん
2007/10/28(日) 18:15:090530デフォルトの名無しさん
2007/10/28(日) 18:15:450531デフォルトの名無しさん
2007/10/28(日) 18:18:150532デフォルトの名無しさん
2007/10/28(日) 18:18:44そこまでする必要があるかは疑問だが
0533デフォルトの名無しさん
2007/10/28(日) 18:18:590534デフォルトの名無しさん
2007/10/28(日) 18:21:00副作用のある関数ってこういう事?
if (read(fd, buf, 80) > 0) {
通常処理
} else if (read(fd, buf, 80) < 0) {
エラー処理
} else {
クローズ処理
}
さすがにこんなマヌケなコードを書くヤツはおらんと思うが
変な悪いクセをつけないためにも、普段から >>524 みたいな
書き方をしとくべきだろうね。
0535デフォルトの名無しさん
2007/10/28(日) 18:22:00コーディング規約があるんだよ・・・
0536デフォルトの名無しさん
2007/10/28(日) 18:23:270537デフォルトの名無しさん
2007/10/28(日) 18:23:33if(0==a)なんて書いて悦に入るアホが出てきたら明文化すればいいよw
0538デフォルトの名無しさん
2007/10/28(日) 18:26:10書き方が規約になってる
Cのときはまだいいんだが、クラスが基本のJavaとかになるとどうするよって感じになる
0539デフォルトの名無しさん
2007/10/28(日) 18:27:33うぜーーーー
お前が
0540デフォルトの名無しさん
2007/10/28(日) 18:27:41コーディングスタイルにこだわるスレ
http://pc11.2ch.net/test/read.cgi/tech/1193554741/
0541デフォルトの名無しさん
2007/10/28(日) 18:28:230542デフォルトの名無しさん
2007/10/28(日) 18:28:39馬鹿は無駄な空行を入れたがる
0543デフォルトの名無しさん
2007/10/28(日) 18:29:12java には java の規約がありますよ。
C には C の規約。
0544デフォルトの名無しさん
2007/10/28(日) 18:30:14次は版画利案の是非をやりたいの?
0545デフォルトの名無しさん
2007/10/28(日) 18:31:360546デフォルトの名無しさん
2007/10/28(日) 18:34:17うちもある
だが、何を考えたのかなんとかかんとかをJavaでも使えと書いてある
0547デフォルトの名無しさん
2007/10/28(日) 18:34:28・・・
} else {
;
}
0548デフォルトの名無しさん
2007/10/28(日) 18:35:09じゃぁ使えよ
0549デフォルトの名無しさん
2007/10/28(日) 18:35:150550デフォルトの名無しさん
2007/10/28(日) 18:36:110552デフォルトの名無しさん
2007/10/28(日) 18:38:35C/C++系以外で、誤代入が問題になることってあるの?
BASICやPASCALでは誤代入にならないよね?
左辺に定数を置く人って、BASICやPASCALでも左辺に定数を置くの?
仮に、BASICやPASCALで左辺に定数を置くとして、それには、何か意味があるの?
0553デフォルトの名無しさん
2007/10/28(日) 18:39:250554デフォルトの名無しさん
2007/10/28(日) 18:39:56>>478が得意そうに立ててました。
しかし、もはやネタスレw
0555デフォルトの名無しさん
2007/10/28(日) 18:40:42それは主観。
0556デフォルトの名無しさん
2007/10/28(日) 18:41:290557デフォルトの名無しさん
2007/10/28(日) 18:42:140558デフォルトの名無しさん
2007/10/28(日) 18:43:460559デフォルトの名無しさん
2007/10/28(日) 18:45:320560デフォルトの名無しさん
2007/10/28(日) 18:45:48× 左定数 VS 右定数
○ 定数位置固定派 VS 臨機応変派
0561デフォルトの名無しさん
2007/10/28(日) 18:47:13○ドシロート
0562デフォルトの名無しさん
2007/10/28(日) 18:48:26左定数アレルギーでも持ってるのか、お前は
0563デフォルトの名無しさん
2007/10/28(日) 18:52:050564デフォルトの名無しさん
2007/10/28(日) 18:52:170565デフォルトの名無しさん
2007/10/28(日) 18:52:20多分>>500のプログラムはExcelで作ったんだろうと思われ。
0566デフォルトの名無しさん
2007/10/28(日) 18:52:570567デフォルトの名無しさん
2007/10/28(日) 18:53:090568デフォルトの名無しさん
2007/10/28(日) 18:54:06俺もそう書く
高校の頃の数学の癖がそのまま残ってる
0569デフォルトの名無しさん
2007/10/28(日) 18:54:380570デフォルトの名無しさん
2007/10/28(日) 18:55:54そもそも情報の探し方がヘタだなぁ
0571デフォルトの名無しさん
2007/10/28(日) 18:56:360572デフォルトの名無しさん
2007/10/28(日) 18:57:200573デフォルトの名無しさん
2007/10/28(日) 18:57:34てかネトゲしながら画面半分でこのスレ開いてるんだぜ。我ながら時間無駄すぎ
0574デフォルトの名無しさん
2007/10/28(日) 18:59:350575デフォルトの名無しさん
2007/10/28(日) 18:59:36自己正当化に必死なのは、あきらかにお前だろw
0576デフォルトの名無しさん
2007/10/28(日) 19:02:26貴様が一人でコーディングして、自分だけで使うプログラムじゃないなら、
そんな瑣末なことに文句を付けるな。協調性のかけらもないクズ
0577デフォルトの名無しさん
2007/10/28(日) 19:03:140578デフォルトの名無しさん
2007/10/28(日) 19:04:45お前が名w
0579デフォルトの名無しさん
2007/10/28(日) 19:06:570580デフォルトの名無しさん
2007/10/28(日) 19:07:54「定数は絶対左じゃなきゃダメだ!」とか、潔癖症すぎんだろ。
0581デフォルトの名無しさん
2007/10/28(日) 19:08:420582デフォルトの名無しさん
2007/10/28(日) 19:08:50「定数は絶対右じゃなきゃダメだ!」
0583デフォルトの名無しさん
2007/10/28(日) 19:08:530584デフォルトの名無しさん
2007/10/28(日) 19:11:370585デフォルトの名無しさん
2007/10/28(日) 19:12:16バカってすぐ必死になるから性質が悪いよね。
このスレで得られた情報…0
無駄にした時間…priceless
0586デフォルトの名無しさん
2007/10/28(日) 19:12:320587デフォルトの名無しさん
2007/10/28(日) 19:14:47で、そいつの会社は技術力が高くて、仕事がどんどん来ると。
0588デフォルトの名無しさん
2007/10/28(日) 19:18:29被害妄想強すぎー。
0589デフォルトの名無しさん
2007/10/28(日) 19:19:55if (0 < a)
どっちも書きうるな。
どっちかしか認めないとか言われたら、「アホかお前」って普通に言っちゃいそう
0590デフォルトの名無しさん
2007/10/28(日) 19:22:29アホかお前
0591デフォルトの名無しさん
2007/10/28(日) 19:23:10どうみてもアホはお前
0592デフォルトの名無しさん
2007/10/28(日) 19:24:01被害妄想強すぎー。
0593デフォルトの名無しさん
2007/10/28(日) 19:25:250594デフォルトの名無しさん
2007/10/28(日) 19:25:38「馬〜鹿、ア〜ホ!」
「馬鹿って言った方が馬鹿なんですぅ〜!」
とか言い合ってる消防か
0595デフォルトの名無しさん
2007/10/28(日) 19:26:470596デフォルトの名無しさん
2007/10/28(日) 19:30:24=を:=と間違える人はいないんじゃないかな?
それでも左定数にするけど。
理由は「右定数には利点がない」。
不等号は臨機応変だね。
0597デフォルトの名無しさん
2007/10/28(日) 19:35:22587が前スレの815で、if (a >= 0)が読めないからif (0 <= a)が優れているって主張している奴だよね?
0598デフォルトの名無しさん
2007/10/28(日) 19:36:33, -''":::::::::::::::::::::::`` ‐ 、' :,
,:/:::::::::::::;;;;;: -――‐- :;;;;;;`ヽ、
,:'/:::::::::::::::::/u , , ``-;ヽ
,:':/:::::::::::::::::/ '⌒`ー‐'| | |`ー-‐、u|::| なんで僕が小学生だと分かった…
,:'/:::::::::::::::::/u /⌒ヽ /⌒ヽ !::! ;
,' l--、:::::::/ l O | lj | O | '、l ,:
/´,―、ヽ:/ ヽ、,r‐'-、:::::::::ゝ--く l ;
.;'/ /ニ_ノ | ..::::::::{ r,、 ヽ / ,r-, ノ::.. '、;
; | l '-, / ヽ !},. ---'し'_,ヘ :..ヽ':,
':,! `‐' u ヽ ,. -'"´_,. ----,、 ヽ、u l ;
':,ヽ_ノ u ノ'" ,. -''" ̄ ̄ ̄ ヽ. ヽ |
.,: | lj / /_,. ---、,. -----、| | / ;.,
--―'ヽ / '-------―――‐''" ノ /``ー- 、_
0599デフォルトの名無しさん
2007/10/28(日) 19:49:57ぱっと見て「ヘタだなぁ」と思うコード その5
http://pc11.2ch.net/test/read.cgi/tech/1155315371/
661 名前:デフォルトの名無しさん[sage] 投稿日:2007/10/21(日) 12:55:31
定数を左辺に持ってくる比較文を見るとイラッとするな。
あと、java限定だけど、"".equals(str)とか見たときだな。
685 名前:デフォルトの名無しさん[sage] 投稿日:2007/10/21(日) 23:01:40
if ("・・・".equals(str))の方が分かりやすいって人は、
if (str == null) よりも、if (null == str)の方が分かりやすいのかな。
713 名前:デフォルトの名無しさん[sage] 投稿日:2007/10/22(月) 16:00:31
だけどさ、
if( ! hogehoge_func() ){}
とは、みんな書くんだろ?
if( hogehoge_func() ! ){}
とは書けないもんな、これは文法エラーだし。
だったら、
if( NULL != hogehoge_func() ){}
でも良いんじゃね? ってならない?
0600デフォルトの名無しさん
2007/10/28(日) 19:52:16左定数or右定数を見たら、他に理由が無くても直す?
これでyesと答えたら阿呆確定だな。
0601デフォルトの名無しさん
2007/10/28(日) 20:04:59あんまり違和感はないなぁ。自分でコード書くときは、右定数で書くけど。
strcmpも自分では、strcmp()==0と書くけど、!strcmpももうなれた。
だが、
if (MicrosoftFunctionDoSomething(dwParameterForSomething, pbBufferPointerToSomething,.............................) {
dwParameterForSomething =...
ってやつは、いつまでもなれることが出来ない。
0602右派
2007/10/28(日) 20:05:24わざわざ直したりはせんな。
なんで小便もらしたヤツの小便を俺が掃除せにゃいかんの?って感じ。
でも見ていて不愉快。
0603デフォルトの名無しさん
2007/10/28(日) 20:10:39動作実績があるコードを自分の好みで書き換え、
蟲が入り込む余地をつくるようでは
プログラマ失格だろう。
左定数の利点としてもう一点
書き手は代入する意思がないということが明確
0604デフォルトの名無しさん
2007/10/28(日) 20:12:45まだ言うか。その理屈はとっくに論破されとる!
0605デフォルトの名無しさん
2007/10/28(日) 20:14:180606デフォルトの名無しさん
2007/10/28(日) 20:15:080607デフォルトの名無しさん
2007/10/28(日) 20:25:33というのが仮に正しいとしても、こんな小さな理由で
多くの人の慣用的な書き方と反して、自分のスタイル
を押し通すというのは、無茶なんじゃないかな。
多くの人が読みやすいと思うようなコードって、多くの人が
慣用的に使うロジックをちゃんと使っているコードだと思うのよね。
全然違う例だけど、ふつう次のように書くところを
for (p = top; p != NULL; p = p->next){
}
次のように書くと、
p = top;
while (p) {
/*...*/
p = p->next;
}
「ん?何かこうした理由があるのかな?」と読み手に余計な苦労を強いる。
0608デフォルトの名無しさん
2007/10/28(日) 20:27:390609デフォルトの名無しさん
2007/10/28(日) 20:28:240610デフォルトの名無しさん
2007/10/28(日) 20:29:30ループスレ!
ループスレ!
0611デフォルトの名無しさん
2007/10/28(日) 20:30:55そう思うとしたら、あなたの経験が足りないからだと思うぞ。
0612デフォルトの名無しさん
2007/10/28(日) 20:34:53見辛くてしょうがない
0613デフォルトの名無しさん
2007/10/28(日) 20:35:44"".equals(str)はOKだろ。
str!=null && str.equals("")は面倒くさい。
0614デフォルトの名無しさん
2007/10/28(日) 20:36:410615デフォルトの名無しさん
2007/10/28(日) 20:39:36「思う」ではダメだ。
右定数が優れているという確実な根拠が欲しい。
for (p = top; p != NULL; p = p->next)
for (p = top; NULL != p; p = p->next)
大して変わらん。
0616デフォルトの名無しさん
2007/10/28(日) 20:40:520617デフォルトの名無しさん
2007/10/28(日) 20:42:240618デフォルトの名無しさん
2007/10/28(日) 20:42:34左から書いていく奴は一般的に基地外と呼ばれます。
0619デフォルトの名無しさん
2007/10/28(日) 20:43:37まるで関係のない例を無理やり定数の話に結び付けようとしてるお前が基地外だろ
0620デフォルトの名無しさん
2007/10/28(日) 20:46:53for (p = top; p != NULL; p = p->next)
for (p = top; NULL != p; p = p->next)
こうして見比べると、良い・悪いは別として、右定数の方が美しいよねぇ。
0621デフォルトの名無しさん
2007/10/28(日) 20:46:55ということにしたいのですね。
0622デフォルトの名無しさん
2007/10/28(日) 20:47:17どう関係があるのか説明してみろYO
0623デフォルトの名無しさん
2007/10/28(日) 20:47:29それは読み手が巻物を右手で巻きながら読むからだろ。
コードも読み手のことを考えて書かないと。
0624デフォルトの名無しさん
2007/10/28(日) 20:47:48一方、俺はティッシュを使った
0625デフォルトの名無しさん
2007/10/28(日) 20:50:07100%主観です。
0626デフォルトの名無しさん
2007/10/28(日) 20:50:10?
0627デフォルトの名無しさん
2007/10/28(日) 20:50:190628デフォルトの名無しさん
2007/10/28(日) 20:51:03しかし客観的に見て左定数に弊害があるわけでもないのだから、
好きにすれば良い。
どちらかに拘る奴が基地外だろう。
なァ、>617,618
0629デフォルトの名無しさん
2007/10/28(日) 20:52:13こいつはアホなのか経験が足りないのか珍論振りまくオナニー野郎なのか
判断に迷って不安に陥るのでやめてください。
0630615
2007/10/28(日) 20:54:110631デフォルトの名無しさん
2007/10/28(日) 21:00:04普通、既存のソースを修正するときは既にある書き方に倣うだろ
そこで自己主張する奴は、たとえ元の書き方より良かったとしても阿呆
ソースが非常に読みづらくなる
0632デフォルトの名無しさん
2007/10/28(日) 21:09:06基地外なことをするつもりがない。
ということであればもう特に何も言わないよ。
匿名掲示板で好きなだけ吠えていてくれればよい。
その例はたしかに下だと気持ち悪いね。
上だと「ああリストを処理していくんだな」というのがすぐわかる。
0634デフォルトの名無しさん
2007/10/28(日) 21:16:19豆をつかめって言っても豆刺してそう...
0635デフォルトの名無しさん
2007/10/28(日) 21:19:41片側が定数の時だけ特別ルールで拘るのも面倒
0636デフォルトの名無しさん
2007/10/28(日) 21:29:49Pascalならどうする?
0637デフォルトの名無しさん
2007/10/28(日) 21:33:29そーいうお前は、海外、特に欧米でも同じ事言って
白い目で見られたりする奴なんだろうなァ。
0638デフォルトの名無しさん
2007/10/28(日) 21:42:43そこまでこだわるんだったら、せめてマクロで隠蔽するほうがいい。
#define list_for_each(top, entry) \
for (entry = top; NULL != entry; entry = entry->next)
list_for_each(top, p) {
/*...*.
}
0639デフォルトの名無しさん
2007/10/28(日) 21:44:180640デフォルトの名無しさん
2007/10/28(日) 21:45:250641デフォルトの名無しさん
2007/10/28(日) 21:46:240642デフォルトの名無しさん
2007/10/28(日) 21:46:36>>638
0643デフォルトの名無しさん
2007/10/28(日) 21:47:20左定数と右定数が混ざってるほうがまだマシ
0644デフォルトの名無しさん
2007/10/28(日) 21:48:08#define loop for(;;)
0645デフォルトの名無しさん
2007/10/28(日) 21:49:45氏ね
0646chirashi
2007/10/28(日) 21:49:460647デフォルトの名無しさん
2007/10/28(日) 21:54:38#define end_block while ( 0 )
#define exit_block break
0648デフォルトの名無しさん
2007/10/28(日) 21:58:44と、1を見ながらレスしてみる。
0649デフォルトの名無しさん
2007/10/28(日) 22:00:07#define gs gets
#define i int
#define c char
#define l long
0650638
2007/10/28(日) 22:01:090651デフォルトの名無しさん
2007/10/28(日) 22:05:15前者でも後者でも違和感無いけど。
後者が特に劣っているとも感じない。
0652デフォルトの名無しさん
2007/10/28(日) 22:19:55forだとcontinue使えて「便利」くらいしか差がないと思うが。
0653デフォルトの名無しさん
2007/10/28(日) 22:42:32これはひどい。
祭りの予感・・・
つか、明日は月曜日だぞ。また徹夜させる気かよ。かんべんしてくれ!
0654デフォルトの名無しさん
2007/10/28(日) 23:00:08653の理論だと、C++のSTLもひどいし、BSDやらLinuxの
カーネルのソースコードもひどいことになるぞ。
0655デフォルトの名無しさん
2007/10/28(日) 23:13:03下記のようにミスってもコンパイルが通って発覚が遅れるのを防止するためだろ。
if ( a = NULL )
左定数派ならば、ミスって下記のように書いてもコンパイル通らないからな。
if ( NULL = a )
まぁそんなのミスしなければいいだけで
俺は普通に右に定数を書くけどな
0656デフォルトの名無しさん
2007/10/28(日) 23:14:450657デフォルトの名無しさん
2007/10/28(日) 23:15:150658デフォルトの名無しさん
2007/10/28(日) 23:16:13こんなのとか
array[index++]=value; // 今はこの書き方で無いとバグをだしそうで怖い
while((chr=getchar())!=EOF){ ... } // 自然にこうしてしまう
0659デフォルトの名無しさん
2007/10/28(日) 23:29:07実際ひどいだろ
0660デフォルトの名無しさん
2007/10/28(日) 23:32:34せまい自分の中の範囲だけで判断せずに、もうちょっと
勉強をしていったほうがいいんじゃない。
0661デフォルトの名無しさん
2007/10/28(日) 23:35:46お前には>>638に対するスレ住人の熱烈な愛が見えないのか
0662デフォルトの名無しさん
2007/10/29(月) 00:39:49まさか本気で言っている訳がないじゃないか。
0663デフォルトの名無しさん
2007/10/29(月) 00:41:560664デフォルトの名無しさん
2007/10/29(月) 00:47:20どんだけ愛に飢えてんだよ
0665デフォルトの名無しさん
2007/10/29(月) 00:47:47やっぱり>>80みたいな神が現れないとダメだな。
0666デフォルトの名無しさん
2007/10/29(月) 01:28:47コードの一行にこだわる瑣末な事でプログラム書けるのか?
0667デフォルトの名無しさん
2007/10/29(月) 01:37:210668デフォルトの名無しさん
2007/10/29(月) 02:07:10要するにコボラーと同レベル。
0669デフォルトの名無しさん
2007/10/29(月) 02:27:49ま、チーム開発をしたことが無いなら、気が付かなくても仕方ないか。
0670デフォルトの名無しさん
2007/10/29(月) 02:47:14BSDやらLinuxのカーネルのソースコードがひどいはずは無い。
社会保険庁の年金記録管理がひどいはずは無い。
TBSの番組がひどいはずは無い。
全国に30万人も会員がいるNOVAの経営がひどいはずが無い!
0671デフォルトの名無しさん
2007/10/29(月) 02:48:490672デフォルトの名無しさん
2007/10/29(月) 03:14:24まぁ、お前が書くコードよりはヒドクハナイダロ。
0673デフォルトの名無しさん
2007/10/29(月) 03:24:53左辺に定数を置くのが嫌なのは、Cの変数宣言方法がおかしいからだろう
FORTRANでの変数宣言方法もCと同じものだ
以降その話題には触れず
strcmpをnot演算子で等しいと言うif文を書く奴に言われたくない
strcmpが返す値は整数だから論理値として扱うのはおかしいだろう!
いいえ、strcmpが返す値は整数ではなく符号です
数に意味はないので、論理値として扱っても問題はありません
以降その話題には触れず
そもそも自分の勉強不足を棚に上げ、ありもしない左辺定数の利点をさも至上のコーディングの様に持ち上げる
その様なおもちゃみたいな奴が居るのだから、いじり回したくもなるのが人情
0674デフォルトの名無しさん
2007/10/29(月) 06:43:58変数 = NULL のバグを見つけるのと
NULL == 変数のスタイルを守っているかをチェックする労力って少なくとも同等だと思われ
0675デフォルトの名無しさん
2007/10/29(月) 08:51:28>ちょっと待て、strcmpは"0"か"正"か"負"を返すのであり、"数"を返すわけでは無い
>strcmpの返す値を、"0"より"大きい"のか"小さい"のか"等しい"のかで比べる以外に使用するのはナンセンスだろ
いいえ、しっかりと「数を返す」と定義してあります。
>Cにはboolenは無く、bool値の定義は、「0以外は真である」となっている
C言語は機能面で整数でbooleanを代用しているだけであって、
意味の上での整数とbooleanの区別はあります。
実際、isdigit の戻り値は、「真偽」と定義してあり、
一方で、strcmp の戻り値は、「数」と定義してあります。
>>466
無限ループの時は、while(1)ではなく、for( ; ; ) とした方が綺麗。
0676デフォルトの名無しさん
2007/10/29(月) 08:53:140677デフォルトの名無しさん
2007/10/29(月) 09:04:48>FORTRANでの変数宣言方法もCと同じものだ
>以降その話題には触れず
逆です。Cの変数宣言方法がおかしいから、
C言語では定数を左に書いても変ではない、という余地を残してしまったわけです。
もし、C言語が、i int;、main() int; という宣言のしかたをするのなら、
条件式の定数を左に書く人は居なかったでしょう。
------------------------------------
i int; /* i は int */
p == NULL /* p が NULL */
------------------------------------
int i; /* int な i */
NULL == p /* NULL な p */
------------------------------------
0678デフォルトの名無しさん
2007/10/29(月) 09:07:46>strcmpが返す値は整数ではなく符号です
数を返すと定義してあります。
int strcmp(const char *cs, const char *ct) は、
文字列 cs と 文字列 ct を比較する. cs > ct なら 0より大きい数,
cs < ct なら 0未満の数, 等しければ 0 を返す.
0679デフォルトの名無しさん
2007/10/29(月) 09:09:290680デフォルトの名無しさん
2007/10/29(月) 09:10:13>strcmpが返す値は整数ではなく符号です
>strcmpが返す値は整数ではなく符号です
やっぱりこのレベルの人が頑張っていたんだね
0681デフォルトの名無しさん
2007/10/29(月) 09:13:350682デフォルトの名無しさん
2007/10/29(月) 09:14:01> 目視だとしても
> 変数 = NULL のバグを見つけるのと
> NULL == 変数のスタイルを守っているかをチェックする労力って少なくとも同等だと思われ
後者はわざわざあとから書き直さないでしょ。
あと「変数 == NULL」と信じてる目で「変数 = NULL」を見ると見過ごす確率大。
0683デフォルトの名無しさん
2007/10/29(月) 09:26:16もしそうなら、なおさら !strcmp(str1, str2) とはかけないね。
だって、! は符号を調べる演算子じゃないからね。
0684デフォルトの名無しさん
2007/10/29(月) 09:30:460685デフォルトの名無しさん
2007/10/29(月) 09:33:17while(1) と書いたときの「1」は、整数でbooleanを代用している。
一方、strcmp の戻り値は、意味の上でも整数で、
整数でbooleanを代用している、というわけではない。
0686デフォルトの名無しさん
2007/10/29(月) 10:15:38あのさー、だからそれはコンパイラが教えてくれるんだって・・・
0687デフォルトの名無しさん
2007/10/29(月) 10:59:58コンパイラも完璧じゃないじゃん
Cのシンタックス的に何も問題ないんだから
0688デフォルトの名無しさん
2007/10/29(月) 11:01:010689デフォルトの名無しさん
2007/10/29(月) 11:22:10俺なんかマイナーCPUで屑コンパイラしかなくて、警告がしょぼい上に方言バリバリな環境に
何年も泣かされてきたんだぞ つД`)
0690デフォルトの名無しさん
2007/10/29(月) 11:50:020691デフォルトの名無しさん
2007/10/29(月) 12:05:430692デフォルトの名無しさん
2007/10/29(月) 12:27:22そりゃ処理系依存だ
ダメだな
0693デフォルトの名無しさん
2007/10/29(月) 12:28:040694デフォルトの名無しさん
2007/10/29(月) 12:34:56と書く奴は、もし、その書き方で整合性を取りたいなら、
int32_t ret = (int32_t)strcmp(str1, str2);
if( !ret ){} /* str1 == str2 */
if( ret && !(ret&-0x80000000) ){} /* str1 > str2 */
if( ret&-0x80000000 ){} /* str1 < str2 */
if( ret ){} /* str1 != str2 */
if( !(ret&-0x80000000) ){} /* str1 >= str2 */
if( !ret || ret&-0x80000000 ){} /* str1 <= str2 */
と書かなきゃしょうがないよな。
やってらんねー。
0695デフォルトの名無しさん
2007/10/29(月) 12:35:190696デフォルトの名無しさん
2007/10/29(月) 12:47:110697デフォルトの名無しさん
2007/10/29(月) 13:14:27こいつ、ニート
0698デフォルトの名無しさん
2007/10/29(月) 13:35:3120 goto 10
30 end
0699デフォルトの名無しさん
2007/10/29(月) 14:19:10c = c + strcmp(str1, str2);
がどの様な動作をするのか答えられると思うのだがどうだろうか?
0700デフォルトの名無しさん
2007/10/29(月) 14:22:10それに答えるのは簡単だ。
Cに、strcmp()の結果が足されるとだけ言えばいい。
或いは、str1がstr2より大きければCの値は元の値より増え、str1がstr2より小さければ減り、そうでなければ変わらないと言ってもいい。
0701デフォルトの名無しさん
2007/10/29(月) 14:28:17c += strcmp(str1, str2);
と書くのが望ましい。
0702デフォルトの名無しさん
2007/10/29(月) 14:30:31答えになっていない
その様な曖昧な答えでは、どの様な動作をしているのか判らない
cの値は、元の値からどれだけ増えるのか?
cの値は、元の値からどれだけ減るのか?
あなたの言う動作ではっきり判っている動作は、str1とstr2が等しければcが変わらないと言うことだけだ
strcmpが返す値は"整数"だと主張するのであるから、増えるときは何れだけ増え、減るときは何れだけ減るとハッキリと言えるはずだが
0703デフォルトの名無しさん
2007/10/29(月) 14:31:07確かにそうだな...
0704デフォルトの名無しさん
2007/10/29(月) 14:37:30「整数なら言える筈」と言う根拠を提示してください。
0705デフォルトの名無しさん
2007/10/29(月) 14:44:30返すのは符号だと述べられているのに、"整数"が戻り値であると主張するのだから、
その戻り値の数字に意味があると主張しているのだろ?
なら、そのハッキリとした根拠の上に、cの値が具体的に何れだけ変化するのか述べることが出来て当然だと思うが
0706700=704
2007/10/29(月) 14:59:49いいえ、私は整数が戻り値であると言う主張を過去未来に渡って一切行なっていませんし行なう積もりもありません。
# 勿論、符号であると言う主張に着いても同様です。
尚、整数であるからには数字に意味がある(べきだ)という短絡についても許容できないと考えます。
従って、>699に対する回答とstrcmp()の戻り値が整数かどうかについてはその点での議論は無意味だと思います。
0707デフォルトの名無しさん
2007/10/29(月) 15:10:23c += strcmp(str1, str2);
この関数はこんな使い方を意図していない
0708デフォルトの名無しさん
2007/10/29(月) 15:26:47>>675???
数と言ったから、整数ではない?
符号を返すと言ったわけでもない?
0より大きな数?0より小さな数?それは、符号と言うのだと思うが?
strcmp(str1, str2)は、等しければ"0"を、str1がstr2よりも大きければ正の数値を、str1がstr2よりも小さければ負の数値を返す関数だ
で、その返ってきた数値に、どんな意味があるのか?
数値には意味はなく、正か負か"0"と言う符号の状態に意味があるんじないのか?
仮にあなたが、整数を返すと言う主張をしていないなら、>>699に対し回答すべきではない
そして、>>702で突っ込まれたからと言って、>>706の様な回答をすべきではない(あなたの頭が悪いようにしか見えない)
0710デフォルトの名無しさん
2007/10/29(月) 15:36:29man strcmp
>返り値
>strcmp() 関数と strncmp() 関数は整数を返す。この整数は、ゼロよりも、
>1)小さい、2)等しい、3)大きいのいずれかである。それぞれは、s1(または、
>この文字列の最初の n バイト)が s2 よりも、1)小さい、2)等しい、3)大きい
>に対応している。
0711デフォルトの名無しさん
2007/10/29(月) 15:41:32そもそも符号に0を表わす状態は存在しないわけだが。
0712デフォルトの名無しさん
2007/10/29(月) 15:41:34符号だけどうやって返すの?
頭おかしいの?
Cに符号型なんて無いよ。
0713みんな暇だなw
2007/10/29(月) 15:43:220714デフォルトの名無しさん
2007/10/29(月) 15:43:430715デフォルトの名無しさん
2007/10/29(月) 15:44:09>str1がstr2よりも小さければ負の数値を返す関数だ
ちがいます。
int strcmp(const char *cs, const char *ct) は、
文字列 cs と 文字列 ct を比較する. cs > ct なら 0より大きい数,
cs < ct なら 0未満の数, 等しければ 0 を返す.
と定義されています。
「正の数値」や「負の数値」という言葉は使われていませんし、
「等しい時は偽を返す」とも書かれていません。
0716デフォルトの名無しさん
2007/10/29(月) 15:44:11だから、整数で返すんだろ
数には意味はなく、正か負か0かに意味があるんだろ
0717デフォルトの名無しさん
2007/10/29(月) 15:45:390718デフォルトの名無しさん
2007/10/29(月) 15:46:150719デフォルトの名無しさん
2007/10/29(月) 15:48:01C言語に於いて、「0以外は真」つまり、「0は偽」だろ?
0720デフォルトの名無しさん
2007/10/29(月) 15:48:02「>0, <0, >=0, <=0, ==0, !=0」を使うのですが。
「!」を使っても符号を調べることは出来ません。
それから、定義に「数」を返すと書いてある以上、strcmpの戻り値は数です。
文字列を比較した結果を整数値で返す、というだけです。
出かけるので、次返事できるのは夜中の2時です。じゃ。
0721デフォルトの名無しさん
2007/10/29(月) 15:48:110722みんな暇だなw
2007/10/29(月) 15:54:020723デフォルトの名無しさん
2007/10/29(月) 16:17:48別にどのように書こうが、それは全くあなたの自由。
うざいのは、このスレに粘着してる奴。
0724デフォルトの名無しさん
2007/10/29(月) 16:27:47そうでは無い人がいることを考えると、前者の方が良いと考える。
if (0 == a)の場合と違って、!strcmp()には、タイプ数を減らすこと以外のメリットが見当たらない。
0725デフォルトの名無しさん
2007/10/29(月) 16:40:06且つC/C++の開発を問題なく行えるレベルの人間って、多分ほとんどいない
0726デフォルトの名無しさん
2007/10/29(月) 16:42:460727デフォルトの名無しさん
2007/10/29(月) 16:43:540728デフォルトの名無しさん
2007/10/29(月) 16:45:30であるから、右辺にしろ左辺にしろ、
等号不等号の向こう側にはゼロを置いておきたい。
という理由で !strcmpとするよりは、
おなじみの方法でゼロと比較したい。
0729デフォルトの名無しさん
2007/10/29(月) 16:46:290730デフォルトの名無しさん
2007/10/29(月) 16:46:41他言語でも、if (!strcmp())と同等の書き方をするのか?
どんな言語でも、if (strcmp() == 0)と同等の書き方をすれば、誰もが迷わない。
0731デフォルトの名無しさん
2007/10/29(月) 16:48:35そもそも他の言語で文字列を比べるのに関数を使うなんて有り得ない
0732デフォルトの名無しさん
2007/10/29(月) 16:49:39他の言語では、文字列の同等性を返す関数ないし演算子があるから、
順序を調べて0と比較するようなことはしない。
0733デフォルトの名無しさん
2007/10/29(月) 16:51:130734デフォルトの名無しさん
2007/10/29(月) 16:52:12相手にしても意味無いよ。
0735デフォルトの名無しさん
2007/10/29(月) 16:55:13ISO/IEC 9899 7.21.4.4
0736デフォルトの名無しさん
2007/10/29(月) 16:56:11約278,000件中1 - 10件目(0.21 秒 )
http://www.google.com/codesearch?q=%21strcmp&hl=ja
- strcmp(・・・) == 0
約281,000件中1 - 10件目(0.23 秒)
http://www.google.com/codesearch?hl=ja&lr=&q=strcmp%5Cs*%5C%28%5B%5E%5C%29%5D%2B%5C%29%5Cs*%3D%3D%5Cs*0
- 0 == strcmp
約15,600件中1 - 10件目(0.17 秒)
http://www.google.com/codesearch?hl=ja&lr=&q=0%5Cs*%3D%3D%5Cs*strcmp
0737デフォルトの名無しさん
2007/10/29(月) 16:57:530738デフォルトの名無しさん
2007/10/29(月) 17:03:020739デフォルトの名無しさん
2007/10/29(月) 17:06:050740デフォルトの名無しさん
2007/10/29(月) 17:08:400741デフォルトの名無しさん
2007/10/29(月) 17:19:06そういう手合いに限って
#define BEGIN {
#defien END }
みたいな事をやりたがるんだよな。
結局他の言語がベースにあるからCで物を考えるということが出来ないだけなんだよ。
郷に入っては郷に従えと。
0742デフォルトの名無しさん
2007/10/29(月) 17:40:540743デフォルトの名無しさん
2007/10/29(月) 17:45:19そう思うなら具体的に指摘を
0744デフォルトの名無しさん
2007/10/29(月) 17:49:07くらい書けないと一人前とはいえないな。
0745デフォルトの名無しさん
2007/10/29(月) 17:59:24たまらん奴と見た。
しかもニート。
0746デフォルトの名無しさん
2007/10/29(月) 18:02:25かまって欲しくてたまらん汁垂れ流しw
0747デフォルトの名無しさん
2007/10/29(月) 18:08:22Q1: {}に入るのはどのような時ですか?
Q2: 何故そうなるのか説明しなさい。
という問題を出せば、Cの理解度を測る材料にはなるな。
0748デフォルトの名無しさん
2007/10/29(月) 18:10:01興を殺ぐからROMってろよ
0749デフォルトの名無しさん
2007/10/29(月) 18:10:23A1.入ることは無い
A2.括弧が1つ足りないから
とか言うと怒るよね?
0750デフォルトの名無しさん
2007/10/29(月) 18:11:35strcmpの動作を知っているか否か、
という部分が強調されるだけで、
それでCの理解度を計るには心もとない肝。
理解度つったらやっぱポインタ、配列、
ポインタ演算、メモリ関係の関数とかじゃね?
0751デフォルトの名無しさん
2007/10/29(月) 18:12:120752747
2007/10/29(月) 18:14:46どんだけリロードしてんだよw
0753デフォルトの名無しさん
2007/10/29(月) 18:16:30> >>747 ある程度も何も…。
> strcmpの動作を知っているか否か、
> という部分が強調されるだけで、
> それでCの理解度を計るには心もとない肝。
rakudai
0754デフォルトの名無しさん
2007/10/29(月) 18:17:080755デフォルトの名無しさん
2007/10/29(月) 18:19:30|も.|
|う |
│来│
│ね│
│え .|
│よ .|
バカ ゴルァ │ !!.│
└─┤ プンプン
ヽ(`Д´)ノ ヽ(`Д´)ノ (`Д´)ノ ( `Д)
| ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄ . ̄◎ ̄  ̄◎ ̄ ◎−>┘◎
0756747
2007/10/29(月) 18:20:41お前誰だよ・・・
if (!strcmp(s1, s2)) {}のtypoだった。
Cの理解度を測るテストの問題くらいにはなるな、という意味。
0757デフォルトの名無しさん
2007/10/29(月) 18:23:570758デフォルトの名無しさん
2007/10/29(月) 18:33:09strcmpが幾つを返すか決まっていない以上、
足してオーバーフローなんかしたら鼻から悪魔だぞ
あと、strcmpが整数を返して、
その整数に対して!を使ってはいけないと主張する根拠を聞きたいな
0759デフォルトの名無しさん
2007/10/29(月) 18:38:28>その整数に対して!を使ってはいけないと主張する根拠を聞きたいな
!0, !5が何を返すかよくわからない派遣グラマの脳の負担を低減させることが出来るのは
大きなアドバンテージだ。
0760デフォルトの名無しさん
2007/10/29(月) 18:57:26ひさしぶりに見たな、これ
0761デフォルトの名無しさん
2007/10/29(月) 19:01:480762デフォルトの名無しさん
2007/10/29(月) 19:42:30| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ >>80
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0763デフォルトの名無しさん
2007/10/29(月) 19:42:33"not"に変換して読んだとき、素直に意味が通ってほしいものだ。
!strcmp(x,y)で、意図としてはx==yとか言われると、アレ?ってなっちゃうから。
0764デフォルトの名無しさん
2007/10/29(月) 19:44:19if (! (x-y)) printf("尿");
0765デフォルトの名無しさん
2007/10/29(月) 20:16:48>>743は>>741じゃないよ
0766デフォルトの名無しさん
2007/10/29(月) 20:39:02符号型が無いから整数で代用しているって言う主張は認めないのね。
ダブルスタンダードですな。
0767デフォルトの名無しさん
2007/10/29(月) 20:41:590768デフォルトの名無しさん
2007/10/29(月) 20:49:040769デフォルトの名無しさん
2007/10/29(月) 21:08:340770デフォルトの名無しさん
2007/10/29(月) 21:11:450771デフォルトの名無しさん
2007/10/29(月) 21:22:03ほとんど成長しないよな中の人。
0772デフォルトの名無しさん
2007/10/29(月) 21:26:590773デフォルトの名無しさん
2007/10/29(月) 21:29:19コーディングしてあるんだよ。そういうのはヘタとは言わない。
0774デフォルトの名無しさん
2007/10/29(月) 21:30:51なぜそのようなコードが書かれているのか分析することさえできない
0775デフォルトの名無しさん
2007/10/29(月) 21:31:22あ、頭でも打ったのか?
0777デフォルトの名無しさん
2007/10/29(月) 21:49:420778デフォルトの名無しさん
2007/10/29(月) 21:50:210779デフォルトの名無しさん
2007/10/29(月) 21:52:21やぁお帰りなさい
0780デフォルトの名無しさん
2007/10/29(月) 21:52:35公開してくれるCGIのサンプル集じゃない。ちらと中のぞいてみたが、
委託して納入されたものだとしても、別に不満はないな。
あえて言うなら、細かい好みのレベルかもしれんが:
-設定変数は、ファイルを別に分けて欲しい
-設定変数は、それとわかるように大文字にするなりしてほしい
-Perlでありがちなのだが、main処理がダラダラと長くて疲れる
くらいか?
0781デフォルトの名無しさん
2007/10/29(月) 21:54:54>if (0 == a)の場合と違って、!strcmp()には、タイプ数を減らすこと以外のメリットが見当たらない。
if(strcmp(s1, s2)<0){ // ・・・条件(1)
hoge;
}else if(strcmp(s1, s2)>0){ // ・・・条件(2)
fuga;
}else{ // [!strcmp(s1, s2) == 0] ・・・条件(3)
hage;
}
と書いていたひとが、たまたま条件(1)と(2)で同じ処理をしたいと思って
if(strcmp(s1, s2)){
hogefuga;
}else{
hage;
}
と書き換えるとする
その後、hogehage と hage で逆の処理をしたいと思ったら
if(!strcmp(s1, s2)){
hogefuga;
}else{
hage;
}
こう書くだろ?
0782デフォルトの名無しさん
2007/10/29(月) 22:00:12初心者なのですが
int a = strcmp(str1, str2);
int b = strcmp(str1, str3);
で a > b の場合は
str1 は str2 より str3 に近いということでしょうか?
0783デフォルトの名無しさん
2007/10/29(月) 22:00:56hage
} else if (strcmp(str1, str2) < 0) {
hoge
} else {
huga
}
0784デフォルトの名無しさん
2007/10/29(月) 22:01:34ものすごく限定されたシチュエーションだなw
0785デフォルトの名無しさん
2007/10/29(月) 22:03:47そうです
でなきゃソートできません
0786デフォルトの名無しさん
2007/10/29(月) 22:04:38a = 3
b = -5
のときもあるぞ
0787デフォルトの名無しさん
2007/10/29(月) 22:04:49なぜそういう風に思ったのか、ちゃんと書いてごらん。
自分の考えをキチンと整理すれば、正しいか間違っているか
おのずと答えが出るもんだよ。
0788デフォルトの名無しさん
2007/10/29(月) 22:04:54strcmpの返値にそういう意味はありません
0789デフォルトの名無しさん
2007/10/29(月) 22:05:410790デフォルトの名無しさん
2007/10/29(月) 22:05:56>}else{ // [!strcmp(s1, s2) == 0] ・・・条件(3)
ちょっw おまwww
0791デフォルトの名無しさん
2007/10/29(月) 22:06:050792デフォルトの名無しさん
2007/10/29(月) 22:07:47qsort に strcmp 渡すとまずい?
0793デフォルトの名無しさん
2007/10/29(月) 22:09:14}
else //if(!strcmp(s1, s2) == 0)
{
0794デフォルトの名無しさん
2007/10/29(月) 22:10:11>>781 はどう見ても釣り
0795デフォルトの名無しさん
2007/10/29(月) 22:11:02>>790
>>781 はどう見ても釣り
0796デフォルトの名無しさん
2007/10/29(月) 22:12:19ttp://www.st.rim.or.jp/~phinloda/cqa/cqa13.html
Q 【qsort】
str_arrayは文字列へのポインタが100個格納された配列である。
次のコードはなぜうまく動作しないのか。
char *str[];
qsort(str_array, 100, sizeof(char *), strcmp);
A
qsortは、指定する比較関数に対して、比較されるオブジェクト
を指すポインタを使った呼び出しを行います。言い換えると、呼び出された比較
関数は、与えられた引数aとbに対して、
*aと*bを比較する仕様になっている必要があります。
strcmpはこの仕様を満たしていないので、そのまま
qsortの引数として用いることができません。
次のような関数を定義して、その中から
strcmpを呼び出せば解決します。
int pstrcmp(const void *p1, const void *p2)
{
return strcmp(*(char *const *) p1, *(char *const *) p2);
}
...
qsort(str_array, 100, sizeof(char *), pstrcmp);
...
(参考: comp.lang.c FAQ 13.8)
0797デフォルトの名無しさん
2007/10/29(月) 22:14:090798デフォルトの名無しさん
2007/10/29(月) 22:15:42これはヒドイ。まだ本人は気づいてないのかw
こうだろ。
}else{ // [!strcmp(s1, s2)] ・・・条件(3)
あるいは、こうかな。
}else{ // [strcmp(s1, s2) == 0] ・・・条件(3)
0799デフォルトの名無しさん
2007/10/29(月) 22:16:20if( (fp=fopen(fname,"r"))==NULL){
if(a[i]=='\0'){max_a = i; break;}
if (chk==1){
if(0==strncmp(&a[i],&b[j],1)){
なんで最後だけ?ww
0800デフォルトの名無しさん
2007/10/29(月) 22:18:47使う機会があれば使うよ
0801デフォルトの名無しさん
2007/10/29(月) 22:21:00論理的に正しくて且つ分かりやすくて誤解を招かない書き方は
if(!strcmp(str1, str2) != 0){
でFA?
0802デフォルトの名無しさん
2007/10/29(月) 22:22:40if(strcmp(s1, s2)==0){
を
if(strcmp(s1, s2)!=0){
に書き換えるのと大して変わらんと思うが
0803デフォルトの名無しさん
2007/10/29(月) 22:23:46strcpy_sやstrlcpyなどのセキュアな関数使えよ。
0804デフォルトの名無しさん
2007/10/29(月) 22:25:03いや、こっちだろ
if(!strcmp(str1, str2) == !0){
0805デフォルトの名無しさん
2007/10/29(月) 22:25:560806デフォルトの名無しさん
2007/10/29(月) 22:34:08strcmp のセキュアな関数も教えてください。
0807デフォルトの名無しさん
2007/10/29(月) 22:43:17定義されている
strcmp(s1, s2) == -strcmp(s2, s1)
これは常に真
0808デフォルトの名無しさん
2007/10/29(月) 22:44:330809デフォルトの名無しさん
2007/10/29(月) 22:47:31どんな環境だかわからないのに、そんなこと言えるのか?
0810782
2007/10/29(月) 22:49:49でも結論がいっぱいあるみたいでよくわかりません ><
0811デフォルトの名無しさん
2007/10/29(月) 22:52:09s1 と s2 で文字列長が違う場合は?
0812デフォルトの名無しさん
2007/10/29(月) 23:04:10>>807 はどうみても釣り
0813デフォルトの名無しさん
2007/10/29(月) 23:04:23規格票のどこにある?
0814デフォルトの名無しさん
2007/10/29(月) 23:05:210815デフォルトの名無しさん
2007/10/29(月) 23:05:390816デフォルトの名無しさん
2007/10/29(月) 23:07:01あれれ・・・まだ分かってなかったのか。
じゃぁ、高卒のオレがレクチャーしちゃる。
int a = strcmp(str1, str2);
int b = strcmp(str1, str3);
は、文字コードの引き算を返しているだけなので、
数学的に言うと下記の式で表せる。
a = S1 - S2
b = S1 - S3
で a > b は、下式に置き換える事ができる。
S1 - S2 > S1 - S3
ここで仮に、S1 = 65、S2 = 66、S3 = 67 だとする(単なる例だよ)
65 - 66 > 65 - 67
が成り立つ。
「str1 は str2 より str3 に近いということでしょうか?」 ・・・に当てはめてみる。
「65 は 66 より 67 に近いということでしょうか?」
違うよな?
0817デフォルトの名無しさん
2007/10/29(月) 23:07:40NULしゅうたんされていない可能性が常に付きまとうし。
せめてmemけいじゃね。
0818デフォルトの名無しさん
2007/10/29(月) 23:08:34aとbの大小関係を求めても意味は無い
aやbは単独で意味をなす
0819デフォルトの名無しさん
2007/10/29(月) 23:25:07釣れますか?
0820817
2007/10/29(月) 23:31:15どうだろ?
0821デフォルトの名無しさん
2007/10/29(月) 23:37:57すみません
|a| > |b|
のつもりで書きました
それでもだめですか? ><
0822デフォルトの名無しさん
2007/10/29(月) 23:38:400823デフォルトの名無しさん
2007/10/29(月) 23:45:28(0以外の値はファイルポインタかもタイムスタンプかも1かもはさておきとして)
ファイルが開かれているかの判定は下を使うのがやはり正しいと思われる。
if(isOpen() != 0)
if(isOpen())
つまりstrcmpの関数名または戻り値の仕様がヘタってことでいいのではないか。
で、これをマクロで隠蔽するかしないかはまた別の話ということで。
0824デフォルトの名無しさん
2007/10/29(月) 23:51:19任意の入力文字列strがあったとしよう
int x=strcmp("",str);
このxを人に送りつける
そしてxをもらった人は
二分探索の要領でstrcmp("",str)がxになるstrを探す
この手法を使えば六法全書だってint長のデータに圧縮できる
…わけないだろ
0825デフォルトの名無しさん
2007/10/29(月) 23:55:33ある関数を作っていて渡す必要のあるパラメータが多い場合、
1.そのままだらだら引数を増やすか
2.それとも構造体作ってポインタで渡すか
どういう判断基準で使い分けてる?
0826デフォルトの名無しさん
2007/10/29(月) 23:56:57局所ブロックに関しての議論を
どっかにまとめてたりしてないものか?
0827デフォルトの名無しさん
2007/10/30(火) 00:08:32辞書を考えてみる。
str1="aa"
str2="az"
str3="c"
の場合、
int a = strcmp(str1, str2); は2文字目の比較でaとzの差を返す。
int b = strcmp(str1, str3); は1文字目の比較でaとcの差を返す。
・・・と思う。
というか、より近いって基準が判らん。
"aa"と"az"の間の単語数と、"az"と"c"の間の単語数を較べるのだろうか?
異なる文字列には必ず大小関係があって、その大小関係を入れ子にして
どんどん細かくすることで順番が決まってソートされるので>>785は大嘘。
0828デフォルトの名無しさん
2007/10/30(火) 00:12:19明確な基準は持ってないけど
たとえば構造体のサイズがポインタのサイズを超えたら検討し始めるかな
0829デフォルトの名無しさん
2007/10/30(火) 00:13:53関数宣言が3行目に突入したら100%構造体に以降
0830デフォルトの名無しさん
2007/10/30(火) 00:14:57Haahを渡す
0831デフォルトの名無しさん
2007/10/30(火) 00:15:01渡すパラメータで処理が分岐するなら、関数を増やすと思う。
0832デフォルトの名無しさん
2007/10/30(火) 00:17:020833デフォルトの名無しさん
2007/10/30(火) 00:17:35渡すのだけが目的だよね?
関数から出力を受け取るといったポインタの方でしかできない事は考えないんだよね?
0834デフォルトの名無しさん
2007/10/30(火) 00:18:52引数の組に簡単な名前で呼べないか検討して、
それが出来る場合は1つの概念で表せる→カプセル化出来ると判断して
構造体(orクラス)にしてしまう。
簡単な名前が思いつかない場合、それぞれの引数は
互いに関連性が低いのだから、無理してまとめたりはしない。
0835デフォルトの名無しさん
2007/10/30(火) 00:19:23vsprintfみたいに可変長引数にする
0836デフォルトの名無しさん
2007/10/30(火) 00:20:050837デフォルトの名無しさん
2007/10/30(火) 00:21:31それだ
0838825
2007/10/30(火) 00:25:30誤解があるといけないので具体例で書くと
N個のint引数を渡す必要のある関数funcを作る場合
1.
void func(int arg1, int arg2, int arg3, ...... int argN);
2.
typedef struct {
int arg1;
int arg2;
....
int argN;
} func_args_t ;
void func(func_args_t *arg);
とするかです。
ここでは引数をintの配列にするのは意味的におかしい場合と考えてください。
また2.は実際は1個のstructではなくて意味的な塊で(複数の)structでまとめるべきですが、
ここでは例なので1個にまとめていると考えてください。
0839デフォルトの名無しさん
2007/10/30(火) 00:27:040841825
2007/10/30(火) 00:29:07> >>825
> 渡すパラメータで処理が分岐するなら、関数を増やすと思う。
すべてのパラメータが使われるケースとしてください。
0842デフォルトの名無しさん
2007/10/30(火) 00:29:20global
0843デフォルトの名無しさん
2007/10/30(火) 00:29:230844デフォルトの名無しさん
2007/10/30(火) 00:29:330845デフォルトの名無しさん
2007/10/30(火) 00:30:18Win32APIのことですか
0847デフォルトの名無しさん
2007/10/30(火) 00:31:30N個のintなら迷わず配列だろw
0848デフォルトの名無しさん
2007/10/30(火) 00:31:30>>825の問題の本質は、Cしか知らない視野の狭さに起因するな
0849825
2007/10/30(火) 00:33:03> >>825
> 渡すのだけが目的だよね?
> 関数から出力を受け取るといったポインタの方でしかできない事は考えないんだよね?
引数の意味は考えないでください。
引数の数だけの問題です。
上の具体例ではintでもint*でも構わないです。
0850デフォルトの名無しさん
2007/10/30(火) 00:33:440851825
2007/10/30(火) 00:34:18> >>825
> vsprintfみたいに可変長引数にする
Nはイメージ的には8〜10ぐらいの定数としてください。
可変長ではないです。
0852デフォルトの名無しさん
2007/10/30(火) 00:34:26他で使って無くてもこの場合構造体にする方が良さそうかな・・・
0853デフォルトの名無しさん
2007/10/30(火) 00:34:330854デフォルトの名無しさん
2007/10/30(火) 00:36:080855デフォルトの名無しさん
2007/10/30(火) 00:42:25基本的に、DTOつくるのはダサいな
0856825
2007/10/30(火) 00:48:53僕はコンシューマのゲームプログラマなので常にパフォーマンスを気にかけています。
なので可読性を落とさない範囲でなるべく効率のいいバイナリになることを意識します。
プリミティブ型の引数をだらだら並べる場合
- 読みにくい
- 同じ型が連続していると関数呼び出しの記述で引数を入れ替えて間違ってしまいやすい
- RISC系ではレジスタ渡しを存分に活用できるので高速に呼び出せる
構造体にする場合
- 構造体によって意味的なまとまりがわかりやすい
- 構造体によって メンバ名=値 という形式になるためパラメータの意味がわかりやすい
- 呼び出し側でいちいち構造体を用意する必要があるのでスタック等を消費する、メモリアクセスが起こる
- 呼び出され側でもポインタアクセスなので効率の点で不利(といってもほぼL1アクセス程度ですが)
今のところABIでレジスタ渡しに使えるレジスタ数を境めに決めています。
可読性、移植性(効率性の点で)を犠牲にしています。
0857817
2007/10/30(火) 00:50:40が、正解じゃないか?
0858デフォルトの名無しさん
2007/10/30(火) 00:54:480859デフォルトの名無しさん
2007/10/30(火) 00:55:01何かよっぽど理由無いかぎり、もう使うなよ。
java は構造体を言語仕様から無くしちまっただろ?
オブジェクト指向プログラミングには構造体は不要。
引数が多い関数って、一見使いにくいように思えるが
コンパイラが引数チェックをある程度やってくれるだろ?
ところが構造体だと、値をセットし忘れるミスをコンパイラが検出できない。
しかも新人クンが大のニガテの「ポインタ」を使いまくり。
今更わざわざ構造体なんて使って時代と逆行する事ぁ無と思う。
0860デフォルトの名無しさん
2007/10/30(火) 00:56:40strcmpは符号を返すわけではありません。
str1>str2 のとき、0より大きい数を、
str1<str2 のとき、0より小さい数を、
str1==str2のとき、0を返す、
と定義してあるだけです。
0はマジックナンバーです。
それから、C言語は論理型を整数型で代用しますが、
符号型を整数型で代用したりはしません。
それは、C言語に符号を調べる特別な演算子が無いことからも明らか。
C言語で整数値の符号を調べる時は、0との比較で調べます。
0861デフォルトの名無しさん
2007/10/30(火) 01:01:390862825
2007/10/30(火) 01:01:52> 今どき構造体なんて使うヤツおるの?バグの温床だろ?
> 何かよっぽど理由無いかぎり、もう使うなよ。
> java は構造体を言語仕様から無くしちまっただろ?
> オブジェクト指向プログラミングには構造体は不要。
class使えって話ですか?
別にclassでもいいですけど、そうなるとconstructorへの引数が多くなるという話になります。
本質的に何も変わりません。
0864デフォルトの名無しさん
2007/10/30(火) 01:03:170865デフォルトの名無しさん
2007/10/30(火) 01:03:210866デフォルトの名無しさん
2007/10/30(火) 01:03:55可読性考えなくて良ければ、構造体使う必要ないし
0867デフォルトの名無しさん
2007/10/30(火) 01:04:19>それは、C言語に符号を調べる特別な演算子が無いことからも明らか。
これ間違い
0868デフォルトの名無しさん
2007/10/30(火) 01:05:22> それから、C言語は論理型を整数型で代用しますが、
> 符号型を整数型で代用したりはしません。
> それは、C言語に符号を調べる特別な演算子が無いことからも明らか。
全然明らかじゃないんですけどwww
てかさ、言語仕様に「論理型を整数型で代用します」なんて、どこに書いてあるのか明示してよw
0869デフォルトの名無しさん
2007/10/30(火) 01:06:200870817
2007/10/30(火) 01:07:430871デフォルトの名無しさん
2007/10/30(火) 01:08:23その符号を調べるために、「!」を使うのはおかしい。
「!」は真偽を反転されるために有るのであって、符号を調べるために有るのではない。
「!」を使ってもゼロフラグが立っているかどうかが分かるだけであって、
符号が分かるわけではない。符号を調べるには、さらに最上位bitも調べる必要がある。
だけど、そんな面倒なことはしたくないし、だれもやらないので、
C言語では特別な構文は用意せず、かわりに 0 との大小関係を調べることになってる。
つまり、C言語で符号を調べたい時は、「>=0, <=0, >0, <0, ==0」 を使う。
0 との比較をするのがどうしても嫌だというなら、
>>694 のように書くしか他に方法はない。
0872825
2007/10/30(火) 01:08:31> >>863
> 可読性考えなくて良ければ、構造体使う必要ないし
?
つーか可読性考えなくていいなんて言ってないよ
現実的な判断基準の話をしたい
0873デフォルトの名無しさん
2007/10/30(火) 01:12:50え、Cの話かと思ってました。
classがOKなら
setHoge(10);
setHage(20);
setFuga(30);
・・・
execute();
が可能かと。
0874デフォルトの名無しさん
2007/10/30(火) 01:14:52isdigit の戻り値はintだが、
ドキュメントには、引数が数値のとき、「真」を返すと書いてある。
逆に、「0以外の値」を返す、とは書いてない。
ドキュメントレベルで、「真偽」という言葉が出てくる。
つまり、Cは整数で真偽を代用する。
一方、
strcmpの戻り値もintだが、こちらには、
str1>str2 のとき、0より大きい「数」を返すと書いてある。
逆に、正の数を返す とは書いてない。
つまり、Cは整数で符号を代用しない。
さらに付け加えれば、符号を返すとも書いてないし、まして真偽を返すとも書いてない。
あくまで数を返すと書いている。
敷居値となっている 0 はマジックナンバーでしかない。
0875デフォルトの名無しさん
2007/10/30(火) 01:16:50いや別に一度にコンストラクタに渡さなくてもいいじゃん
0876デフォルトの名無しさん
2007/10/30(火) 01:17:54では、Cで符号を調べる演算子は何ですか?
0877デフォルトの名無しさん
2007/10/30(火) 01:18:37無理してクラス使わんでもいいよ。
クラスが嫌なら引数の多い関数使えばいいんだよ。
全然問題無い。
だが、いったい何のために先人たちが苦労して
構造体を廃止してまでクラスを作ろうとしているのか。
それを考えた方がいい。
0878デフォルトの名無しさん
2007/10/30(火) 01:19:04誰もあると言ってないが?
0879デフォルトの名無しさん
2007/10/30(火) 01:20:15そしたら誰も文句言わないから
0880デフォルトの名無しさん
2007/10/30(火) 01:22:05どんなドキュメントに書いてあったんだ?
ANSIの仕様書にでも書いてあったか??
日本語訳とかじゃなくて、ちゃんと原書を見て調べたのか???
だから、
> つまり、Cは整数で真偽を代用する。
これがどこに明記されているか、さっさと出典を示せよ。
0881デフォルトの名無しさん
2007/10/30(火) 01:23:15では、C言語で「符号型」は整数型を使ってどのように表されますか?
もし、aが正の整数かどうか調べる場合は、どう書けばよいですか?
if ( a && !(a&-0x80000000) ){}
ですか(笑
0882デフォルトの名無しさん
2007/10/30(火) 01:23:32>逆に、正の数を返す とは書いてない。
0より大きい数と正の数の違いは何?
0883デフォルトの名無しさん
2007/10/30(火) 01:24:27!str...はそれ自体そういうものとして読まれてるのに整数云々みたいな
ありえない脳内前提をして批判しても意味ないよ。馬鹿だなあ
0884デフォルトの名無しさん
2007/10/30(火) 01:24:460885825
2007/10/30(火) 01:25:18classかstructかはどっちでもいいです。
オブジェクト指向の話はおいておいてください。
funcに必要なパラメータを渡すにあたって
プリミティブ型をだらだら渡すか、class/structを定義してそのポインタを渡すか
その判断基準はどうしてる?という話です。
0886デフォルトの名無しさん
2007/10/30(火) 01:25:46違うよ
自分で言ってるじゃん
>C言語で整数値の符号を調べる時は、0との比較で調べます。
0887デフォルトの名無しさん
2007/10/30(火) 01:28:36そんな命題はいくらでも生成できる。
今までどんな教育を受けてきたのか。
0888デフォルトの名無しさん
2007/10/30(火) 01:28:45>>694のコードでは、私の持っているコンパイラでコンパイルできない物があるのですが?
その様なコードを自慢げに正しいコードなどと言われても非常に困ります
また、マジックナンバーを否定するのであれば、マジックナンバーを使用しない
!strcmp(str1, str2)
という表現の方が、
strcmp(str1, str2) == 0
という表現よりも優れていると思います
0889デフォルトの名無しさん
2007/10/30(火) 01:29:25manコマンドで調べろ。
>>882
0 より大きい数という言い方をした場合、0 はマジックナンバー。
コンピュータの都合で、たまたま 0 と比べているだけで、もしかしたら、
「 1 より大きい数 」 という仕様だったかもしれない。
0 より大きいか小さいかが問題だといっているのだから、
0 との大小関係を比較すべき。
一方、正の数という言い方をした場合、これは明らかに符号を問題にしている。
だけども、どっちにしろC言語で整数の符号を調べる場合は、0 との大小関係を調べるしかない。
さもなくば >>694 か。
0890デフォルトの名無しさん
2007/10/30(火) 01:33:12ISO9899:1999から引用しろ。それ以外は議論に値しない。
0891デフォルトの名無しさん
2007/10/30(火) 01:34:17そのヘッダの作者名を見ればもう話は終わりだと思う
0892デフォルトの名無しさん
2007/10/30(火) 01:35:010893デフォルトの名無しさん
2007/10/30(火) 01:36:030 と比較するということは、それはC言語では符号は特別視しないということ。
整数で代用された論理型のように、「!」のような演算子は用意されて無いからね。
もし仮に、こんな感じに記述できるのなら、Cは整数で符号を代用しているといえるのだがな。
if( $a ){} /* aは正の数 */
if( ?a ){} /* aは負の数 */
でも実際は、C言語に符号を調べるための特別な演算子は用意されて無いだろ。
0894デフォルトの名無しさん
2007/10/30(火) 01:36:45コイツ、最強のアフォ!
struct 使うな、と言えば 「class使えって話ですか?」
クラス使わんでもいい、と言えば 「classかstructかはどっちでもいいです。」
もう相手するだけバカバカしい。無視しとこ。
0895デフォルトの名無しさん
2007/10/30(火) 01:39:03マジックナンバーが関数の仕様の定義に入っちゃってるんだから、
むしろマジックナンバーに従うべき。
使う側は作った側に従うしかない。
0896デフォルトの名無しさん
2007/10/30(火) 01:40:12ですから、>>694のコードは私の環境ではコンパイル出来ません!
0897デフォルトの名無しさん
2007/10/30(火) 01:40:42「真」の定義はあったようだね。
で、同じように「正の数」の定義はありましたかね。
0898デフォルトの名無しさん
2007/10/30(火) 01:42:02お前が勝手に擬似コードをコンパイルしようとしているだけだろ。
0899デフォルトの名無しさん
2007/10/30(火) 01:43:00そろそろ可哀想だからレス
上手いことまとめられる時だけ構造体、基本的にはだらだら
実際にこうなっちゃったときは設計を見直すから机上論的なものになるけど
0900デフォルトの名無しさん
2007/10/30(火) 01:43:180901デフォルトの名無しさん
2007/10/30(火) 01:44:21相手してるのはお前だけ。他はとっくに無視してるから心配すんな。
>>825 は struct を使え、って答えを期待してるのがミエミエだろ?
「だれか、struct を使ったほうが良いよ、って言ってくれませんか」って呼びかけているんだよ。
反対の意見は耳に入れるつもりは全然無い。
「自殺したいから背中を押してくれませんか」って呼びかけているんだよ。
0902デフォルトの名無しさん
2007/10/30(火) 01:44:54それは整数の取れる範囲を示したものであって、
「正の数」や「負の数」を定義したものではないよね。
0903デフォルトの名無しさん
2007/10/30(火) 01:47:25ひっきりなしに出てくるんですがこれは何を意味するとお考えでしょうか。
0904デフォルトの名無しさん
2007/10/30(火) 01:48:140905デフォルトの名無しさん
2007/10/30(火) 01:49:09signed と unsigned の違いは何ですか?
0906デフォルトの名無しさん
2007/10/30(火) 01:49:25「代用」の使い方が他人と違うんじゃないかな
0907デフォルトの名無しさん
2007/10/30(火) 01:50:25>>694のコードは私のコンパイラではコンパイルは出来るのですが、
正しく動作していないようです
0908デフォルトの名無しさん
2007/10/30(火) 01:52:04どのコンパイラ?
0909デフォルトの名無しさん
2007/10/30(火) 01:53:02ゼロフラグ(CPUにあればの話) と 最上位bit の兼ね合いで決まるんだよ。
C言語ではゼロフラグを反転したものが論理値だが、
かたわれの、最上位bit を簡単に調べる構文は用意されていない。
だからC言語で符号を調べる場合は 0 と比較することになってる。
0910デフォルトの名無しさん
2007/10/30(火) 01:55:05それはISO9899:1999の§いくつに書いてありますか?
0911デフォルトの名無しさん
2007/10/30(火) 01:56:55符号を調べる演算子が ISO9899:1999 にでも書いてあるのか?
書いてないなら 0 と比較するしかやりようがないだろ。
0912デフォルトの名無しさん
2007/10/30(火) 01:57:15挙証責任を守って下さい。
0913デフォルトの名無しさん
2007/10/30(火) 01:57:47> manコマンドで調べろ。
ごまかすなよw
そんなに怖がらずに、ちゃんと自分の言葉で説明してごらん。
0914デフォルトの名無しさん
2007/10/30(火) 01:58:10だからそれがISO9899:1999のどこに書いてあると。
書いてないのならあなたの論も意味をなさなくなりますが。
0915デフォルトの名無しさん
2007/10/30(火) 01:58:34いや定義としてあったわけじゃなくて
「〜 true (nonzero) 〜」みたいに文脈中で換言されてたのを見かけただけ
0917デフォルトの名無しさん
2007/10/30(火) 02:00:25では一体どうやってC言語で符号を調べるんだよ。
符号を調べる方法が何処にも書いてないから、
0 と比べるしかないよねといってるのに、書いてるところを示せといわれても困る。
何処にも書いてないんだもの。
0918デフォルトの名無しさん
2007/10/30(火) 02:01:37質問を質問で返すのは失礼ですよ。議論の基本があなたはなってない。
まず自分に投げかけられた質問に答えてからしかる後に質問をしなさい。
0919デフォルトの名無しさん
2007/10/30(火) 02:03:09実際問題、Cの話かC++の話か限定しないとどうにもならんよ
0920デフォルトの名無しさん
2007/10/30(火) 02:04:43それで十分だよ。
true (nonzero) ってことは true is nonzero ってことだからね。
一方で、negative の説明は有りますかね。
negative is negative とかやめてよ。
たしか、C言語で負の数をどう扱うかは実装依存だったはず。
0921デフォルトの名無しさん
2007/10/30(火) 02:04:490と比べるしかないっていうのはISO9899のどこに書いてありますか?
0922デフォルトの名無しさん
2007/10/30(火) 02:07:100923825
2007/10/30(火) 02:07:42> >>894
> 相手してるのはお前だけ。他はとっくに無視してるから心配すんな。
そんなつまらないネタかな?
どっちでもいいことながら悩んでしまうところなんだけど。
> >>825 は struct を使え、って答えを期待してるのがミエミエだろ?
> 「だれか、struct を使ったほうが良いよ、って言ってくれませんか」って呼びかけているんだよ。
> 反対の意見は耳に入れるつもりは全然無い。
> 「自殺したいから背中を押してくれませんか」って呼びかけているんだよ。
プリミティブだらだらか、struct/classかどっちにする?って話じゃないよ。
そんなの当然どっちもありなわけです。
どっちにするかの判断基準はどうしてるの?ってことです。
0924デフォルトの名無しさん
2007/10/30(火) 02:07:45書いていないって言ってるじゃん。
無いことの証明が出来ないって知らないの?
「悪魔の証明」って知らない? 立証責任があるのはあなたの方ですよ。
人に失礼とか言う前に議論するうえで最低限知っておかなければならないことだと思うが。
0926デフォルトの名無しさん
2007/10/30(火) 02:10:19厨ワード入りマース
0927デフォルトの名無しさん
2007/10/30(火) 02:11:13CとC++じゃ評価基準が違うだろ
もっといえば、関数で渡すものの質が全く違う
0928デフォルトの名無しさん
2007/10/30(火) 02:12:43悪魔の証明?どこが?
どこに書いてあるのかと聞いているのに、この場合悪魔の証明とは
どこにも書いてない事を証明する事になる。
180度違うだろ?え?
0929デフォルトの名無しさん
2007/10/30(火) 02:14:11大小を比較する演算子の定義は
6.5.8 Relational operators に書いてある。
だけど、それ以外に符号を調べる方法が有るのを証明するのはあなたの責任。
0930825
2007/10/30(火) 02:14:20いちおう>>925のとおりC++でってことにしました。
でもCの場合とC++の場合でどういう基準で決めるのかの結論がかわるなら、それぞれ教えて欲しいです。
0931デフォルトの名無しさん
2007/10/30(火) 02:14:31相手もあるとは言ってないんじゃないの
0932デフォルトの名無しさん
2007/10/30(火) 02:15:17こらこら責任転嫁は良くありませんね。
>>917で
>0 と比べるしかないよねといってるのに、書いてるところを示せといわれても困る。
と言ったのはあなたですよ。
だからあなたが0と比べるしかない事を証明しなくてはならないのです。
0933デフォルトの名無しさん
2007/10/30(火) 02:17:25C++限定なら話は簡単
引数をまとめるためだけに構造体を切るなどありえない
0934デフォルトの名無しさん
2007/10/30(火) 02:17:43引数に構造体を積極的に使うのはむしろ好ましいと思う。
ただ、必ずしもすべての引数を一つにまとめる必要は無いと思う。
0935デフォルトの名無しさん
2007/10/30(火) 02:18:43お前バカだろ。
おれは、唯一 A しかない、といってるんだよ。
唯一 A しかないことを証明するのは、
BもちがうしCもちがうしDもちがうし・・・・・・ZもちがうしAAもちがうし・・・AAAもちがうし・・・
と永遠に全ての要素が違うということを示さないといけないので無理。
A 以外にも、条件を満たす要素があるということを立証するのはお前の仕事。
お前は B でも出来るじゃん と一つ示せばいいだけだからな。
0936934
2007/10/30(火) 02:19:180937デフォルトの名無しさん
2007/10/30(火) 02:20:320938デフォルトの名無しさん
2007/10/30(火) 02:20:34俺が言っているのはそういう事ではない。
ISO9899にも書いてない、「0と比べるしか符号を調べる方法はない」という
あなたの意見を私が黙って受け入れられない、と言っているのです。
ISO9899だけをより所にしているんですから。だからISO9899に書いてない事が
わかったなら、貴方はそこで黙らなければならない。
0939825
2007/10/30(火) 02:20:45> >>885
> そろそろ可哀想だからレス
> 上手いことまとめられる時だけ構造体、基本的にはだらだら
> 実際にこうなっちゃったときは設計を見直すから机上論的なものになるけど
もうちょっと相手を
設計をどんな感じで見直して解決するんですか?
0940デフォルトの名無しさん
2007/10/30(火) 02:21:00相手にすんなって。
コイツは自分の期待した答え以外は全く受け付けないヤツだからさ。
○○だから、こっちにしろ、と書いたら
「○○は関係無いです。どっちにするかの判断基準はどうしてるの?ってことです。」
って延々帰すだけだから。
コイツ、人口無能みたいやなw
0941デフォルトの名無しさん
2007/10/30(火) 02:24:1916bitである場合もあります
0942825
2007/10/30(火) 02:24:20> >>923
> 引数に構造体を積極的に使うのはむしろ好ましいと思う。
> ただ、必ずしもすべての引数を一つにまとめる必要は無いと思う。
>>936
>うは、リロードしたら話題がC++になってた。なんというフェイント。
すみません、classかstructかでどう話がかわるか興味があったのでC++にしました。
確かに関数への引数が多いときは構造体にしろとは教科書的によく言われていると思います。
C++だったら話かわりますか?
0943デフォルトの名無しさん
2007/10/30(火) 02:24:27関係ないとか言い出すしね
0944デフォルトの名無しさん
2007/10/30(火) 02:24:45>>935 の理由より、立証責任はあなたにあります。
「C言語で符号を調べるには、0 と比較するしかない」
には立証責任は無い。
少なくとも、>>929 に、0 と比較することで、符号が分かることは示した。
そして、それ以外の方法は、どうも見当たらない、と主張しているわけで、
他の方法があるというのなら、他の方法を実際に示して見せるのはあなたの責任。
0946デフォルトの名無しさん
2007/10/30(火) 02:26:37何度も言いますが、その論理はおかしい。
>「C言語で符号を調べるには、0 と比較するしかない」
>には立証責任は無い。
というのはあくまでも貴方が勝手に決めたルール。そのルールに
私は従うも従わないも自由なのです。
だから立証責任を私に押しつけるのは貴方の我が儘なのです。
あなたが証明しなくてはなりません。
0947デフォルトの名無しさん
2007/10/30(火) 02:29:40久々聞いた。
ってか、ほんとは「人口無脳」やろ?わざと?
0948933じゃないけど
2007/10/30(火) 02:30:54933はC++ならそれ以外の解があるって言ってるんだろ。
でも、その話は聞きたくないんだよな?
0949デフォルトの名無しさん
2007/10/30(火) 02:31:56人口無能って...人工だろうよ...何だ、統計調査でもやるのか?
0950デフォルトの名無しさん
2007/10/30(火) 02:32:21設計が妥当であるという前提でいくと、
> でどうします?
の答えは、「どうもしない」としかいいようがない
0951947
2007/10/30(火) 02:32:370952デフォルトの名無しさん
2007/10/30(火) 02:33:22そうやって人に責任転嫁をしていれば製品が出来上がるの?
結局は自分の責任で最後まで作らなくちゃどうしようもないでしょう。
0953デフォルトの名無しさん
2007/10/30(火) 02:35:25そこが面白いとこだよ
なぜまともに解答を求められないのにプログラムが書けるのか?
0954デフォルトの名無しさん
2007/10/30(火) 02:35:44>これがどこに明記されているか、さっさと出典を示せよ。
これに対するレスあったっけ
0955デフォルトの名無しさん
2007/10/30(火) 02:36:050956デフォルトの名無しさん
2007/10/30(火) 02:36:45無い
「0以外は真」しか出ていない
0957デフォルトの名無しさん
2007/10/30(火) 02:36:46どこかで現実と妥協してるからでしょ。
規格書が100%正しいとしても規格書に書いてない事は
自分で判断していくしかない。人にそれを責任転嫁するなど
もってのほかです。
0958825
2007/10/30(火) 02:37:23> >>945
> 設計が妥当であるという前提でいくと、
> > でどうします?
> の答えは、「どうもしない」としかいいようがない
え?
>>933
> >>930
> C++限定なら話は簡単
> 引数をまとめるためだけに構造体を切るなどありえない
でしょ?
C++限定なら「どうしようもない」、つまり引数だらだらですか?
Cなら構造体?
なぜそうなるか教えてください。
僕理解力ないですか?
0959デフォルトの名無しさん
2007/10/30(火) 02:38:22久々にワロタww
0960デフォルトの名無しさん
2007/10/30(火) 02:38:36「0と比べるしかない理由は俺にはわからない。でもそれでちゃんと
動いてるんだからそれでいいんでしょ。証明しなくてもいいから。」と
素直に言えばいいものを。
事もあろうに私に証明しろなんて言い出すものだから話がこじれるのです。
0961デフォルトの名無しさん
2007/10/30(火) 02:38:51ISO9899 だけをよりどころにしているのなら、
>>929 で書いたとおり、符号を調べる方法は、
ISO9899 には関係演算子を使ったものしかかかれてないのだから、
「符号を調べるには、0 と 比べるしかない」
って結論になるよね。だって他にかかれてないのだから。
私が言ってるのではないですよ。あなたの大好きな ISO9899 が言ってるのです。
0962デフォルトの名無しさん
2007/10/30(火) 02:40:37あれれ?
ISO9899に関係演算子を使った物しか書いてない事が、どうして
「符号を調べるには、0と比べるしかない」という結論に至るのですか?
なんか論理の飛躍を感じるんですが。
0963デフォルトの名無しさん
2007/10/30(火) 02:40:42・ある程度一般化している
こうした書き方を単に「読み辛い」という理由で
ローカルなルールで禁止するといのは実に愚かだと思う。
ルールを覚えるより、書き方(読み方)を覚えた方が早いだろ。
0964デフォルトの名無しさん
2007/10/30(火) 02:41:010965デフォルトの名無しさん
2007/10/30(火) 02:42:28頼むから日本語で書いて。
0966デフォルトの名無しさん
2007/10/30(火) 02:42:38読みづらいのは駄目だろ
パッと見て読めるものをいちいち解体して細部から否定するのはナンセンスだと思うけどね
0967デフォルトの名無しさん
2007/10/30(火) 02:43:40>> つまり、Cは整数で真偽を代用する。
>これがどこに明記されているか、さっさと出典を示せよ。
これに対するレス頂戴
0968デフォルトの名無しさん
2007/10/30(火) 02:43:44こうでもないと自分の理屈を人に押しつけていた奴と同じ匂いを感じる。
0969デフォルトの名無しさん
2007/10/30(火) 02:43:46だから「無い」ことは立証できないんだって。
「有る」と主張する方に立証責任が発生する。
おれは 0 と比較する以外に符号を調べる方法は「無い」と主張している。
他に方法があるというなら(反論したいなら)そっちに立証責任が発生する。
これは俺のルールじゃない。議論するうえでの最低限のマナー。
お前の大好きな ISO9899 にはこんな基本的なことは書いてないが、
ISO9899 作った奴らもみんな守ってることだからお前も守れ。
0970デフォルトの名無しさん
2007/10/30(火) 02:44:56それは俺が言い出したんじゃないよ。
言い出してもいないし、ましてや書いてもいないから。
言い出した、もしくは書いた本人に聞いておくれ。
0971デフォルトの名無しさん
2007/10/30(火) 02:44:57タイトルとテンプレ↓
ぱっと見て「ヘタだなぁ」と思うコード その7
禁止ネタ(超既出)
・長い関数
・深いネスト
・グローバル変数
・goto
・memset
・malloc - free
・局所ブロック
・サンプルコードのtypo
・記述スタイル
・関数・変数名
過去スレ
その6: http://pc11.2ch.net/test/read.cgi/tech/1193250955/
その5: http://pc11.2ch.net/test/read.cgi/tech/1155315371/
その4: http://pc8.2ch.net/test/read.cgi/tech/1153312202/
その3: http://pc8.2ch.net/test/read.cgi/tech/1149986051/
その2: http://pc8.2ch.net/test/read.cgi/tech/1142741989/
初代 : http://pc8.2ch.net/test/read.cgi/tech/1141867015/
0972デフォルトの名無しさん
2007/10/30(火) 02:44:590973デフォルトの名無しさん
2007/10/30(火) 02:45:44そっか
君じゃなかったのね
じゃ書いた人お願い
0974デフォルトの名無しさん
2007/10/30(火) 02:45:56>> 958
> 設計が妥当であるという前提でいくと、
ここをきちんと読め。
C++では、設計が妥当になされていれば、パラメータが無駄に多くなることは少ない。
で、その上で、どうしようもないときはどうしようもない。
しかし、構造体でパラメータを渡すことには意味がない。
0975デフォルトの名無しさん
2007/10/30(火) 02:46:10誰も「無い」事を証明しろとは言ってないでしょう。
「0と比較する事が符号を調べる唯一の方法です」という貴方の
意見を証明して、と言っているのですよ。
曲解しないように。
0976デフォルトの名無しさん
2007/10/30(火) 02:46:29>>892 さんが調べてくれた。
true (nozero) という記述を見かけたそうだ。
真は非ゼロ。
0977デフォルトの名無しさん
2007/10/30(火) 02:47:12んで反証するともしないとも言ってない
0978デフォルトの名無しさん
2007/10/30(火) 02:48:31そういう事。反証するつもりはないんですよ。
あなたが規格書に書いてない事を言い出したから、根拠を
言ってください、とこんな簡単な事を言っているだけなんですよ。
0979デフォルトの名無しさん
2007/10/30(火) 02:48:45http://www.fujigoko.tv/rev/prof/
の、文書的プログラミングとは?
の桃太郎の部分を参考に。
・オブジェクトの状態を変える(セットする)
・何らかの処理を行って結果を返す
この2つは分けるのがC++の基本です。
で、オブジェクトの状態を変えるときにはいっぺんに複数の
パラメータを変化させるのではなくて、
変化するパラメータと、それには影響しないパラメータを分離します。
というやり方で引数だらだらを避けます。
0980デフォルトの名無しさん
2007/10/30(火) 02:49:29補足。
「一般化している」のだから「読み辛い」のは「個人的理由」に他ならない。
以下阿呆止め。
「環境依存で良ければ、Cで符号を調べる方法は0との比較以外にあるかもしれない」
0981デフォルトの名無しさん
2007/10/30(火) 02:50:05これでは議論にならない。
なに?タモさん?
0982デフォルトの名無しさん
2007/10/30(火) 02:50:11「代用する」って書かれてる?あるならどこ?
あと「代用」の意味をお願い
0983デフォルトの名無しさん
2007/10/30(火) 02:50:46強いて言えば「規格書に書いてない事を貴方が言い出したから、
証明してね(はぁと)って事です。
0984デフォルトの名無しさん
2007/10/30(火) 02:52:31やれ「お前が証明しろ」だの、そういう議論に反する事を言われるので
引っ掛かるのです。
もしくは「証明できないけどちゃんと動くからいいだろ」でもいいのです。
0985981
2007/10/30(火) 02:52:56通りすがりで書いただけ。
0986デフォルトの名無しさん
2007/10/30(火) 02:53:03は?
符号を調べるときに、0と比べる以外の方法は ISO9899 には明記されていませんよ。
理由が無いわけではない。他に明記されてない、という確たる理由がある。
他にもあるというのなら、その人が、「ここにも書いてあるよ」と立証するしかない。
そうじゃないかぎり、私の言い分が正しいと認められたことになる。
0987デフォルトの名無しさん
2007/10/30(火) 02:54:18何それ?根拠もなしに「私は正しい」と言うのですか?
馬鹿ですか?
小学生のケンカでもそんな馬鹿な言い方はしませんよ。
0988デフォルトの名無しさん
2007/10/30(火) 02:56:31あと、
>理由が無いわけではない。他に明記されてない、という確たる理由がある。
これをkwsk。
0989825
2007/10/30(火) 02:56:55> 議論(笑)の内容はどうでもいいんだけど、960の喋り方は気持ち悪い。
>
> >> 958
> > 設計が妥当であるという前提でいくと、
> ここをきちんと読め。
> C++では、設計が妥当になされていれば、パラメータが無駄に多くなることは少ない。
C++ならパラメータが多くなることはないってそんなこと一般化できるわけないです。
パラメータが減る根拠あげられますか?
さらにCにするとC++に比べてパラメータが多くなるってことならそんな設計もありえないです。
オブジェクト指向言語とオブジェクト指向設計の区別がついていないのでは?
> で、その上で、どうしようもないときはどうしようもない。
> しかし、構造体でパラメータを渡すことには意味がない。
こっちも根拠が知りたいです。
0990デフォルトの名無しさん
2007/10/30(火) 02:57:49双方阿呆だ。
まず>909で他に方法が無いと言い切っているが、ISO9899に書いてない方法もある。
それに対し、ISO9899のどこに書いてあるかと切り替えした時点で、相手も阿呆確定。
0991デフォルトの名無しさん
2007/10/30(火) 02:59:08割り込まれるのなら環境依存じゃない方法でお願いします。
0992デフォルトの名無しさん
2007/10/30(火) 02:59:23規格上、未定義な事はできてもできなくても構わない。
0993デフォルトの名無しさん
2007/10/30(火) 02:59:43実は
if ( a>=0 ) /* 正 */
という方法があるんだけど、これは内緒だよ
0994デフォルトの名無しさん
2007/10/30(火) 03:00:17やっぱりアホだったか
0995デフォルトの名無しさん
2007/10/30(火) 03:00:32>>990
実は
if ( a>=1 ) /* 正 */
という方法があるんだけど、これは内緒だよ
と書こうとした。
0996デフォルトの名無しさん
2007/10/30(火) 03:00:51http://pc11.2ch.net/test/read.cgi/tech/1193680812/l50
0997デフォルトの名無しさん
2007/10/30(火) 03:01:13やはりそうですよね。
>>986が「私は正しい」とか宗教じゃないんだから┐(´ー`)┌ヤレヤレ
>>993
それ0と比べてる
0998デフォルトの名無しさん
2007/10/30(火) 03:02:060999デフォルトの名無しさん
2007/10/30(火) 03:02:591000デフォルトの名無しさん
2007/10/30(火) 03:03:0310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。