- 1 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 23:38:08 ]
- 言語の入門者向け解説スレです。
教えて欲しいのではなく宿題を丸投げしたいならこちらへ。 C/C++の宿題を片付けます 108代目 pc11.2ch.net/test/read.cgi/tech/1211980711/ ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 29 pc11.2ch.net/test/read.cgi/tech/1212329099/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
- 236 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:21:23 ]
- 131
ddofile29050.zip pass errorです みてもらえたらうれしいです
- 237 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:22:16 ]
- >>131
1643.zipがねーぞ? 2chなんかでリンク張るから消されたんじゃねーのw
- 238 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:22:23 ]
- ここは半角板じゃねぇぇ。
- 239 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:22:25 ]
- やぱりからかれてるんだ。
- 240 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:22:41 ]
- >>236
しねばいいよ
- 241 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:22:44 ]
- 明日ゼミあるのに全くゼミ資料も裏付けもやってねー
- 242 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:25:45 ]
- いくらなんでもa = 1がわからないやつを2週間も放置する会社は無いだろ
- 243 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:26:28 ]
- a = 1; において、a という箱にはなにかしらデータが入っているから
そのままではそのデータが邪魔で 1 を代入することはできない だから a からデータを取り出すなり消去する(「クリア」する)必要がある とでも考えているんじゃなかろうか
- 244 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:26:35 ]
- なぜreturn aで返るんですか?
- 245 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:28:44 ]
- >>243
そうです。 どうしてクリアしなくていいんですか?
- 246 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:29:30 ]
- 上書きしてるから
- 247 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:30:08 ]
- 自分でC言語のコーナーいって
自分が一番わかるであろう本をかいなよ。 そしてプログラムを自分が理解してうつ。 それがベストだろ。
- 248 名前:デフォルトの名無しさん [2008/06/17(火) 01:30:50 ]
- >>245
箱と説明されてるのがまずかったのかな? ホワイトボードみたいなもんだを思ってくれ a = 1;はaって言う名前のホワイトボード書き換える行為だと
- 249 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:31:09 ]
- +=とか|=なら、245的クリアしない代入と言えるのだろうか?
- 250 名前:131 [2008/06/17(火) 01:31:17 ]
- #include <stdio.h>
#include <stdlib.h> #include <assert.h> #define MAX 5000 #define M 25 #define STR_MAX 256 void binary_file_process(char *fname) { float sample1; float sample2; float sample3[5]; float s1[MAX]={0}; float input_data[150][M]; char buff[100]="text/"; FILE *fin1=fopen(fname,"rb"); strcat(buff,fname); strcat(buff,".txt"); FILE *fp =fopen(buff,"w"); int i = 0,j = 0,k = 0,l = 0,m = 0,y = 0,z = 0,max=0; int count=0; fseek(fin1, 0, SEEK_SET); fread(sample3, sizeof(float), 6, fin1); fseek(fin1, 12, SEEK_SET); while(fread(&sample1, sizeof(float), 1, fin1) == 1) { s1[k] = sample1; k++; } count=k/M; max=k; for(i=0;i<max;i++){ printf("{%.1f}",s1[i]); if((i+1) % M ==0){ printf("\n"); } } printf("\n\n"); printf("k:%d count:%d max:%d \n",k,count,max); k=0; for(i=0 ; i < count ; i++){ for(j=0;j<M;j++){ printf("\t"); input_data[i][j]=s1[k]; fprintf(fp,"%f ",input_data[i][j]); if((k+1) % M ==0){ fputs("\n",fp); } k++; } } fclose(fin1); fclose(fp);} int main(){ char buf[100][STR_MAX]={'\0'}; FILE *fp; int i,j,k=0,count=0; system("dir power/*.data >memo.txt"); fp=fopen("memo.txt","r"); if(fp==NULL){ printf("prog001.c:file can't open memo.txt\n"); exit(-1); } printf("読み込み開始\n"); i=0; while(fscanf(fp,"%s",buf[i]) != EOF){ i++; } count=i; fclose(fp); printf("count:%d buf[0]=%s\n",count,buf[0]); binary_file_process(buf[0]); } なんとかまとめてみました お願いします
- 251 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:31:29 ]
- >>255
5行目と11行目のfor文を i == 1 → i != 1 にかえるとおk
- 252 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:31:31 ]
- 変数の初期化
その変数に代入すると,初期化した変数にいれられる。
- 253 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:31:45 ]
- >>246
そこが言ってることがわかりません?上書きってクリアとは違うんですか?
- 254 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:31:49 ]
- >>245
ホワイトボードじゃ、一回クリアしないと書けないぞw MDでもカセットテープでもなんでもいいが、 繰り返し録音できるメディアはいちいちクリアしなくても 新しく録音できるだろ。 それと一緒だ。上書きだよ上書き。
- 255 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:32:07 ]
- 間違った >>225 だ
- 256 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:32:21 ]
- >>150
単品じゃうごかねえつったろw
- 257 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:32:58 ]
- >>245
C言語は、プログラマのコードが全て つまりプログラマの責任において操作する a = 1; の後に、aに何を代入して上書きしようがプログラマの勝手 で、その変数aの値を使用するのは、プログラマの責任で使えってこった
- 258 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:33:42 ]
- データがねーから
nt main(){ char buf[100][STR_MAX]={'\0'}; FILE *fp; int i,j,k=0,count=0; system("dir power/*.data >memo.txt"); でエラー
- 259 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:35:43 ]
- まさにカオス
- 260 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:37:03 ]
- 何を代入してもいいのに1を代入するとかもうわけがわからないのは
やっぱりむいてないんでしょうね。 書いている言葉は理解できるのにさっぱり意味がわかりません。 長々とありがとうございました。明日相談してみます。
- 261 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:38:52 ]
- 何を代入してもいい箱には
何が代入できるのだろう。 そもさん、せっぱ
- 262 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:39:12 ]
- 書いている言葉は理解できるのに
↑↑何か脳の病気なのか…↓↓ さっぱり意味がわかりません。
- 263 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:40:02 ]
- 1は例えであって別に何しようが勝手だって
型なのどの規則を守ってたら あとは>>257の言うとおり 何も代入してない状態の変数にも中身が勝手に入ってる ただ、それは何が入ってるか分からないから自分が分かるように 分かる値を入れるだけ
- 264 名前:デフォルトの名無しさん [2008/06/17(火) 01:40:50 ]
- >>255
ありがとうございます! 明日トライしてみますね! 助かりました。。
- 265 名前:255 mailto:sage [2008/06/17(火) 01:50:52 ]
- >>264
あと公約数がない場合もつけたしておいたほうがいいよ
- 266 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:53:41 ]
- 公約数がないなんてありうるの?
- 267 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:54:06 ]
- ねぇよwww
- 268 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:56:34 ]
- 素数って1とそれ自身以外の約数がないんじゃなかったっけ?
2つの素数の公約数って1でいいの?
- 269 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:56:44 ]
- aが1かなんでもいいを入れられるのにどうして1を入れる必要が
あるのかどうしてもわからないんですよ。 1じゃなくても入れられるのはわかっています。 なんで1があるのにそれを入れるのか、どういう時に入れれば いいのかわからないんです。 入れたいときにっ言うけどそれがわかりません。 フローチャートも演習でやったのは書けたけど、プログラムを見て フローチャートに出来ません。 やっぱり無理ですね。よくわかりました。
- 270 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:57:16 ]
- 約数って素数じゃなきゃいけないんだっけ?
- 271 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:58:05 ]
- >>269
もう寝ろ。
- 272 名前:255 mailto:sage [2008/06/17(火) 01:59:11 ]
- あのプログラムだとループの i が1になった瞬間終了だから
8 7 とか入力したらバグる
- 273 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:59:14 ]
- >>268
全ての整数は1と(負の約数を考えるなら-1)を約数にもつ。 だから、どんな二つの整数も1を公約数に持つし、 二つの素数の最大公約数は1
- 274 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:00:25 ]
- 変数の存在自体に疑問を持ってるということかいね
つまり、全部数値を直打ちしてプログラム書けということかいね 死ぬわ
- 275 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:01:01 ]
- >>272
そういう意味だったか、すまん 確かに返り値返してないな
- 276 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:05:42 ]
- 変数の意義とは何ぞや。
すなわち、テンポラリである。
- 277 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:09:15 ]
- 女がピーかなんでもいいを入れられるのにどうしてピーを入れる必要が
あるのかどうしてもわからないんですよ。 ピーじゃなくても入れられるのはわかっています。 なんでピーがあるのにそれを入れるのか、どういう時に入れれば いいのかわからないんです。 入れたいときにっ言うけどそれがわかりません。 ごめんもう寝る
- 278 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:10:02 ]
- いや、別に入れたくないなら入れなくていいよ。
- 279 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:11:10 ]
- 根本的に無理だな
問題解決能力そのものがない
- 280 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:18:01 ]
- >>277
応用をやるために基礎があるってことでおk?
- 281 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:23:06 ]
- 釣りだと思う人挙手
ノ
- 282 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:10:52 ]
- >>269
つまり、プログラムで何をするか決めてない、理解してないのに プログラムの構文を習った所で、そんな状態になるわな まず、これから先に何かをする為に、そうルールでプログラムは動くって覚るしかない 変数は、プログラムを組むなら絶対使うからw 例えば、条件分岐(習ったかどうか知らんが) int value; // 何らかの処理でvalueに何らかの数値が入る ... if ( value == 0 ) { // 0の時だけにしたい処理 ... } こんな感じで使う a = 1; なんて、構文を教えてるだけだ、それに意味なんか求めるな
- 283 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:16:01 ]
- つまりみなさんよくわかないけど使ってるんですね
わたしもそうすることにします
- 284 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:21:11 ]
- >>283
それがいい やってるうちに分かってくる b
- 285 名前:デフォルトの名無しさん [2008/06/17(火) 03:49:54 ]
- c言語でbmpファイルを読み込んで、それを表示させるプログラムを作るには、
ウインドウ作成プログラムも作らないといけないのですか
- 286 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:54:58 ]
- Cとウィンドウ作成の関係について詳しく
- 287 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:59:01 ]
- おいちゃんの作ったプロ、グラマーなクソースなら
HTMLのTBL形式に出力しちゃうわよぉ〜ん
- 288 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:32:13 ]
- これは ひどい
- 289 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 06:23:47 ]
- スレ違うかもしれません。だが教えて欲しい!
昨年プログラムとして とあるソフト入社したんだが、C言語でやってる。 しかし!入社して一年たっても全くと言って良い程 C言語がわからす、プログラムなんて持っての他。 テストばかり。テストばかりなのが嫌ではないのだが、 将来首切られる事ってあり得るのかな? ちなみに勤務態度や 勤務状態(遅刻や早退)は良い。 やっぱプログラマ出来ないとリストラされるのでしょうか?
- 290 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 06:28:04 ]
- 時や場所をわきまえない奴は首
- 291 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 06:29:13 ]
- 入社したのが新卒なのか、中途で他業種からなのかとか
背景がさっぱりわからんし、同じようにテストを受けてるのが 一人だけとか他にも同期で何人かいるとかでも違うしなあ。 体力ある企業で新卒でそれをさせてるなら育成の可能性が あるから首ってことはないだろうけどなあ。 それに体力無いところは適当な案件見つけてすぐにでも 経歴偽装してデスマな現場に放り込まれそうだけどなw
- 292 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 06:44:28 ]
- 289ですが、専門卒で新卒でソフト会社入って
一年でやめて、違う業種で一年やって 三年程のブランクを経て今ある会社に入りました。 形としては中採かな。1ヶ月程たった。 自分づもプログラムに向いてないのは 分かってるけど、違う業界でやっていくか、 とりあえず分からないなりに 努力していくか悩んでいるのです。 スレ違う失礼しました。 ただ、このスレ野中にはプログラムの人もいるかなと思い、 参考程度に聞いてみた。 結局は自分だけど、皆さんならどうしますか?
- 293 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 06:54:07 ]
- プログラムの人ってなんだよw
プログラマだろ
- 294 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 07:12:42 ]
- とりあえずちゃんとした文章を書こうよ
- 295 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 07:15:02 ]
- まーまだ20代なんだからやる気次第かもね〜
- 296 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 07:53:17 ]
- 質問です。char変数に代入する方法がわかりません。次のようなプログラムなんですが、
char fruits; int kind; printf("どれが好き?\n1.リンゴ\n2.みかん\n3.バナナ\n"); scanf("%*d,%d",kind); switch(kind){ case 1: fruits = "リンゴ"; break; case 2: (中略) } printf("あなたは%sが好きです",fruits); fruitsに文字を代入するところでエラーが出てしまいます。どう変えれば動くようになりますか?
- 297 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 07:58:51 ]
- #include <string.h>
(省略) char fruits[64]; int kind; printf("どれが好き?\n1.リンゴ\n2.みかん\n3.バナナ\n"); scanf("%*d,%d",kind); switch(kind){ case 1: strcpy(fruits, "リンゴ"); break; case 2: (中略) } printf("あなたは%sが好きです",fruits);
- 298 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 08:03:26 ]
- 別に
fruits[0] = "リンゴ"[0]; 〜〜 fruits[6] = "リンゴ"[6]; fruits[7] = "リンゴ"[7]; break; でもいいけど。
- 299 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 08:22:29 ]
- 大きさを宣言するんですね!
うっかり忘れてました。thxです。
- 300 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 08:23:51 ]
- >>289
>>292 1年なのか1ヶ月なのかはっきりしろよ
- 301 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 08:41:06 ]
- >>299
うっかり…なのか? 何だかchar型に文字列のポインタ入れようとしたり、基本的なことが分かってないように思えるんだが
- 302 名前:デフォルトの名無しさん [2008/06/17(火) 09:33:14 ]
- >>286
BMPファイルを読み込んだ後にそのBMP画像を画面に出力すること と言われて、BMPファイルをメモリに読み込ませることはできたんですけど 出力するプログラムがわかりません
- 303 名前:デフォルトの名無しさん [2008/06/17(火) 09:37:10 ]
- >>286
BMP画像を読み込んで、その読み込んだBMP画像を画面に出力する というプログラムを作成するのに、そのまま出力することができるんですか BMP画像を読み込ませることはできたんですが、それを画面に表示 させる方法がわかりません
- 304 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:38:57 ]
- スレ違い
- 305 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:28:58 ]
- つまり「日本語なら俺に聞け(入門篇)」のスレへ行け、ということですね。わかりますた
- 306 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:43:36 ]
- 問04(最終問題)
テキストサウンドノベルを作成する事。 キー入力でメッセージを表示し、途中で選択肢を含める。(最大3つまで) 画面をスクロールさせることは禁止。ページ切り替えは、画面全消去で対処する事。 テキスト行数は、最低50行から最大100行までとする。 画面全消去方法は、先生に聞くこと。 これってCじゃなくC++ですか?
- 307 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:49:47 ]
- >>303
つ ttp://www.db.is.kyushu-u.ac.jp/rinkou/c/kougi7/Slide29.html
- 308 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:41:57 ]
- 質問だけですが、分かる方お願いします。
cは拡張キーワードというのがありますが、 どういった場合に使用するのでしょうか? 具体的な使い方とか乗っているサイトありませんか?
- 309 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:08:19 ]
- >>308
拡張キーワードって __asm __stdcall などのこと? それぞれが必要なときに使うんだよ。 使い方は処理系のマニュアルを読む。
- 310 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:08:52 ]
- >>306
サウンドのあたりがしんどいね
- 311 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:57:06 ]
- >テキストサウンドノベル
これはひどい
- 312 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:14:08 ]
- >>269
亀レスだが、その疑問はコンピュータサイエンスのプログラム意味論や 計算とは何かの範囲になるので、ここではスレ違い。
- 313 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:59:38 ]
- エレガントなコードを書くのに参考になるような本って何かありますか?
Short coding以外で
- 314 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:21:01 ]
- >>177
> 変数ってprintfで表示できるしデバッガーでも表示出来るのはわかるのですが > 計算して新しいものを入れるのにクリアしないのですか? そうだよね、変数は値(を書いた札)を入れる箱だから、元の値が邪魔になるよね。 っていうアレではないか。
- 315 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 15:01:50 ]
- >>314は>>243-245で既出だった
- 316 名前:デフォルトの名無しさん [2008/06/17(火) 19:01:20 ]
- 1つのスイッチと4個のLEDを使ってプログラムを作ろうと思っています。
スイッチを押すとLED1が点灯→もう一度押すとLED1に続いてLED2が点灯、さらに1回押すとLED3も点灯 というように押すたびに点灯するLEDが増えてくというものを作ろうとしているのですが、 まったくできません。 プログラムをどのように書くと1つのボタンでLEDが点灯する数を増やしていくことができるのでしょうか? こういう風に
- 317 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:03:54 ]
- どういう接続かしらんけど
ポートに出力するデータに対して 最初は0 左シフトして1インクリメント を繰り返せばOKなんじゃない?
- 318 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:17:41 ]
- >>317
今は while(1){ if (P2.DR.BIT.B0==0){ P1.DR.BYTE=0x01; } } これでボタン押すとLED1が点灯する状態です。 >>ポートに出力するデータに対して >>最初は0 >>左シフトして1インクリメント この辺はどんな命令文で指示すればいいのでしょうか?
- 319 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:21:25 ]
- char outdata = 0;
while(1){ if (P2.DR.BIT.B0==0){ P1.DR.BYTE=outdata<<1; outdata++: if (outdata > 4) outdata = 0; } }
- 320 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:30:39 ]
- >>319
詳しくありがとうございますw char outdate=0; の行でエラーが出るのですが、乱数使うときの#include<studlb>みたいな前置きみたいの必要なんですかね?
- 321 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:32:28 ]
- 組み込みスレで聞いたほうがよくないか?
- 322 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:35:50 ]
- エラーの内容くらい読め
- 323 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:36:39 ]
- 釣りだろ
- 324 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:38:06 ]
- >>321
まーIOポートも変数みたいに使えるようになってるからいいんでね? >>320 char outdata = 0; を BYTE outdata = 0; かな? char型じゃないのかね? それか chara outdata; outdata = 0; のように行を分けないといけないとか
- 325 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:38:41 ]
- char outdata;
outdata = 0; こうだorz
- 326 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:48:31 ]
- 釣りじゃないですが
2500(E) ILLEGAL TOKEN: "char" 2225(E) UNDECLARED NAME: "outdata" っていうエラーが出てしまいます。 >>324さんのも試してみたのですが、BYTEでも同じエラーでした。
- 327 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:53:39 ]
- 変数を定義できる場所とできない場所がある。
- 328 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:00:06 ]
- 面倒だからこうするか
P1.DR.BYTE = 0; while(1){ if (P2.DR.BIT.B0==0){ P1.DR.BYTE=P1.DR.BYTE<<1; P1.DR.BYTE++: if (P1.DR.BYTE > 4) P1.DR.BYTE = 0; } } でもP1.DR.BYTEって読み込みできるのかな?
- 329 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:13:44 ]
- {
char outdata = 0; while(1){ if (P2.DR.BIT.B0==0){ P1.DR.BYTE=outdata<<1; outdata++: if (outdata > 4) outdata = 0; } } } さらに面倒だからこうしちゃえば?
- 330 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:22:00 ]
- 日立のSHCか?
- 331 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:26:31 ]
- H8/3664で遊んだときにどこかの会社の
無料の統合環境もこんな感じで組めたな。
- 332 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:29:58 ]
- たぶん制御系スレが一番詳しいはずってか初心者が組み込みに手出すのは無謀じゃないのか
- 333 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:41:17 ]
- >>328-329
>>P1.DR.BYTE++: >>outdata++: 最後の点々はセミコロンじゃないとエラーでるけど:じゃないと意味ないんですかね? ちなみにセミコロンに変えて実行するとLEDは点灯するけど点灯の仕方がランダムみたいになってます;; >>330 日立のH8/3052Fです
- 334 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:47:22 ]
- >>333
あ、ごめんコロンになってたかな? セミコロンに直してください。 ランダムというかウェイトいれないといくらマイコンって言ってもその程度の ロジックならかなり早い点等を繰り返すはず。 なので変な点等になる。
- 335 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:47:50 ]
- 点等orz
点灯ね
- 336 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:50:26 ]
- スイッチ押してる間ずっとP2.DR.BIT.B0が0だったりして。
制御系って適当に作りまくってると火を吹きそうなイメージなんだけど大丈夫なんだろか
- 337 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:51:34 ]
- >>336
多分タクトスイッチが押されるとアースしてるんじゃね?
- 338 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:51:36 ]
- あんまりよく読んでないけどP2.DR.BIT.B0はスイッチの入力か?
上のレスのソースだと、スイッチが0の状態ままだと、 ひたすらインクリメントなりシフトなりするだろうから 一回押すたびに点灯という動作にはならないんじゃないか? おそらく、スイッチがどちらかの状態になったらパパパパとつくだけかね。
- 339 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:52:08 ]
- よくわかんないけど、ボタンを放すまで待つとか、そういう処理はいらないのかな
- 340 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:53:38 ]
- {
char outdata = 0; char count = 0; while(1){ if (count == 0) { if (P2.DR.BIT.B0==0){ P1.DR.BYTE=outdata<<1; outdata++; if (outdata > 4) outdata = 0; count = 255; } } count--; } }
- 341 名前:340 mailto:sage [2008/06/17(火) 20:54:13 ]
- 応急策ね
- 342 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:55:02 ]
- あ、ごめん>>340だめだわ
- 343 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:56:56 ]
- {
char outdata = 0; char count = 0; while(1){ if (count == 0) { if (P2.DR.BIT.B0==0){ P1.DR.BYTE=outdata<<1; outdata++; if (outdata > 4) outdata = 0; count = 255; } } else { count--; } } }
- 344 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:58:38 ]
- 本当はマイコンが持ってるタイマーとか使えばいいんだろうけど
いきなりそれだと敷居があがるので、ベタなカウンターでやってみた。
- 345 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:00:52 ]
- 突然ごめんなさい。
合計 50 49 48 47 46 *** 45 44 43 42 41 *** 40 39 38 37 36 *** 35 34 33 32 31 : 30 29 28 27 26 : 25 24 23 22 21 : 20 19 18 17 16 : 15 14 13 12 11 : 10 9 8 7 6 : 5 4 3 2 1 合計 *** *** *** *** *** を表示するプログラムって一次元配列を使ってどの様に書けますか? おねがいします
- 346 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:01:25 ]
- >>1 >>1
>>1 >>1
- 347 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:01:42 ]
- ずれた・・・すみません;;
- 348 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:19:43 ]
- >>345
できたよ int main() { char s[] = " 合計\n 50 49 48 47 46 ***\n 45 44 43 42 41\ ***\n 40 39 38 37 36 ***\n 35 34 33 32 31 :\n 30 29 28 27 26 :\n 25 24 23 22 21 :\n\ 20 19 18 17 16 :\n 15 14 13 12 11 :\n 10 9 8 7 6 :\n 5 4 3 2 1\n合計 *** *** *** *** ***"; printf("%s", s); return 0; }
- 349 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:22:25 ]
- >>348
ちょっwwww カルーアミルクを噴出しちまったじゃねーかYO!
- 350 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:27:53 ]
- >>338
スイッチの入力です。 >>343さん 試してみました。 スイッチを押す回数 LED 1回 ○●○○ 2回 ○●●○ 3回 ○●○○ 4回 ●○○○ リセットしてやり直すと、また点き方が変わったりしてしまいます。 マイコンがダメなんですかね。 理想は スイッチを押す回数 LED 1回 ○○○● 2回 ○○●● 3回 ○●●● 4回 ●●●● なんですけど
- 351 名前:343 mailto:sage [2008/06/17(火) 21:30:04 ]
- あーLEDってP1.DR.BYTEのどのビットに接続されてるかわかる?
それ確認してなかったよ
- 352 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:36:31 ]
- >>348
ああ驚いた >>348 の前がどこかわからんけど const char table[] = {0x00, 0x01, 0x03, 0x07, 0x0f}: count = 0; count = (++count % 5); P1.DR.BYTES = outtable[count]; テーブルがシンプルだったりして・・・
- 353 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:43:23 ]
- >>351
○○○● P1.DR.BYTE=0x01; ○○●● P1.DR.BYTE=0x03; ○●●● P1.DR.BYTE=0x07; ●●●● P1.DR.BYTE=0xf; こういうことですか?
- 354 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:45:36 ]
- >>353
あー まあそれでOKです。 シフト演算が思惑通りに動いてない気がする(私の勘違いの可能性大) ので>>352のような配列で持ってたほうがいいかも
- 355 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:47:13 ]
- <<345
できたお #include <stdio.h> int main(){ int a,b,z,i,d; int c=50; //1行目から10行目 printf("\t\t\t\t\t\t合計\n"); for(a=0; a<10; a++){ for(b=0; b<5; b++){ i += c; printf("\t%d",c); c--; } printf("\t%d",i); printf("\n"); d += i; } //11行目 printf("合計"); for(a=0; a<5; a++){ for(b=1; b<11; b++){ c += 5*b; } printf("\t%d",c); } printf("\t%d",d); scanf("%d",z); }
- 356 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:48:48 ]
- 間違った>>345だ
- 357 名前:355 mailto:sage [2008/06/17(火) 22:21:10 ]
- 配列使ってないうえに合計がめちゃくちゃだった
スマソ
- 358 名前:355 mailto:sage [2008/06/17(火) 22:28:05 ]
- 書き込むスレ間違えた
>>355-358 はスルーしてくれ
- 359 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:59:31 ]
- >>354
{ char outdata = 0; int sw_cur = 1; int sw_prev = 1; while(1){ sw_cur = P2.DR.BIT.B0; if( !(sw_cur ^ sw_prev) ) continue; sw_prev = sw_cur; if( sw_cur == 0 ){ P1.DR.BYTE = outdata << 1; outdata++; if(outdata > 4) outdata = 0; } } }
- 360 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:16:21 ]
- >>359
ああ、すまん。こうだな。 if( sw_cur == 0 ){ P1.DR.BYTE = (1 << outdata); outdata++; if(outdata > 4) outdata = 0; } >>353のようにしたいなら、たしかH8はI/Oにバッファが あったような気がするから P1.DR.BYTE |= (1 << outdata); すりゃいいんないかな? できなったら、もうひとつ変数用意すりゃいい。
- 361 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:32:25 ]
- >>345
#include <stdio.h> #define TOTAL_NUM 50 #define COL 5 int main(void){ int i, c=TOTAL_NUM, tmpsum=0, colsum[COL]={0}; for(i=0; i<COL; i++){printf("\t");} printf("\t合計\n"); for(; c>0; c--){ printf("\t%4d", c); colsum[(TOTAL_NUM - c) % COL] += c; tmpsum += c; if((c % COL) == 1){ printf("\t%4d\n", tmpsum); tmpsum = 0; } } /*最終行*/ printf("合計"); tmpsum = 0; for(i=0; i<COL; i++){ printf("\t%4d", colsum[i]); tmpsum += colsum[i]; } printf("\t%4d\n", tmpsum); return 0; }
- 362 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:15:45 ]
- 昨日相談したものですが、今日会社からほかのメンバーは皆開発に
行くけどわたしだけテスト要員として来月から配属されることに 決まったそうです。 多分、辞めろっていうことなんでしょうね。 なんで自分だけわかんないのか悔しいけど、頭の構造が違うんで しょうね、こういうのがわかる人は。
- 363 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:17:58 ]
- >>362
おめでとう、死ねばいい富もうよ
- 364 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:20:35 ]
- お前を採用したのは会社なんだからお前を活用する責任も会社にある
黙って居座ってればいいのだ
- 365 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:21:40 ]
- 給料くれるなら別に良いよ
気にスンナ
- 366 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:22:14 ]
- 自信がないっていってたんだし、そのままいきなり開発に
放りこまれるよりは親切なほうだと思うけどなあ。 テストの間に勉強すればいい。
- 367 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:26:02 ]
- テストってデバッグ要員のことだったのか
資格試験でも受けてるのかと思った テスト要員でも雇ってもらえるならいいじゃないか 辞めろって言われるまで居座ってやれ
- 368 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:26:08 ]
- >>362
>>312
- 369 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:33:55 ]
- 会社に行ったらテスト要員になった 辞めろってか
- 370 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:38:53 ]
- 辞めろよ
- 371 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:39:20 ]
- 多分、若干おかしくなりかけていたから講師から人事に相談されてたっぽい
ですね。スレ違いなのでもう終わります。 教えてくれた人、ありがとうございます。 プログラムがちゃんと書ける人って自分のやってることを説明できて親切で すね。ほうんとうにありがとうございました。
- 372 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:46:01 ]
- しかし開発要員に採っておいて使えないのにクビ宣告しないなんて
世の中良心的な会社もあったもんだね つまり当たりを引いたわけだ
- 373 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:10:48 ]
- ワシは単にコネでねじこまれたという説を推すよ
- 374 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:28:24 ]
- 俺が新人の頃は同期に全然できない奴がいて、そのうちのひとりは研修中に辞めたよ
- 375 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:32:03 ]
- まあ開発部隊に入りたいならゆっくりでもいいから勉強することだねー
- 376 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:32:40 ]
- 入らないほうが幸せにはなれるかもな
- 377 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:55:38 ]
- ゆっくりしていってね(AA略)
- 378 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:38:52 ]
- 公務員はプログラミングできるのか?
医者はプログラミングできるのか? 弁護士はプログラミングできるのか?
- 379 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:42:39 ]
- 趣味でプログラムできる人もいるんじゃね?
- 380 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:47:56 ]
- 仕事でそういう二足のわらじを履いてる人は結構いるよ
有名どころだとLZHの作者はお医者さんだったっけ
- 381 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:09:26 ]
- 森田将棋の人も医学部だったね
医師免許はとってないのかな
- 382 名前:デフォルトの名無しさん [2008/06/18(水) 20:40:56 ]
- 文字列の入力を促し、入力。
その文字列の先頭の文字と同じ文字が文字列の中にいくつふくまれるかを求めるプログラム。 先頭の文字も数のうちに入れる。 (ポインタを用いる) お願いします
- 383 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:41:56 ]
- >>382
>>1を100回読め
- 384 名前:デフォルトの名無しさん [2008/06/18(水) 20:43:33 ]
- >>381
時間がないのです。
- 385 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:45:16 ]
- ここはC言語を学ぼうとしている人のためのスレです
情報処理の単位が欲しいだけの人はお帰りください
- 386 名前:デフォルトの名無しさん [2008/06/18(水) 20:46:55 ]
- >>382
答えてあげてくださいな
- 387 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:48:35 ]
- ばればれの自演は逆効果w
- 388 名前:デフォルトの名無しさん [2008/06/18(水) 20:49:45 ]
- 文字列の入力を促し、入力。
その文字列の先頭の文字と同じ文字が文字列の中にいくつふくまれるかを求めるプログラム。 先頭の文字も数のうちに入れる。 (ポインタを用いる)
- 389 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:54:20 ]
- 大学で資格の関係でどうしてもC言語をやらなければなりません
どうしてもわからない問題があるのでどなたか教えてください 問題1 三角形の底辺の幅、あるいは段数(どちらか一つ)を入力すると、逆三角形を表示する。例えば、底辺5あるいは段数3を入力すると ***** *** * となる。 2 下記のように横と縦の累計を計算して表示する。 配列は使わないこと。 3 10個以下の任意のn個(データ数は入力)のデータを入力し、逆順に出力する。 実行結果は奇数と偶数個の例を示すこと。 4 下記のように横と縦の累計を計算して表示する。 ただし、1次元配列を使うこと。 どの問題でもかまいません 本当に困っているので教えてください
- 390 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:55:57 ]
- >>382
#include <stdio.h> int main(void) { /* 入力された文字列を収めるためのcharの配列を宣言 */ /* その他の必要な変数を宣言 */ fputs("please input a string : ", stdout); /* fgets()を使ってcharの配列に入力された文字列を格納 */ /* 文字の数を数えるint変数を0に初期化する */ /* charへのポインタにcharの配列の先頭の文字を指させ、 chraへのポインタが指している先の文字が'\0'でない間、 charへのポインタを1ずつ文字列の先へずらしながら、 以下の処理を繰り返す */; /* もしchraへのポインタが指している先の文字が charの配列の先頭の文字と等しければ */ /* 文字の数を数えるint変数を1増やす */ /* printf()を使って文字の数を数えたint変数の値を表示する */ return 0; }
- 391 名前:デフォルトの名無しさん [2008/06/18(水) 20:55:59 ]
- C言語始めて2ヶ月でこんなもんだいだされました。
文字列の入力を促し、入力。 その文字列の先頭の文字と同じ文字が文字列の中にいくつふくまれるかを求めるプログラム。 先頭の文字も数のうちに入れる。 (ポインタを用いる)
- 392 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:58:04 ]
- >>1を読んでください
それでわからないようならあなたの日本語力と知性は壊滅的なのでおとなしく退学することを勧めます
- 393 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:58:10 ]
- >>389
自分でできないなら資格はありません
- 394 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:58:13 ]
- ああそうですか。
マルチ視ね
- 395 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:06:28 ]
- >>382
#include<stdio.h> #include <stdlib.h> int main() { int *c, count = 1, i; c = (char *)malloc(1); puts("入力どうぞ"); if ((i = getchar()) == EOF) { printf("ちゃんと入力しろ\n"); exit(1); } while ((*c = getchar()) != EOF) { if (i == *c) count++; } printf("%d\n", count); return 0; } できました
- 396 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:08:14 ]
- これはひどい(笑
- 397 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:10:26 ]
- >>382
#include<stdio.h> #include <stdlib.h> int main(void) { int *c, count = 1, i; c = (int *)malloc(1); puts("入力どうぞ"); if ((i = getchar()) == EOF) { printf("ちゃんと入力しろ\n"); exit(1); } while ((*c = getchar()) != EOF) { if (i == *c) count++; } printf("%d こです\n", count); return 0; } すいませんこっちでした
- 398 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:11:32 ]
- どっちも微妙にまちがってんじゃねえか
- 399 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:14:07 ]
- だめだこりゃ
- 400 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:28:26 ]
- 故意だろ
- 401 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:33:36 ]
- >>382
有限長の文字列を総当りで生成して、それをコンパイルしていくプログラムを作れば そのうち自分が作りたかったプログラムが自動生成されるんじゃね?
- 402 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:35:19 ]
- >>401
すっげぇ頭いいなおまえw
- 403 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:36:59 ]
- そして自分が作りたかったプログラムかどうかを
判定するプログラムが要るという話になるんですね分かります
- 404 名前:デフォルトの名無しさん [2008/06/18(水) 21:44:13 ]
- 故意はかんべん
- 405 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:44:54 ]
- なんだこのviper的なノリはwww
- 406 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:28:54 ]
- >>389
どうしても分からないなら資格取れるわけないじゃん なんかおかしくね?
- 407 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:30:56 ]
- またこの流れかよw
>>60へどうぞww
- 408 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:31:54 ]
- 恋はかんべん
- 409 名前:デフォルトの名無しさん [2008/06/18(水) 23:28:46 ]
-
関数を呼び出す時って他の文字に置き換えてから使えたほうがいいんですか? 例えばadd関数を呼び出してif文に入れるときの場合 x=add(n); if(x==1) みたいな感じか if(add(n)==1) どちらがいいんでしょうか? 下のほうでやっていたら友達にそのやり方は見にくくてありえないしプロがそんなことやったら確実に怒られるといわれたんですがどうなんでしょうか?
- 410 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:31:17 ]
- 場面にもよるが、ステップによるデバッグがしづらいかもしれない。>後者
- 411 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:31:44 ]
- いや好きにすればいいと思うよ
ただ、関数の結果を他にも使う予定があるなら上の方が良いんじゃない?
- 412 名前:デフォルトの名無しさん [2008/06/18(水) 23:36:20 ]
- できる限り前者でやったほうがいいんですか?
習ってる途中で後者の方がわかりやすいと思ったのですがプログラムできる友達に言われたので…
- 413 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:39:07 ]
- >>409
その関数が非常に高コストで、その判定部がループの中にあるなら よくないなあとは思うけど、そうでないなら別に気にしない。 その友達がプロで怒られた経験があるのであれば、もう少し細かい 理由を教えてもらえばいいんでない?
- 414 名前:デフォルトの名無しさん [2008/06/18(水) 23:40:21 ]
- ほかにも使うというのは
x=add(n); if(x==1) if(x==2) みたいな感じですか? あとプログラマーみたいな人たちの間ではどちらが主流なんでしょうか?
- 415 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:40:54 ]
- ちなみに、プロになれば周りのコードにあわせるということのほうが大事。
優劣をつけられない記法の差において、俺はこうすべき!って一人で 走ってるなら怒る。
- 416 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:40:58 ]
- >>409
その友達がどの程度のプロなのかはこの際置いておくとして、どちらがいいとか悪いとか言うことはない。 明確なことは、前者は変数を一つ使用し、後者は使用しないということである。 add() の返す値をただ一回しか評価しないのなら、後者のように書いて何の問題もない。 値を何度も評価するのなら、前者のように一時変数に格納する必要があるか、なくても効率がいいかもしれない。 後は単なる好みの問題である。
- 417 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:41:32 ]
- 文脈によるがこの場合はどちらでもいい。
ところでこのお題はホントはこうじゃなかった? x = add(n) ; if (x == 1) と if ((x = add(n)) == 1) の比較。
- 418 名前:デフォルトの名無しさん [2008/06/18(水) 23:42:40 ]
- >>413
友達はプロではありません 普通に大学生なので… 多分趣味でやってる程度だと思います。 どこで習ったかはわかりませんが
- 419 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:43:35 ]
- 値を使い回したい場合に変数に入れるのは当然として、
そうでない場合はメリットとデメリットがあるので好きにすればいいと思うよ。 ○ メリット ・ 関数呼び出しが長い場合、読みやすくなる ・ デバッグ時に戻り値が何だったか分かりやすい ○ デメリット ・ その場でしか使わないような無駄な変数が広いスコープ上に現れてしまう場合もある
- 420 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:44:20 ]
- 慣用句的なもの
if ((fp = fopen(〜)) == NULL) Is系のメソッドに代表される真偽返却メソッド if (isalnum(〜)) これ以外は大抵分けて書くようにしてるね。 多少冗長に思えても、他の人が読みやすいか、また、 誤解を与えにくい書き方になっているか、それを重視してる。
- 421 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:55:16 ]
- 誤解を与えにくいように、というのはあまりメジャーではない二項演算子を
使う時などに、冗長ではあるが、括弧をつけて明示するようなことね。 ちゃんと知ってればその括弧が無くても正しく動作する事は理解できるが、 うろ覚えの人でも勘違いを起こさない。 もしかしたら研修明けの新人がメンテするかもしれないし。
|

|