1 名前:デフォルトの名無しさん [2012/01/13(金) 22:05:06.14 ] C言語の*入門者*向け解説スレッドです。 ★前スレ C言語なら俺に聞け(入門編)Part 94 toro.2ch.net/test/read.cgi/tech/1324648274/ ★過去スレ 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 ★教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 155代目 toro.2ch.net/test/read.cgi/tech/1325685876/ ★C++言語については避けてください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 長くなりそうなコードはcodepadに貼り付けてもいいでしょう codepad.org/
4 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 10:53:25.48 ] int main() { char* str1[10]; //定義しただけで初期化していない。つまり文字列は格納されていない。 func1( &str ); } void func1( char* str ) { char* inStr; str = "test data"; return ; } 質問なんだが。 なぜ、きちんとstrに文字データが格納されるんだろうか?
5 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:01:18.98 ] タブスペースで書き込んじまった int main() { char* str1[10]; //定義しただけで初期化していない。つまり文字列は格納されていない。 func1( &str ); } void func1( char* str ) { char* inStr = "test"; inStr = anotherFunc() ; str = inStr + 1 ; return ; } 質問なんだが。 なぜ、きちんとstrに文字データが格納されるんだろうか? main 関数でstr のポインタ領域は確保されているが、その参照先の文字列領域は未確保。 func1にとんだ先では、自動変数inStr に文字列が格納されており、そのポインタを渡すことでstrの中身に具体的なポインタが入る。 func1内では、str のポインタの指し示す先は自動変数inStrと同じポインタであり、参照できて当然。 ところが、return すると、自動変数inStr の内容はスタックを戻すことにより開放されている。 return された後にmainにてstrを参照しても全く問題ないし、キチンと値が格納されている。 値が参照できるのは、たまたまナノか? この操作は問題ない?
6 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:03:11.76 ] まずはコンパイルが通るか自分で確認してから書き込め
7 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:10:20.15 ] 最初のスタックへのアドレスがまずさ迷い人に成って5ではfunc1のリテラルも全く無意味になって更にアナザの返値の先頭バイトまで無意味に成ってる。
8 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:16:53.05 ] >>6 あいよ。 int main(){ char* str[10]; //定義しただけで初期化していない。つまり文字列は格納されていない。 func1( str ); } void func1(char* str[] ) { char* inStr; inStr = anotherFunc() ; str[1] = inStr + 1 ; return ; } char* anotherFunc(){ return (char*)"test"; }
9 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:17:18.80 ] >int main() { > char* str1[10]; //定義しただけで初期化していない。つまり文字列は格納されていない。 > > func1( &str ); >} 変数名ちゃうやん。 >void func1( char* str ) { 型ちゃうやん。(char ** → char *)
10 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:18:37.34 ] >>7 >更にアナザの返値の先頭バイトまで無意味に成ってる 戻り値として、「est」が欲しいのでそうなってる。
11 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:19:33.12 ] str[1]="test"+1;
12 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:27:47.89 ] >>11 anotherFunc の return は、例えば「Content-Type: application/x-javascript」 その中で「application/x-javascript」を取り出したい。
13 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:34:46.94 ] char* anotherFunc(){ return (char*)"test"; } がもし、 char* anotherFunc(){ return (const static char*)"test"; } なら、BSSなり、テキスト領域なりに格納されると思う。 テキスト領域かな? でも char* anotherFunc(){ ・・・ 何がし処理 ・・・ return buf ; //bufには「Content-Type: application/x-javascript」文字列が格納 } であるならコンパイルエラー(local address云々) ここまでなら分かる。
14 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:59:47.56 ] "test"はプログラムをメモリ上に読み込んだ時点で確保されてる。 開放されるのはプログラム終了時。 return (char*)"test"; も char *inStr = "test"; return inStr; も、書き込みをしなければ問題ない。 但し char inStr[] = "test"; return inStr; は駄目。
15 名前:o mailto:sage [2012/01/14(土) 12:00:08.37 ] ところが、>>8 における inStr はfunc1のスタックに積まれる。 いくら、str[1]にポインタを代入したところで、参照しているのはfunc1のスタック上にあるinStrのアドレスである。 func1がリターンしてしまうと、スタックは破棄( ただ単にゼロクリアしていないだけ)な気がする。 結局うまく言っているように見えるのはスタックが破壊されていないから?かな、と。
16 名前:o mailto:sage [2012/01/14(土) 12:05:30.40 ] >>14 返信ありがと。 str[1]に書き込んでmainで参照するにはどうするのが良い?
17 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:08:12.05 ] ならないよ。 >8 の inStrはいわばメモ書き。 "test"の場所が書かれてるだけ。 str[1]に内容をコピー(1足してるけど)した後に消える。 住所書かれてるメモ紙を捨てたらその住所が消滅するわけじゃあるまい?
18 名前:o mailto:sage [2012/01/14(土) 12:10:32.04 ] あ、 念のため・・・ char* str[10] は、10個の不定長の文字列を格納する10個のポインタです。 最終目的は、sub関数から不定長の文字列を設定したい、と言うことです。
19 名前:o mailto:sage [2012/01/14(土) 12:14:47.41 ] >>17 最終的に聞きたいのは、スタティックなリテラル値ではなく、ダイナミックな変数の値です。 つまり、 inStrの具体的な値を、str[1]に入れ込むためにはどうしたらよいのか?と言うことです。
20 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:14:47.84 ] 【話題】女子にイラッとされる「理系男子特有の話し方」9パターン★2 【1】「要するに」と他人の話もまとめてしまう 【2】「違う」と小さな間違いでもいちいち訂正する 【3】「化学反応だから」などロマンチックなことにも根拠を述べる 【4】「仮に」など自分の専門分野でたとえたがる 【5】「具体的には?」と曖昧な表現でなく数字を知りたがる 【6】「データがあるから」と他人の意見を受け入れない 【7】「わかる?」と難しい説明の後で上から目線の確認をする 【8】「ありえない」など決めつけて断言する 【9】「だから?」とオチを先に聞きたがる 要するに馬鹿しか女子とはお話出来ないということだな
21 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:27:51.39 ] 1, 2, 7, 8は理系文系関係なく糞爺にも当てはまるw
22 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:35:19.42 ] >19 >8 の >str[1] = inStr + 1 ; でいいんじゃないの?
23 名前:o mailto:sage [2012/01/14(土) 12:40:46.42 ] >>22 うむむ。 分からないのは、 「inStr+1」で指定されたアドレスは、func1がreturnされると開放されるメモリアドレスじゃないですか? そうすると、そのアドレスを入れ込んだstr[1]の内容(=アドレス)も開放されてしかるべきアドレスじゃないかと?
24 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:43:49.29 ] 17を100回読め
25 名前:o mailto:sage [2012/01/14(土) 12:43:50.36 ] コンパイルエラーでできないんだけれども、こんなことをやりたいんだと言うことです。 *( str[1] ) = *( inStr + 1) ;
26 名前:o mailto:sage [2012/01/14(土) 12:46:49.28 ] >>24 20回読みましたデス。足りないかな? スタティックなリテラル値の話ではなく、自動変数に格納されている値を戻したいと言うことですが・・・ 戻すとき、リターン値はエラーコードで使用されていますのでリターンで戻すのは不可です。 なのでfunc1にポインタで渡して、その内容を更新したい、ということです。 もう20回読んでみます。
27 名前:o mailto:sage [2012/01/14(土) 12:51:23.74 ] 後だしと言われるのを避けるために、実際のコードの説明をしますが、 実際にはfunc1 には構造体を渡しています。 正確には構造体のアドレスを渡してます。 構造体は typedef struct s{ char* field[MaxHeaderNum]; char* attrib[MaxHeaderNum]; }S;
28 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:53:18.74 ] こうか? str[1] = (char *)malloc(strlen(inStr + 1)+1) ; if(!str[1]){ /*エラー処理*/ } strcpy( str[1] , inStr + 1);
29 名前:o mailto:sage [2012/01/14(土) 13:01:30.86 ] >>28 すんばらしい。 そういうことです。 はじめはそのように書いていたのですが、 非常に頻繁に呼ばれることと、 mainのなかでいつfreeすればよいのかが不定であることや、 関数を変にまたがってしまう、 などなどの複雑な問題により諦めてしまいました。 で、コードをシンプルにする方法でのアプローチでコーディングしなおしてます。 ヒープを使わなければ無利なのでしょうか?
30 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 13:05:33.73 ] とりあえず char* str[10] をゼロクリアしてから使え。 あとは終了時とmallocする前にNULLで無ければfreeするような処理書いとけばいいんじゃね?
31 名前:o mailto:sage [2012/01/14(土) 13:16:46.64 ] >>30 だんけ ってことは、>>8 はたまたまうまく行っているだけってことかな?
32 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 13:48:33.33 ] 長引いてるな… >スタティックなリテラル値の話ではなく、自動変数に格納されている値を戻したいと言うことですが・・・ 自動変数に〜というなら、malloc でヒープに領域を確保して、外部で解放するしかない。 自動で解放して欲しいのなら、C++ に行ってデストラクタなり std::string なりに頼る。 >>8 はスタティックなリテラルのポインタを返してるので、たまたまではなく正常に動作する。ただし貴方の求めているものではない。
33 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 14:04:28.58 ] メールとかの通信関係の処理か? クラス化の設計とか楽しそうだなぁ。
34 名前:o mailto:sage [2012/01/14(土) 16:19:51.99 ] >>32 ありがと。 参考になります。 >>33 bingo HTTPだけど。 移植性を考えてて、ANSI-Cベースで書いているところが、またそれはそれで、制限が多いw
35 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 16:39:47.31 ] >>15 の > 参照しているのはfunc1のスタック上にあるinStrのアドレスである。 これが間違えていることには気づいているのだろうか inStrのアドレスは&inStrな。
36 名前:o mailto:sage [2012/01/14(土) 16:41:00.07 ] >>35 宣言が、 char* inStr だけれども?
37 名前:デフォルトの名無しさん [2012/01/14(土) 16:44:53.84 ] 反日ネット工作員 朝日新聞社→社員約300人 民主党とその取り巻きの資金が入った反日工作会社→数社約450人 朝日新聞の社員は捕まった49歳の編集者を含め新聞記事を書く合間に2chを荒らしている程度とみられているが 民主党が用意した反日工作会社はほぼ24時間体制で工作を行っている 工作範囲は民主党が予め工作費を流している2ch、ニコニコ動画を中心にyoutube、個人のブログなどである。
38 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 17:33:17.30 ] >19 >inStrの具体的な値を、str[1]に入れ込むためにはどうしたらよいのか?と言うことです。 「inStrの具体的な値」と言ったらinStrに代入されてる"test"のアドレス値のことだろ。 それが >28 が正解というなら 「inStrのポインタが示す先の文字列をコピーして、str[1]に入れ込むためにはどうしたらよいのか?」 と言うべきだろ。 まぁ、そう言えるぐらい理解できてるなら質問もしてこないだろうが。
39 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 17:53:22.36 ] >>36 だから?
40 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 18:06:19.42 ] sizeof(char *) == sizeof(int) なら void func1(char* str[] ) { int inStr; inStr = (int)anotherFunc() ; str[1] = (char *)(inStr + sizeof(char)) ; return ; } としても同じ結果なんだよ。
41 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 18:29:39.07 ] intptr_t 使えよ
42 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 18:47:25.84 ] >>40 日記ならチラシに
43 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 19:56:46.82 ] 別名便所の壁の2chがチラシより上とな!?
44 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 00:10:00.07 ] 便所の壁はみんなの目に触れるからな
45 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 00:33:43.37 ] 都内じゃ1500枚ほどチラシが貼られたらしいな。
46 名前:o mailto:sage [2012/01/15(日) 07:51:27.88 ] >>38 >「inStrのポインタが示す先の文字列をコピーして、str[1]に入れ込むためにはどうしたらよいのか?」 コピーして の部分が全く違う。 コピーしてよいのなら、解決法はいくつでもある。
47 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 10:35:38.71 ] >46 >28 >strcpy( str[1] , inStr + 1); コピーしてるやん。 違うというなら正しいソース書いてみてよ。
48 名前:o mailto:sage [2012/01/15(日) 11:21:44.71 ] >>47 多分、言いたいことの1/1000も伝わっていないんだと思う。 バッファから下ろしてきたデータは一時的にしかるべき場所に「コピーして」配置される。 俺の言っているのは、 そのしかるべき場所のポインタを渡すだけにしたいんだが、何とかならんのんかの? という質問だが、 君は「さらに」、コピーしたらええやん、 と言っている。
49 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 11:29:50.94 ] その「しかるべき場所」はグローバルか何かで確保されてたり消える心配がないのであれば そのポインタを渡すだけでいいじゃん
50 名前:o mailto:sage [2012/01/15(日) 11:33:02.67 ] ところで、そもそも、コピーができるのか?という問題も、ある。 構造体は typedef struct s{ char* field[MaxHeaderNum]; char* attrib[MaxHeaderNum]; }S; ストリームデータがこのようになっているとき、(¥区切り文字) aaaaaaa\bbbbbbbbbb\cccc\dd\eeeeeeeeeee\ ↑ ↑ ↑ ↑ ↑ attrib[1] attrib[2] attrib[3] attrib[4] attrib[5] のポインタが入る。 コピーできるん????? コピーじゃなくて、もう一度strstrあたりできりなおさんとまずくない????? ま、さくっとコピーできるんだったら、謝る
51 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 11:35:48.32 ] 何を何にコピーすることを言ってるのか? 区切り文字が'\'というのは例として挙げただけ?
52 名前:o mailto:sage [2012/01/15(日) 11:38:53.01 ] >>49 コーディング規約により、グローバル宣言ができないんですヨ ・局所的にしか利用されず ・他スレッドからの参照に問題あり ・アクセスコントロールに関与する ・マルチスレッド対応の場合 などなど。
53 名前:o mailto:sage [2012/01/15(日) 11:39:23.14 ] >>51 そ。 \r\n = ¥ としただけ
54 名前:デフォルトの名無しさん [2012/01/15(日) 12:12:25.05 ] 仕事上のコーディング方法を2chで質問かよwww
55 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:26:55.36 ] みんなすげーな オレには何を言いたいのか全然分からん
56 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:28:45.50 ] 民主党が惨敗した参院選直前の政党支持率(2010年7月11日投票) FNN 2010年7月4日 民主党 29.9% 自民党 16.3% ttp://sankei.jp.msn.com/politics/policy/100706/plc1007060530003-n1.htm ttp://www.fnn-news.com/archives/yoron/inquiry100705.html マスコミに、ダマされるなよ。
57 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:30:22.44 ] この子の関わったソフトが載った製品は買いたくないと思ってしまうな @>何を何にコピーすることを言ってるのか? への回答は? A「しかるべき領域」はスタック上?ヒープ上?それ以外?スタック上ならほぼコピーするしかない B「しかるべき領域」は書き換えてもよい?書き換えたらダメなのであればさらにコピーするしかない
58 名前:o mailto:sage [2012/01/15(日) 12:30:27.97 ] >>54 チートツールなんだが、なぜに仕事だと思うのかなぁwww
59 名前:o mailto:sage [2012/01/15(日) 12:34:36.28 ] >>57 >この子の関わったソフトが載った製品は買いたくないと思ってしまうな 売り出されたら驚いちゃうんちゃう? >@>何を何にコピーすることを言ってるのか? への回答は? 機種依存文字はどうかと思うけど。 コピーと言われたから、それを使っただけ。 >A「しかるべき領域」はスタック上?ヒープ上?それ以外?スタック上ならほぼコピーするしかない スタック上。 main関数のスタックに積んでいればOKでしょ? 違うの??? >B「しかるべき領域」は書き換えてもよい?書き換えたらダメなのであればさらにコピーするしかない 書き換えても良いの意味が分からん。 書き換えたらダメってことは、参照もダメってこと??? 意味が不明です。
60 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:35:48.48 ] >>59 お前が意味不明だな。 手繰るの面倒だからここでもう一度整理して新規に質問しなおせ。
61 名前:o mailto:sage [2012/01/15(日) 12:50:30.70 ] >>60 君のおかげで整理できたよ。 聞きたい内容は、 呼び出し先の呼び出し先から、大元のスタックにある文字列を直接変更できるか? ってこったな。 孫関数には、ポインタのポインタなら渡せる、と言う条件でな。
62 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:52:31.54 ] >>61 その質問の答えは、できる、だ。
63 名前:o mailto:sage [2012/01/15(日) 12:53:35.05 ] 細かい条件を列挙する。 ・データはストリームで落とされる。 ・孫関数にはポインタのポインタが渡される ・文字列の長さは不定長 ・区切り文字がある文字列 ・ストリームは、孫関数で処理される この条件で親のスタックに詰まれた文字列を孫から操作できるかどうか? んだな。
64 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:54:05.71 ] ちゃんと質問できるようになるまで何年もかかりそうだな 義務教育の間何やってたんだか
65 名前:o mailto:sage [2012/01/15(日) 12:55:10.92 ] おっと。 追加があった ・データはストリームで落とされる。 ・孫関数にはポインタのポインタが渡される ・文字列の長さは不定長 ・区切り文字がある文字列 ・ストリームは、孫関数で処理される ・staticは使えない
66 名前:o mailto:sage [2012/01/15(日) 12:56:52.04 ] >>64 まあ、そんなことより、 >>52 が仕事上のタスクだと思う方が驚きだけど。 指示されないと何もできないんかなぁ。 もしくは何でもグローバル宣言すりゃいいと思っているのかなぁ。 普通に個人のコーディング規約に含まれる常識的な内容だと思っていたんだが、これも違うのか?
67 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:00:25.15 ] >>66 >>65 を読む限りお前の考えたものではないだろうし バカみたいな社内用語?で伝わると思ってるのがおかしい
68 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:00:50.73 ] >>65 わけのわからない条件は関係なく、元のスタック上の文字列のポインタが わかるなら当然できるだろ。 なんでできないとか思うんだろ。 ちなみに、スタックとかストリームとか、Cには関係ないから。
69 名前:o mailto:sage [2012/01/15(日) 13:12:04.29 ] >>68 ストリームデータは軽く64kを超えるんだが、 mainで char streamData[131072] とか宣言しちゃうの? スマートじゃない気がするけどw 後々func1がスレッドで動くようになるんだし、mainがdllmainになるんだが、 どう見てもそりゃスマートとは言いがたいと思うんだけど、どうだろうか?
70 名前:o mailto:sage [2012/01/15(日) 13:13:45.46 ] >>67 こちとら、素人だし、 チートツールの作成を企業が許可するとも思えんし、 >普通に個人のコーディング規約に含まれる常識的な内容 だと思うんだけど、違うのか?
71 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:16:07.60 ] 整理して質問しろと言っただろ。 > 呼び出し先の呼び出し先から、大元のスタックにある文字列を直接変更できるか? できる。 もう一度だけチャンスをやる。 整理して1レスで質問しろ。
72 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:16:59.99 ] >>61 できたよcodepad.org/Q33HWUEa
73 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:18:36.84 ] >>70 チートツール作るなんてことを言ってるバカに協力しねーよ
74 名前:o mailto:sage [2012/01/15(日) 13:19:03.47 ] >>71 >できる。 こういうことだろ? >>69
75 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:20:06.56 ] どういうことだよ。 お前、頭腐ってるわ。
76 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:21:02.62 ] o君の考えるスタックとは何を指しているのかね?
77 名前:o mailto:sage [2012/01/15(日) 13:21:07.96 ] >>72 f2を実行しないと、str[]の大きさが分からないんだけど、それでも大丈夫ってこと? 少なくとも512byteは確実に超えるんだけど。
78 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:22:09.28 ] ここまで日本語が通じないのも珍しいな。 いや、そうでもないか。
79 名前:o mailto:sage [2012/01/15(日) 13:22:30.21 ] >>75 >>69 以外に方法があるなら、丁重に謝るよ。
80 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:24:14.16 ] >>79 お前の思い込みなんて人にはわからないんだよ。 だからお前のことを何も知らない普通の人間にわかるように整理して 1レスにまとめて質問してみろよ。
81 名前:o mailto:sage [2012/01/15(日) 13:24:59.66 ] >>76 関数が呼び出されたことにより確保される、SP、ReturnAddressと自動変数のかまたり
82 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:26:10.30 ] スタックのサイズが心配ならスタックを拡張するなりヒープを使うなり すればいいだけだろ。
83 名前:o mailto:sage [2012/01/15(日) 13:27:07.83 ] >>80 あいよ。 聞きたい内容は、 呼び出し先の呼び出し先から、大元のスタックにある文字列を直接変更できるか? 条件は次の通り ・データはストリームで落とされる。 ・孫関数にはポインタのポインタが渡される ・文字列の長さは不定長 ・区切り文字がある文字列 ・ストリームは、孫関数で処理される ・staticは使えない
84 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:28:38.77 ] だから、ストリームて何だよ。 思い込みハゲしいなまったく。
85 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:29:17.88 ] 文字列を直接変更できるかどうかに長さや区切り文字は関係ないだろ。
86 名前:o mailto:sage [2012/01/15(日) 13:31:05.93 ] >>84 不定長のデータ、でよいよ。
87 名前:o mailto:sage [2012/01/15(日) 13:32:15.62 ] >>85 >>72 のコードで、512byteのデータをどうやって変更するの?
88 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:33:29.91 ] またか。 その512byteのデータと>>72 がどう関係するんだよ。
89 名前:o mailto:sage [2012/01/15(日) 13:36:36.09 ] >>88 void f2(char* str){ str[500]='\r'; str[501]='\n'; } ができるんだったら、何も言わんよ
90 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:37:19.50 ] >>89 じゃぁ何も言うな。
91 名前:o mailto:sage [2012/01/15(日) 13:38:41.03 ] ああ、 void f2(char* str){ str[131070]='\r'; str[131071]='\n'; } ができるんだったら何も言わんよwww
92 名前:o mailto:sage [2012/01/15(日) 13:38:58.70 ] >>90 エラーが出るんですけどwww
93 名前:o mailto:sage [2012/01/15(日) 13:40:11.55 ] そりゃそうだわな。 str[10] と宣言しているのに、 str[131070]にアクセスしているんだもんね。 >>90 は、そんなことも分からないの?
94 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:42:43.17 ] 何も言うなと言ってるだろ。
95 名前:o mailto:sage [2012/01/15(日) 13:47:33.40 ] >>94 君は、回答する前に、こっちを読んで勉強した方が良いと思うよ。 www.kumei.ne.jp/c_lang/intro/no_07.htm 宣言した数より大きな領域にアクセスさせるのは危険だよ。 書き込みなんかしたら、スタック壊しちゃうからね。 気をつけたほうが良いよ。
96 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:48:48.34 ] また、えらく拗らせちゃってるんだね。 スタックのサイズが心配なら512KBをヒープに確保してそれを渡せばいいだけだろ。 まわりの人も大変だろうな。
97 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:49:32.86 ] 無能な働き者ってこの質問主の様な奴の事なんだろうな。
98 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:50:59.22 ] >>95 >宣言した数より大きな領域にアクセスさせるのは危険だよ。 常識で分かることは言う必要がない。
99 名前:デフォルトの名無しさん [2012/01/15(日) 13:53:40.36 ] 無能な働き者。これは処刑するしかない。
100 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:56:50.88 ] ちょっとよくわからないのが 大元がmainだとして 「大元のスタックにある文字列」って >mainで >char streamData[131072] 以外にどうやって定義するの?
101 名前:o mailto:sage [2012/01/15(日) 13:56:56.89 ] >>96 ヒープに確保する方法は否定していないよ。
102 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:59:35.77 ] >>100 質問もできないくらいのレベルなんだから察してやれ。
103 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:00:57.52 ] >>100 allocaで確保するとかw
104 名前:o mailto:sage [2012/01/15(日) 14:04:12.54 ] >>103 良いね!
105 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:07:11.53 ] どこまでアホ? alloca使ったところでスタックは拡張されない。 って、まぁ釣りだろうけどw
106 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:07:51.54 ] >>95 ストリームとやらの範囲内ならいくらでもアクセスできるでしょ。 例は10だったけど、そのストリームはもっと大きいんでしょ
107 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:08:49.44 ] >>104 allocaってスタックだよ。 ってかヒープを避ける理由がわからない。
108 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:10:33.82 ] char streamData[131072] でも char *streamData = (char*)alloca(131072); でもいいけど、 結局>>72 で問題なくね? allocaってのは初めて知ったわ
109 名前:o mailto:sage [2012/01/15(日) 14:12:26.25 ] >>107 直近の問題は、何時freeするのかが不定なことだけど、 本質的には、スレッドで動かしたいから、別スレッドからのアクセスをさせないために自動変数での処理をさせたい と言うのが本音。
110 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:13:45.65 ] スタックはスレッドで共通だが。
111 名前:o mailto:sage [2012/01/15(日) 14:14:14.13 ] >>108 どこからスレッドとして走らせるかだけど、 スレッドが100走ると末恐ろしい
112 名前:o mailto:sage [2012/01/15(日) 14:14:31.03 ] >>110 なの????
113 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:14:33.82 ] 別スレッドからのアクセス性についてな。
114 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:16:58.71 ] その点ではヒープもスタックも同じ。 普通、mallocもfreeもスレッドセーフだろ。
115 名前:o mailto:sage [2012/01/15(日) 14:17:20.97 ] >>113 だったら、ストリームデータを、他のスレッドが書き換えるって事が可能というか、 別のスレッドがストリームデータを壊すんだよね。 それじゃ、NGじゃね?
116 名前:o mailto:sage [2012/01/15(日) 14:17:48.14 ] >>114 だから、自動変数で、と・・・・
117 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:18:24.71 ] 最初に立ち戻るんだけど、ストリームは別スレッドから変更されうるんじゃないのかって気がするんだけど。 もしそうならポインタ保持じゃだめだけど、それは大丈夫? で、そのストリームが読み取り専用じゃないかつ、デリミタのような0バイトよりも大きな文字列があるのなら、strtokの要領で対応できないか?
118 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:18:55.57 ] >>116 自動変数=スタックと仮定すると>>114 だと言ってるだろ。
119 名前:o mailto:sage [2012/01/15(日) 14:19:40.12 ] >>114 すまん、間違えた。 ヒープでもスレッドセーフなのか? ちょいと調べてみる
120 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:20:01.08 ] >>115 ポインタの先が別スレッドが確保したスタック領域ならそこを壊す。 つか、それはバグと言うんだがな。
121 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:20:52.74 ] >>119 お前はスレッドセーフという単語を理解してないに3億ペリカ。 いや、スレッドも理解してないに10億カノッサ。
122 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:21:39.04 ] 「ヒープでもスレッドセーフなのか?」 これなんぞ。 根本的な知識が圧倒的に足りないといわざるを得ない。 チートツールの前に初心者としてまっとうに勉強しなさいな。
123 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:25:52.76 ] mallocがスレッドセーフか? というのならそれはライブラリ次第。
124 名前:o mailto:sage [2012/01/15(日) 14:26:40.81 ] >>122 ヒープがスレッドセーフなんて聞いたことがない。 ライブラリが対応してスレッドセーフにしているケースなら知っているけど??? 君の知っているのはどんなシステム系なんだ?
125 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:26:48.56 ] だから普通と言ってるだろ。 スレッド使う環境でスレッドセーフじゃない設定をわざわざ使わない限りな。
126 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:27:16.83 ] >>125 は>>123 な。 >>124 3億カノッサよこせ。
127 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:28:51.62 ] >>124 関数がリエントラント可能かどうかについてその言葉を使うのであって、スタックやヒープに対して使うもんじゃないよ
128 名前:o mailto:sage [2012/01/15(日) 14:29:42.29 ] どう見ても、 >>122 がダブルパンチ食らっているようにしか見えないけど?
129 名前:123 mailto:sage [2012/01/15(日) 14:30:33.99 ] >>125 まったくそのとおりだ。ちょっと上のスレもよまんで書いてしまった^^;
130 名前:デフォルトの名無しさん [2012/01/15(日) 14:30:34.75 ] すごいなぁ、お前。
131 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:30:53.25 ] もちろん、>>130 は>>128 な。
132 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:31:21.48 ] なんだこれ。恥ずかしくなって暴れ始めたのか
133 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:33:56.98 ] >>132 いや、多分素だと思うぞ。
134 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:33:59.84 ] >>124 もしかして「ヒープ領域からメモリを確保すること」の略として「ヒープ」っていってんの?
135 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:39:16.96 ] …静かになったぞ。何かを調べてんのか?
136 名前:o mailto:sage [2012/01/15(日) 14:41:13.91 ] >>133 素だよ。素人だっちゅってんだろ。 ちなみに、>>135 うんこ位させろよ。
137 名前:o mailto:sage [2012/01/15(日) 14:44:26.42 ] で、 >>52 って >普通に個人のコーディング規約に含まれる常識的な内容 だと思うんだけど、違うのか?
138 名前:o mailto:sage [2012/01/15(日) 14:45:49.46 ] >>134 その、 「ヒープ領域からメモリを確保すること」 の意味が分からんけど?
139 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:48:24.79 ] 素かよ。もっとやりたいことを具体的に示せ。 大体わかってるつもりでレスをしているんだが、訳わからんほうに話をずらされてる感じがする。 あと、>>127 は大体あってるけど少し違う。 リエントラント可能であることはスレッドセーフであることを保障するが、逆はそうではない。
140 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:49:18.43 ] >>136 素。 ほんと、日本語も不自由なんだな。 恥ずかしくて素人じゃないって言えないだけじゃないのか?
141 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:52:26.93 ] >>138 それをわからずにヒープだスタックだ、あまつさえ「ヒープでもスレッドセーフなのか?」なんてことを言うのか。 逆に「スタックはスレッドセーフ」だと思っているってことだと思うんだけど、これがどういうことなのか説明してくれ。
142 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:52:32.31 ] >>139 そう思ってはじめたのが>>80 なんだが。
143 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:53:39.55 ] 違うな。>>71 だ。
144 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:54:09.40 ] お?>>60 じゃないのか?
145 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:54:17.21 ] >>137 >グローバル宣言ができない 個人の開発で完全に禁止する利点があまりない。 グローバル変数をできるだけしないってのはまあ誰でも考える。 個人でコーディング規約を決めていたとして、 それに違反することを「コーディング規約により・・できない」って言い方をする人はあまりいない。 俺の方針に反するだとか、好みじゃないとか、そのレベルでしょ。
146 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:55:24.44 ] 素人じゃないことを隠したい素人さん。
147 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:55:33.69 ] 俺も文書がおかしいなw ×グローバル変数をできるだけしない ○グローバル変数をできるだけ使わない
148 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:57:21.78 ] >>142 >>8 と>>83 でエスパー大会ってことか… 加えて、>>115 でストリームデータ(mainのstrか?)は別スレッドから変更されうる、と。 ストリームデータを変更されたあとでも使用したいのなら、 strへのアクセス処理を「スレッドセーフ」にして、 別領域(要件を満たせるならスタックでもヒープでも)にコピーするしか方法はないよな。
149 名前:o mailto:sage [2012/01/15(日) 14:57:25.09 ] >>141 スレッドに詰まれたスタックならスレッドセーフだろ。
150 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:59:49.89 ] >>149 すべてのスレッドはメモリ空間を共有する。 基本だ。
151 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:00:31.29 ] 「スレッドに詰まれたスタック」って、何?
152 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:00:48.32 ] 先にスレッドセーフの国語的な用例を調べて意味を理解してくれ ×スタックはスレッドセーフ ○スレッドセーフな関数、スレッドセーフなコード など
153 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:01:26.54 ] スタック領域がスレッドごとに確保されるってことを言いたいんだと。
154 名前:o mailto:sage [2012/01/15(日) 15:01:33.54 ] >>146 つまり、お前涙目ってことかな。 仕方ないだろ。俺が素人なんだから。 なんか同じような内容を別のところでも書いた気がするw
155 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:01:43.06 ] >>149 意識をあわせてレスをしようとしてみる。 スレッドのスタックにあるポインタの指すアドレスを複数のスレッドが保持している場合、 そのアドレスはスレッドセーフじゃない (かなりひどい文だが…
156 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:02:06.27 ] >>154 素人を自覚してるならまずその態度を治せ。
157 名前:o mailto:sage [2012/01/15(日) 15:02:28.96 ] >>153 あんがと
158 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:03:20.08 ] で、そのスタック領域はすべてのスレッドが共有するメモリ空間にあるわけだが、 そのあたりを1_も理解してないんだろう。
159 名前:o mailto:sage [2012/01/15(日) 15:03:27.27 ] >>156 回答している人の中に、素人が混じってるから仕方ないと思うよw
160 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:03:46.60 ] >>156 それは大抵の場合、やりたいことを引き出すことよりも難しいよ
161 名前:o mailto:sage [2012/01/15(日) 15:04:05.63 ] >>158 プロセスって言葉を出させたいってこと?
162 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:04:33.23 ] >>161 そんなことはどうでもいいから>>148
163 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:05:41.01 ] >>161 いや。 お前がスレッドすら1_も理解してないことを自覚させたいだけ。
164 名前:o mailto:sage [2012/01/15(日) 15:10:42.02 ] >>162 スマートな方法じゃないけど、「スタッククラス」で対応するのも手かもよ。 コピーするだけが能じゃない気がするけど???
165 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:11:26.00 ] お前は何を言っているんだ。
166 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:12:22.49 ] C++なの?
167 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:13:26.78 ] その「スタッククラス」ではコピーが必要ないの?初心者の俺にkwsk
168 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:13:44.46 ] まだ「スタックはスレッドセーフ」という妄想に取り付かれてるようだな。
169 名前:o mailto:sage [2012/01/15(日) 15:14:43.67 ] >>166 ANSI-Cベースなので、クラスは使わない方向で行きたいが、 コーディングはCDTでやってる。
170 名前: ◆QZaw55cn4c mailto:sage [2012/01/15(日) 15:15:06.19 ] >>110 いいえ、スタックとプログラムカウンタはスタックごとに別。
171 名前:o mailto:sage [2012/01/15(日) 15:15:31.34 ] >>168 そのスタックの話をしているわけじゃないのは分かっているよね?
172 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:16:33.51 ] お、QZにちょうどいい相手じゃないか? ちょっとどんな展開になるのか、他の人はだまってみてようよw
173 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:16:56.99 ] >>164 それで実装したコードを挙げてくれ。そうすればもっとスマートな解決方法を出すことができるかもしれない。
174 名前:o mailto:sage [2012/01/15(日) 15:17:00.12 ] >>172 そうだな。 素人が1人減るしねw
175 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:17:27.54 ] QZの意見を聞きたくなる場面なんてあまりないからなw ぜひ回答してやってくださいQZさん
176 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:17:43.90 ] >>172 ああ、うん。珍しくQZの自演暴れじゃないものが見られるかもしれんね
177 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:18:02.46 ] 実はo=QZという素晴らしいオチ!
178 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:21:33.63 ] 175 名前:あぼ〜ん[NGWord:QZ] 投稿日:あぼ〜ん 176 名前:あぼ〜ん[NGWord:QZ] 投稿日:あぼ〜ん 177 名前:あぼ〜ん[NGWord:QZ] 投稿日:あぼ〜ん
179 名前:o mailto:sage [2012/01/15(日) 15:22:27.21 ] >>173 実装なんかしてない。
180 名前:173 mailto:sage [2012/01/15(日) 15:28:35.84 ] QZじゃなくてすまんがレスされてしまったので。 >>179 もちろん実装していないことはわかっている。 >>5 がいい方法かどうかがわからなくて困ってたんだろ。 >>164 がいい方法だと思いついたのなら、それで実装すればいい。 これが気に入らないのであればレスしなくていいし、質問はQZあてに頼む。
181 名前:o mailto:sage [2012/01/15(日) 15:37:47.56 ] >>145 いや、そんなことを言っているんじゃなくて、 ・局所的にしか利用されず ・他スレッドからの参照に問題あり ・アクセスコントロールに関与する ・マルチスレッド対応の場合 +もろもろ のような条件があるにもかかわらず、グローバル変数を使おうとする人が世の中にいるのか? って話。 これだけ条件が整えば、 企業が規制するまでも無く、グローバル変数の利用を控えるんじゃないの???と
182 名前:o mailto:sage [2012/01/15(日) 15:40:14.15 ] >>163 先回りされて、涙目、だなwww
183 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:44:28.99 ] 解散
184 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:45:28.11 ] >>181 >>49 の段階ではマルチスレッドの話なんて出てきてなかったろ。 自分だけが知っている情報を他人も知っているはずだと考えるのはよくないことだよ。
185 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:47:12.80 ] >>184 局所に格納してたんだろう
186 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:48:25.92 ] >>185 ああ、さらにアクセスコントロールもされていたようだ
187 名前:o mailto:sage [2012/01/15(日) 15:55:36.98 ] >>184 条件が出てきた時点で、 「ああ、そうかグローバル変数じゃダメね」 ってレス付くなら分かるが、 >仕事上のコーディング方法を2chで質問かよwww とレスられた事で 玄人の( というのは間違いで本当は素人 ) の中ではこれだけ条件が付いても 「ああ、そうかグローバル変数じゃダメね」 とは思わないのかなぁ??? という話。
188 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:56:17.70 ] 日本語からやり直せ。
189 名前:o mailto:sage [2012/01/15(日) 15:57:47.80 ] >>188 涙目乙www
190 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:01:12.86 ] やっぱりo=QZか?
191 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:02:00.04 ] 質問主アスペ
192 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:02:35.15 ] キチがウヨウヨいると考えたくないしな
193 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:02:58.11 ] 言いたいことを簡潔的確に言えるようにならないと開発は無理。 理解力はその前に必要だけど、普通の人なら持っている。
194 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:05:00.03 ] 最近はその普通が通じないんだと思うよ。
195 名前:o mailto:sage [2012/01/15(日) 16:06:20.21 ] >>192 そうだよね。 これだけ条件が付いていりゃ、業務命令じゃなくても、グローバル変数は避けるよねぇwww
196 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:08:06.61 ] 別にグローバル変数だってスレッドセーフにすればいいだけ。
197 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:13:04.17 ] >>195 そんな話どうでもいいから本題をQZに質問するといいよ
198 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:18:55.49 ] 流れとは別の質問なんだけど スタック領域とかヒープ領域とかに対して グローバル変数やstatic変数がある領域って一般的になんていうの? データ領域?
199 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:23:22.30 ] >>198 スレ違いだが、それでいい。 記憶クラスでググれ。
200 名前:o mailto:sage [2012/01/15(日) 16:25:18.71 ] >>198 BSSかテキスト領域
201 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:25:51.54 ] >>196 だね。 そもそも、業務命令とか変な条件の前にグローバル変数は避けるのがデフォだし。
202 名前:o mailto:sage [2012/01/15(日) 16:26:33.99 ] >>200 おっと、途中で送信してしまった。 BSSとかデータ領域とかの話をしてるんじゃね?
203 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:27:30.80 ] >>200 > テキスト領域 市ね
204 名前:o mailto:sage [2012/01/15(日) 16:27:38.02 ] >>201 そうなんだよ。 だから >仕事上のコーディング方法を2chで質問かよwww と言われると、 本職の方は、そんな考え方もしているのかなぁ、と
205 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:29:16.03 ] >>203 なんだ? テキストってのはコードのことだ。 >>204 で、いつまで話ずらすの?
206 名前:o mailto:sage [2012/01/15(日) 16:29:56.40 ] なんか、みんな俺に冷たいなぁ。 俺がなんかしたんか?
207 名前:o mailto:sage [2012/01/15(日) 16:30:37.06 ] >>205 傍系の質問だべ。 答えられなきゃ、黙ってりゃ良いのに。
208 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:30:45.97 ] >>4 から読めば誰でもそうなるんじゃないかな。
209 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:31:36.72 ] QZ出てこいよ。 ちょっと質問が高度すぎるか? あ、質問というより回答がか。
210 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:40:35.12 ] 質問主はこれやってみろ。 ttp://www.the-fortuneteller.com/asperger/aq-j.html
211 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:43:21.52 ] >>206 質問に答えているのにスルーして続ける 知らない単語をさも知っているように間違って使う 関係ないところにつっかかって引き延ばす
212 名前:o mailto:sage [2012/01/15(日) 16:50:08.47 ] >>210 何言っているのか分からんが、 自己診断テスト得点計算結果 あなたの得点は16点です。 社会的スキル 3点 注意の切り替え 4点 細部への注意 1点 コミュニケーション 5点 想像力 3点 閾値内に収まっています。
213 名前:o mailto:sage [2012/01/15(日) 16:52:32.85 ] >>211 あいや、 スルーしているんなら、レス番号知らせてもらえると助かるよ。 >知らない単語をさも知っているように間違って使う これは、きちんと指摘してもらえればOK 心は広いから無問題だよ >関係ないところにつっかかって引き延ばす 新たな質問が出たら、きちんと解決しよう。 普通のことだと思うけど? これのどこが気に触る内容なのかな?
214 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:53:33.84 ] こういうのは分裂症?
215 名前:o mailto:sage [2012/01/15(日) 16:54:20.80 ] >>214 それ、なんてクラス?
216 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:00:01.71 ] >>213 ちなみにもう問題は解決してるの?
217 名前:o mailto:sage [2012/01/15(日) 17:18:10.40 ] >>216 よく分からんが、選択肢が2つ。 1つは、func1で文字列を保持 もう1つはmallocでmainに引き渡す。 実装してみないと分からないけど、前者かなぁ・・・と。 HTTPだけど、すべてのデータがmainに返さないといけないわけではない。 汎用性がないのが残念だけど、前者の方がよいかなぁ。 汎用性を高めるんなら、mallocかなぁ、と考えてる。 ただ、結合テストで問題が出そうな気がしてならない。
218 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:22:55.28 ] QZ早く出てきてやれよ。
219 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:23:54.61 ] >>217 マルチスレッドらしいから、各スレッドの役割を書いてみて
220 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:27:15.15 ] 先が永杉。 やるならスレ立ててそっちでやれ。
221 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:32:49.04 ] >>205 >> グローバル変数やstatic変数がある領域って一般的になんていうの? > テキストってのはコードのことだ。 市ね or >>207
222 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 18:24:45.54 ] 「空を自由に飛びたいな」 という夢があったときに パイロットを目指すかパイロットを雇うかの違いがある。
223 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 18:33:47.92 ] ドラえもんが何とかしてくれると思った
224 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 18:43:45.81 ] 脱原発(笑) 風力発電コスト高、モニュメントに オホーツク地方で唯一の風力発電施設の北海道興部町風力発電所が、修繕費用難のた めに昨年11月、完成から約10年で廃止され、風車を固定したモニュメントとして残 されることになった。 東日本大震災を受けた福島第一原子力発電所の事故後、風力発電は再生可能エネルギ ーとして注目されているが、小規模風力発電施設が直面するコスト高の課題を露呈した 格好だ。 同町の風力発電所は2001年3月に完成。風車は1基で、建設費約1億9000万 円は、経済産業省が所管する独立行政法人の新エネルギー・産業技術総合開発機構(N EDO)がほぼ半額を負担し、道の補助を除く約5000万円を町が負担した。隣接す る町の農業研究施設に電力を供給したうえで、余剰分は北海道電力に売電してきた。約 9年半で計6170万円の売電収入があり、6430万円の維持管理費と収支はほぼ均 衡していた。 しかし、10年10月に発電機のベアリングが破損して稼働を停止。欧州製で部品発 注のほか高所作業が必要となるため、修理には約4000万円かかることが判明した。 全額を町が負担しなければならないことから、町は「長期的に見た場合、コスト面で運 転再開は困難」(町企画財政課)と判断、発電所を廃止した。 ---------- www.yomiuri.co.jp/national/news/20120114-OYT1T00047.htm www.yomiuri.co.jp/photo/20120114-463522-1-L.jpg
225 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 19:03:46.42 ] >>222 自由に「飛びたい」だと、パイロットを雇うのでは微妙に要件を満たさないような気が…
226 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 19:11:29.57 ] スレが伸びてるなと思ったら、ほとんど罵倒じゃねか。
227 名前:o mailto:sage [2012/01/15(日) 19:39:26.42 ] >>226 そやね
228 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 20:08:53.37 ] >「空を自由に飛びたいな」 つ シャブ
229 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 20:47:14.71 ] >>225 航空法でがっちり縛られるから、パイロットになっても そんなに自由に飛ばせるわけではない 自分で飛ばすのも雇って指示するのも自由度では大差ないかな
230 名前:デフォルトの名無しさん [2012/01/15(日) 23:53:16.84 ] 民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している 野田内閣は過半数が帰化人 野田はどうだろうか 韓国人から賄賂を貰い、韓国人の集いに出席している野田は 首になった蓮○はシャブで逮捕歴のある人間と仲が良いな。蓮○自身はやってんの? い-6-1 テレビが言えない民主党のスポンサー=韓国北朝鮮 あとはもうわかるよな
231 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:19:48.44 ] 入門編の参考書見ながら勉強中のど素人です #include <stdio.h> //ビット数をカウント int count_bits(unsigned int x) { int count = 0; while(x) { if(x & 1U) count++; x >>= 1; } return count; } //ビット数を返す int int_bits(void) { return count_bits(~0U); } //ビット表示 void print_bits(unsigned int x) { int i; for(i = (int_bits()-1); i >= 0; i--) { putchar(((x >> i) & 1U) ? '1' : '0'); } putchar('\n'); }
232 名前:231 mailto:sage [2012/01/16(月) 00:20:21.66 ] //ビットシフト unsigned int sft1(unsigned int x, int pos) { return (x << pos); } //posビット目からn個のビットに1をセット unsigned int set(unsigned int x, int pos, int n) { return (x | sft1(~sft1(~0U,n), (pos - 1))); } int main(void) { print_bits(0); print_bits(set(0,1,32)); return (0); }
233 名前:231 mailto:sage [2012/01/16(月) 00:24:34.89 ] print_bits(set(0,1,32)); ここで1ビット目から、32個のビットに1をセットするようにしているのですが 31個のビットだと正常に011111?と1がセットされるのですが 上記のように32個だと、000000?となり1がセットされません なぜ、11111?な感じで1がセットされないのでしょうか?
234 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:29:24.01 ] >>233 ビット幅以上のシフトは未定義 自分の知ってる処理系では mod ビット幅 だけシフトされる
235 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:51:44.97 ] どうでもいいが、処理系が同じでも、CPUが違うと動作が違ったりもする。 186か286かその辺の時代以前には、律儀に32回シフト(ただしintは16bit)してた。
236 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:59:25.16 ] >>234 レスを元に調べてみたら、ビット演算のWikipediaにそれらしい内容が書かれていました 今回の場合だと 31 mod 32 で31ビットシフトするが 32 mod 32だと0でビットシフトしない 33 mod 32だと1ビットシフトする というこで理解できました ありがとうございました
237 名前:デフォルトの名無しさん [2012/01/16(月) 01:10:56.78 ] 高速フーリエ変換使って1万桁同士の掛け算を行うプログラムを作れ。 そういう課題が出た。さっさと教えろ。お前ら偉いだろ。
238 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 01:18:08.73 ] 宿題は宿題スレに逝けと言ってるだろ、このタコ。
239 名前: ◆QZaw55cn4c mailto:sage [2012/01/16(月) 03:23:46.56 ] >>65 こんなのでどうですか? ideone.com/SGJmx
240 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 08:25:12.57 ] >>237 作ってやるから20万円よこせ 偉い人の時間は高いぞ
241 名前:デフォルトの名無しさん [2012/01/16(月) 14:33:54.35 ] ステルスマーケティングまとめ A www.dotup.org/uploda/www.dotup.org2522270.png B www.dotup.org/uploda/www.dotup.org2522750.png → ステマの黒幕は ソニー(アニプレックス)、角川 関連キーワード はちま 清水鉄平(はちまの本名) KND 元ソニー会長出井伸之 はちま管理人によるみかじめ料を払わない特定メーカーへの叩き まとめサイトは企業が運営 コメント欄も社員の煽り(が殆ど) おまけ 2ch監視が仕事のスクウェア社員w↓ 96 名前:番組の途中ですがアフィサイトへの転載は禁止です[sage] 投稿日:2012/01/16(月) 12:41:25.60 ID:X9dFbc830 proxy1.square-enix.co.jp - 2012/01/16 12:38:51 - Japan - Commercial(企業) IP :61.195.58.8 (不明) Referer :ipatukouta.altervista.org/php5/ USER-AGENT :Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) 【株式会社KND・清水鉄平】はちま起稿が特定され黒い関係が明らかに★78【黒幕を特定せよ】 awabi.2ch.net/test/read.cgi/poverty/1326691256/
242 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 22:36:48.88 ] リスト構造も使い易さを追求して、様々な形態の物が存在する。 使い易さを追求して実現された種々の機能と それを実現しているリスト構造の具体例について 解説せよ。 という問題があるんだが、答えるのにチェイン法とか機能の説明でいいのかな?
243 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:20:46.73 ] >>238
244 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:24:32.44 ] >>242 いいと思う。
245 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:27:06.26 ] >>244 ありがとう ついでなんだが、オブジェクトのデータと処理とを組み合わせて 合理的に管理するためのプログラミング手法ってなんて言うんだったっけ?
246 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:27:21.98 ] >>244 ありがとう ついでなんだが、オブジェクトのデータと処理とを組み合わせて 合理的に管理するためのプログラミング手法ってなんて言うんだったっけ?
247 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:29:04.14 ] oops!
248 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:34:49.93 ] oh... 連レスすまない
249 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:50:08.16 ] >>246 OOP, Object Oriented Programming
250 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:58:46.59 ] Object oriented programming style アクネドート: 実用に成るコードを完成させるためには 定義の段階で同じ識別詞、同じ記述が繰り返し繰り返し現れる
251 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:34:19.57 ] 関数プロトタイプ宣言について、どのような時に用いるか、なぜ必要なのか教えていただけないでしょうか。 よろしくお願いします。
252 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:34:11.86 ] >>251 その関数を呼び出す前に、その関数を使用する場合 プロトタイプ宣言しといて、実装を後に実装する。 あと、ライブラリを作成するとき、ヘッダに宣言をまとめて 書いといて、実装をコード側に書く。
253 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:04:03.55 ] >>246 「データ」が「ステート(状態)」の事を意図してるなら、OOP。 「データ」一般なら色々あるからCTMCPなどが参考になる。
254 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 12:29:37.79 ] 以下のように aが32未満のときは、AしてからCして、Dする aが224より大きいときは、BしてからCして、Dする それ以外のときはAもBもCもせずにDする というような制御構造を、ソースレベルでも、出力されるアセンブラレベルでも 重複コードがないようにするには、gotoを使うしかないのでしょうか? if(a < 32){ b = a; //A }else if(a > 224){ b = 256 - a; //B }else{ goto HOGE2; } HOGE1: c = b * 100; //C HOGE2: //D
255 名前:254 mailto:sage [2012/01/17(火) 12:30:35.88 ] d = a < 32; e = a > 224; if(d || e){ if(d){ b = a; //A }else{ b = 256 - a; //B } c = b * 100; //C } //D こういうのもifが2つあって、なんだか冗長です。
256 名前:254 mailto:sage [2012/01/17(火) 12:30:55.20 ] void hoge(int *pc, int b){ *pc = b * 100; //C } --- if(a < 32){ b = a; //A hoge(&c, b); }else if(a >> 224){ b = 256 - a; //B hoge(&c, b); } //D これも関数呼び出しコードが重複してるし 関数呼び出しコストがもったいないです。 inlineにすれば、呼び出しコストはかからないけど //Cの部分がアセンブラレベルで重複してしまいます。 結局gotoを使わないと、重複は避けられないのでしょうか?
257 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 13:26:36.03 ] if( a < 32 ){ //A } if ( a > 224 ){ //B } if( ( a < 32 || a > 224)){ //C //D >>254 は、コードが複雑になった場合に追っかけるのが面倒 >>255 は、何やってるのかわかりづらい >>256 は、今時のシステムならそのくらいのコスト気にすんな。関数名次第では分かりにくい。 自分は、同じ基準で判定する方がコードが分かりやすい。 このケースの場合、a を基準にするのではなく、 //A、//B、//C、//Dのそれぞれのコードがどういう条件なら実行できるか、 を同じレベルで書いた方が後で見て分かりやすい。
258 名前:254 mailto:sage [2012/01/17(火) 14:59:48.07 ] なるほど、>>255 でネストするよりわかりやすいです。 多少冗長になっても、メンテを考えればgotoなど使わない方がいいと言うことですね。 ありがとうございます。
259 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 15:13:29.39 ] //Cの条件はb>=32か?
260 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:08:24.42 ] goto使わなくても大抵コンパイラ後はgoto相当の処理してるんだがな。
261 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:14:30.48 ] goto使ってもいいと思うんだけどな。
262 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:30:33.18 ] あれならこうかな。 bool a32 = (a < 32) bool a224 = (a > 224) if (a32 || a224) { if (a32) { A(); } else { B(); } C(); } D();
263 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:38:28.45 ] >if (a32 || a224) { if (a32 | a224) { の方がいい場合あり。 昔逆アセンブルしてみたら if(a32) goto xxx; if(a224) { xxx: ... } 的な処理してた。 まぁ処理速度必要で、 一秒間に数千、数万回実行される処理でなきゃそこまでする必要は無いと思う。
264 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:40:24.40 ] 組み込みとか4kデモとかじゃないかぎり気にせず関数化
265 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:40:35.91 ] って、>>262 は>>255 と同じだったか。 >>263 そこまで速度を必要とするならそもそも条件判断をしないようにすればいい。
266 名前:254 mailto:sage [2012/01/17(火) 16:50:41.22 ] 4kではないですが、動画の処理なので、関数呼び出しコストはかなり気になります。 条件判断しないようにすればいいとは、どのように書けばよいのですか?
267 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:51:40.47 ] >>263 ||を|とかかれると?と思ってしまう。 あー、これはほかにもいろいろバグが入ってるんだろうなー、と残念な 気持ちになるんで人が見るコードの場合はやめてくれ。
268 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:52:58.71 ] >>266 一番簡単なのは必要な処理を用意して関数ポインタ使って条件によって切り替える。 一般的に高速化と冗長性の削減は両立しないんだよ。
269 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:53:19.03 ] まぁ、それ以前にOpenVCなり使えるものを使うのがいいと思うけどな。
270 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:53:41.91 ] OpenCVな。
271 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:55:25.05 ] 昔アセンブラで計算処理部分で分岐無くすように書いたことあったな。 フラグ取得→ローテーション命令で0か0ffffhに加工→計算過程でANDして加算 速くなったかどうかは知らん。
272 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:55:39.99 ] あぁ、ピクセル処理みたいのならテーブル引きにすればいいよ。
273 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:57:15.88 ] 高速化が必要だと思った場合はまずプロファイルを取るのが基本。 1%の処理を100万倍速くしたところで1%も速度は向上しない。
274 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:58:51.38 ] >人が見るコードの場合はやめてくれ。 0=偽 0以外=真 って確証(確信?)ないからやらないよ。
275 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:00:19.16 ] いやいや、それは仕様で決まってるから。 どういうこと?
276 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:02:44.89 ] 仕様書見たこと無いってこと。
277 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:06:38.13 ] まぁこのスレの99%はそうだろうからそれは気にしない。
278 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:07:49.12 ] >>255 関数のサイズと関数の呼び出しコストって関係あるの?
279 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:09:48.50 ] 各ABCの処理が、簡略化されたからそうなっているのか、実際にそうなのかにもよりそうな話だなぁとおもったり。
280 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:12:29.87 ] >>278 ない。
281 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:13:23.01 ] もちろん、厳密にはキャッシュの利用が変わってきて速度は変わる。 が、そんなことを気にするのはあと数レベル先の話。
282 名前:デフォルトの名無しさん [2012/01/17(火) 18:10:35.59 ] C言語のテトリスを標準出力で作るのって無理ですか?
283 名前:デフォルトの名無しさん [2012/01/17(火) 18:14:32.35 ] 日本語変だな。 テトリスをC言語によって作るのは出来ると思うのですが 標準出力のみで作れますか?
284 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:17:54.16 ] できるよ。
285 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:17:59.44 ] OSや端末を絞れば作れるでしょうしCUIのテトリスはぐぐれば出てくるでしょう
286 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:18:39.20 ] 標準のみだと改行しないといけないけど、それ我慢すればできない理由はないね。
287 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:20:30.52 ] Curses使えば普通に楽しめそう。
288 名前:デフォルトの名無しさん [2012/01/17(火) 18:23:18.51 ] >>286 グラフィック関連の低級性ってどうなってんの? プログラミングだとアセンブラでしょう。 グラフィックは?
289 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:24:24.40 ] 何言ってるのか分からん
290 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:31:30.36 ] ニコ動に1時間でWindows版テトリス作るみたいなのがあったからそれでも 見てみたらどうか。
291 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:32:00.50 ] >>288 16ビットのときは、CPUで特定のアドレスに書きこむと画面に反映されてた。 それ以降は知らん。
292 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:40:41.05 ] 昔昼休みにUNIXでテトリス対戦してる人がいた。 見た感じCUIだった。
293 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:05:11.88 ] >>291 Windows には専用の API がある。
294 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:23:05.12 ] 標準出力って事は、コンソール出力なんだろうから、 エスケープシーケンス使うかすればいいのかな?
295 名前:デフォルトの名無しさん [2012/01/17(火) 19:47:18.39 ] >>290 見たww >>291 なるほどぉ。 いやもっと低級な事。 インクとかは?どうやって全色出してるのかなと。
296 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:48:22.99 ] すまんが、そのインクとかいうものとC言語の関係を教えてくれないか?
297 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:57:22.70 ] >>295 環境に依存すると思う。どういう環境(OS、処理系)で作りたいかを教えれ
298 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:57:30.73 ] >>266 なんか、遠い記憶にそんな努力をしたことがあるような、無いような。 ポケコン時代だと、 if文ってスゲー遅いんだよな・・・ それを嫌ってForNextで書いてた。 でも、そうするとコードの容量が大きくなるんだよなぁ。 >>266 224と32にとても意味があるのであれば、ビットシフトを駆使する方法もあるかもねぇ。 a >> 8 が0 なのは ABD a >> 9 が1 なのは ACD ( a >> 8 ) * ( a >> 9 ) が1なのはD
299 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:04:34.39 ] 色々考えたソースがコンパイラの最適化に勝てないことも多々…。
300 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:06:31.09 ] 比較演算自体内部で分岐命令使ってる気もするがな。
301 名前:デフォルトの名無しさん [2012/01/17(火) 20:06:37.72 ] >>297 1990年くらいのパソコン。 一太郎しか入ってなかった。
302 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:12:01.09 ] パソコンのメーカー名と機種のシリーズ名も言えないんじゃなぁな。
303 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:14:06.20 ] >>301 MS−DOSの頃で、PC9801をターゲットにしてたなら、 テキストVRAM直書きが速かったかも。VRAMに表示文字以外に 確か属性があって、色やブリンクなどをセットできてた。
304 名前:デフォルトの名無しさん [2012/01/17(火) 20:16:56.86 ] >>303 詳しすぎワロタw C言語に詳しい人って同時にコンピュータ関連詳しすぎw
305 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:22:07.27 ] PC-9801プログラマーズBibleが未だに捨てられない。
306 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:24:02.15 ] >>300 ちゃうちゃう。 サンプルコード書けない理由にもなってるけど、 もしABCDの処理が加算なら、 (加算数A) * ( (~a) >>8 ) + (加算数B) * (a >> 9 ) + ..... と比較しなくてもできる。 >>299 まあねぇ。 特に最近はHyperThreadingとかキャッシュとかねぇ。コードでは全く見えない高速化があるからねぇ。
307 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:25:57.57 ] >C言語に詳しい人って同時にコンピュータ関連詳しすぎw アセンブラの次にハードを直接いじるのに適してる言語だと思ってるから。
308 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:36:08.57 ] >>295 複合機(レーザー)やってたが、PCで作るのは画像データorスクリプトだけだよ。 後は複合機側でやる。色はCMYKを混ぜると全色でる。
309 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:38:23.26 ] 結局はハード屋の奴隷 テレビの画質なんてものはLSIで決まる Cプログラマは上からレジスタ操作してハードウェア様の機能をオンオフするだけ
310 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:39:05.47 ] >>308 VxWorks ?
311 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:40:56.60 ] >>310 大当たりw
312 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:42:15.01 ] いやいや メタリックインキや蛍光インキもありますぜ旦那
313 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:42:46.37 ] >>308 CMYKって表現が分かる人、どのくらいいるのかな?
314 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:42:59.11 ] >>311 豊橋じゃないってことやねwww
315 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:43:48.60 ] 熱転カラーリボン
316 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:44:14.16 ] >>314 違う。 豊橋だ
317 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:44:28.44 ] 初期の熱転写はすぐ熱ダレしてたな。
318 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 21:37:08.40 ] >>313 かなりたくさん。
319 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 21:37:45.43 ] >>312 プリントゴッコなつかしい
320 名前: ◆QZaw55cn4c mailto:sage [2012/01/17(火) 23:11:18.21 ] >>303 それが、裏VRAM に書く方法が今でもわからなかったりするのです。
321 名前: ◆QZaw55cn4c mailto:sage [2012/01/17(火) 23:13:44.36 ] >>313 わかんない。シアンマゼンダイエロー、K‥‥‥K‥‥‥K‥‥‥キンタマか?
322 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:15:45.85 ] >>321 ブラック
323 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:26:58.27 ] >>320 バンク切り替えすればいいだけだろ。 ほんと、程度が低いな、お前。
324 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:27:49.89 ] >>320 遙か彼方の記憶なのだが、どこかのポート出力でバンク切り替えしていたような?
325 名前: ◆QZaw55cn4c mailto:sage [2012/01/18(水) 00:17:49.40 ] >>323 バンク切り替えはどうやればいいのですか? >>324 www.webtech.co.jp/company/doc/undocumented_mem/ を探してはみたのですが‥‥‥。0A4hか?
326 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 01:40:51.10 ] 何言ってんだお前。 そんなのPC98使ってた人間なら常識だろ。 知らないのに出てくるとは、よっぽどなんだな。
327 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 02:18:15.95 ] 使ってれば常識なの?PC98で開発してればの間違いではないのだろうか。 PC98つかったことないけど。
328 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 02:46:44.23 ] そうしてたかのように装ったのはお前だろ、QZ
329 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 02:59:37.35 ] 恋は盲目だな。>>327 はQZじゃないよ。
330 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 03:35:14.00 ] プラットフォームを選ばない会話。 x86以外ではmipsしか知らない俺には無理。
331 名前:254 mailto:sage [2012/01/18(水) 08:29:12.36 ] >>298 比較演算よりビットシフトを使った条件のが速いというのは聞いたことがあります。 >>306 なるほど、条件×加算数 というふうにすればいいのか。 これを使って、いくつか書き直してみたいと思います。 ありがとうございます。 条件とAとBは例で示したものが多いです。 Cは3〜10行くらいです。 Dはいろいろあって、かなり長いです。
332 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 08:40:06.15 ] とりあえず、いまどきのプロセッサで速度を気にする場合 まず、メモリアクセスと条件分岐を減らすのが基本。 その上で、ビット演算がどうとかいうのは実際に測定してから。
333 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 09:47:49.57 ] >>331 自分で書いていてなんなんだが、 × ( (~a) >>8 ) ○ ( (~a) >>8 ) && 1 //シフトした後1桁目だけを抽出 演算量が増えると、比較した方が早くなる可能性は十分にある。 また、デバッグがしにくい。16進法を脊髄反射で2進法にできるなら問題ないけど。 値の持たせ方も変わってくる(ビット演算しやすいデータ形式で持たせる必要がある) ポインタを妙に使い出す フラグを妙に使い出す( int 変数に複数の情報を持たせたくなる ) デバッグ関数( printf で2進法を表示するコードが欲しくなる ) 結果としてコードの見通しが悪くなる なんて特徴もあるからねぇ。注意は必要だけど。
334 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 10:05:23.18 ] パフォーマンスが気になるなら、 ちょっとばかしアセンブラを勉強して、この資料を見るとよい。 download.intel.com/jp/developer/jpdoc/ia32.pdf パフォーマンスが厳しい場合、割り算をしたがらない気持ちがよく分かると思うよ。 MOV( メモリからの読み込みなどで使用) が0.5クロック CALL(関数の呼び出しでよく使われる)で5クロック RET( Return ) 8クロック DIV(割り算)が 56〜70クロック CMP自身は0.5クロックだけど、If文だとJMPを伴うのでもう少し大きいかな? ビットシフトは、MOVとシフト命令の1.5かな? 関数を使えば、CALLとRETが必要だから最低13クロック以上掛かることになる。 この辺は詳しくないので、説明はできないけど。
335 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 10:52:06.29 ] なんかスゲー間違えてる・・・気がする・・・ だれか助けて 関数に引数1つをつけて呼んでリターンした場合 movl $0xa,(%esp) ; 0.5クロック call 0x4013e1 <func1(int)> ; 5クロック mov $0x0,%eax ; 0.5クロック leave ; leaveは実質mov pop movなので、2.5クロック ret ; 8クロック なので、最低 16.5クロック+関数内での演算クロック数が必要 ビットシフトは、 sarl $0x2,0x1c(%esp) ; 4クロック 4クロック+演算クロック数 if文 cmpl $0x0,0x18(%esp) ; 0.5クロック jne 0x4013ee <main()+46> ; 不明:0.5クロック程度? 1クロック+演算クロック数が必要 あれ? If 文って結構早くね? てか、ビットシフト遅くね? If文って分岐予測が当たればさらに高速化するし。
336 名前:デフォルトの名無しさん [2012/01/18(水) 11:53:53.16 ] ホッケーゲームみたいなのを作ってるんだが バーとボールの当たり判定はどうすればいいんだ?
337 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 11:57:33.93 ] >>336 物理演算ライブラリに丸投げ
338 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 13:39:39.33 ] >>336 バーとボールの座標値を比較。 つーか、どう作っているのか判らんのにどう判定すればいいか分かるわけないだろw >>335 すげぇ無駄な努力をしていることに気付け。 その高々数十クロックは一体何分の一秒なのか判っているのか?
339 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 13:43:27.54 ] >>338 映像処理って、1秒に30個とか60個の画像が含まれていて、それぞれの画像は1920*1080ドットあったりして その各ドットにはRGBの3つの8bit値が存在するんだけど、 1秒の映像を処理するのに何回画素値に対する処理が動くか判っているのか?
340 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 13:57:18.96 ] 画像処理は小さな最適化が大きな効果を及ぼす分野の一つだよねー。 アムダールの法則で言うところのpの値が限りなく1に近い。
341 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 13:58:12.83 ] まずビデオチップで演算できないかを考える。
342 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:02:05.12 ] 速度上げるなら重複増やしてでもループ(分岐)回数減らすのがデフォ。 DOS時代は同じ処理を16回分連続で書いたこともあった。
343 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:03:04.33 ] 1920*1080*3*60=約0.4GB。 そりゃぁ、一画素を三回ずつ愚直に計算してたら回数は多いわねぇ。 CPUでそんなことすることを考えているとしたらそのほうが間抜けだ。
344 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:04:12.65 ] >>342 今時のコンパイラなら、ループアンローリングもやってくれるよ。 ついでにベクタ化もしてくれるかもしれない。
345 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:56:20.00 ] >>343 愚直に計算しないためにも、たとえばSSEつかって4画素(4つの32bit整数として)同時にフィルタをかけたりするよね。 >>335 はそういうことにつながる話でもあるんだけど、それも>>338 みたいに無駄な努力で間抜けな考えだと思うの? ただいえるのは、スレ違いだということ。
346 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:02:35.06 ] 「CPUで」だから、GPUにやらせろっていいたいんだろう だからどうしたのって話だけどねー
347 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:06:42.41 ] 少なくとも、今時のCPUはクロック通りに動くわけじゃない。 パイプラインもあればキャッシュミスすればペナルティもある。 クロック数だけ足し算しても屁の突っ張りにもならないな。 前からこのスレでも言われているだろう。所要時間を知りたかったら実測しろと。
348 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:16:49.69 ] 少しでも軽くなるように期待してあらかじめ書いているだけだろう?
349 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:21:30.93 ] >>347 所要時間を知りたいわけじゃないでしょ 今問われている箇所がボトルネックになっていることを突き止めたあとかもしれないよ
350 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:27:36.73 ] 意外とレベルの高い質問の中くだらない事で恐縮なんだが… int main() { func1(); } void func1() { func2(); } void func2() { func3(); }… ひとつの関数を見やすくするという理由だけで、こんな風に 入れ子になっていく事は、なるべく避けた方がいいのかな?
351 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:30:56.90 ] >>350 ちゃんと名前付けてれば大丈夫だと思うよ。 「見やすくする」という基準がずれてなければ。
352 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:40:12.61 ] >>347 言ってることはあってるが、今言うことじゃないな
353 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:52:40.36 ] >>351 すばやい回答ありがとう! 見やすくしようと思って整理してたら、どんどん関数が増えていって ちと不安になってきたので質問しました。
354 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:17:24.00 ] >>352 その実測が既に難しくなっているんだけどな。 そのコードがどのくらい掛かるかを調べるために、そのコードを繰り返したら キャッシュあたりまくりでパフォーマンスが良すぎる値が出てくる。
355 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:26:20.65 ] それはテストが下手だといわざるを得ない
356 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:37:23.71 ] つーか、普段キャッシュにあたらないような状況ならそこを改善する意味がないだろ。
357 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:47:20.87 ] 【C++】高速化手法【SSE】 toro.2ch.net/test/read.cgi/tech/1130349336/
358 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:55:11.41 ] 実測は実データまたは実データに近い仮想データで行うんだから それでキャッシュヒットしまくって全体に対する占有時間が小さくなってるなら >>356 の言うとおり改善する意味なし。
359 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 19:59:00.54 ] >350 ヘッダファイル作ってコメント入れときゃ多少マシだろ。
360 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 20:04:22.56 ] >見やすくするという理由 実際に見やすくなり、再利用が出来るなら、そうして良いんじゃないの?
361 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 20:34:18.83 ] 関数の行数は1画面に収まる程度にするとよいとCodeCompleteに書いてあったぞ 2〜3行しかない処理を関数化するのは逆によろしくないようで。
362 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 20:39:13.90 ] >>361 意味のある名前をつけられるかどうかを指標にする 同じコードを2回書くならそれを関数かできないか検討する
363 名前: ◆QZaw55cn4c mailto:sage [2012/01/18(水) 20:40:12.35 ] >>350 解決するべき条件をひとつずつ皮をむくようにクリアしながら下位の関数に投げてしまう、というのは私はよくします。 直近では toro.2ch.net/test/read.cgi/tech/1325685876/339 main() は fopen() と fclose() しかしていない。
364 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 20:41:53.23 ] 1画面って何行くらいなんだろ 画面解像度やフォントサイズでかなり違いがでそうだけど
365 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 20:44:51.45 ] 一つ関数を作る度に、膨大な設計書を書かされていた時は、 一つの関数が300行を楽々超えていた。
366 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 20:50:00.46 ] 個人的には、短い関数が多い方が見やすい。 >>365 開発だとそうなりがちだわな。 2000超えてるの見たときは、驚いたけど。
367 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 21:10:25.39 ] 一行の関数とか大量に作るなあ まあ(C++ではなく)C言語なら、多少は自重するが それでも20行以内の関数なんて全然珍しくはない
368 名前:デフォルトの名無しさん [2012/01/18(水) 21:16:46.85 ] >>361 基準が行数って時点で目的意識はどこへやら いまどき行いくらって稼ぎ方はそうないだろうが 頭脳労働者らしからぬ発言には気をつけろな
369 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 21:32:50.30 ] 亜流だか我流だか、かも試練が、 アルゴリズムが埋もれないように関数化する
370 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 21:54:25.28 ] >>350 > ひとつの関数を見やすくするという理由だけで、こんな風に > 入れ子になっていく事は、なるべく避けた方がいいのかな? 必要ないなら、「入れ子 (ネスト)」は少ないほうがいい。 俺なら、こう書くかな。 int main() { func1(); func2(); func3(); } void func1() { ... } void func2() { ... } void func3() { ... }
371 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 21:58:58.37 ] >>370 あまりにこの形式になりすぎて 上位のほうの関数が実際に何やってるのか よくわからんくなってるプロジェクトを最近見た
372 名前:デフォルトの名無しさん [2012/01/18(水) 22:21:44.34 ] >>370 ナンセンス 関数内に隠せないものを関数スコープで宣言とか おまえは B の時代のヨボヨボジジイか?
373 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 22:22:28.10 ] >>364 こういう場面で言われる1画面は80*25をさす場合が多い。80文字、25行ね。 最近はメソッドや変数名が長い場合も多く、横方向への基準を緩和していることも多い。 たとえば120文字までにおさめるなど。 縦方向は今も昔もさほど変わっていないと思う。 でもメソッドチェーンなんかで、1かたまりの処理が複数行にわたる場合なんかを考えると、 今となっては25行は厳しいかもしれないね。
374 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 22:24:25.63 ] ステマ相関図画像更新(1/17) gazo.restspace.jp/img-box/img20120117010742.jpg テレビや新聞、大規模なネットサイトで「今流行の」「今話題の〜」「女性に人気の〜」等と言われるものはほぼ全て この画像上部、○○堂がコントロールしている。 ・世間にどの程度流行らせるか ・流行に乗り遅れる(流行に乗り遅れさせる)人間をどのくらい作るか ・話題に乗り遅れた人間に対してどの程度の疎外感を与えるか ・いつその流行を終わらせるか 2chもステマ会場 www.dotup.org/uploda/www.dotup.org2526030.jpg ちなみに ハリーポッターと賢者の石の 「石」とはテレビのこと(著者が執筆当時) ダイオード→半導体→シリコン→石 賢者とはテレビを見る人間でも番組を作る人間でもなく、テレビを操る人間。
375 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 22:42:55.85 ] なんのことだかさっぱりだが、そこはダイオードじゃなくてトランジスタだろ。
376 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 22:47:08.66 ] >>370 俺もそれっぽい書き方するわ。 もちろん、そこまで極端ではないけど。
377 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 22:50:22.44 ] アジャイルなら、ある処理を関数化するかどうか、つまり処理の粒度は「意図によるプログラミング」に従う。
378 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 22:52:07.61 ] 趣味のソースなら再利用する気が無い限り関数化しないな。
379 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 23:07:22.27 ] >>372 意味わからん、あくまでも >>350 の改善案だぞ。
380 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 23:51:17.96 ] >>378 関数化の大きな目的の1つである同一コードを纏めて修正を1回で済ませる、という目的を忘れてる気がする。 どんなコードの書き方でも基本的に構わないけど、 バグの温床になる書き方はどんな書き方でもNGだと思うが
381 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 23:54:29.63 ] >>372 >>379 ナンセンス以前に、おまえら超能力者かと mainからみて隠蔽したい内容であるなら、>>350 だし、 それがアルゴリズムとして重要でmainからみとおせる必要があるなら>>370 だし。 それが、>>350 で読み解けてるみたいだから、超能力でもあるんだろう。
382 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 00:12:29.16 ] ameblo.jp/c-plus-style/ 検証お願いします
383 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 07:30:01.47 ] 「俺のコーディングが最も正しい!!」
384 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 08:21:13.40 ] コンパイラ通ったの?
385 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 08:21:41.81 ] コーディングスタイルはそれぞれでも、 1関数は百行以内で頼みたい。
386 名前:384 mailto:sage [2012/01/19(木) 08:25:52.23 ] ソース読み間違えたorz
387 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 10:52:47.12 ] >>382 ぱっと見、抽象型プログラミングっぽいけど、よく見たらファイル一個につき selfが一個だな。 あんまり利点を感じない。
388 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 14:07:44.90 ] いったい検証てなんなんだ? 意味がわからんのだが。
389 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 15:18:28.05 ] 査読してほしいってことぐらいわかろう
390 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 15:50:28.51 ] 何がしたいコードなのかもわからずに査読も何もないだろう。 ぱっと見、OOPを噂で聞いたくらいで何かそういうことを やろうとしたような残念なコードにしか見えないんだが。
391 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 17:34:27.20 ] ネバーネバーネバーネバーギブアップって、 ! ! ! ! give_up という事で、 give_upがtrueなら ! ! ! ! give_up もtrueという事で ギブアップなんですよね?
392 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 17:51:02.21 ] give_up || !give_up だよ
393 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 18:37:49.17 ] 番号を選択し、選択した番号によって処理を変えたいのですが、 [範囲外の数値が入力されました。]としか表示されません 番号通りの処理をさせるにはどうしたらいいのでしょうか codepad.org/IOuFqtMb
394 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 18:44:58.18 ] >>393 - scanf("%d", menu); + scanf("%d", &menu);
395 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 18:51:32.77 ] >>394 有難うございます 早速修正します
396 名前:デフォルトの名無しさん [2012/01/19(木) 20:51:59.13 ] コンパイラが宣言された配列に対して実際に確保するメモリ領域の大きさを決める基準ってなに?
397 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 21:00:03.22 ] >>396 配列のサイズ以外に何かあるの?
398 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 21:25:55.65 ] char は1バイト int は4バイト(処理系によりけり) long は8バイト(処理系によりけり) とかを聞きたいんじゃね?
399 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 21:44:19.30 ] コンパイラの仕様による としか
400 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 21:48:02.12 ] char a[6]; が8バイト分確保するとか。 コンパイラ依存だろうが。
401 名前:396 [2012/01/19(木) 22:24:08.73 ] すまん、要素数が1の時に1byte、2〜16で16byte、17〜32で32byte、33〜64で64byteっていう実験結果が得られたのを前提に頼む。
402 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:32:17.25 ] >>401 char配列?
403 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:32:39.53 ] >>401 >すまん、要素数が1の時に1byte、2〜16で16byte、17〜32で32byte、33〜64で64byteっていう実験結果が得られたのを前提に頼む。 そんなのじゃなく、実際の宣言部分を見せろ。
404 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:37:07.14 ] >>401 OSやコンパリラとか書かないと
405 名前:396 [2012/01/19(木) 22:56:02.82 ] char a[i]; コンパイラはgcc
406 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:57:55.71 ] >>381 俺の超能力をもってしても、お前のレスは意味不明。
407 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:02:24.89 ] >>401 別に普通のことだろ。 何が疑問なんだ?
408 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:03:38.25 ] プラグマとかコンパイルオプションで変えられるっしょ
409 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:05:06.72 ] >>405 とりあえず↓だと #include<stdio.h> int main(int argc, char **argv) { char a1[1]; char a2[2]; char a17[17]; char a33[33]; printf("sizeof(a1) = %d\n", sizeof(a1)); printf("sizeof(a2) = %d\n", sizeof(a2)); printf("sizeof(a17) = %d\n", sizeof(a17)); printf("sizeof(a33) = %d\n", sizeof(a33)); return 0; } 実行結果 こうなる。 sizeof(a1) = 1 sizeof(a2) = 2 sizeof(a17) = 17 sizeof(a33) = 33 gccは $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-cygwin/4.5.3/lto-wrapper.exe Target: i686-pc-cygwin --中略-- Thread model: posix gcc version 4.5.3 (GCC)
410 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:07:02.20 ] >>405 >char a[i]; 要素数が変数になっているのが気になるな。 情報小出しにしないで、>401でどうしてそう判断したのか、 コードを出しな。
411 名前:デフォルトの名無しさん [2012/01/19(木) 23:25:53.81 ] >>410 #include <stdio.h> #define i 1 int main(void) { char a[i],b[i],c[i]; printf("a:%p\n",a); printf("b:%p\n",b); printf("c:%p\n",c); }
412 名前:デフォルトの名無しさん [2012/01/19(木) 23:27:23.14 ] >要素数が変数 >>405 がやってるのは、なに言語?
413 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:27:53.71 ] >>411 そういう書き方、気持ち悪いと思う
414 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:28:00.33 ] どうせワード境界だのなんだのの話だろ?
415 名前:デフォルトの名無しさん [2012/01/19(木) 23:28:08.95 ] アドレス表示してなにがやりたいの?
416 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:42:07.25 ] >>411 環境によって、4の倍数のアドレスがアクセスが速いとか、奇数アドレスにアクセスできないとか あるから変数とかきっちり敷き詰めて置かれないことのほうが多い。
417 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:43:01.09 ] #include <stdio.h> char a[XXX]; char b[1]; int main(){printf("%d ",b-a);return 0;} for XXX in 1 2 3 4 5 6 7 8 9 10; do gcc -DXXX=$XXX hoge.c; ./a.out; done 結果 1 2 3 4 5 6 7 8 9 10
418 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:44:02.24 ] >>405 配列の添字が変数のトキはとくべつなしょりになるよ
419 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:44:43.21 ] 構造体だと #pragma pack(1) みたいな、隙間無く埋めろとか指定できるのもあるな。 こんなの使わないから忘れたけど。
420 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:45:13.81 ] >>417 a,bの順番にかくほされるとはかぎらないよ
421 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:53:00.39 ] 構造体は何にもしなくてもアドレス続いてるんじゃなかたけ? 例えば、 struct a{ long n; char c[4]; }; a.nの次のアドレスにa.c[0]が続いてるんじゃないの??
422 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:54:34.00 ] struct a{ char c[3]; long n; }; はどうなってるのかと考える?
423 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:54:42.23 ] いいえ
424 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:57:17.34 ] >>422 char c[3]がlongに合わせられるんでしょ? ちなみにlongは4バイトでw
425 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:58:17.42 ] 何を根拠にそう言ってるんだ?
426 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:00:03.47 ] >>421 隙間あいてることもあるよ。
427 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:01:02.85 ] >>424 >char c[3]がlongに合わせられるんでしょ? ×
428 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:03:08.82 ] なんとw char c[3]の領域破壊したら、その下のlong nも壊れるんじゃないんだ
429 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:07:56.70 ] >>411 それは配列がどう配置されるかで、 >>396 >コンパイラが宣言された配列に対して実際に確保するメモリ領域の大きさを決める基準ってなに? の、配列に対して確保されるメモリ領域の大きさとは、話が変わってるぞ。 >>409 で示したように、「配列に対して実際に確保するメモリ領域」の大きさは、char a[N]; ならNになっている。
430 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:17:02.14 ] 構造体のサイズとアライメント ttp://www.g-ishihara.com/c_st_01.htm
431 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:43:40.33 ] double array[10][20]に対応するキャストってなんでしょうか? よろしくお願いいたします。
432 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:46:33.99 ] ポインタと意味と斟酌すると、 double (*p)[20] = array;
433 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:56:51.62 ] ダブルポインタとかトリプルポインタってどういう時に使うの?
434 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:58:22.67 ] 使う時が来るまでほっといていいよ
435 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:00:02.56 ] >>433 とりあえずコマンドライン引数を使おうとすると、早速char **argvが出てくるな。
436 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:06:52.78 ] >>435 コマンドラインで char *argvしか使ったこと無いけどそれ何の意味があるの?
437 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:28:56.92 ] >>436 複数パラメータ時は?
438 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 06:52:37.88 ] >>436 >コマンドラインで char *argvしか使ったこと無いけどそれ何の意味があるの? コマンドライン引数はint argc, char **argvしかありえないが、処理系なに使っている?
439 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 06:53:40.58 ] 関数の中で引数の変数にポインタを設定するときとか
440 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:28:45.67 ] 引数の char *argv[] が実際には char **argv であることなんて 知らない人のが多いだろう。
441 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:33:20.81 ] あれは字句分解が面倒でのぅ
442 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 11:42:40.29 ] >>440 引数の場合同じことになるだけで、実際は前者だろ。
443 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:03:26.72 ] []が配列を渡しているように見えるからイカンのでは
444 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:09:20.92 ] atoi関数の、 ループ(・・・){ n = 10 * n + (s[i] - '0'); ・・・ } return n; この処理って何をやっているのですか>< iPhoneセミコロン打てない><
445 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:14:30.21 ] 卓上で手動ステップ実行やってみなさい
446 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:20:58.46 ] 2バイト文字のバイナリ化ってどうすれば出来ますか?
447 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:31:09.33 ] 1バイトの場合と一緒
448 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:45:13.57 ] >>444 ヒント: (s[i] - '0') この部分はs[i]の1文字から、数値を得ている s[i]がcharの'1'だとすると、'1'=0x31 '0'は0x30なので、0x31 - 0x30 から 数値として1を得る
449 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 13:25:11.24 ] >>444 >iPhoneセミコロン打てない>< 「日本語テンキー」を使っている状態だろうから、 左下の地球儀アイコンを押して「English(US)」にすればフルキーが出る。 そこで左下の「123」キーを押せば「;」キーが見える。
450 名前:デフォルトの名無しさん [2012/01/20(金) 15:09:21.28 ] 学校の課題で自分でプログラム作れって言われて、 グリコゲーム作ろうと思ったんだけど、うまく動作しないんだ。 助けてくれ。 エンドレスじゃんけん状態から抜け出せない・・・>< ↓みたいなプログラム作ったんだが。
451 名前:デフォルトの名無しさん [2012/01/20(金) 15:11:34.14 ] >>450 です プログラムです #include <stdio.h> #include <time.h> #include <stdlib.h> int main(void) { int you,cpu,kaidan; int y_position = 0; int c_position = 0; printf("グリコゲーム\n"); printf(“階段の数>>”); scanf(“ %d\n”,&kaidan);
452 名前:デフォルトの名無しさん [2012/01/20(金) 15:12:40.43 ] >>451 の続きです srand(time(NULL)); do { printf("最初はグー\n"); printf("\nじゃん!けん!\n"); do { printf("ポン!\n"); printf("グー:1 チョキ:2 パー:3 >>"); scanf("%d\n",&you); cpu = rand()%3 + 1; printf("cpu>>"); if(cpu == 1) printf("グー\n"); else if(cpu == 2) printf("チョキ\n"); else printf("パー\n"); } while(you == cpu);
453 名前:デフォルトの名無しさん [2012/01/20(金) 15:13:44.78 ] >>452 の続きです if (you == 1 && cpu == 2) { printf("you:「グ・リ・コ!」"); y_position = y_position + 3; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } else if (you == 2 && cpu == 3) { printf("you:「チ・ア・ガ・ア・ル!」"); y_position = y_position + 5; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } else if (you == 3 && cpu == 1) { printf("you:「パ・イ・ナ・ツ・プ・ル!」"); y_position = y_position + 6; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); }
454 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:15:02.09 ] >>450 宿題スレって知ってるか >>1 嫁
455 名前:デフォルトの名無しさん [2012/01/20(金) 15:15:22.80 ] >>453 の続きです else if (cpu == 1 && you == 2) { printf("cpu:「グ・リ・コ!」"); c_position = c_position + 3; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } else if (cpu == 2 && you == 3) { printf("cpu:「チ・ア・ガ・ア・ル!」"); c_position = c_position + 5; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } else if (cpu == 3 && you == 1) { printf("cpu:「パ・イ・ナ・ツ・プ・ル!」"); c_position = c_position + 6; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } }while((y_position < kaidan) && (c_position < kaidan));
456 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:16:33.71 ] >>451 とりあえずscanfに\nが入ってる時点でおかしい それ以上は宿題スレ行け
457 名前:デフォルトの名無しさん [2012/01/20(金) 15:16:48.40 ] >>454 すみません、2ちゃんねる初めて使うので知らなかったです。 そっちにいってみます
458 名前:デフォルトの名無しさん [2012/01/20(金) 15:18:18.73 ] >>456 ありがとうございます。いってきます。
459 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:24:18.77 ] 「チ・ア・ガ・ア・ル!」←なんだよこれ? チ・ヨ・コ・レ・エ・ト!だろ?
460 名前:デフォルトの名無しさん [2012/01/20(金) 15:28:08.03 ] >>459 パイナップルも6文字なので 5文字か4文字の言葉にしようと思いました。 普通はチョコレートですよね
461 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:55:31.89 ] うちの地元ではチ・ン・チ・コ・オ・ル!だったよ
462 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 16:21:23.14 ] ちょこれいとに1票
463 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 16:29:03.16 ] ぬるぽに1票
464 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 16:29:39.62 ] ガッ
465 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:59:29.24 ] チョキは蝶野正洋 パーは橋本真也 グーはグレートムタ
466 名前: ◆QZaw55cn4c mailto:sage [2012/01/20(金) 21:34:22.22 ] だるまさんがころんだ さんしろうがわらった げんごろうがもぐった かみふうせんがきえた ゆうらんせんがゆれた へんとうせんがはれた かめれおんのあかちゃん ちゃんぴおんのでかぱん あみにおんのぼうさん うちゅうせんがとんでく〜 www.youtube.com/watch?v=010MEVmjoVA
467 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 21:59:17.25 ] どこまでもうぜえなコイツ
468 名前: ◆QZaw55cn4c mailto:sage [2012/01/21(土) 00:46:36.37 ] >>467 相手にするなカス
469 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 01:23:37.04 ] 466 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん 468 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん これが正しい対処法
470 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 01:41:15.32 ] 469 名前:あぼ〜ん[レスあぼ〜ん] 投稿日:あぼ〜ん
471 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 01:48:10.53 ] >>469 透明にしたほうがよくね?
472 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 01:50:55.03 ] このスレを開かないのが一番いいと思う。
473 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:35:27.45 ] いや、にちゃんなんか見ないのが・・・…...
474 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 12:49:08.28 ] 死ねばいいと思うよ・
475 名前:uy mailto:sage [2012/01/21(土) 13:08:01.48 ] 生まれてきてごめんなさい
476 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 14:15:20.40 ] あやまる前にやる事があるんじゃないか?
477 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:40:05.55 ] _____ .ni 7 / \ ご冥福をお祈りします l^l | | l ,/) / /・\ /・\ \ .n ', U ! レ' / |  ̄ ̄  ̄ ̄ | l^l.| | /) / 〈 | (_人_) | | U レ'//) ヽっ \ | / ノ / /´ ̄ ̄ ノ \_| \rニ | `ヽ l
478 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:49:56.91 ] 文字列を読み込んで判定すんのってどうやるのが1番いいんですか? (厨房にわかるレベルでお願いします)
479 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:52:03.71 ] >>478 国語の勉強すりゃいい
480 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:52:06.95 ] 「判定」について ↓
481 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:55:40.81 ] 文字列を読み込んで?
482 名前:馬鹿で中2病な厨房 mailto:sage [2012/01/21(土) 15:58:40.18 ] 要するにriverと書き込むとmountainと出力されるプログラムが書きたいのです
483 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 16:08:44.71 ] >>482 strcmp()とか普通の方法じゃご不満なんですかね。 どうご不満とか書かないと、回答もないですよ。
484 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 16:49:03.21 ] >>482 #include <stdio.h> #include <string.h> void main(){ char buf[20],*p; fgets(buf,20,stdin); if((p=strchr(buf,'\n'))!=NULL)*p='\0'; if(strcmp("river",buf)==0)puts("mountain"); }
485 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 16:51:13.88 ] 答えられる頭のない奴は黙ってたほうがいいよ
486 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 16:55:17.01 ] 答えられない人はだれも発言してないように見えるけど。
487 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 17:07:57.40 ] >>486 >>485 は答えられないんじゃないかな
488 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 17:08:06.18 ] 一人だけいるよ >>485
489 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 17:08:36.76 ] うぉっ、かぶった ... orz
490 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 17:50:37.51 ] 答えられない>>485 は黙ってたほうがいいよ
491 名前:485 mailto:sage [2012/01/21(土) 18:07:48.60 ] 雑魚共がごちゃごちゃうっせーな 俺はプロだから答えられるに決まってるだろ
492 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 19:10:09.97 ] じゃあ答えろよ 何をと訊かれても知らないが
493 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 21:36:33.96 ] >>491 何のプロなん?
494 名前:485 mailto:sage [2012/01/21(土) 21:52:58.18 ] >>492 何を?
495 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:03:31.36 ] >>494 何のプロなん?
496 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:24:45.54 ] >>482 に俺はプロだから答えられるって言うのもプロっぽくないよな。
497 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:07:06.97 ] ああ成る程、プログラマ未満でプロか。
498 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:18:27.22 ] 何でID無いんだよ
499 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:20:27.02 ] QZが自演できるようにだろ。
500 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:30:12.37 ] ID化必要だよな
501 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 02:03:16.11 ] C言語にsprintfがあることを知った時、感動したな
502 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 04:35:58.10 ] >>501 昨日の俺だわw strcatとか使う意味ないわwww
503 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 08:57:59.99 ] sprintf使えるよな win32apiでMessageBoxで変数の値を出力したいときとかも重宝する
504 名前:馬鹿で中2病な厨房 mailto:sage [2012/01/22(日) 14:34:55.78 ] >>484 ありがとうございます
505 名前:デフォルトの名無しさん [2012/01/22(日) 16:15:06.90 ] awabi.2ch.net/test/read.cgi/poverty/1327050821/3
506 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:09:40.27 ] >>444 です。 n = 10 * n + (s[i] - '0'); これの意味がわかりました。 ヒントを下さった>>448 さん、ありがとうございました。 これはK&Rに載っているatoi関数、 int atoi(char s[]) { int i, n; n = 0; for (i = 0; s[i] >= '0' && s[i] <= '9'; i++) n = 10 * n + (s[i] - '0'); return n; } の一部分でした。
507 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:10:41.90 ] K&Rに習って、自分でもatoi関数を書いてみました。 #include <stdlib.h> int myatoi(char s[]){ char *p = s; int i, j, n, length, len, sum; int *ptr; length = 0; while (*p++) length++; ptr = calloc(length, sizeof(int)); len = length; i = 0; while (s[i] >= 0x30 && s[i] <= 0x39) { ptr[i] = s[i] - 0x30; n = 1; for (j = 0; j < length - 1; j++) n *= 10; ptr[i] *= n; i++; length--; } sum = 0; for (i = 0; i < len; i++) sum += ptr[i]; free(ptr); return sum; } ------------------------------------------- n = 10 * n + (s[i] - '0'); この式ってすごいうまいことやってるんですね
508 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:56:12.52 ] #include<stdio.h> #define NUMBER 5 int main(void) { int i; int tensu[NUMBER]={0}; int b[NUMBER]={0}; puts("please put an points of your students"); for(i=0;i<NUMBER;i++) { printf("Student No.%d,Student point:",i+1); scanf("%d",tensu[i]); if(tensu[i]>=60) b[i]=tensu[i]; } puts("The success students are....."); for(i=0;i<NUMBER;i++) { printf("student No.%d:%d points.\n",i+1,b[i]); } return 0; } コンパイルできるんですがどうも全て実行できません 16行目がいけないでしょうか?
509 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:05:41.91 ] scanf("%d",&tensu[i]);
510 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:14:23.06 ] \(^o^)/ ありがとうございます 初歩的なミスですね。。。
511 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:51:57.76 ] 就活中 (p)livedoor.blogimg.jp/jin115/imgs/3/1/31a6f8e6.jpg 就職後 (p)livedoor.blogimg.jp/jin115/imgs/2/b/2b790359.jpg 街の人(やらせ業者)募集中です
512 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 22:58:40.48 ] 平方根を求める関数sqrt(double x)は 「math.h」をインクルードすることで使えるようになりますが このヘッダ内を文字列「sqrt」で検索しても、よくわかってないせいもありますが それらしい計算式が見当たりません sqrt関数はどのようにして、平方根を求めてるのでしょうか? 数学的な計算式は理解しています math.h内でどのように処理されてるのか知りたかったので、聞いてみました win7でVC2010を使用しています
513 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:15:17.23 ] プログラム自体はふつう、objやlib、DLLなどにあります ヘッダは宣言のみです
514 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:21:47.22 ] >>ヘッダは宣言のみです 勘違いしてました ありがとうございます
515 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:00:27.01 ] 本来は使用する側が、関数が組み込まれているライブラリを指定するように作られてるが 標準関数や基本的な関数ははじめから組み込むようにコンパイラやIDEが指定してくれている。 このオマケのような仕組みのために間違えたんだろう。
516 名前:デフォルトの名無しさん [2012/01/23(月) 01:32:34.59 ] C言語で二点の緯度経度から距離を求めることができますか。
517 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:36:10.21 ] できない理由はありません。
518 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:37:30.57 ] >>512 これはGNU libcのものだが、 とにかく高速である事が求められる数値計算系の実装は パッと見て何をやっているのかさっぱり分からないことも多いw sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/ieee754/dbl-64/e_sqrt.c
519 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:38:23.05 ] ちゃんと考えると難しいな、高低は別としても
520 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:39:17.77 ] >>516 できるよ 地球の中心を原点として2点の座標のなす角を 内積(内積が0に近いときは外積)から求めて半径を掛ければおk
521 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:42:00.26 ] 地球は楕円だから、その分を考慮した やや大仰でめんどくさい式があったはず
522 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:43:42.87 ] どこまでの精度が必要か明確にしないとな
523 名前:デフォルトの名無しさん [2012/01/23(月) 01:44:06.59 ] >>517 ありがとうございます。 どのように行えばいいのでしょうか。 >>520 ありがとうございます。 むずかしそうな話ですね^^; 今探してたら www2s.biglobe.ne.jp/~satosi/gmap/map_length.html こういうのがあったんですが、これで可能でしょうか。
524 名前:デフォルトの名無しさん [2012/01/23(月) 01:45:31.89 ] >>521 ありがとうございます。 ヒュベニの公式みたいなやつでしょうか。 >>522 制度は一応、mぐらいあれば大丈夫です。
525 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:49:23.81 ] mまで必要ならもっと正確な計算が必要だな その計算じゃ無理だし地形データと海抜情報も必要だろう
526 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:56:21.45 ] 緯度経度のほか高さも必要だな。 東京タワー一階と、展望台では移動距離違うしな。直線も。
527 名前:デフォルトの名無しさん [2012/01/23(月) 02:18:43.44 ] >>525 ありがとうございます。 そうですか。 結構複雑な式になるんですかね^^; >>526 ありがとうございます。 高さもですか。。。 高さは平らとして考えていました。
528 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 02:30:51.20 ] そもそもの目的を言え。 m精度がいるのに高さ無視とか、どうせ大した意味もないんだろうけど。
529 名前:デフォルトの名無しさん [2012/01/23(月) 02:40:10.74 ] >>528 はい。 2点の距離を図り速さで割って そこまでにかかる時間を求めたいのです。
530 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 02:44:24.19 ] だったら道路情報じゃねえか 話にならんわ
531 名前:531 mailto:sage [2012/01/23(月) 03:43:29.63 ] 系列データの始点座標(x,y) 移動方向dir ステップ数stepsといった 入力されたデータをテキスト形式でファイルへ保存しないといけないのですが ファイルには-1076994648 2516192 8 1536358 といったわけの分からない数字が保存されます どうすればいいでしょうか? codepad.org/T7yR4vHH
532 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 03:49:24.86 ] x,y,dir,stepsに適切なデータを代入してやればいい
533 名前:531 mailto:sage [2012/01/23(月) 04:11:49.03 ] >>532 すいません具体的にはどういうことでしょうか?
534 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 04:20:00.15 ] 課題説明に記載されている書式なんてわからんから答えようが無い
535 名前:531 mailto:sage [2012/01/23(月) 04:36:55.59 ] >>534 すいません課題説明はこちらです ideone.com/eZmWI ファイルの入出力以外は問題ないようです
536 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 04:43:16.68 ] めんどくさいからよく読んでないけど save_textfil(int startpos[][2], int movedir[][MAXMOVE + 1], int movesteps[][MAXMOVE + 1]) のように渡してそれらを順次出力するだけでは?
537 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 08:13:05.15 ] まぁ、宿題スレに行け、と。
538 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:15:54.94 ] 宿題スレでは干されていました。
539 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:02:51.92 ] じゃ、諦めろ。
540 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:16:49.74 ] #include<stdio.h> double asd(double dx,int no) { int i; double tmp = 1.0; for(i=1;i<=no;i++) tmp *= dx; return (tmp); } int main(void) { int n; double x=0.0; printf("No.1:"); scanf("%f",&x); printf("No.2:"); scanf("%d",&n); printf("answer=%.2f",asd(x,n)); return 0; } 実行結果が No.1:5.0 No.2:2 answer=inf となります。なぜでしょう?
541 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:18:01.17 ] >>540 %f だから
542 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:20:40.25 ] #include<stdio.h> double asd(double dx,int no) { int i; double tmp = 1.0; for(i=1;i<=no;i++) tmp *= dx; return (tmp); } int main(void) { int n; double x; printf("No.1:"); scanf("%4.1f",&x); printf("No.2:"); scanf("%d",&n); printf("answer=%.2f",asd(x,n)); return 0; } 実行結果が No.1:5.0 No.2:answer=inf となりました\(^o^)/
543 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:25:04.22 ] >>542 %4.1f だから
544 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:27:58.60 ] >>543 lですかぁ ありがとうございます 本には1とかいてあるようにみえたので・・・
545 名前:デフォルトの名無しさん [2012/01/24(火) 20:07:37.80 ] C言語を知っていれば、なんでもできると思う人います?
546 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:10:33.78 ] そう思うやつはC言語を理解してない。
547 名前:デフォルトの名無しさん [2012/01/24(火) 20:32:53.92 ] 結局、基本はC言語だよね
548 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:37:02.06 ] >>545 君の言う「なんでも」というのが「妹を作りたい」とか 「ヨガファイアを身に付けたい」とか云うことなんだとすれば、 そんなことを思う人はキチガイだ。
549 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:37:21.10 ] >>545 はい
550 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:46:11.59 ] C言語を始めたいと思ったんだけど、「Borland C++ Compiler 5.5」の設定ができない… ilink32.cfg は拡張子変更できたんだけどbcc32.cfg が .txtファイルのままになってしまう
551 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:50:19.84 ] >>548 自己紹介乙。
552 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:53:55.18 ] >>550 setbccでググるといいかも
553 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:56:02.76 ] >>545 Cを知っていれば他の言語は簡単、みたいな意味だったら20年くらい前はよくそんなこと言われてたなって感じ。
554 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:00:30.49 ] 「妹を作りたい」、「ヨガファイアを身に付けたい」と言う理由で C言語を学ぼうと思った人がいるかも知れない。
555 名前:デフォルトの名無しさん [2012/01/24(火) 21:02:51.91 ] 同一翻訳内で同じ文字列は、 同じ領域に割り当てられると 規格で保証されていますか? char *amanojaku(char *str) { return str == "YES" ? "NO" : "YES"; } char *say(char *str) { printf("%s,", str); return str; } main() { // VCでは期待通り、"YES,NO,YES"と出力された say(amanojaku(say(amanojaku(say(amanojaku("NO")))))); }
556 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:07:14.39 ] >>555 "YES,NO,YES,"になると思うけど 保証されないはず
557 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:07:31.46 ] >>555 × str == "YES" ?
558 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:10:04.14 ] >>547 違うな。 ゴールに近い言語を使うのが正解。 VBで目的が達成できるものに、Cを敢えて使う理由なんか、無い
559 名前:デフォルトの名無しさん [2012/01/24(火) 21:12:47.63 ] char型の数字を配列にいれたいんですけど どうすればいいんですか? char a[10]=
560 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:13:58.37 ] >>558 大概excelで出来ちゃうので、プログラムくむ必要がなくなる。
561 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:14:11.05 ] >>555 コンパイラオプションによる。
562 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:14:35.89 ] >>559 char a[10] = { 1, 2, 3 };
563 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:15:04.56 ] 数値じゃなく数字なら char a[10] = { '1'. '2'. '3' };
564 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:15:26.43 ] >>555 コンパイラ依存だったような。 >>557 この話でそこに突っ込みを?
565 名前:デフォルトの名無しさん [2012/01/24(火) 21:22:10.34 ] a3b4と入力したらaaabbbbと出力するようにしたいんですが できません。 教えてくれませんか?
566 名前:555 mailto:sage [2012/01/24(火) 21:24:14.11 ] >>556 やっぱり保証はされないですか 残念です。 >>561 具体的にこのオプションがあればOKとかあれば 注意書きして、この方法を使ってみたいのですが >>564 大抵のコンパイラならOKそうな気がするんですけどね
567 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:30:16.43 ] >>565 ab3と入力したら ・abbb ・aaabbb どっちになるの? あと0の扱いは? a01bb2 とかの文字列はどう解釈すんの? プログラム以前の問題だ
568 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:30:57.36 ] >>555 文字列の比較ならstrcmp()使えよ
569 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:32:06.26 ] >>567 ab3 => abbb a3b3 => aaabbb a01bb2 => abbb
570 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:32:54.55 ] >>565 ab0c12d5 こういう入力だと、出力はどうしたい?
571 名前:デフォルトの名無しさん [2012/01/24(火) 21:36:16.27 ] >>567 すみません。 数字の0と1は入力ミス扱い。 連続した数字も入力ミス扱い。 二桁以上も入力ミス扱い。 ab3はabbbとなります。 お願いします。
572 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:00:55.70 ] >>571 念のため聞くけど、 「連続した数字」と「二桁以上(の数字?)」は何か違う全くベツのモノ?
573 名前:デフォルトの名無しさん [2012/01/24(火) 22:08:36.77 ] >>572 同じです;; 二桁以上の数字は入力ミス扱いです a10やa23など。
574 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:13:00.32 ] >>573 もう少し聞くけど、 もしかしてその文字列は「数字から始まってはいけない」とかいうルールがあったりしない?
575 名前:デフォルトの名無しさん [2012/01/24(火) 22:19:19.40 ] 数字から始まってはいけないですね〜 まぁ早く解いて。
576 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:28:23.66 ] 正体は社交場かなんかと勘違いしてるお子チャマか
577 名前:デフォルトの名無しさん [2012/01/24(火) 22:31:54.75 ] あー気持ちわりいなお前 明らかにお前の方がなめてただろ こっちがいらつくのはあたり前だろ 早く寝ろおっさんw
578 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:41:42.77 ] ワロタ パターンマッチングの精度半端ねーな
579 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:43:34.53 ] >>565 #include <stdio.h> #include <string.h> int mprint(char *str) { int i, len, n; len = strlen(str); for (i=0; i< len; i++) { char a = str[i]; if ('0' <= a && a <= '9') return 1; else{ char b = str[i+1]; if ( b == '0') return 1; if ('1' <= b && b <= '9') { n = (b - '0'); i++; } else n = 1; while (n-- > 0)putchar(a); } } return 0; } int main() { char buf[256]; printf("input:");scanf("%s",buf); mprint(buf); return 0; }
580 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:51:28.42 ] >>566 gccで-fwritable-stringつけたら動かないんじゃないの
581 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:52:52.47 ] strings、だったごめん。 manから引用 > -fwritable-strings > 文字列定数を書き込み可能なデータセグメントに配置し、同内容の文字列を 1 つの共有オブジェクトにする処理を行いません。これは、文字定数に書き込むことができることを仮定した昔のプログラムとの互換性をと > るために提供されています。‘-traditional’ オプションも同様の効果を含みます。 > > 文字定数に書き込むという考えは非常によくない考えです。“定数” はまさに定数であり、変化すべきではありません。
582 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 00:52:06.30 ] >>555 これでいけ #include <stdio.h> #include <string.h> char *amanojaku(char *str) { return strcmp(str, "YES") == 0 ? "NO" : "YES"; } char *say(char *str) { printf("%s,", str); return str; } int main() { say(amanojaku(say(amanojaku(say(amanojaku("NO")))))); return 0; }
583 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 00:56:52.34 ] 確かにstrcmp()で何の問題があるのかとは思うけど
584 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 01:05:34.77 ] そんな話なのか? それなら単に2つポインタ使えばいいだけじゃねーのか。
585 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 07:14:03.55 ] 単に規格の範囲を疑問に思っただけなのか 「同じ領域に割り当てられると保証されて」いてほしい理由があって聞いたのか どっちでしょうね
586 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:01:41.80 ] 保証されている前提で書いた自分のプログラムをなんとか正当なものにしたいんじゃね? 仕事だったらありえねぇ馬鹿だがw
587 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:31:02.40 ] 何で攻撃しまくりなんだよw マクロで文字列リテラルが展開されまくったとき、exe サイズ膨れ上がらないかとか さらにそのソースはいろんなコンパイル環境で使いまわすとか 気にしなきゃいけない可能性はいろいろあるだろうに
588 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:34:18.18 ] 使いまわすようなコードに 文字リテラルなんて埋め込むなよ
589 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 09:27:52.57 ] >>587 もしそういう要求があるなら尚のこと、コンパイラ任せにするべきじゃない。 例えば、リテラルへのポインタを返す関数を用意しておけば済むことだ。 それにどうせ、マクロを使ったってリテラルの連結をする場合は別領域だ。
590 名前:デフォルトの名無しさん [2012/01/25(水) 12:24:43.54 ] こういうマクロは規格上許されていますか? VC2008では再帰展開は行われず、aaaがbbb aaaに展開されます。 #define aaa bbb aaa
591 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:37:28.66 ] >>590 Cリファレンスマニュアルによれば、規格上はアリ。ただし古い処理系だと 再帰展開して止まらなくなってしまうケースがあったようだ
592 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:51:22.39 ] >>591 ありがとう。これで安心して使えます。
593 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 13:01:01.04 ] assert("hoge" == "hoge");
594 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 13:07:38.56 ] 文字列を表示するときにstdio.hをおまじないで書く覚えました このstdio.hみたいな○○.hっていうので他にもどんなことが事が出来るのか知りたいのですが なんていうキーワードで検索したら出てきますか?
595 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 13:14:33.33 BE:139784674-2BP(294)] >>594 C 標準ライブラリ
596 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 13:15:45.05 ] >>594 そのまんま"stdio.h"で検索しても それなりのものが出ると思うんだが
597 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 13:27:18.07 ] >>594 赤くなーれ! 標準Cライブラリ - Wikipedia ja.wikipedia.org/wiki/標準Cライブラリ - キャッシュ limits.h, 整数型の大きさ. locale.h, 文化圏固有操作. math.h, 数学. setjmp.h, 非局所分岐. signal.h, シグナル操作. stdarg.h, 可変個数の実引数. stdbool.h, 論理型および論理値 (C99より追加). stddef.h, 共通の定義. stdint.h, 整数型 (C99より追加). stdio.h ...
598 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 13:33:59.19 ] 2038年以降のタイムスタンプを取得する方法はないのですか?
599 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 13:56:21.61 ] ポインタのインクリメントについて質問です。 while (*p++) { ... } このpは、ポインタをインクリメントしているのであって、pの指す*pをインクリメントしているのではないのですよね? そうであれば、これは*pが0x00か比較してからpをインクリメントしているのか、それともpをインクリメントしてから*pが0x00かどうか比較しているのか、どちらなのでしょうか。 演算子の優先順位を見ても、間接演算子*とインクリメント演算子++は優先順位が同じなので、わかりませんでした。
600 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:01:06.77 ] 演算順の話じゃない。 後置++の演算値はインクリメント前、したがって*演算子に与えられるアドレスはインクリメント前。
601 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:12:00.71 ] >>599 >while (*p++) { while (*p) {p++; と見なせる。
602 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:14:48.84 ] 見なせません
603 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:21:59.10 ] ++*p *++p *p++ (*p)++
604 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:47:01.82 ] >>595-597 ああああああああああああ赤くなっちまったよ! 最後にすいません これら全部の標準ライブラリを覚えないとやっぱりやっていけないですか?
605 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:55:25.12 ] たかがこのくらいの数でそんな事を言ってる奴には無理
606 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:56:30.22 ] うわwwwじゃあ全部覚えるかw
607 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 15:00:18.81 ] >>606 別に覚えなくとも、うっすら片隅にいれておけばいいよ 標準ライブラリで提供されてるのに自作するのを避けられる、、けど>>606 みたいな人は 自作前にこことかで聞くだろうから未然に防がれるのかな。
608 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 15:01:35.54 ] 概要と主要なやつだけ覚えて、残りは使用する度に使い方検索する。
609 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:21:41.26 ] 例えば、キーボードのJを押すとKが出力されるような自作のキーカスタマイズプログラムを作りたいのですがうまいこといきません。 矢印キーを押すとマウスカーソルを動かす事に最初に成功したので、 同じようにすればキーも変えられると思ったのですが何故か反応せず。 キー関係はマウスと違い何か必要なのでしょうか? よければサンプルプログラムなどいただけないでしょうか
610 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:23:05.54 ] スレチ
611 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:24:15.44 ] フックしたキーを捨てないとだめじゃないかな
612 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:38:40.85 ] HTMLで画像の上にマウスカーソルを乗せるとツールチップが表示されるじゃないですか Cでツールチップを指定した座標に表示させたいのですがなんて標準ライブラリを使えば実現できますか?
613 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:40:19.54 ] webprog行け
614 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:43:59.59 ] いやwebプログラムの質問してるんじゃなくて ツールチップを表示させたいだけです
615 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:51:39.38 ] そんなものはない
616 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:53:39.68 ] >>614 付箋アプリみたいな?ウィンドウ作ればいい
617 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:28:25.50 ] #include<iostream> #include<string> int main() { std::string name; std::cout<<"hello"<<std::endl; std::cout<<"こんにちは"<<std::endl; std::cin>>name ;std::cout<<name<<std::endl; } 最後から二番目の行のstdの前の「;」にはなんの意味があるの? それ抜きにするとエラーになるんだけど
618 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:30:12.47 ] std::cin>>name
619 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:38:12.65 ] >>618 std::cin>>name ;
620 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:42:51.90 ] >>619 ;std::cout<<name<<std::endl;
621 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:43:01.47 ] わからない… つまり、std::cin>>nameの結果を表示するために;std::cout<<name<<std;;endl;にしなくちゃいけないことでおk?
622 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:44:43.27 ] あ、もしかしてstd::cin>>name; にしろってこと?
623 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:44:50.34 ] >>621 std::cin>>name
624 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:51:45.51 ] >>622 std::cout<<"hello"<<std::endl ; std::cout<<"こんにちは"<<std::endl ; std::cin>>name ; std::cout<<name<<std::endl ; } べつにこうでもいいよ
625 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:54:55.70 ] とりあえず、Cじゃないのはわかってるよな。
626 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:19:26.14 ] 素直にスレ違いっていえないのは何で?
627 名前:555 mailto:sage [2012/01/25(水) 21:48:50.01 ] >>581 昔は文字列定数書き換えられたんですね。(確かにconst char *じゃないし) それならば保証は難しそうですね。ありがとうございました。 >>583 単純にパフォーマンスが理由です。 >>584 文字列が英語にしにくい日本語なので、 変数名で処理を書くと分かり難かったので聞いてみました。 enumに日本語が使えればいいんですけど static char *const MISONIKOMI = "味噌煮込み"; static char *const MIZUTAKI = "水炊き"; static char *const OYAKODON = "親子丼"; char *kondate(char *yesterday) { if (yesterday == MISONIKOMI) return MIZUTAKI; else if (yesterday == MIZUTAKI) return OYAKODON; else return MISONIKOMI; } char *kondate(char *yesterday) { if (yesterday == "味噌煮込み") return "水炊き"; else if (yesterday == "水炊き") return "親子丼"; else return "味噌煮込み"; }
628 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:55:16.53 ] コメントに書けばいいじゃねぇか。
629 名前:デフォルトの名無しさん [2012/01/25(水) 22:02:03.95 ] 次のwindowsってC言語でアプリの開発できるのかな? なんだかタッチパネル方式になるって どこかに書いてあったけど。
630 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:32:01.23 ] これでいいかいのう? #include <stdio.h> #define MISONIKOMI "味噌煮込み" #define MIZUTAKI "水炊き" #define OYAKODON "親子丼" #define MISONIKOMI_ 0 #define MIZUTAKI_ 1 #define OYAKODON_ 2 char *menu[] = {MISONIKOMI, MIZUTAKI, OYAKODON, NULL}; char *kondate(char *yesterday) { if (yesterday == menu[MISONIKOMI_]) return menu[MIZUTAKI_]; else if (yesterday == menu[MIZUTAKI_]) return menu[OYAKODON_]; else return menu[MISONIKOMI_]; } int main(void) { int i; char *y, *k; for(i=0;menu[i] != NULL;i++){ y = menu[i]; k = kondate(y); printf("i = %d, kondate(%s) = %s\n", i, y, k); } return 0; }
631 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:32:50.66 ] タッチパネルだったらCで開発できないと思った根拠は何?
632 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:38:43.77 ] >>630 こういうのが30分以内にさらっとかける男になりたいんですが C言語のおすすめの入門書を教えてください JavaScriptだとオライリーが有名です
633 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:39:23.22 ] タッチパネルでCのコードを入力できないって言う意味?
634 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:48:41.09 ] >>632 落ち着いて。基本に忠実に書いているだけだよ。 意識してやったことは、 文字列はマクロで定義しておく、 文字列に対応する整数値は 文字列 + _(アンダースコア) 文字列を格納する配列はNULL終端にする。 関数の引数は一度変数に代入したものにする。 # こうすると、debugの時に便利だよね。 私は本をそんなに読んでないけど、 もっている本は、 プログラミング言語C第2版 プログラミング作法 ぐらいだった。
635 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:00:40.57 ] >>634 ありがたきお言葉頂戴しました
636 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:27:52.22 ] 質問です。ランダムで10文字の英字を返す関数を作りたいのですが strcat_sのところでエラーで落ちます。(strcatだと通る) なにがいけないのでしょうか? char* randomWord(void){ static char alphabet[27] = "abcdefghijklmnopqrstuvwxyz"; char word[2]="\0"; static char *words; words = (char *)calloc(26, 1); int i; for(i=0; i<10; i++){ memcpy(word, &alphabet[0]+rand()%26, 1); strcat_s(words, 1, word); } return words; }
637 名前:デフォルトの名無しさん [2012/01/25(水) 23:30:50.41 ] C言語で緯度、経度の二点間の距離を出したいのですが www2s.biglobe.ne.jp/~satosi/gmap/map_length.html このページで大丈夫なのでしょうか。 また、違うようでしたらどのようにすればよいのでしょうか。 参考になるページなどございましたら、よろしくお願い致します。
638 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:37:40.46 ] >>636 コイツバカじゃねーの、 &alphabet[0]+rand()%26 なんてアフォなことしなくてもいいじゃん
639 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:41:13.07 ] >>638 是非教えていただきたいです・・
640 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:41:22.46 ] >>636 どこがって。。。 全体的に悪かったから書き直しておいたよ。 こっち使って。 コメントにしている所を有効にした場合は、alphabet変数はいらなくなります。 char* randomWord(void) { #define WORD_LENGTH 10 const char alphabet[27] = "abcdefghijklmnopqrstuvwxyz"; char *words = NULL; int i, r; words = (char *)malloc(WORD_LENGTH+1); if(words == NULL) return NULL; for(i=0; i<WORD_LENGTH; i++){ r = rand() % 26; words[i] = alphabet[r]; // or // words[i] = 'a' + r; } words[WORD_LENGTH] = '\0'; return words; }
641 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:43:13.46 ] strcat_s(words, word, 1); かな?よく分からんけど
642 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:46:03.45 ] あと、こう書いた方がいいよ const char alphabet[] = "abcdefghijklmnopqrstuvwxyz"; もしくは const char *alphabet = "abcdefghijklmnopqrstuvwxyz";
643 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:49:16.77 ] >>640 ありがとうございます!凄い勉強になります・・
644 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:50:56.06 ] >>637 C言語に関係ない問題 地理板?地学板?の方がいいと思うよ でも、まあ、どうぞ oshiete.goo.ne.jp/qa/249931.html
645 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:52:15.40 ] C# から C++(DLL) を呼ぶ処理を作成しています。 typedef struct TEST_SUB { char szName[1000]; } STRUCT_TEST_SUB; typedef struct TEST { char szName[1000]; int iCnt; STRUCT_TEST_SUB *pStructTestSub; } STRUCT_TEST; 構造体をこんな感じで作成して。 # DLL に定義した関数 structMethod(TEST *test) C# 側で構造体に値を詰め込んで渡して、C++ 側で取得したいんですが。 どうしても、TEST_SUB の値をとることができません。 (空の値が取得されます) C# 側の値の設定方法が悪いのでしょうか??
646 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:55:07.45 ] >>629 APIが提供されるはずだからCで問題ないよ
647 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:58:53.92 ] >>642 わかりました words[i] = 'a' + r;みたいな書き方もできるんですね・・ 本当に参考になります。ありがとうございます。
648 名前:デフォルトの名無しさん [2012/01/26(木) 01:59:00.64 ] >>644 ありがとうございます。 挑戦してみたんですが、なかなかうまくいきません。 どのようなプログラムになりますか。
649 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 02:02:46.07 ] >>648 あーーーウゼーな、 勘違いしたアホがいつくとロクなことがねーよ プログラムは簡単だよ あとは数学の問題 その数学部分を理解出来ないのは お前がアホだから さっさと出てけ
650 名前:デフォルトの名無しさん [2012/01/26(木) 02:21:07.90 ] >>649 ありがとうございます。 数学はなんとなく理解はできるのですが、 プログラムがかけません。 また、ヒュベニの公式を使って、求めることができるみたいなのですが、 プログラムをどのようにしたらよいのかわかりません。
651 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 02:46:01.52 ] ちょっと前に同じ質問してた人がいたけど、同じ人?
652 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 02:59:12.57 ] >>650 適当な計算プログラムつくればいいのに。 数学理解できるなら段階を踏めばいいことぐらいわかるでしょ
653 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 07:50:35.29 ] プログラムつったって数式に条件分岐と繰り返しとサブルーチン足した程度のものでしょ そのなんちゃらの公式は理解してるんだよね? だったらあとはそれを分解して目的に応じて再構築するだけじゃないの とそのなんちゃらの公式を知らないがいってみるテスト
654 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 13:24:31.17 ] >>650 ググったらJavaのコードがあったから、これをCにすればいいのでは? yamadarake.web.fc2.com/trdi/2009/report000001.html
655 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 15:15:11.42 ] >>654 codepad.org/lqKCchcU なんでcodepadはCだとsin/cosが使えないんだろうか。
656 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 15:44:05.57 ] -lmついてないってやつ?
657 名前:デフォルトの名無しさん [2012/01/26(木) 16:57:27.59 ] VCのコードが全然変わってくる可能性は無い?
658 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 16:58:18.75 ] は?
659 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 17:05:01.55 ] >>656 Language: Cを選ぶとそういう状態だね。 どっかオプションとかあるんかな。
660 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 18:22:26.63 ] ないんじゃないかな 確か前見たときはなかった
661 名前: ◆QZaw55cn4c mailto:sage [2012/01/26(木) 19:26:20.70 ] >>640 >rand() % 26; rand() の返り値は悲惨なまでにランダムではない処理系があるので剰余演算子で乱数生成範囲を制限するのは誤りとはいわないまでも疑問手である件について云々かんぬん www.kouno.jp/home/c_faq/c13.html#16
662 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 20:14:22.25 ] これだけレスがあって、やっと言えたのがそれだけか。 コテも大変だな。
663 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 20:20:37.49 ] >>661 >>636 の初期の目的に沿おうとするなら、こう? rand() / (RAND_MAX / N + 1) - 1 N + 1 な理由が分からね。 N だけでいいなら - 1 が不必要になるんだが。
664 名前:デフォルトの名無しさん [2012/01/26(木) 20:40:52.01 ] 理解力、コミュ力と、数学力ってIT業界入るにはどっちが必要ですか?
665 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 20:42:54.55 ] C言語のソースコードって全部で何行くらいなんでしょうか?
666 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 20:53:46.83 ] >>665 兆か京のけた?
667 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:06:41.65 ] >>666 ええええ... どうやって開発者は書いたんだ。 大学のレポート課題です。お願いします。
668 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:13:07.13 ] tiny Cならそんなに行数としては少ないかもね 大学の課題だったら自分で調べるといい
669 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:13:07.47 ] Googleの入試並みの問題だなw さぁどっから推定しようか。人数?会社?機器?PCの台数?
670 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:16:41.93 ] C言語で書かれたプログラムって、世界に何本くらいあるのかな?
671 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:19:47.19 ] >>669 C言語開発者が開発に取り組んだ時の、動機、人事的な背景を考察せよ。 っていう問題。
672 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:22:35.45 ] Cが無いときのソースコードはCじゃないってことはわかるよな。
673 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:26:37.29 ] >>672 直接機械をいじってプログラムを作ってたんだろ? 静電気とか走っただろうな、手袋してたろうけど。
674 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:27:30.83 ] それ、おもしろいことでも言ってるつもりなんか?
675 名前: ◆QZaw55cn4c mailto:sage [2012/01/26(木) 21:52:33.58 ] >>663 (int)(rand() / (RAND_MAX + 1.0) * 26) でいいんじゃないですか? +1.0 するのは RAND_MAX
676 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:56:10.58 ] GCCはGCCでコンパイルします。
677 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:03:02.70 ] 世の中のCで書かれたコードの総行数と勘違いしている人がいるね。 >>672 そうなんだけど、それだけじゃ△だな
678 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:07:50.39 ] >>670 の書いた通りわざと書いてるのを勘違いしてるバカがいるな。
679 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:10:26.26 ] 曖昧な質問だから、勘違いと言い切るのはどうかと思う。 C言語のソースコードって言っても、どのコンパイラの話かも不明だし。
680 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:13:34.28 ] はいはい。
681 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:38:25.74 ] #include <stdio.h> #define WIDTH 10 #define HEIGHT 20 #define DEPTH 40 double temperature[DEPTH][WIDTH][HEIGHT]; int calc_flag[DEPTH][WIDTH][HEIGHT]; int main(){ int h,w,d; for(h=0;h<=HEIGHT;h++){ for(w=0;w<=WIDTH;w++){ for(d=0;d<=DEPTH;d++){ temperature[d][w][h]=20.0; calc_flag[d][w][h]=1; }}} printf("%f\n",temperature[0][0][0]); fflush(stdin); getchar(); return 0; } 三次元配列の計算がうまくいきません。 上は最も単純な例ですが、このコードを実行しても表示が0.000000となってしまいます。 しかし、calc_flag[d][w][h]=1;の行をコメントアウトした場合は20.000000となり意図した値になります。 もう何が何やらさっぱりわからないのでお助け願います。 環境:Microsoft Visual C++ 2010 Express
682 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:46:51.02 ] >>681 for(h=0;h<HEIGHT;h++){ for(w=0;w<WIDTH;w++){ for(d=0;d<DEPTH;d++){
683 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:47:03.01 ] >>681 a[10]の場合、a[0]〜a[9]しかアクセスしちゃダメよ。
684 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 23:05:46.98 ] >>682-683 うわああああああ恥ずかしいいいいいい おかげで問題は解決しました。 説明書を読まない初心者みたいな質問をしてすみませんでした。
685 名前:デフォルトの名無しさん [2012/01/26(木) 23:21:19.54 ] >>665 ある大手メーカーの看板商品でだいたい数百万行(当時20世紀) ある大手物流センターでは最長不倒関数の競技場で1ソース1万行超えが日常だった ある半官半民の案件では C なのにグローバルとマジックナンバーの嵐でまるで拷問室 ハード系(C よりアナログやメカが得意)の某社さんのコードは美しさが際立っていた おめ、gcc のソースの行数数えてみたか? 数えていなければ、それが正解だと思うぞ
686 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 23:28:14.90 ] 分岐の要件が薄っぺらいなら長大な関数でも別にいいと思うし 大量のグローバル変数も整理されてるなら正しい使い方 でもマジックナンバーはヤバイよな
687 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 23:37:01.71 ] 量の多さで競うな。 コード量が少なく開発日数の少ないのが優れてる。 同品質なら。
688 名前:デフォルトの名無しさん [2012/01/26(木) 23:51:55.62 ] >>654 >>655 ありがとうございます。 これで、二点間の距離でますよね?
689 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 23:54:34.24 ] >>688 もちろん、でますん。
690 名前:デフォルトの名無しさん [2012/01/27(金) 00:06:52.66 ] >>689 ありがとうございました。 助かりました。 単位は、メートルですよね?
691 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 00:10:56.57 ] 出ても正しくはないだろ。出すだけならreturn 1;でもいい。 ある程度は正しいかもしれない。
692 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 00:13:34.25 ] 止まった時計でも日に二回正確な時を示すって感じだな
693 名前:デフォルトの名無しさん [2012/01/27(金) 00:18:41.80 ] >>691 え、どういうことですか。
694 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 00:19:58.99 ] あとは自分でやれって事だ
695 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 00:39:35.20 ] >>693 ベッセル楕円体という近似はいまいちということが判明してる。 国土調査課 地籍活用GIS 世界測地系への移行 tochi.mlit.go.jp/tockok/gis/gps/main4.html 日本経緯度原点に450mのズレ 近年では人工衛星を使った観測等により、地球の極めて正確な形状が明らかになりました。それによると、地球は当時推定されていたベッセル楕円体よりも長半径が約700m長いことが判明しました。 座標系 vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html いろいろな地球楕円体 天文経緯度と測地経緯度 www.h2.dion.ne.jp/~kazuf/sao/135e/tenmonsokuchi.htm
696 名前:デフォルトの名無しさん [2012/01/27(金) 00:39:39.75 ] >>694 答えが正確ではないということですか。
697 名前:デフォルトの名無しさん [2012/01/27(金) 00:41:30.39 ] >>695 地球を真球と考えた結果ということですね。 そして、地球は真球ではなく、楕円となっているため 値が正確ではないということですね。
698 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 00:42:44.48 ] だからさあ、何につかうんだよ
699 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 00:44:24.13 ] よりよい近似モデルを使うか、Googleアースのように高度を含めた地球の3Dモデルデータを持っていたら割と正確に出せる。
700 名前:デフォルトの名無しさん [2012/01/27(金) 00:52:04.99 ] >>698 距離を求めて、そこまでの時間を求めたいです。 速さは、GPSから取得します。 >>699 そうですか。 これだけだと正確ではないのですね。。。
701 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 00:52:59.04 ] 最近はここまでのアホも珍しくないからなぁ
702 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 01:18:19.64 ] 直線距離もとめたって意味が無いってわからないのかな いいかげんあきらめろよ
703 名前:デフォルトの名無しさん [2012/01/27(金) 01:57:40.67 ] >>702 陸上では、あまり意味がないかもしれませんが 海上などでは、直線距離で大丈夫ですよね?
704 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 02:06:52.65 ] >>703 はやっぱりアホだ
705 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 02:29:56.50 ] >>684 はずかしがるってことは、間違えている内容をちゃんと理解できてるから。 恥ずかしがらなくていいよとはいえないけど、喜んどけ
706 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 02:31:02.44 ] >>685 最長不倒関数とか懐かしい言葉を出しつつも関数の行数を出さないあたりが渋いよね
707 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 02:33:02.24 ] >>703 海流
708 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 03:12:57.15 ] >>685 はwc -l を知らない肉体労働者
709 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 03:13:41.57 ] >>705 は優秀な燃料管理技士
710 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 03:55:17.37 ] wcで関数の行数数えるのも面倒だろ。 つか、ファイルに分けるんだったらその時点で行数わかるし。
711 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 04:21:46.97 ] 「コードの総行数」という定義は、意外と厄介。 1文を複数行に分けて書いたときをどう扱うかにもよる。 コメント行を含めるか、含めないかでも変わる。 結局、元の質問(>>665 )が、実行数と論理行数(ステップ数)の どっちが欲しいかによる。 答えは知らないけど・・・。
712 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 04:28:50.08 ] >>711 ステップカウンタってのがあるよ。
713 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 04:44:45.48 ] 意味ないけどな。
714 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 12:30:45.04 ] 擬似乱数じゃない本物の乱数(暗号的なんちゃら乱数)を使いたいんですが ライブラリは存在しませんか?
715 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 12:37:37.62 ] /dev/random openssl, ssh, gmp, crypto
716 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 12:39:02.26 ] >>714 今はそういうライブラリは存在しない。 そもそも、 ・一方向性関数が存在すれば暗号論的擬似乱数生成機が存在する事が知られている。 ・現在のところ、一方向性関数の存在性は証明されていない。 ・一方向性関数の存在性が示せれば、P≠NP予想が証明できる。 という状況。 凡人にゃあ無理。 あとは、ソフトウェアじゃなくてハードウェアデバイスでなんとかするしかない。 放射性物質の崩壊を検知して、それを0,1で置き換えてくれる装置とか。
717 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 12:53:47.90 ] ja.wikipedia.org/wiki/Rand のコード例のものをコピペして動かしても 常に0しか返ってきません 原因は何故ですか?
718 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 13:27:52.01 ] だって return 0; だから・・・
719 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 13:34:16.43 ] え?乱数とreturn 0に何の関係があるんですか? 出力はreturn 0の前ですけども
720 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 13:38:49.56 ] 「返ってくる」のはreturn 0だからという言葉遊びだと思うよ codepad.org/Vou6Xbqh
721 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 13:54:56.13 ] 何で実行するたびにいつも同じ数字が返ってくるんですか? 毎回違う数字は帰れないんですか?
722 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 14:16:39.52 ] コピペ間違いじゃなければお前の実行環境に問題がある。 Wikipediaの例は標準的な環境で正しく動くはずだ。
723 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 14:37:59.51 ] VC++2010Express Win32コンソールアプリケーション test.cにコード貼り付けて printfとreturn 0;の間にブレークポイント置いてF5押したら 同じ数字しかでません
724 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 15:20:46.38 ] >>723 もいっかいやってみろ。さっきとは違う値が出ないか?
725 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 15:29:41.77 ] >>714 今年出るIvy Bridgeまで待て。AVXにRdRAND命令が追加される。
726 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 16:45:41.50 ] メモリやHDDの書込速度を測ってその最下位ビットを使え。
727 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 16:58:53.45 ] >>723 やってみた。VC++のrandomの性能が悪すぎる。 seedの下位ビットはまるっきり無視されてるような感じだ。 srand((unsigned int)(time(0) << 16))); こんなもんでどうか。
728 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 17:01:26.43 ] >>717 処理系によっては、1回目の値が前回実行時と大差ないものがあり、RAND_MAXで割ると0.6あたりをウロウロしたりする。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { srand((unsigned int)time(0)); printf("%d¥n", rand()); return 0; } 上記コードを3回実行してみると、 gcc version 4.2.1 (Apple Inc. build 5664)では 1470289798 1470306605 1470306605 codepad.org/ では 121543468 627453109 1744218406 応急回避方法は、0~9が必要なら、rand() % 10
729 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/01/27(金) 17:40:58.46 ] >>692 俺もリンドバーグのファンだよ。
730 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 17:58:24.26 ] 生成速度はよくないが、規則性のないはずの乱数。 #include <stdio.h> __int64 rdtscval() { __asm { rdtsc } } void waitfnc(){FILE *fp = fopen("tmp", "wb");fwrite("tmp", 1, 3, fp);fclose(fp);} unsigned int rand_rdtsc() { unsigned int n,x=0; for(n=0; n<32; n++) { waitfnc(); __int64 val=rdtscval(); x|=((val>>3 )&1)<<n; } return x; } void main() { for(int n=0; n<100; n++) printf("%d\n",rand_rdtsc()); }
731 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 18:02:05.15 ] >>730 のウェイトをメモリアクセスにしたら速度は上がるが、ほぼ等速度になってしまい乱数にならない。 ファイルへのアクセスだとOSや他のアプリやサービスなどが働いて等速度でなくなる。
732 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 18:09:55.22 ] 本当wikipediaのコードはksだな
733 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 18:12:07.47 ] __asmは64bitで使えないからダメ。
734 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 18:21:25.14 ] >>733 なるべく高精度のタイマーだったらなんでもいい。最低一ビットリターンできれば良い。
735 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 18:33:22.51 ] >>714 そっちのけで、入門編から飛び出している件
736 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 19:28:27.89 ] >>733 #include <stdio.h> #ifdef _WIN32 & !(__GNUC__) struct timezone { int tz_minuteswest; int tz_dsttime; }; #include <windows.h> int gettimeofday(struct timeval *tv, struct timezone *tz) { LARGE_INTEGER t; QueryPerformanceCounter( &t ); tv->tv_sec = t.HighPart; tv->tv_usec =t.LowPart; return 0; } #else #include <sys/time.h> #endif void waitfnc(){FILE *fp = fopen("tmp", "wb");fwrite("t", 1, 1, fp);fclose(fp);} unsigned int rand_rdtsc() { unsigned int n,x=0; for(n=0; n<32; n++) { waitfnc(); static struct timeval t; gettimeofday(&t, NULL); x|=((t.tv_usec>>3 )&1)<<n; } return x; } void main() { for(int n=0; n<100; n++) printf("%d\n",rand_rdtsc()); }
737 名前: 忍法帖【Lv=27,xxxPT】 mailto:sage [2012/01/27(金) 19:44:24.65 ] 組織は些細な物事に対して、不釣り合いなほど重点を置く
738 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 20:13:15.74 ] >>727 下位ビットが無視されるって、何秒かたっても同じ乱数が生成されたってこと?
739 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 20:14:18.72 ] >>728 世の中の逆を行くコードを書くことになるとは
740 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 20:14:53.69 ] >>738 >>727 がバカなだけ 内部状態の伝播にちょいと時間がかかる
741 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 20:21:17.99 ] 男なら擬似乱数は許せないのだよ君たち
742 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 20:42:37.60 ] だからIvy Bridgeまで待てといっとろうが。 待てないならこれでも使え。 www.fdk.co.jp/whatsnew-j/release041005-j.html
743 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 20:51:48.00 ] そのなんとかブリッジっていうのはVC++2010デモ使えるのでしょうか?
744 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 21:16:44.82 ] 疑似乱数なら、Boostでも使うとか。
745 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 21:31:46.54 ] >>743 そりゃ使えるだろ。
746 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 21:35:31.60 ] >>745 なんとかなんとかじゃないひとが使えないんじゃないでしょうか
747 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 22:05:36.77 ] 日本語でおk。
748 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 22:43:43.41 ] 南斗か
749 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:18:21.29 ] ttp://www9.plala.or.jp/sgwr-t/c/sec15-5.html このサイトの、「(3)自己参照構造体を使ったリスト処理」のところで、 /* ポインタのつなぎ換え */ p->next = head; /* 今までの先頭ポインタを次ポインタに */ head = p; /* 新たな領域を先頭ポインタに */ とあるのですが、「p++」などで、次の構造体のアドレス移動していないのにどうして上書きせずに次のアドレスの構造体に保存できるのでしょうか? 用語がうまく使えなくて申し訳ないのですが・・・
750 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:49:05.13 ] リンク先見る気は無いがコメント通りの処理を目指してんならnextて要素名は変じゃね?
751 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:57:37.35 ] >>749 どうしてって言われてもリンクリストだからとしか言いようがない。 セルが配列みたいに連続して並んでたらポインタをインクリメントして次のセルだけど。 図入りでコードがあるんだから、おっかけてください。
752 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:58:59.07 ] リストの先頭に追加してるだけ
753 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 01:44:40.31 ] mallocで場所を確保するときにpが新しいアドレスに移っているということですね
754 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 02:06:55.48 ] C言語を勉強しているのですが、if文の中で if(式A||式B||式C||式D) のように複数の式が論理演算子||で並んでいる時に、手持ちのコンパイラですと 実行時に、左側の式から順に(式A、式B、式C、式Dの順で)評価されていて、 かつ、途中の式が真の場合、残りの式は評価されていないみたいです。 ※例えば式Aが真の場合、式B〜Dの中に含まれている関数は実行されない これはC言語に共通する規則でしょうか? それともコンパイラ固有の仕様ですか?
755 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 02:08:56.05 ] >>754 C言語の規格通り 「短絡評価」といったキーワードで検索してみる
756 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 02:11:23.51 ] >>755 ありがとうございました
757 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 07:11:53.75 ] >>753 >pが新しいアドレスに移っているということですね この表現の意味がわからない。 ポインタといっても通常の変数と変わらない。 mallocの戻り値を保持しているだけだよ。 ついでにリスト構造について、根本的に理解ができていないと思われる。 ポインタpに対してp++すると、pが指しているオブジェクトサイズ分値が増える。 配列の場合はメモリ上に稠密にデータが確保されているため、配列の次の要素を 指すことになる。リストで次の要素を指すためにはp = p->next;とすることになる。
758 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:45:05.28 ] #include <stdio.h> char strput(char *str){ while(*str){ putchar(*str); *str++; } } int main(void){ char str[20]; scanf("%s", str); strput(str); } これは入力した文字を出力するプログラムなのですが、 6行目の「*str++」について疑問があります もちろん、コンパイルすればエラーも出ずに結果も正常なのですが 「*」がない「str++」にしても同様にできました そこで「*」がいるのかいらないのか分かりません つける必要はないんでしょうか?
759 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:46:21.32 ] ない
760 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:48:00.12 ] 何のためにつけるか、考えようね
761 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 01:22:28.75 ] 整数は大丈夫だろうけど、 浮動小数点数の演算結果って、 CPUによって違ったりしたりする? i7, i5 と比べて ATOM とか、 FX, A と比べて E, C とか、 後者は演算ユニットが128ビットと64ビットで差があったりするんだが。
762 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 01:26:59.68 ] >>758 #include <stdio.h> // printfなどの定義 char strput(char *str) // *は、strがポインターであることをコンパイラに指示する { while(*str) { // *strは、strが指す位置の文字データ内容 putchar(*str); // 文字を出力 str++; // ポインターの値を+1する。データを書き換えるわけではないので*は不要 } } int main(void) { char str[20]; scanf("%s", str); strput(str); }
763 名前:デフォルトの名無しさん [2012/01/29(日) 01:50:14.07 ] C言語に詳しい人に質問です。 p は構造体へのポインタです。 *((int *)((char *)p - sizeof(int))) だとか *((char *)p - sizeof(int)) といったかんじのコードをみかけるのですが、 これって何を意味しているのですか?
764 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 03:28:13.08 ] *((char *)p - sizeof(int))の場合。 pには構造体の配置されてるアドレスが入っている。それをたとえば123456番地とする。 sizeof(int)は4バイトとすると 123452=123456-4番地を文字としてみたときの0-255のいずれかの値を表す。
765 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 03:32:51.06 ] 初心者っぽいので。 char p[]="abcxyz";とすると、p+3は文字列"xyz"の先頭アドレスだったり、*(p+3)はxを表したりする。 この操作と同じ。これがわかり無くそうになってだけで同じだ。
766 名前:763です [2012/01/29(日) 04:37:03.22 ] 764さん, 765さん ありがとうございます。 構造体の配置されているアドレスであるpからtypeof(int)を 引いたアドレスにはどんな意味があるのでしょうか? ここを参照してintやcharとしての値を取得する目的があるのでは ないかと思うのですが...
767 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 05:01:34.61 ] >>766 それはその通りだけど、その場所に何が入っているかなんてCでは決まっていない。 環境またはそのプログラムが何かを入れているのだろうとしか言えないな。
768 名前:763です [2012/01/29(日) 05:15:59.87 ] >>767 たとえば、 C++の例ですが ttp://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=287 には、 int sz= *(((char *) p)-sizeof (int)); がnew XXX [size] したときのsize と関係があるようなことが 書いてあります。 環境依存かもしれませんが。
769 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 05:37:50.44 ] 一部しか読んでないけど。 new された配列 char p[N] について。 C++ では new された配列は delete [] p; といったように書く。 delete [] のようにした場合、その配列の要素分だけメモリから開放するわけだが、 その要素数は、p の sizeof(int) 分手前に格納されている。(環境依存のはず)
770 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 05:49:41.03 ] 【中国BBS】2030年に韓国が日本を抜く? 反対意見が多数 中国大手検索サイト百度の掲示板に、「2030年に韓国のGDPは日本を追い越すって本当?」というスレッドが立てられた。 これに対して反対意見が多数寄せられている。 ● スレ主:八戒窘6 アジア開発銀行のデータによれば、2030年に韓国のGDPは日本を追い越すらしい。 ● せんとう どんな予測も多少なりとも正確ではない所があるが、今回の話はあり得なさ過ぎる。 ● satay醤 本当にデタラメだな。アジア開発銀行によるレポートだって?じゃあバンク・オブ・アメリカや欧州の銀行の結論はどうなのよ? ● 佚名野菜地 アジア開発銀行ってのは、韓国人が開いているのか? ● Joseph19969 俺の妄想では、2100年日本人の1人当たりのGDPは46万ドル、韓国は8万だな! ● o落葉不知秋o その頃までに韓国という国が残っているかどうかも分からないぞ。 ● 梨花陰凉 死んでも信じない。 ● MakiのLove なんか最近、韓国のニュースが多くね? news.searchina.ne.jp/disp.cgi?y=2012&d=0128&f=national_0128_091.shtml
771 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 06:57:55.48 ] >>768 その記事にも「典型的な実装では」て断って書いてあるだろうが。
772 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 07:19:31.51 ] >>768 念のため、配列の先頭よりも前をさすような減算を行ったばあいの動作は未定義 あと、配列の最終要素の次をさすまでは合法だけど、内容を取得しようとしたときの動作は未定義
773 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 10:53:23.43 ] >>759 ,760,762 意味を理解しながら勉強していこうと思います ありがとうございました
774 名前:763です [2012/01/29(日) 11:49:16.47 ] >>769 ,771,772 ありがとうございます。
775 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 16:16:16.16 ] オレC言語だけど今日は忙しいのでもう閉店ね。 また明日来て下さい。
776 名前:デフォルトの名無しさん [2012/01/31(火) 16:32:48.21 ] aとbは真偽値を取る変数なんですが、 !(a && b) という式を||の式に変換すると、 (a == 0 || b == 0) という式で合ってますでしょうか? ド・モルガンの法則でぐぐって一応確認しました
777 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 16:36:40.26 ] あってるけどなんで( !a || !b )にしないんだろう
778 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 16:39:46.26 ] >>776 NANDゲートか。 www.allaboutcircuits.com/vol_4/chpt_3/5.html
779 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 18:17:39.94 ] ありがとうございました !aだとよくわかんないので、 他人のソースを書きなおす作業をしてます
780 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 18:19:49.06 ] たまにそういうやついるよね。 なんか間抜け。
781 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 18:54:03.42 ] fuckな話をすれば、 0とか1とかアフォなことは書かず、FALSEとかTRUEとかにしろ
782 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 19:00:17.31 ] どちらかというと後者の方がアホに見えるけどな。
783 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 19:40:46.96 ] >>776 わざわざなんちゃらの法則だしたり2ちゃんできかないと答えに自信が持てないような難易度か?
784 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 19:44:35.50 ] こんな質問で俺様理論を展開するお前らにあきれた
785 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 19:50:27.65 ] ん?俺様理論てのは>>781 だけじゃないのか?
786 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:29:47.10 ] >>781 Cの場合、FALSEは0のみだからいいにしても、TRUEは0以外があてはまるから そんなことするとわけのわからないバグに悩まされるだけだよ。 >>783 わざわざ出すとか以前に、ド・モルガンの法則なんて基本中の基本だろ。
787 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:33:08.92 ] TRUEが0のばあい FALSEは-1じゃなかったっけ なんかどっかでみたことあるよw
788 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:34:26.93 ] hoge_p() == TRUEとかやってバグったことあるよな。
789 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:36:58.60 ] これがmalloc/free論争と対を成すboolean論争か
790 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:38:47.89 ] >>787 違う。 >>789 論争にもなっていない。
791 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:39:10.55 ] C言語ならゼロか非ゼロしかねーよ
792 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:39:50.47 ] #undef TRUE #undef FALSE #define TRUE 0 #define FALSE (!TRUE)
793 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:40:02.15 ] ((!!(a=2))==true)が絶対trueに成ればいいんだけど そもそもCに即値trueなんて無いしな
794 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:40:53.55 ] どんどんわけのわからないレスが増えていくなw
795 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:41:49.09 ] >>776 みたいに0と比較するのは良かったはず
796 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:42:29.40 ] なぁ、自信がないならわざわざ発言しなくていいんだぞ?
797 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:43:06.48 ] 絶対大丈夫だよ(俺の脳内世界では)
798 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:43:19.44 ] >>792 こいつ殺したくなった。コード見て殺意がわいたのは ↓これ書いた奴についで二人目だ。 #define void int
799 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:44:24.02 ] 通報した。
800 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:44:36.06 ] 昔はしょうがなかったんだよ voidなんてハイソな予約語なんか無かった
801 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:45:23.72 ] #define TRUE (1==1) #define FALSE !TRUE
802 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:47:01.44 ] 正解書いとくか #define TRUE (!0) #define FALSE (!TRUE)
803 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:49:52.46 ] 正解なんてないんだよ。 何か型を導入したいならそのルール前提記述するしかない。 ルールを強制するならこれでいい。 typedef enum { false, true } bool;
804 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:57:41.07 ] !aとか!bとか書くことになるなら、a,bに入れるときに真偽値を反転させとくのがよい a=(1==1)だったのならa=(1!=1)にする でそのまま条件式に使えば真偽値の値がなんなのかなんて気にしなくて済む
805 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:59:44.13 ] >>803 普通に整数書いてもコンパイル通るからあんまりありがたくない
806 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 21:00:07.89 ] !aは別にいいんじゃね 個人てきにはa==0より!aのほうが分かりやすいと思う
807 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 21:01:35.73 ] >>805 だからCならルールを強制するしかないと言ってるだろ。 defineでも同じだろ。
808 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 21:02:57.15 ] そして僕はそっとタブを閉じた
809 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 21:31:12.05 ] そこで私はブラウザのトップ画面をこのスレにしておいた。
810 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 22:03:47.30 ] a==0の方がわかりやすいが、自分でコードを書くなら!aかな。
811 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 22:06:45.51 ] !810
812 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 22:09:36.68 ] 論理値で扱うものなら!、そうでなければ==0。 それだけだろ。
813 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 22:22:54.15 ] そのとおり
814 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 22:31:12.11 ] C言語の仕事なんてほとんどないってほんと?
815 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 22:52:21.60 ] 組み込み系はガチC全盛なんじゃないか? 他はC++なら聞くがCってのは聞かないな
816 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 23:07:03.26 ] 組み込みでCで仕事してるよ 今のところC以外に移りそうな様子は微塵もないな
817 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 23:07:48.32 ] ああ、でもCのコードを自動生成する方向には向かうかも
818 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 23:26:15.60 ] >>816 組み込みって何? TVだと思いっきりC++だったな。
819 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 01:36:38.40 ] 「携帯電話や自動販売機などの組み込み機器(中略) 組み込みシステムのソフトウェア開発には、C言語が主に使われています」 H8で学ぶマイコン開発入門(2):組み込みソフトウェア開発はC言語が主流だ (1/3) - @IT MONOist monoist.atmarkit.co.jp/mn/articles/0610/12/news142.html
820 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 08:16:11.14 ] >>818 携帯もC++でやったことがある。
821 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 10:26:44.02 ] >>818 組込みってもPICマイコンの電子工作から産業機械の制御まで幅広いからな。。。
822 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 10:53:03.24 ] 組込系おもしろそう。どこで求人してるんだ?ないよ?
823 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 11:09:21.30 ] 組み込み 求人 でググレカス
824 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 11:34:15.45 ] 結局組み込み以外、Cの使い道はないんですね。
825 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 11:45:01.82 ] 2chで世間が判った気になるなよw
826 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 11:47:10.58 ] >>819 ちょっwww それ2006年の記事じゃんw 古っ
827 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 11:47:16.09 ] >>824 高級言語の拡張とかにも使われる
828 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 11:52:28.64 ] マイコン用にCで書いてるけど、 プロトタイプ無しで呼べるとか 違う型のポインタが暗黙に変換できるとか 負の資産を感じる。 classとかtemplateとか使いたい訳じゃないが CソースもC++コンパイラでコンパイルしたい。
829 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 12:44:39.39 ] >>828 コンパイラが使いにくいとかの理由?
830 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 12:55:16.29 ] C++じゃなくて純Cの環境だからC++の環境でコンパイルしたいってことだろ 純Cの仕様はかなり緩いところがあるから、ミスを誘発する…と
831 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 13:00:50.75 ] それじゃあそういうコンパイラをCとかで書けばいいじゃん Cにこだわらなくてもいいな、lispやらperlやらでもかけるぞ
832 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 13:43:55.29 ] gccで最も厳しいチェックをするようにして凌いでた事もあったが、最新の組み込みは複雑化してるんだろうなあ。
833 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 14:12:53.12 ] VisualStudio でCのソースをビルドすると、入出力関数を_s付きのセキュアな関数に 置き換えることを検討しろって出るんですけど、標準入出力関数って、あぶないの?
834 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 14:15:11.72 ] とっても。
835 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 14:17:19.17 ] 文字列用のバッファに起因する脆弱性をついたものとか結構あったじゃないか
836 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 14:26:42.38 ] (σ・∀・)σゲッツ!!
837 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 14:28:52.87 ] なんで標準の関数を安全にしないの?
838 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 14:29:44.43 ] またまたまた ホモキタ━━━━━━(゚∀゚)━━━━━━ !!
839 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 14:37:32.19 ] 標準の関数を安全にしようとすると、今までのコードを変更させなければならなくなる
840 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 14:41:30.54 ] セキュア関数は脆弱性を減らすだけだから、攻撃への対処はやはり必要。
841 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 14:43:38.68 ] ナイフをむき出しで売ってて取り扱い注意だったのが 鞘付きのバージョンが用意された、くらいだな。 ちゃんとした使い方しないと危ないことに変わりは無い。
842 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 15:09:04.31 ] わかったようなこと書くなw
843 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 16:50:08.80 ] 低能のたとえ話は意味不明だな。自分ではうまい事言ったつもりなんだろうな。
844 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 16:58:40.68 ] 841ではないが、意味不明ではないだろ。塚、理解力ないのか?
845 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:04:36.96 ] 意味が通じるのはすでにわかってる人だろう すでにわかってるんだから意味が無い
846 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:08:20.21 ] じゃあなんで脆弱な標準関数を放置してるんですか?
847 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:09:31.60 ] >>846 別の言語使えや
848 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:11:32.51 ] >>846 >>839
849 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:12:49.76 ] C# って、(C++)++ってことなんですか?
850 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:55:17.44 ] ちがうよ ++をくっつけてちょっとおしゃれに斜めに配置しただけじゃないの? もしくは音楽で#は半音上げるだからそこからきてるなかも だとすると++は1上がるけど#は0.5しか上がらないから C<<<<C#<<<<<C++ つまりC++には敵いませんという意味の謙虚なネーミングだな
851 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:57:04.36 ] >>846 脆弱性があるだけで使っちゃダメなわけじゃない 勝手にかえられて勝手に速度が下がるとか勘弁願いたい
852 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 18:07:13.92 ] g++を移植する、とか
853 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 19:43:11.75 ] ウィンドウズの旗のイメージね ■■ ■■
854 名前:デフォルトの名無しさん [2012/02/01(水) 20:07:54.57 ] C++-1+2 てとこかな、現状
855 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 20:25:42.76 ] それはc+2になると思うが、何の話だ。
856 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 20:27:11.30 ] もう 起動言語C+++ トリプルインクリメント とかいうアニメでも作っちゃえよ
857 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 20:29:40.46 ] c+2はでねぇよぉ
858 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 20:42:07.14 ] 何の話だ。
859 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 21:03:15.68 ] puts((c++-1+2 == c+2) ? ">>857 m9" : ">>854 m9");
860 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 21:20:51.19 ] >>859 たった1行なのにバグってるとかw C++なんだから評価後をチェックしないとアカン。
861 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 21:29:54.14 ] 不定?
862 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 21:31:19.43 ] 副作用完了点問題?
863 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 21:32:05.62 ] バグってないよ
864 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 21:34:03.24 ] いずれの時点でもc+2と同じ値になることはないが。
865 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 21:35:26.50 ] >>860 こうか a=b=c; puts((a++-1+2 == b+2) ? ">>857 m9" : ">>854 m9");
866 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 21:48:43.57 ] CとC++が同じという前提なんか? C == C++
867 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 22:22:10.99 ] Cの組み込み系はSEの中でもブラック率が高いって聞いたけど本当?
868 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 22:52:12.37 ] まずは言った奴に聞けば?
869 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 22:53:01.30 ] 言ったやつが、いや嘘。なんて言う確率は相当低いと思うけどな。
870 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 22:55:20.26 ] 「括弧内に書いてあることは嘘です」
871 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 23:03:55.27 ] 何故なのかを、言った奴に聞けって事だろ。
872 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 23:21:41.09 ] 完全新規でCの大規模開発ってもうないんじゃね? Cでやってる=過去の遺産を使ってる=謎設計コードを含んでる=?
873 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 23:29:05.36 ] 俺はゲハとはそういうものだと認識してるから煽りなんてどうでもいいし盛り上がる時もあるからいいだけど 嫌がるやつ多いからな
874 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 23:47:20.86 ] 恥ずかしいやつww
875 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 04:10:25.73 ] >>873 ここ、ゲハじゃないっすよ
876 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 04:11:27.30 ] 誤爆を謝らない態度、潔し
877 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 06:55:02.65 ] 組み込み系はメーカー常駐だから偽装請負か特定派遣ということになる 結局は使い捨ての奴隷
878 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 08:54:25.32 ] やめたげてよぉ 興味があっても趣味に留めておくのがいい
879 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 10:27:02.00 ] >>878 趣味ならPICマイコンでアセンだな
880 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 10:28:06.21 ] アセンって何だw アセンブラのブラ消してたw
881 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 11:10:53.09 ] 組み込み以外でもドナドナIT。
882 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 11:18:13.43 ] おまえらがそんなだから 大陸や半島に後れを取るんだよ
883 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 11:53:06.84 ] >>880 ノーブラ
884 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 12:24:05.26 ] Cというとご老人がスパゲッティ相手に悪戦苦闘するイメージだな
885 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 12:28:33.03 ] 使う人次第だな
886 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 15:22:46.33 ] ttp://codepad.org/ZFyYfybI このコードみたいなunionの使い方って安全? x , y , zの間にパディングが入ることってあり得る?
887 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 15:29:50.23 ] まぁ普通は大丈夫だろうけど、保証はないね。 #pragmaなりオプションなりそのコンパイラ固有のものを使わないと。
888 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 15:35:25.22 ] 同じものを並べてパディング入るケースってあるのか?
889 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 15:41:30.36 ] ttp://codepad.org/vZr9h4fQ これで勝つる
890 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 15:43:41.03 ] >>888 80 ビットの long double とかならありそうじゃないか? 試してないけど
891 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 15:56:08.84 ] 並んでるのが同じものかどうかは関係ない CPUの都合に合わない大きさのものに入る
892 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 16:03:08.56 ] じゃあ例を出してみなw
893 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 17:00:59.97 ] MIPS32だとchar a, b, c;は32bitごとになるんじゃないか?
894 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 17:05:35.60 ] 配列は例外なのか?
895 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 17:07:52.00 ] コンパイラの実装依存だろ どうこういっても意味なし
896 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 17:08:02.45 ] いや、例外とかじゃなくMIPSはバイトアクセスのペナルティが大きいから オプションによってはそうじゃなかったかなと。
897 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 17:18:13.79 ] >>895 最初からそう言ってるんだが、>>892 はそんなものは実在しないと言ってるんだ。
898 名前:デフォルトの名無しさん [2012/02/02(木) 21:01:28.93 ] 周りにプログラミングのこと聞ける人がいないので、教えてください。 最近x code4のcommand line toolを使ってC言語を学びはじめました。 今まではrunを押せば、下に色々反応(文字の表示や入力を求める表示)があったの ですが、今日はrunを押すとfinish runningとでるだけで、下にまったく反応がありません。 そこで違うコードを入力したところ今まで通り反応がありました。 色々ネットで原因を探してみたのですが、わかりませんでした。 コードに問題があるんでしょうか? /*postagec*/ #include <stdio.h> void input_data(void); void calculate(void); void output_data(void); int distance,weight,size,postage; int main (void){ void input_data(void); void calculate(void); void output_data(void); return 0;} void input_data(void){ printf("距離[%dkm]重さ[%dg]を入力してください",distance,weight); scanf("%d%d",&distance,&weight); return;} void calculate(void){ if(weight<=100){size=1; }else if(weight<=1000){size=2; }else{size=3;} if(distance<=100){size=size+10; }else if(distance<=1000){size=size+20;}else{size=size+30;} return;} void output_data(void){printf("サイズは%dです\n",size); printf("料金は%d円です\n",postage);return;} どなたか解決方法がわかるかた教えてください。 よろしくお願いします。長文すいません。
899 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:07:44.00 ] 素直にあいぽんとか叫んじゃえよ
900 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:16:47.23 ] スペースが全角になってるが?
901 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:19:09.09 ] 何も実行されないプログラムになってますしおすし
902 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:22:52.46 ] >>898 このようになおせば動くと思うよ。 int main (void){ input_data(); calculate(); output_data(); return 0;} > コードに問題があるんでしょうか? プログラムは書かれた通りに動く。期待通りに動かないのは キミ自身が期待するコードをキミが書いていないからだ。
903 名前:デフォルトの名無しさん [2012/02/02(木) 21:22:53.67 ] >900 スペースは書き込んだときに改行多すぎというエラーが でたので改行減らすためにコードをいじったためかと・・・ x code上ではno issuesって出てます。
904 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:23:31.91 ] >>898 スレ違い Xcode part10 anago.2ch.net/test/read.cgi/mac/1319171665
905 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:24:04.12 ] > printf("距離[%dkm]重さ[%dg]を入力してください",distance,weight); ここに問題があるに1000ペリカ
906 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:25:05.25 ] >>898 codepad.org/wD7XPijJ b.c は私が書きたいように書いた。 b.c.orig は >>898 の書き方になるべく沿って書いた。 global 変数は余り使わないようにしよう。 変な癖がついて、糞野郎って思われるようになるよ。
907 名前:デフォルトの名無しさん [2012/02/02(木) 21:46:51.24 ] >>902 902さんのいう通りにしたら動きました。 コードの内容がまだ理解できていないので、なんで動かなかったか 調べてみます。 ありがとうございました。 global変数はだめなんですか? ニコ動の動画通りにやってたので、プログラマーの常識(?)なんかは 全然知らないので勉強になりました。 ありがとうございました。
908 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 22:08:32.44 ] C言語の解説動画って需要あるの? ちょっとどの動画を見たのか教えて欲しい あと検索単語も > global変数はだめなんですか? 使わないで書けるなら使わない方が良い。 >>898 のは数十行だからそこまで問題ないけど、 global変数の値の書き換えってどこでもできちゃうから、 数百行や数千行になってくると、 bugの温床となりやすい。 どこか〜〜_init()関数だけでglobal変数の設定をして 他の場所ではglobal変数の参照だけする。 とかならいいんだけど、なかなかうまくいかないんだ。 特に初心者のうちは使わない方が吉。
909 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 22:12:44.41 ] C言語って初心者向けじゃない気がするんだよな
910 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 22:14:51.48 ] >>898 書き方が汚かったので、多分書き方を知らないんだと思う。 Pythonのなんだけど、これを参考にして書くといいよ。 以下だけは、 タブは4個の空白に等しいとする。 って読み替えて。 PEP 7 -- Style Guide for C Code: www-acc.kek.jp/WWW-ACC-exp/KEKB/control/Activity/Python/doc-j/pep-0007-J.html ソースプログラムの配置 - Use single-tab indents, where a tab is worth 8 spaces. - ソースのインデントには、タブ一つを使う。タブは八個の空白に等しいとする。
911 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 22:52:10.79 ] スレ違いもいい加減にしろよ。
912 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 23:00:44.01 ] ???
913 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 23:30:57.29 ] >>911 自体が誤爆なんでしょ 高度な技を出しやがって
914 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 23:42:19.21 ] C/C++の宿題スレの誤爆と思われる
915 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 03:13:14.55 ] >>910 タブの使用未使用については特に問わないが、 タブは8タブ、インデントは4カラムがいいな。
916 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 03:36:48.87 ] >>915 私はタブ使わない派です。 インデントは空白4つでやってます。 タブを8空白として使ったことないので、 空白4つ派です。。。 最後に。 タブって昔々KB辺りの単価が高かった頃、 1文字でインデントを表現するために必要だった文字なんだと思います。 今後は廃れてなくなっていくんじゃないかなー? と思っていたりします。
917 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 03:41:38.80 ] 何をわけのわからないことを言ってるんだお前は。
918 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 03:42:46.31 ] こういうスレって基本的にageないんですか? そうだとするとなぜですか?
919 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 03:54:16.45 ] 韓国が貿易赤字に転落 韓国の知識経済省が1日発表した1月の貿易統計によると、輸出から輸入を差し引いた貿易収支は、19億5700万ドル(約1490億円)の赤字となった。 また輸出額も415億3700万ドルと前年同月比で6・6%減少した。 同省では、長引く欧州の財政危機と原油価格上昇の影響だとしている。 www.yomiuri.co.jp/world/news/20120201-OYT1T01150.htm
920 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 03:57:58.10 ] 専ブラが自動的にメル欄にsageって入れてくれるから >>918 はwebブラウザで2chしてるの?
921 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 04:03:12.00 ] >>916 8空白として使うとかじゃなくて、タブの幅は8文字分を想定してほしいという話だよ。 で、インデントサイズを4とした場合に、1段なら4つの空白、2段分は8個の空白でもタブ1つでもいいよってだけ
922 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 04:16:58.10 ] >>921 ああ、なーるほど。 変に読んじゃってましたね。失礼しました。
923 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 04:24:25.82 ] >>922 補足しておくと、viの設定だとこう set sts=4 sw=4 ts=8 ただ、書かれてるとおり、今はタブを使わないってのが主流かも。
924 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 04:29:33.86 ] 今時viかよ。
925 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 04:45:44.30 ] >>920 設定でどうにでもなるだろ情弱
926 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 04:48:41.25 ] viで何が悪いんだよ。 IDEとか使いづらいだろjk。 set expandtab set shiftwidth=4 set ts=4 私はこんな感じ。
927 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 04:49:39.93 ] >>925 なーんかトゲトゲしいですね。 困ったチャンですね。 もう寝ましょう。
928 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 05:16:23.84 ] せめてemacs使えよ。
929 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 05:27:59.14 ] emacs使う人ってやっぱGNUのインデントスタイルに慣れてるの?
930 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 05:28:55.16 ] いや、おれはstroustrupに設定してるが。
931 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 05:39:41.70 ] RMSよりスッポスッポの方がすきか
932 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 05:42:10.12 ] stroustrupスタイルって char* p; も含む?
933 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 05:43:23.45 ] >>932 c-modeという意味では含まない。
934 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 05:44:27.86 ] じゃあ完全にstroustrupの書き方をまねるわけではないんだ。アリガトン
935 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 05:47:14.25 ] あぁ、主にインデンテーションだからね。 おれの設定はこの程度。 (setq tab-width 4) (setq c-indent-level 4) (setq c-continued-statement-offset 4) (setq c-argdecl-indent 4) (setq c-label-offset -4) (setq indent-tabs-mode nil)
936 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 05:49:18.69 ] emacs使いじゃないから雰囲気でしか設定見れないけど、ハードタブを4カラムに設定してんのかなぁ
937 名前:デフォルトの名無しさん mailto:さげ [2012/02/03(金) 05:54:50.76 ] (setq indent-tabs-mode nil) がいわゆるハードタブってのを使わない設定だね。
938 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 06:00:18.19 ] あぁ、タブコードはtab-widthで4やね。 2/4/8で切り替えられるようにしてるから別にきにしてないけど。
939 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 06:00:50.21 ] 重ね重ねどうもです
940 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 06:17:23.93 ] 急に伸びるから何かと思ったら。。。 下らない
941 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 06:28:27.78 ] Emacsは何度も挑戦したが どうやってもMetaが押しづらくて挫折する
942 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 06:50:41.16 ] vim一択
943 名前: ◆QZaw55cn4c mailto:sage [2012/02/03(金) 06:53:01.15 ] >>941 altキーに換えられない?
944 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 07:36:40.05 ] >>943 替えるまでもなくデフォルトでAltにマップされてない? でも押しづらい 無変換に変えても大差ない CapsLockってのも抵抗がある 端末上ならEmacsバインドでも構わないけど エディタとしては出番多すぎてつらすぎ
945 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 07:50:18.55 ] >>944 親指で押せばそうでもないと思うが、キーボード次第かも Emacsに限らずviとかもだけど、昔のエディタって キーボードによって結構能率に差が出る印象がある 因みに俺はMacではvi派、WindowsではEmacs派 Linuxはむしろ使うエディタにキーマップ合わせに行くw
946 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 07:57:35.30 ] Metaキーは使ったことないな。Escで代用してる。
947 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 08:02:02.28 ] HHKBとかならまだしも、 Escは押しづらい位置にあることが多い気がする
948 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 08:05:01.88 ] もちろん日本語KBなら漢字キーてやつと入れ替えてるよ。 CAPS⇔CTRLとESC⇔漢字で、あとはASCII配列に変更して使ってる。 最近は英語キーボードがなかなか手にはいらないので。
949 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 08:06:44.51 ] お前らいい加減にスレタイ読め
950 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 08:08:32.24 ] まぁいつものこと。
951 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 08:18:35.25 ] NICOLA配列だから 左親指に割り当ててる 同時押しいつもやってることだし
952 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 08:27:22.04 ] Metaキーの位置に悩むそんなあなたにC-[。 問題は結局Ctrlの位置なんだよね。 まあ自分のコンピュータならキーバインドをカスタマイズすればいいんだろうけど、 ちょっと触るだけの環境とかでそういうのを使うわけにもいかず。
953 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 09:44:10.41 ] プログラミング以外だと生き生きする奴が多いのはデフォ。
954 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 10:09:22.95 ] viは環境変わっても使えるから、慣れておくといい
955 名前:デフォルトの名無しさん [2012/02/03(金) 10:35:36.47 ] 汎用的関数化が他の機能に与える影響ってなに?
956 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 12:22:30.01 ] >vi 大学で3年間「使いにくいー!!誰だこんな仕様考えたやつは!!」 と思ってたけど会社入っても結局これ一本だった。
957 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 12:54:42.67 ] 俺viになれすぎちゃってみんなが普通に使ってるエディタが使いにくい… 最初に必ずソースにjjjjjjjjjjjjjjjjjとかタイプするのはお約束w
958 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 13:32:13.32 ] jjjjjjjjjjjjって操作をするのはvi初心者、とツッコミを入れられるのもお約束
959 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 14:05:26.28 ] jjjjjjjjjjjjjjjjj > @さんにごあいさつにきますた
960 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 14:51:00.16 ] C言語で小町算のプログラムつくってくれませんか?>< 課題なのに一向にできません;;
961 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 14:52:14.79 ] 総当たりにすればいいだろ。
962 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 15:32:25.14 ] いくら出すんだ?
963 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 15:40:36.24 ] >>960 ググれ
964 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 15:42:22.25 ] >>960 小町算っていってもローカルルールとかいろいろあるからちゃんと定義書いてくれないとこっちも困るよ
965 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 15:55:19.16 ] perlで文字列でやって それそのままevalしたほうがラクじゃん perlじゃなくても、文字列が評価できるならなんでもいいけどさ cなんて使うかよアフォ
966 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 18:10:43.60 ] >965 あっそ。
967 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 18:22:13.59 ] emacs最強
968 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:07:16.79 ] vim最強
969 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:10:01.78 ] 秀丸エディタ さくらエディタ WZEditor terapad この辺使ってるやつは大体厨 大抵エクスプローラの表示を"詳細"にしてないし デスクトップのテーマをクラシック設定にしてないくせにPCが重いとかほざく
970 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:17:37.35 ] vi使うやつってのはいかにしてキータッチを最小にするかを常に考えてるやつのこと。 逆にそれを考えてないやつにはvi使ってるという資格はないよね。
971 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:19:04.70 ] そんなにキータッチ減らしたいならiPad使えよ。情弱野郎。
972 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:19:55.80 ] WordMaster→MIFES→emacs うーん、思い出せない。ほかに何か使ってたかなぁ...
973 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:21:17.90 ] >>971 それはvi使いに言え。
974 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:22:24.83 ] 自分VisualStudioで書いてますし
975 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:23:32.01 ] 最小のキータッチを考えているうちはまだまだ 指が勝手に動いて気付いたらプログラムが完成してるようにならないと
976 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:25:23.36 ] 脳波読取で電気信号直接入力の時代がくるよ キーボードというスタイルは近いうちに無くなる
977 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:25:35.72 ] まぁその域に達してるのはそういないと思うが、>>970 は必要条件な。
978 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:29:00.82 ] >>974 VSでも外部エディタは基本だな。
979 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:30:18.19 ] IDE標準のエディタを使ってるやつは才能ないから死ぬべき
980 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:34:16.05 ] IDEと言われるとHDDが真っ先に思い浮かぶんで統合環境と言ってくれ。
981 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:45:29.19 ] い〜で
982 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:54:21.17 ] >>980 SASIには反応しない?
983 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:05:38.91 ] >>973 すぐ上のvi使いに言ったんだが。
984 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:32:28.17 ] >>983 そいつはvi使いじゃないってことだろ。
985 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:33:07.08 ] >>982 SASIに別の意味があるのか?
986 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:33:18.55 ] >>978 外部エディタって補完きくの?
987 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:33:41.01 ] >>986 それは外部エディタ次第だろ。
988 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:35:52.90 ] さすがにC#とかJavaの既存クラスライブラリのメンバ関数を使うときはIDE標準のエディタで補完使った方がいいだろ
989 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:37:07.71 ] vi .vs. emacs みたいな話題のときに、viを軽いから設定ファイルの編集に使うとか、どこでも使えるから 使い方を覚えるとか、消極的な理由を挙げてる奴は中立を装った否定派だから信用すんなよ。
990 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:38:48.85 ] >>987 外部エディタが独自に補完機能をもってれば使えるってことか。 弱そうだな。
991 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:56:04.17 ] IDEの標準エディタの操作をvimに変更するプラグインがあったはず
992 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:57:40.78 ] >>990 そうだな、お前の頭が。
993 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:01:33.23 ] >>992 外部エディタでもVSと同じレベルの補完が使えるってこと? 外部エディタの欠点を指摘されたような気になって煽ってるだけ? って聞いても、頭弱そうだからまともな答えは返ってこなさそう。
994 名前: ◆QZaw55cn4c mailto:sage [2012/02/03(金) 21:07:29.76 ] >>952 >自分のコンピュータならキーバインドをカスタマイズすれば きょうも上司に小言をいわれました。 「お前のPCのキーボードは変態」 自分でもなにがなんだかわからない‥‥‥。
995 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:09:22.61 ] capslockをctrlにしてない奴は例外なくクズ
996 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:09:32.15 ] 韓国の国家ブランドの順位 サムスン経済研究所が2日発表した各国の国家ブランド価値によると、韓国は50カ国のうち実態は15位で、 イメージでは19位の順位だったことが明らかになった。複数の韓国メディアが相次いで報道した。 2011年11月4日から1週間、世界の26カ国・地域のオピニオンリーダー1万3500人を対象に行ったアンケート調査の結果に基づいて算出された。 イメージの順位では日本がトップとなり、ドイツ、アメリカ、カナダが続いた。 韓国メディアは「周辺国からの認識は変わっていない」「広報戦略を強化すべき」などと相次いで伝えている。 news.searchina.ne.jp/disp.cgi?y=2012&d=0203&f=national_0203_153.shtml
997 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:13:13.87 ] >>993 すまん、そこまで弱いとは思ってなかったわ、お前の頭が。
998 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:16:55.43 ] こいう煽りしかこないってことは、やっぱ外部エディタじゃ補完は弱いってことだろうな。 それで外部エディタが基本とか人に薦めてるのか。 普通にVS使ったほうがましか。
999 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:19:26.82 ] エディタを使えないやつはそれでいいんじゃねーの?
1000 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:23:40.11 ] >>999 いやviは大好き。 もしVSでviのキーアサインを再現できたらそれ使う。
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。