[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 10:52 / Filesize : 232 KB / Number-of Response : 957
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 18



1 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 06:39:50 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 17
pc11.2ch.net/test/read.cgi/tech/1185286631/

教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 94代目
pc11.2ch.net/test/read.cgi/tech/1185452895/

83 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 21:26:36 ]
>>74
オッパッピーのピーだよ、きっと

84 名前:デフォルトの名無しさん [2007/08/18(土) 21:27:46 ]
>>79
こんなんでどうでしょう

const int siz = 3;
char s[] = "ABCDEFG";
char* p;

p = new char[siz];
memset(p, '\0', siz);
p[0] = s[1];
printf("2文字目:[%s]\n", p);
memset(p, '\0', siz);
memcpy(p, &s[2], sizeof(char)*3);
printf("3文字目から5文字目:[%s]\n", p);
memcpy(p, &s[2], &s[5] - &s[2]);
printf("3文字目から5文字目:[%s]\n", p);
delete p;


85 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 21:29:43 ]
>>82
やっぱりそうですか。了解しました

86 名前:79 mailto:sage [2007/08/18(土) 22:00:39 ]
>>84
サンクス!なんとかできた

87 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:18:53 ]
>>86
間違っても>84を真似してはいけません。それはCではありません。
--
bool strExtract(char * dest, const char * str, unsigned from, unsigned to)
{
if (str == NULL || dest == NULL) return false;
unsigned length = strlen(str);
if (from - 1 >= length || from < to) return false;
length = to - from + 1;
sprintf(dest, "%*.*s", length, length, str + from - 1);
return true;
}

char buf[100];
char str[] = "ABCDEFG";

// 2文字目をコピーした文字列を得る
strExtract(buf, str, 2, 2);
// 3-5文字目をコピーした文字列を得る
strExtract(buf, str, 3, 5);

88 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:30:44 ]
84、87は初心者か、悪意のある上級者だろうな。

89 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:36:04 ]
>>88
84が初心者(というか、自称初級者)で87が悪意のある(というか、臍曲がりの)上級者かと。

90 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:36:13 ]
#include <stdio.h>
#include <string.h>

int main(){
char a[]="ABCDEFG";
char b[10];

/* 3文字目から5文字目こぴー */
strncpy(b, a+2 ,3);
b[3]='\0';

/*確認*/
printf("%s.%s\n", a, b);

return 0;
}

91 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:43:04 ]
>>73
realloc()の返り値は、渡した引数と必ずしも一致していない。
必要なら、別の領域を探してきてそちらに移す。

というか、
>>これじゃメモリを別アプリから覗き見放題じゃないですか。

物理アドレスと論理アドレスの違いを勉強してくれ。







92 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:49:34 ]
>>79
90が普通の書き方だけど、Windows環境なら、windows.hをインクルードして、
lstrcpyn()を使う方法も。

93 名前:87 mailto:sage [2007/08/18(土) 23:57:12 ]
一部訂正。
--
- if (from - 1 >= length || from < to) return false;
+ if (to - 1 >= length || from < to) return false;
--
toで制限しておけばfromは必然的に制限の必要がないのを逆にしてしまった。
toで制限するなら、%*.*sも冗長と言えば冗長か。%.*sにすれば引数のlengthが一つですむ。

>>88>>89
何さ。
>>90>>92
strncpy()の仕様を覚えるくらいならsprintf()を使いこなした方が潰しが利きそうな気がするが。

94 名前:90 mailto:sage [2007/08/19(日) 00:07:12 ]
>>93
>strncpy()の仕様を覚えるくらいならsprintf()を使いこなした方が
両方覚えるのが良いかと思います。後回しにするのならまだしも、
少なくともこの時点で切り捨てる必要は無いでしょう。
両方知れば、使い分ける事ができますから...

95 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:07:46 ]
>>93
覚えるのは「strcpy()の長さ制限のあるバージョンがあったな」ってくらいでいいでしょ。
使うときは、仕様を確認すればいい。

96 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:15:29 ]
strncpyはstrcpyに比べて異常終了しにくいので、まあともかく早く
動かしたいときには、よさそうな気もするけど、データの異常に気づかない
可能性があるのでおすすめではないです。
sprintは普通に重い処理だからスピードとか気にするところでは
避けたいですが、まぁ使いやすいっちゃ使いやすいですね。
memsetで初期化するのも褒められたやり方じゃないよな。

97 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:20:53 ]
>>96
strncpy()でデータ異常に気づかないって、どういうケースで?

98 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:22:24 ]
sprintfは「書式を指定する」てところに、特徴があるので、
その様な状況ではsprintfが適切でしょ。
対して,strcpy,strncpyは文字列のコピーが目的の関数ってことで、
>>79の様なケースでは、関数本来の目的にあってるかと思う。

99 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:26:17 ]
strncpy()は、コピー先の後ろを0で埋めるという仕様があるので、
strncat()を使ったほうが速度的には有利だけど、書き方が直感的ではなくなる。

dst[0] = '\0';
strncat(dst, src, n);



100 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:26:50 ]
>>97
文字列終端の'\0'を忘れるケースがありますね。

101 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:29:28 ]
>>100
コピー元の文字列が、0がついてないような場合でも、長さ制限があるから無事に処理ができてしまうということ?
それは(この文脈では)sprintf()でも同じことでは?



102 名前:100 mailto:sage [2007/08/19(日) 00:49:40 ]
>>101
送り側の文字列に0が無ければそうですが、送り側に0があった場合でも、
strncpyの場合、送り側が受け側の長さ(与えた長さ制限)以上の場合、付きません。
対して、sprintfならば0は自動的につきます。受け側に起きる問題ですね。

ちなみに >>100 != >>96 ですので、
>>96さんのいう異常が同じ事を言ってるのかは、わかりませんが。


103 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:50:34 ]
指定した長さでコピーがカットされた時、
\0終端してくれないってことだろ

104 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:14:06 ]
char s[] = "12345678", d[4];
strncpy(d, s, sizeof(d));

ってやったときにdは0終端されないっす。
こういう挙動なのでとっても使いづらいっす。

使いどころはないこともないんだけど、
まず使うことはないですね。

105 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:34:21 ]
フリーの統合開発環境でいいのありますか

106 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:35:46 ]
Visual Studio

107 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:39:40 ]
>>104
strncpyの返り値が d じゃなくて、コピー後の末尾だったら良かった。
と思ったことがある。そうすれば、次々に連結する処理が楽かなーと。
まあ、それくらいなら自作出来るけど。

108 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 02:01:33 ]
>>105
いいのかどうか分からないけど
少し重いが
同じツールでJavaも開発できるエクリプスなんかどうでしょう?
コマンドプロンプトしかありませんが


109 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 04:40:42 ]
学生なら迷わずVS 2005 academic

110 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 14:05:01 ]
学生で今はちょっとCをやった所だけど、やっぱりCよりC++の方がすごいソフトができるの?
なでしことかドリトルでは限界があるの?プログラマーは生涯にたくさんの言語を使うらしいけど
DとかJavaとかいろいろありすぎてどれをやればいいのか分からない、とりあえずCからやってるけど

111 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 14:08:05 ]
初めはJavaかC#からやるのがいいんじゃないかな
Cはその次がいいと思うよ



112 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 14:20:16 ]
マジで? ちょっとVisual C# Express Edition落としてきます

113 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 14:24:36 ]
Cからやるべきだろ

114 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 14:27:17 ]
俺もCからがいいと思うよ

115 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 14:33:57 ]
C#かJavaあたりだろうね。

116 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 14:38:28 ]
俺も初めはバグを作りにくく直しやすい言語がいいと思うからC#やJavaをすすめる。
Cより型付けが強いし何かあれば例外投げて原因に気づきやすい。
あとGCがあるからメモリ周りは比較的無頓着にできる。
もちろんその後もCはやらないでいいって言ってるわけじゃないよ。

117 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 16:23:01 ]
strncpy みたいな使いにくい関数じゃなくて、
strlcpy が標準になればいいのに。


118 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 16:34:54 ]
NULLターミネイト位やっといてくれよとは思う
結局ラッパー関数書くハメになるし

119 名前:デフォルトの名無しさん [2007/08/19(日) 18:11:09 ]
void PhysicsDraw(){

for(int x=40; x<640; x=x+40) DrawLine(x,0,x,480,GetColor(64,64,64));
for(int y=40; y<480; y=y+40) DrawLine(0,y,640,y,GetColor(64,64,64));
DrawCircle(320,240,30, GetColor(255,0,0),TRUE);
}
ていうプログラムが本に載ってたんですがそのままやっても

> C:\borland\bcc55\Bin\make.exe -fDebug\dxtest.mak TARGET
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -L..\DxLib -DDEBUG -nDebug -I..\DxLib;C:\Users\shiro\Desktop\MyC\プロジェクトに追加すべきファイル_BCC用\DxLib -c C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp:
エラー E2268 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 3: 未定義の関数 'DrawLine' を呼び出した(関数 PhysicsDraw() )
エラー E2268 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 3: 未定義の関数 'GetColor' を呼び出した(関数 PhysicsDraw() )
エラー E2268 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 4: 未定義の関数 'GetColor' を呼び出した(関数 PhysicsDraw() )
エラー E2268 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 4: 未定義の関数 'DrawLine' を呼び出した(関数 PhysicsDraw() )
エラー E2268 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 5: 未定義の関数 'DrawCircle' を呼び出した(関数 PhysicsDraw() )
エラー E2268 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 5: 未定義の関数 'GetColor' を呼び出した(関数 PhysicsDraw() )
エラー E2451 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 5: 未定義のシンボル TRUE(関数 PhysicsDraw() )
*** 7 errors in Compile ***

** error 1 ** deleting Debug\dxtest.obj

Make End !! (Elapsed time 0:00.296)
ってエラーが出るんです。どうしてでしょうか?
ちなみに今日プログラム始めたばかりです。

120 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 18:40:01 ]
>>119
それはコードの一部だからコンパイルできないよ。

どっかにコードの全部が掲載してあるんじゃね。
もしくはCDに入ってるか。

つか、本文も読めばいいのに。

121 名前:名無しさん@お腹いっぱい mailto:sage [2007/08/20(月) 02:31:35 ]
質問なのですが家でc言語使えるようにしようと思って
microsoft.net Framework version 2.0 再頒布可能パッケージ
microsoft.net Framework version 2.0 SDK 日本語版
をダウンロードしたのですが友達の話によると
microsoft.net Framework version 2.0 日本語版 language pack
が必要らしいのですがmicrosoftの公式サイトに行っても見つからないのですが
どうやったら手に入るのでしょうか?
すごい初歩的な質問ですいません



122 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 02:38:44 ]
>>121
悪いことは言わんから Visual C++ 2005 Express Edition 使っとけ。

123 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 10:45:33 ]
C言語で.NET?

124 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 10:47:25 ]
.NETが必要なら導入すべきだが、C言語ってだけだと別に必要ってわけでもないガナ

125 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 11:10:49 ]
>>107
あー、それ俺も思った。
strncpy(d, s, sizeof(d))[sizeof(d)] = '\0';
           ↑   ↑
           ここがなんかクドイ

126 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 11:39:29 ]
>>125
くどいかどうか以前に、いろんな意味で間違いすぎ。

127 名前:51 [2007/08/20(月) 12:41:28 ]
低レベルな質問なのですが・・
こないだ友人と話してたのですが(どちらも現場経験なし)、
if文に{}っていりますか?
ifのあと文が1つなら{}は省略してよし、と書いてあるので友人はいらないといいます。
けど私は読みやすいから{}つけたい人間です。
こんな感じです。
if(ia==0){
printf("HelloWorld\n");
}
{}はつけないほうがいいのでしょうか?



128 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 12:48:48 ]
>>127
宗教論だな。正直どっちでもいい。

いろいろな人がソースコードを編集するなら
インデントとか括弧とかはツールで一括変換するようにすればおk
GreatCode とか

129 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 12:53:52 ]
if(foo)
 if(boo) zoo=0;
else // !fooのつもり
 zoo=1;
みたいなのをやらかしそうなら、付けといた方がいいかな、程度のもんだと思う。

130 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 12:58:20 ]
私のところのコーディングガイドでは、1行に収める場合のみ省略化としている。
つまり、
if (foo) bar();
はOKだけど
if (foo)
  bar();
はダメ。
勿論、
if (foo) {bar();}

if (foo) {
  bar();
}
もOK。

131 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 12:58:51 ]
>>127
>if文に{}っていりますか?
つけてもつけなくても文法上間違いではない。
>{}はつけないほうがいいのでしょうか?
つけたほうがいい。



132 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 13:07:31 ]
>>126
>いろんな意味
kwsk

133 名前:132 mailto:sage [2007/08/20(月) 13:10:15 ]
あ、ありえないミス…
× sizeof(d)
○ sizeof(d)-1

134 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 13:11:37 ]
俺は逆にカンマ演算子を使ってまで中括弧は使わないようにしてる
えへへ

135 名前:51 [2007/08/20(月) 13:11:45 ]
>>128>>131
回答ありがとうございます。
どちらでもいいし、つけたほうがいいっぽいですね^^
やはりつけるようにします。

136 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 13:18:09 ]
>>125
dが配列だと思っていいのかな?
だったら
sprintf(d, "%.*s", sizeof(d) - 1, s)
でいいじゃん。

137 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 13:25:54 ]
>>136
0終端の為だけに態々そんな余計な文字列パースさせるの?

138 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 13:31:17 ]
>>137
余計なメンテナンスに時間取られるくらいならありじゃね?
パフォーマンスが問題になるようなら入れ替えればいいことだし。
# まさかMS-DOSの時代みたいにprintf()系をリンクしないでサイズ節約なんて考えないだろうし。

139 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 18:58:08 ]
>>135
文がひとつのケースでも括弧をつけたほうがミスがなくなる。

140 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 20:58:52 ]
宗教論争になるからそろそろやめようぜ。

141 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 21:18:10 ]
という指摘は既に >>128 でなされているわけですが
どーしても自分語りがしたい阿呆が多くてなかなか収束しません。



142 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 21:19:17 ]
なに仕切ってんのコイツ

143 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 21:35:48 ]
 ヽ○     小学校のころから、学級委員してました♪
  |>    
  ((

 〇∧〃 
 / >  でもそんなの関係ねぇ!
 < \  そんなの関係ねぇ!


  〇/ はい!
 /|    オッパッピー!!
 />

チントンシャンテントン♪
チントンシャンテントン♪


144 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:10:27 ]
いろんな意味で終わったネタを引っ張るなよ

145 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:57:39 ]
>>135
一行のときは{}は無いほうがいいよ。
10年に一度もしないようなミスのために、読みやすさを損なうことはない。

コードを大量に書いてる人は、省略する派が多いし。



146 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 23:21:38 ]
笑わせてくれるぜ

147 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 23:39:51 ]
>>145
コードを大量に書いてる人ってだれ?

148 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 23:54:27 ]
読みやすさを考えたらコードを大量に書くとか・・・

149 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 23:56:52 ]
>>147
linux書いてる人とか、apache書いてる人とか、postgres書いてる人とか、その他いろいろ。

150 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 00:01:02 ]
「一行でも{}をつけた方が良いか」とかの、
くだらない事を質問するような奴なら、つけた方が良いと思う。
俺はつけないが

151 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 00:42:31 ]
>>149
その人たちは本当に読みやすさのために省略してるのか?



152 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 00:44:55 ]
そもそも「コードを大量に書く人」のソースをlinuxやapache書いてる人として
その人たちの中じゃこっち派が多いよってのは無理があるだろう。
そこらへんのプログラマだって大量にコードは書いてる。

153 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 00:45:55 ]
うぅ、日本語が変だ・・・orz

154 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 05:56:54 ]
「if」って打ったらエディタが
if () {
}
って勝手に出してくる(ように設定している)ので、
消すのが面倒だし害はないし後々の面倒を予防できるのでそのまんまにしてまーす。

155 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 06:49:28 ]
そういうのって()の中にカーソル移動すんの面倒じゃないの?

156 名前:デフォルトの名無しさん [2007/08/21(火) 07:51:06 ]
>>135 つけたほうがいいっぽいですね^^

質問内容は釣ネタに見えますがまだレスが流れている様ですので

プログラムは評価を受けるとかレビューとかされる場合があり
必ず中括弧'{}'で括るケースでも例えば1行しかないのに何でわざわざ中括弧で括るの?と質問された時
何と答えるかです

自分なりに定性的定量的な論旨展開で結論を出すか
ご存知かと思いますが世の中にあるコード標準とか規約とかを引用するかですね
例えば以下リンクが良く纏まっていますのでお勧めですが
www.literateprogramming.com/nrad.pdf
次レスに続く

157 名前:wolf ◆8VH3XAqjlU mailto:sage [2007/08/21(火) 07:51:49 ]
>>135 つけたほうがいいっぽいですね^^
続き

中括弧で括るケースについての記述は
2.C++ Coding Standard
└─Usage Of The Implementation Language
└─Control Structures
└─Branching
└─if ... else statement

に有りますが中括弧だけでなくインデントや比較代入記号に関しても検討して下さい

if(ia==0){
printf("HelloWorld\n");
}

僕ならこう書きます
if(0==ia)
{
printf("HelloWorld\n");
}

158 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 07:54:31 ]
定量的な論旨展開ってなんだ?

159 名前:デフォルトの名無しさん [2007/08/21(火) 08:08:03 ]
いきなり書き込まれてしまいまして訂正かねて

>>135 つけたほうがいいっぽいですね^^
続き

if(ia==0){
printf("HelloWorld\n");
}

僕ならこう書きます
if(0==ia)
{
  printf("HelloWorld\n"); <---- 訂正
}

>>158 定量的な論旨展開ってなんだ?
あまり即答はしないほうですがたまにはソフトウエア工学的な
意見展開もいいかもしれませんので
例えば
ひと纏まりしたコードは1画面内に収まったほうがreadabilityが良いですから


160 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 08:12:00 ]
日本語おかしい

161 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 08:19:17 ]
「たとえば」がなにとたとえてるのかさっぱりわかりませんが。



162 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 08:23:40 ]
比較で定数を左にもってくるというテクニックも、警告が出ないよう
にコーディングするって当たり前のことをしてれば必要ないですね。
変に技巧にはしるようなことはやめて、素直に書きましょう。


163 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 08:24:48 ]
定量的といいつつ、定量的なことは一切書いてない件。

164 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 08:26:06 ]
そもそも論旨は展開するようなもんじゃない

165 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 08:27:25 ]
本当に釣りネタに見えるなぁ・・・

166 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 08:58:16 ]
インデント論争に発展するのだけはやめような

167 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 10:24:11 ]
>>145
どこが
> 読みやすさを損なう
のかさっぱり。やっぱ、主観的なことしかいえないだろ?
だからやめろつってんのにw
コンパイルが通ればどっちでも良いんだよ。
むしろ必要性について知らない方がダメ

168 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 10:25:24 ]
>>151
そういう人たちは複雑になるんで、やはり規則性を持った記述をしているため
書いたり書かなかったりみたいな、ことはしてないはず。

169 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 10:41:52 ]
>>168
書いたり書かなかったりしていますが何か。
// 書かないケース
if (foo) bar();
// 書くケース
if (foo) {
  bar();
}

170 名前:デフォルトの名無しさん [2007/08/21(火) 10:47:34 ]
scanfだと入力後エンター押す必要がありますが
画面に入力した瞬間から反映される関数ってありますか?

171 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 10:50:15 ]
>>170
標準ではありません。環境依存になりますが、例えばcursesなどのライブラリを使えばできないわけではありません。



172 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 10:51:10 ]
あるいは、{ } が不要な1文のみの場合、
if() の後ろにそのまま続けてifと同じ行に書いていたり。
だから読みづらいだの主観的な意見はナンセンス。
自分が思うとおりに動作するように記述できて、コンパイルが通れば良し。

173 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:04:53 ]
読みづらさをないがしろにする意見はナンセンス

174 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:08:07 ]
読みづらいなんてのは主観なんだから放っておけばいいさ。
読みにくいという指摘なら、話を聞かないでもないが。

175 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:12:10 ]
読みにくさは主観じゃないの?

176 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:14:40 ]
客観的立場に立とうとした表現だね。定量的ではないが。

177 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:14:52 ]
誘導

コーディングトラブルの約70%はif文などでの{}省略
pc11.2ch.net/test/read.cgi/tech/1173416521/

178 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:16:12 ]
>>173
だからその読みづらいって主観が個人的なものでナンセンスだって言っているんだが?
人それぞれで、括弧があれば読みづらい、なければ読みづらいとか言われても
んじゃどっちだよ?って争いになるから、括弧の必要性を理解した上で
自分が思う通りに処理するソースがコンパイラに通ればそれで良いだっつってんだよ、バカかてめぇはw

179 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:22:53 ]
括弧がなくても通るからって理由でつけるつけないをわざわざ
一個人の読みやすさという客観的ではない曖昧な基準で話を進められても困るだろ。
とりあえず、オープンソースのように、他者と交互にやりとりしている人たちのソースを見て
参考にするのも良いだろ。自分だけが編集するソースならどっちをとろうが個人の自由。

180 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:24:39 ]
どっちでもいいけどソース内で統一されてれば読みやすい

181 名前:デフォルトの名無しさん [2007/08/21(火) 12:05:16 ]
>>171さん
例を教えてください
お願いします



182 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:28:52 ]
>>181
例としてcursesライブラリを挙げていますが。

183 名前:デフォルトの名無しさん [2007/08/21(火) 12:58:43 ]
ifの括弧についてもれがまとめるからもうこの話題はおわろうぜ。

[結論]
ifに括弧はつけなさい。
[理由]
つけてもつけなくてもいい文法が問題だけど
このスレだけでも大半の人間がどちらでもよい、又はつけたほうがいい
というんだからつけなさいYO!

可読性なんてものは人それぞれ違うんだから議論自体が無意味。

もし{}つけたら効率が落ちるんなら
あんたのプログラムif文使いすぎ。作り直しなさい

{}つけるのにそんな面倒か?
なんでそんなにつけるのに反発するんだ?

YOU!つけちゃいなYO

以上まとめでした






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<232KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef