C言語なら俺に聞け(入門編)Part 95
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/01/13(金) 22:05:06.14★前スレ
C言語なら俺に聞け(入門編)Part 94
http://toro.2ch.net/test/read.cgi/tech/1324648274/
★過去スレ
http://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代目
http://toro.2ch.net/test/read.cgi/tech/1325685876/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0002デフォルトの名無しさん
2012/01/13(金) 23:59:58.19@aritayoshifu 有田芳生
捜査当局が内偵を続けている農水疑惑。詳細な怪文書まで出回っている。3億円の
行方はどこに?
@minorucchu ジャーナリスト 田中稔
野田改造内閣を揺るがす、農水省3億円スキャンダルの怪文書。二人の議員名が浮上。
34分前 webから
https://twitter.com/#!/minorucchu/status/157687110562881537
鹿野と筒井らしい
自公は問責も視野に調査開始だって
0003デフォルトの名無しさん
2012/01/14(土) 00:01:34.020004デフォルトの名無しさん
2012/01/14(土) 10:53:25.48int main() {
char* str1[10]; //定義しただけで初期化していない。つまり文字列は格納されていない。
func1( &str );
}
void func1( char* str ) {
char* inStr;
str = "test data";
return ;
}
質問なんだが。
なぜ、きちんとstrに文字データが格納されるんだろうか?
0005デフォルトの名無しさん
2012/01/14(土) 11:01:18.98int 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を参照しても全く問題ないし、キチンと値が格納されている。
値が参照できるのは、たまたまナノか?
この操作は問題ない?
0006デフォルトの名無しさん
2012/01/14(土) 11:03:11.760007デフォルトの名無しさん
2012/01/14(土) 11:10:20.150008デフォルトの名無しさん
2012/01/14(土) 11:16:53.05あいよ。
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";
}
0009デフォルトの名無しさん
2012/01/14(土) 11:17:18.80> char* str1[10]; //定義しただけで初期化していない。つまり文字列は格納されていない。
>
> func1( &str );
>}
変数名ちゃうやん。
>void func1( char* str ) {
型ちゃうやん。(char ** → char *)
0010デフォルトの名無しさん
2012/01/14(土) 11:18:37.34>更にアナザの返値の先頭バイトまで無意味に成ってる
戻り値として、「est」が欲しいのでそうなってる。
0011デフォルトの名無しさん
2012/01/14(土) 11:19:33.120012デフォルトの名無しさん
2012/01/14(土) 11:27:47.89anotherFunc の return は、例えば「Content-Type: application/x-javascript」
その中で「application/x-javascript」を取り出したい。
0013デフォルトの名無しさん
2012/01/14(土) 11:34:46.94return (char*)"test";
}
がもし、
char* anotherFunc(){
return (const static char*)"test";
}
なら、BSSなり、テキスト領域なりに格納されると思う。
テキスト領域かな?
でも
char* anotherFunc(){
・・・
何がし処理
・・・
return buf ; //bufには「Content-Type: application/x-javascript」文字列が格納
}
であるならコンパイルエラー(local address云々)
ここまでなら分かる。
0014デフォルトの名無しさん
2012/01/14(土) 11:59:47.56開放されるのはプログラム終了時。
return (char*)"test";
も
char *inStr = "test";
return inStr;
も、書き込みをしなければ問題ない。
但し
char inStr[] = "test";
return inStr;
は駄目。
0015o
2012/01/14(土) 12:00:08.37いくら、str[1]にポインタを代入したところで、参照しているのはfunc1のスタック上にあるinStrのアドレスである。
func1がリターンしてしまうと、スタックは破棄( ただ単にゼロクリアしていないだけ)な気がする。
結局うまく言っているように見えるのはスタックが破壊されていないから?かな、と。
0017デフォルトの名無しさん
2012/01/14(土) 12:08:12.05>8 の inStrはいわばメモ書き。
"test"の場所が書かれてるだけ。
str[1]に内容をコピー(1足してるけど)した後に消える。
住所書かれてるメモ紙を捨てたらその住所が消滅するわけじゃあるまい?
0018o
2012/01/14(土) 12:10:32.04念のため・・・
char* str[10] は、10個の不定長の文字列を格納する10個のポインタです。
最終目的は、sub関数から不定長の文字列を設定したい、と言うことです。
0019o
2012/01/14(土) 12:14:47.41最終的に聞きたいのは、スタティックなリテラル値ではなく、ダイナミックな変数の値です。
つまり、
inStrの具体的な値を、str[1]に入れ込むためにはどうしたらよいのか?と言うことです。
0020デフォルトの名無しさん
2012/01/14(土) 12:14:47.84【1】「要するに」と他人の話もまとめてしまう
【2】「違う」と小さな間違いでもいちいち訂正する
【3】「化学反応だから」などロマンチックなことにも根拠を述べる
【4】「仮に」など自分の専門分野でたとえたがる
【5】「具体的には?」と曖昧な表現でなく数字を知りたがる
【6】「データがあるから」と他人の意見を受け入れない
【7】「わかる?」と難しい説明の後で上から目線の確認をする
【8】「ありえない」など決めつけて断言する
【9】「だから?」とオチを先に聞きたがる
要するに馬鹿しか女子とはお話出来ないということだな
0021デフォルトの名無しさん
2012/01/14(土) 12:27:51.390022デフォルトの名無しさん
2012/01/14(土) 12:35:19.42>8 の
>str[1] = inStr + 1 ;
でいいんじゃないの?
0023o
2012/01/14(土) 12:40:46.42うむむ。
分からないのは、
「inStr+1」で指定されたアドレスは、func1がreturnされると開放されるメモリアドレスじゃないですか?
そうすると、そのアドレスを入れ込んだstr[1]の内容(=アドレス)も開放されてしかるべきアドレスじゃないかと?
0024デフォルトの名無しさん
2012/01/14(土) 12:43:49.290025o
2012/01/14(土) 12:43:50.36*( str[1] ) = *( inStr + 1) ;
0026o
2012/01/14(土) 12:46:49.2820回読みましたデス。足りないかな?
スタティックなリテラル値の話ではなく、自動変数に格納されている値を戻したいと言うことですが・・・
戻すとき、リターン値はエラーコードで使用されていますのでリターンで戻すのは不可です。
なのでfunc1にポインタで渡して、その内容を更新したい、ということです。
もう20回読んでみます。
0027o
2012/01/14(土) 12:51:23.74実際にはfunc1 には構造体を渡しています。
正確には構造体のアドレスを渡してます。
構造体は
typedef struct s{
char* field[MaxHeaderNum];
char* attrib[MaxHeaderNum];
}S;
0028デフォルトの名無しさん
2012/01/14(土) 12:53:18.74str[1] = (char *)malloc(strlen(inStr + 1)+1) ;
if(!str[1]){
/*エラー処理*/
}
strcpy( str[1] , inStr + 1);
0029o
2012/01/14(土) 13:01:30.86すんばらしい。
そういうことです。
はじめはそのように書いていたのですが、
非常に頻繁に呼ばれることと、
mainのなかでいつfreeすればよいのかが不定であることや、
関数を変にまたがってしまう、
などなどの複雑な問題により諦めてしまいました。
で、コードをシンプルにする方法でのアプローチでコーディングしなおしてます。
ヒープを使わなければ無利なのでしょうか?
0030デフォルトの名無しさん
2012/01/14(土) 13:05:33.73char* str[10]
をゼロクリアしてから使え。
あとは終了時とmallocする前にNULLで無ければfreeするような処理書いとけばいいんじゃね?
0032デフォルトの名無しさん
2012/01/14(土) 13:48:33.33>スタティックなリテラル値の話ではなく、自動変数に格納されている値を戻したいと言うことですが・・・
自動変数に〜というなら、malloc でヒープに領域を確保して、外部で解放するしかない。
自動で解放して欲しいのなら、C++ に行ってデストラクタなり std::string なりに頼る。
>>8 はスタティックなリテラルのポインタを返してるので、たまたまではなく正常に動作する。ただし貴方の求めているものではない。
0033デフォルトの名無しさん
2012/01/14(土) 14:04:28.58クラス化の設計とか楽しそうだなぁ。
0034o
2012/01/14(土) 16:19:51.99ありがと。
参考になります。
>>33
bingo
HTTPだけど。
移植性を考えてて、ANSI-Cベースで書いているところが、またそれはそれで、制限が多いw
0035デフォルトの名無しさん
2012/01/14(土) 16:39:47.31> 参照しているのはfunc1のスタック上にあるinStrのアドレスである。
これが間違えていることには気づいているのだろうか
inStrのアドレスは&inStrな。
0037デフォルトの名無しさん
2012/01/14(土) 16:44:53.84反日ネット工作員
朝日新聞社→社員約300人
民主党とその取り巻きの資金が入った反日工作会社→数社約450人
朝日新聞の社員は捕まった49歳の編集者を含め新聞記事を書く合間に2chを荒らしている程度とみられているが
民主党が用意した反日工作会社はほぼ24時間体制で工作を行っている
工作範囲は民主党が予め工作費を流している2ch、ニコニコ動画を中心にyoutube、個人のブログなどである。
0038デフォルトの名無しさん
2012/01/14(土) 17:33:17.30>inStrの具体的な値を、str[1]に入れ込むためにはどうしたらよいのか?と言うことです。
「inStrの具体的な値」と言ったらinStrに代入されてる"test"のアドレス値のことだろ。
それが
>28
が正解というなら
「inStrのポインタが示す先の文字列をコピーして、str[1]に入れ込むためにはどうしたらよいのか?」
と言うべきだろ。
まぁ、そう言えるぐらい理解できてるなら質問もしてこないだろうが。
0039デフォルトの名無しさん
2012/01/14(土) 17:53:22.36だから?
0040デフォルトの名無しさん
2012/01/14(土) 18:06:19.42なら
void func1(char* str[] ) {
int inStr;
inStr = (int)anotherFunc() ;
str[1] = (char *)(inStr + sizeof(char)) ;
return ;
}
としても同じ結果なんだよ。
0041デフォルトの名無しさん
2012/01/14(土) 18:29:39.070042デフォルトの名無しさん
2012/01/14(土) 18:47:25.84日記ならチラシに
0043デフォルトの名無しさん
2012/01/14(土) 19:56:46.820044デフォルトの名無しさん
2012/01/15(日) 00:10:00.070045デフォルトの名無しさん
2012/01/15(日) 00:33:43.370046o
2012/01/15(日) 07:51:27.88>「inStrのポインタが示す先の文字列をコピーして、str[1]に入れ込むためにはどうしたらよいのか?」
コピーして
の部分が全く違う。
コピーしてよいのなら、解決法はいくつでもある。
0047デフォルトの名無しさん
2012/01/15(日) 10:35:38.71>28
>strcpy( str[1] , inStr + 1);
コピーしてるやん。
違うというなら正しいソース書いてみてよ。
0048o
2012/01/15(日) 11:21:44.71多分、言いたいことの1/1000も伝わっていないんだと思う。
バッファから下ろしてきたデータは一時的にしかるべき場所に「コピーして」配置される。
俺の言っているのは、
そのしかるべき場所のポインタを渡すだけにしたいんだが、何とかならんのんかの?
という質問だが、
君は「さらに」、コピーしたらええやん、
と言っている。
0049デフォルトの名無しさん
2012/01/15(日) 11:29:50.94そのポインタを渡すだけでいいじゃん
0050o
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あたりできりなおさんとまずくない?????
ま、さくっとコピーできるんだったら、謝る
0051デフォルトの名無しさん
2012/01/15(日) 11:35:48.32区切り文字が'\'というのは例として挙げただけ?
0052o
2012/01/15(日) 11:38:53.01コーディング規約により、グローバル宣言ができないんですヨ
・局所的にしか利用されず
・他スレッドからの参照に問題あり
・アクセスコントロールに関与する
・マルチスレッド対応の場合
などなど。
0054デフォルトの名無しさん
2012/01/15(日) 12:12:25.050055デフォルトの名無しさん
2012/01/15(日) 12:26:55.36オレには何を言いたいのか全然分からん
0056デフォルトの名無しさん
2012/01/15(日) 12:28:45.50FNN 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
マスコミに、ダマされるなよ。
0057デフォルトの名無しさん
2012/01/15(日) 12:30:22.44�@>何を何にコピーすることを言ってるのか? への回答は?
�A「しかるべき領域」はスタック上?ヒープ上?それ以外?スタック上ならほぼコピーするしかない
�B「しかるべき領域」は書き換えてもよい?書き換えたらダメなのであればさらにコピーするしかない
0059o
2012/01/15(日) 12:34:36.28>この子の関わったソフトが載った製品は買いたくないと思ってしまうな
売り出されたら驚いちゃうんちゃう?
>�@>何を何にコピーすることを言ってるのか? への回答は?
機種依存文字はどうかと思うけど。
コピーと言われたから、それを使っただけ。
>�A「しかるべき領域」はスタック上?ヒープ上?それ以外?スタック上ならほぼコピーするしかない
スタック上。
main関数のスタックに積んでいればOKでしょ?
違うの???
>�B「しかるべき領域」は書き換えてもよい?書き換えたらダメなのであればさらにコピーするしかない
書き換えても良いの意味が分からん。
書き換えたらダメってことは、参照もダメってこと???
意味が不明です。
0060デフォルトの名無しさん
2012/01/15(日) 12:35:48.48お前が意味不明だな。
手繰るの面倒だからここでもう一度整理して新規に質問しなおせ。
0061o
2012/01/15(日) 12:50:30.70君のおかげで整理できたよ。
聞きたい内容は、
呼び出し先の呼び出し先から、大元のスタックにある文字列を直接変更できるか?
ってこったな。
孫関数には、ポインタのポインタなら渡せる、と言う条件でな。
0062デフォルトの名無しさん
2012/01/15(日) 12:52:31.54その質問の答えは、できる、だ。
0063o
2012/01/15(日) 12:53:35.05・データはストリームで落とされる。
・孫関数にはポインタのポインタが渡される
・文字列の長さは不定長
・区切り文字がある文字列
・ストリームは、孫関数で処理される
この条件で親のスタックに詰まれた文字列を孫から操作できるかどうか?
んだな。
0064デフォルトの名無しさん
2012/01/15(日) 12:54:05.71義務教育の間何やってたんだか
0065o
2012/01/15(日) 12:55:10.92追加があった
・データはストリームで落とされる。
・孫関数にはポインタのポインタが渡される
・文字列の長さは不定長
・区切り文字がある文字列
・ストリームは、孫関数で処理される
・staticは使えない
0066o
2012/01/15(日) 12:56:52.04まあ、そんなことより、
>>52が仕事上のタスクだと思う方が驚きだけど。
指示されないと何もできないんかなぁ。
もしくは何でもグローバル宣言すりゃいいと思っているのかなぁ。
普通に個人のコーディング規約に含まれる常識的な内容だと思っていたんだが、これも違うのか?
0067デフォルトの名無しさん
2012/01/15(日) 13:00:25.15>>65 を読む限りお前の考えたものではないだろうし
バカみたいな社内用語?で伝わると思ってるのがおかしい
0068デフォルトの名無しさん
2012/01/15(日) 13:00:50.73わけのわからない条件は関係なく、元のスタック上の文字列のポインタが
わかるなら当然できるだろ。
なんでできないとか思うんだろ。
ちなみに、スタックとかストリームとか、Cには関係ないから。
0069o
2012/01/15(日) 13:12:04.29ストリームデータは軽く64kを超えるんだが、
mainで
char streamData[131072]
とか宣言しちゃうの?
スマートじゃない気がするけどw
後々func1がスレッドで動くようになるんだし、mainがdllmainになるんだが、
どう見てもそりゃスマートとは言いがたいと思うんだけど、どうだろうか?
0070o
2012/01/15(日) 13:13:45.46こちとら、素人だし、
チートツールの作成を企業が許可するとも思えんし、
>普通に個人のコーディング規約に含まれる常識的な内容
だと思うんだけど、違うのか?
0071デフォルトの名無しさん
2012/01/15(日) 13:16:07.60> 呼び出し先の呼び出し先から、大元のスタックにある文字列を直接変更できるか?
できる。
もう一度だけチャンスをやる。
整理して1レスで質問しろ。
0072デフォルトの名無しさん
2012/01/15(日) 13:16:59.990073デフォルトの名無しさん
2012/01/15(日) 13:18:36.84チートツール作るなんてことを言ってるバカに協力しねーよ
0075デフォルトの名無しさん
2012/01/15(日) 13:20:06.56お前、頭腐ってるわ。
0076デフォルトの名無しさん
2012/01/15(日) 13:21:02.620077o
2012/01/15(日) 13:21:07.96f2を実行しないと、str[]の大きさが分からないんだけど、それでも大丈夫ってこと?
少なくとも512byteは確実に超えるんだけど。
0078デフォルトの名無しさん
2012/01/15(日) 13:22:09.28いや、そうでもないか。
0080デフォルトの名無しさん
2012/01/15(日) 13:24:14.16お前の思い込みなんて人にはわからないんだよ。
だからお前のことを何も知らない普通の人間にわかるように整理して
1レスにまとめて質問してみろよ。
0082デフォルトの名無しさん
2012/01/15(日) 13:26:10.30すればいいだけだろ。
0083o
2012/01/15(日) 13:27:07.83あいよ。
聞きたい内容は、
呼び出し先の呼び出し先から、大元のスタックにある文字列を直接変更できるか?
条件は次の通り
・データはストリームで落とされる。
・孫関数にはポインタのポインタが渡される
・文字列の長さは不定長
・区切り文字がある文字列
・ストリームは、孫関数で処理される
・staticは使えない
0084デフォルトの名無しさん
2012/01/15(日) 13:28:38.77思い込みハゲしいなまったく。
0085デフォルトの名無しさん
2012/01/15(日) 13:29:17.880088デフォルトの名無しさん
2012/01/15(日) 13:33:29.91その512byteのデータと>>72がどう関係するんだよ。
0089o
2012/01/15(日) 13:36:36.09void f2(char* str){
str[500]='\r';
str[501]='\n';
}
ができるんだったら、何も言わんよ
0090デフォルトの名無しさん
2012/01/15(日) 13:37:19.50じゃぁ何も言うな。
0091o
2012/01/15(日) 13:38:41.03void f2(char* str){
str[131070]='\r';
str[131071]='\n';
}
ができるんだったら何も言わんよwww
0093o
2012/01/15(日) 13:40:11.55str[10] と宣言しているのに、
str[131070]にアクセスしているんだもんね。
>>90は、そんなことも分からないの?
0094デフォルトの名無しさん
2012/01/15(日) 13:42:43.170095o
2012/01/15(日) 13:47:33.40君は、回答する前に、こっちを読んで勉強した方が良いと思うよ。
http://www.kumei.ne.jp/c_lang/intro/no_07.htm
宣言した数より大きな領域にアクセスさせるのは危険だよ。
書き込みなんかしたら、スタック壊しちゃうからね。
気をつけたほうが良いよ。
0096デフォルトの名無しさん
2012/01/15(日) 13:48:48.34スタックのサイズが心配なら512KBをヒープに確保してそれを渡せばいいだけだろ。
まわりの人も大変だろうな。
0097デフォルトの名無しさん
2012/01/15(日) 13:49:32.860098デフォルトの名無しさん
2012/01/15(日) 13:50:59.22>宣言した数より大きな領域にアクセスさせるのは危険だよ。
常識で分かることは言う必要がない。
0099デフォルトの名無しさん
2012/01/15(日) 13:53:40.360100デフォルトの名無しさん
2012/01/15(日) 13:56:50.88大元がmainだとして
「大元のスタックにある文字列」って
>mainで
>char streamData[131072]
以外にどうやって定義するの?
0102デフォルトの名無しさん
2012/01/15(日) 13:59:35.77質問もできないくらいのレベルなんだから察してやれ。
0103デフォルトの名無しさん
2012/01/15(日) 14:00:57.52allocaで確保するとかw
0105デフォルトの名無しさん
2012/01/15(日) 14:07:11.53alloca使ったところでスタックは拡張されない。
って、まぁ釣りだろうけどw
0106デフォルトの名無しさん
2012/01/15(日) 14:07:51.54ストリームとやらの範囲内ならいくらでもアクセスできるでしょ。
例は10だったけど、そのストリームはもっと大きいんでしょ
0107デフォルトの名無しさん
2012/01/15(日) 14:08:49.44allocaってスタックだよ。
ってかヒープを避ける理由がわからない。
0108デフォルトの名無しさん
2012/01/15(日) 14:10:33.82でも
char *streamData = (char*)alloca(131072);
でもいいけど、
結局>>72で問題なくね?
allocaってのは初めて知ったわ
0109o
2012/01/15(日) 14:12:26.25直近の問題は、何時freeするのかが不定なことだけど、
本質的には、スレッドで動かしたいから、別スレッドからのアクセスをさせないために自動変数での処理をさせたい
と言うのが本音。
0110デフォルトの名無しさん
2012/01/15(日) 14:13:45.650113デフォルトの名無しさん
2012/01/15(日) 14:14:33.820114デフォルトの名無しさん
2012/01/15(日) 14:16:58.71普通、mallocもfreeもスレッドセーフだろ。
0115o
2012/01/15(日) 14:17:20.97だったら、ストリームデータを、他のスレッドが書き換えるって事が可能というか、
別のスレッドがストリームデータを壊すんだよね。
それじゃ、NGじゃね?
0117デフォルトの名無しさん
2012/01/15(日) 14:18:24.71もしそうならポインタ保持じゃだめだけど、それは大丈夫?
で、そのストリームが読み取り専用じゃないかつ、デリミタのような0バイトよりも大きな文字列があるのなら、strtokの要領で対応できないか?
0118デフォルトの名無しさん
2012/01/15(日) 14:18:55.57自動変数=スタックと仮定すると>>114だと言ってるだろ。
0120デフォルトの名無しさん
2012/01/15(日) 14:20:01.08ポインタの先が別スレッドが確保したスタック領域ならそこを壊す。
つか、それはバグと言うんだがな。
0121デフォルトの名無しさん
2012/01/15(日) 14:20:52.74お前はスレッドセーフという単語を理解してないに3億ペリカ。
いや、スレッドも理解してないに10億カノッサ。
0122デフォルトの名無しさん
2012/01/15(日) 14:21:39.04これなんぞ。
根本的な知識が圧倒的に足りないといわざるを得ない。
チートツールの前に初心者としてまっとうに勉強しなさいな。
0123デフォルトの名無しさん
2012/01/15(日) 14:25:52.760124o
2012/01/15(日) 14:26:40.81ヒープがスレッドセーフなんて聞いたことがない。
ライブラリが対応してスレッドセーフにしているケースなら知っているけど???
君の知っているのはどんなシステム系なんだ?
0125デフォルトの名無しさん
2012/01/15(日) 14:26:48.56スレッド使う環境でスレッドセーフじゃない設定をわざわざ使わない限りな。
0126デフォルトの名無しさん
2012/01/15(日) 14:27:16.83>>124
3億カノッサよこせ。
0127デフォルトの名無しさん
2012/01/15(日) 14:28:51.62関数がリエントラント可能かどうかについてその言葉を使うのであって、スタックやヒープに対して使うもんじゃないよ
0130デフォルトの名無しさん
2012/01/15(日) 14:30:34.750131デフォルトの名無しさん
2012/01/15(日) 14:30:53.250132デフォルトの名無しさん
2012/01/15(日) 14:31:21.480133デフォルトの名無しさん
2012/01/15(日) 14:33:56.98いや、多分素だと思うぞ。
0134デフォルトの名無しさん
2012/01/15(日) 14:33:59.84もしかして「ヒープ領域からメモリを確保すること」の略として「ヒープ」っていってんの?
0135デフォルトの名無しさん
2012/01/15(日) 14:39:16.960139デフォルトの名無しさん
2012/01/15(日) 14:48:24.79大体わかってるつもりでレスをしているんだが、訳わからんほうに話をずらされてる感じがする。
あと、>>127は大体あってるけど少し違う。
リエントラント可能であることはスレッドセーフであることを保障するが、逆はそうではない。
0140デフォルトの名無しさん
2012/01/15(日) 14:49:18.43素。
ほんと、日本語も不自由なんだな。
恥ずかしくて素人じゃないって言えないだけじゃないのか?
0141デフォルトの名無しさん
2012/01/15(日) 14:52:26.93それをわからずにヒープだスタックだ、あまつさえ「ヒープでもスレッドセーフなのか?」なんてことを言うのか。
逆に「スタックはスレッドセーフ」だと思っているってことだと思うんだけど、これがどういうことなのか説明してくれ。
0142デフォルトの名無しさん
2012/01/15(日) 14:52:32.31そう思ってはじめたのが>>80なんだが。
0143デフォルトの名無しさん
2012/01/15(日) 14:53:39.550144デフォルトの名無しさん
2012/01/15(日) 14:54:09.400145デフォルトの名無しさん
2012/01/15(日) 14:54:17.21>グローバル宣言ができない
個人の開発で完全に禁止する利点があまりない。
グローバル変数をできるだけしないってのはまあ誰でも考える。
個人でコーディング規約を決めていたとして、
それに違反することを「コーディング規約により・・できない」って言い方をする人はあまりいない。
俺の方針に反するだとか、好みじゃないとか、そのレベルでしょ。
0146デフォルトの名無しさん
2012/01/15(日) 14:55:24.440147デフォルトの名無しさん
2012/01/15(日) 14:55:33.69×グローバル変数をできるだけしない
○グローバル変数をできるだけ使わない
0148デフォルトの名無しさん
2012/01/15(日) 14:57:21.78>>8と>>83でエスパー大会ってことか…
加えて、>>115でストリームデータ(mainのstrか?)は別スレッドから変更されうる、と。
ストリームデータを変更されたあとでも使用したいのなら、
strへのアクセス処理を「スレッドセーフ」にして、
別領域(要件を満たせるならスタックでもヒープでも)にコピーするしか方法はないよな。
0150デフォルトの名無しさん
2012/01/15(日) 14:59:49.89すべてのスレッドはメモリ空間を共有する。
基本だ。
0151デフォルトの名無しさん
2012/01/15(日) 15:00:31.290152デフォルトの名無しさん
2012/01/15(日) 15:00:48.32×スタックはスレッドセーフ
○スレッドセーフな関数、スレッドセーフなコード など
0153デフォルトの名無しさん
2012/01/15(日) 15:01:26.540155デフォルトの名無しさん
2012/01/15(日) 15:01:43.06意識をあわせてレスをしようとしてみる。
スレッドのスタックにあるポインタの指すアドレスを複数のスレッドが保持している場合、
そのアドレスはスレッドセーフじゃない
(かなりひどい文だが…
0156デフォルトの名無しさん
2012/01/15(日) 15:02:06.27素人を自覚してるならまずその態度を治せ。
0158デフォルトの名無しさん
2012/01/15(日) 15:03:20.08そのあたりを1�_も理解してないんだろう。
0160デフォルトの名無しさん
2012/01/15(日) 15:03:46.60それは大抵の場合、やりたいことを引き出すことよりも難しいよ
0162デフォルトの名無しさん
2012/01/15(日) 15:04:33.23そんなことはどうでもいいから>>148
0163デフォルトの名無しさん
2012/01/15(日) 15:05:41.01いや。
お前がスレッドすら1�_も理解してないことを自覚させたいだけ。
0165デフォルトの名無しさん
2012/01/15(日) 15:11:26.000166デフォルトの名無しさん
2012/01/15(日) 15:12:22.490167デフォルトの名無しさん
2012/01/15(日) 15:13:26.780168デフォルトの名無しさん
2012/01/15(日) 15:13:44.46いいえ、スタックとプログラムカウンタはスタックごとに別。
0172デフォルトの名無しさん
2012/01/15(日) 15:16:33.51ちょっとどんな展開になるのか、他の人はだまってみてようよw
0173デフォルトの名無しさん
2012/01/15(日) 15:16:56.99それで実装したコードを挙げてくれ。そうすればもっとスマートな解決方法を出すことができるかもしれない。
0175デフォルトの名無しさん
2012/01/15(日) 15:17:27.54ぜひ回答してやってくださいQZさん
0176デフォルトの名無しさん
2012/01/15(日) 15:17:43.90ああ、うん。珍しくQZの自演暴れじゃないものが見られるかもしれんね
0177デフォルトの名無しさん
2012/01/15(日) 15:18:02.460178デフォルトの名無しさん
2012/01/15(日) 15:21:33.63176 名前:あぼ〜ん[NGWord:QZ] 投稿日:あぼ〜ん
177 名前:あぼ〜ん[NGWord:QZ] 投稿日:あぼ〜ん
0180173
2012/01/15(日) 15:28:35.84>>179
もちろん実装していないことはわかっている。
>>5がいい方法かどうかがわからなくて困ってたんだろ。
>>164がいい方法だと思いついたのなら、それで実装すればいい。
これが気に入らないのであればレスしなくていいし、質問はQZあてに頼む。
0181o
2012/01/15(日) 15:37:47.56いや、そんなことを言っているんじゃなくて、
・局所的にしか利用されず
・他スレッドからの参照に問題あり
・アクセスコントロールに関与する
・マルチスレッド対応の場合
+もろもろ
のような条件があるにもかかわらず、グローバル変数を使おうとする人が世の中にいるのか?
って話。
これだけ条件が整えば、
企業が規制するまでも無く、グローバル変数の利用を控えるんじゃないの???と
0183デフォルトの名無しさん
2012/01/15(日) 15:44:28.990184デフォルトの名無しさん
2012/01/15(日) 15:45:28.11>>49の段階ではマルチスレッドの話なんて出てきてなかったろ。
自分だけが知っている情報を他人も知っているはずだと考えるのはよくないことだよ。
0185デフォルトの名無しさん
2012/01/15(日) 15:47:12.80局所に格納してたんだろう
0186デフォルトの名無しさん
2012/01/15(日) 15:48:25.92ああ、さらにアクセスコントロールもされていたようだ
0187o
2012/01/15(日) 15:55:36.98条件が出てきた時点で、
「ああ、そうかグローバル変数じゃダメね」
ってレス付くなら分かるが、
>仕事上のコーディング方法を2chで質問かよwww
とレスられた事で
玄人の( というのは間違いで本当は素人 ) の中ではこれだけ条件が付いても
「ああ、そうかグローバル変数じゃダメね」
とは思わないのかなぁ???
という話。
0188デフォルトの名無しさん
2012/01/15(日) 15:56:17.700190デフォルトの名無しさん
2012/01/15(日) 16:01:12.860191デフォルトの名無しさん
2012/01/15(日) 16:02:00.040192デフォルトの名無しさん
2012/01/15(日) 16:02:35.150193デフォルトの名無しさん
2012/01/15(日) 16:02:58.11理解力はその前に必要だけど、普通の人なら持っている。
0194デフォルトの名無しさん
2012/01/15(日) 16:05:00.030196デフォルトの名無しさん
2012/01/15(日) 16:08:06.610197デフォルトの名無しさん
2012/01/15(日) 16:13:04.17そんな話どうでもいいから本題をQZに質問するといいよ
0198デフォルトの名無しさん
2012/01/15(日) 16:18:55.49スタック領域とかヒープ領域とかに対して
グローバル変数やstatic変数がある領域って一般的になんていうの?
データ領域?
0199デフォルトの名無しさん
2012/01/15(日) 16:23:22.30スレ違いだが、それでいい。
記憶クラスでググれ。
0201デフォルトの名無しさん
2012/01/15(日) 16:25:51.54だね。
そもそも、業務命令とか変な条件の前にグローバル変数は避けるのがデフォだし。
0203デフォルトの名無しさん
2012/01/15(日) 16:27:30.80> テキスト領域
市ね
0204o
2012/01/15(日) 16:27:38.02そうなんだよ。
だから
>仕事上のコーディング方法を2chで質問かよwww
と言われると、
本職の方は、そんな考え方もしているのかなぁ、と
0205デフォルトの名無しさん
2012/01/15(日) 16:29:16.03なんだ?
テキストってのはコードのことだ。
>>204
で、いつまで話ずらすの?
0206o
2012/01/15(日) 16:29:56.40俺がなんかしたんか?
0208デフォルトの名無しさん
2012/01/15(日) 16:30:45.970209デフォルトの名無しさん
2012/01/15(日) 16:31:36.72ちょっと質問が高度すぎるか?
あ、質問というより回答がか。
0210デフォルトの名無しさん
2012/01/15(日) 16:40:35.12ttp://www.the-fortuneteller.com/asperger/aq-j.html
0211デフォルトの名無しさん
2012/01/15(日) 16:43:21.52質問に答えているのにスルーして続ける
知らない単語をさも知っているように間違って使う
関係ないところにつっかかって引き延ばす
0212o
2012/01/15(日) 16:50:08.47何言っているのか分からんが、
自己診断テスト得点計算結果
あなたの得点は16点です。
社会的スキル
3点
注意の切り替え
4点
細部への注意
1点
コミュニケーション
5点
想像力
3点
閾値内に収まっています。
0213o
2012/01/15(日) 16:52:32.85あいや、
スルーしているんなら、レス番号知らせてもらえると助かるよ。
>知らない単語をさも知っているように間違って使う
これは、きちんと指摘してもらえればOK
心は広いから無問題だよ
>関係ないところにつっかかって引き延ばす
新たな質問が出たら、きちんと解決しよう。
普通のことだと思うけど?
これのどこが気に触る内容なのかな?
0214デフォルトの名無しさん
2012/01/15(日) 16:53:33.840216デフォルトの名無しさん
2012/01/15(日) 17:00:01.710217o
2012/01/15(日) 17:18:10.40よく分からんが、選択肢が2つ。
1つは、func1で文字列を保持
もう1つはmallocでmainに引き渡す。
実装してみないと分からないけど、前者かなぁ・・・と。
HTTPだけど、すべてのデータがmainに返さないといけないわけではない。
汎用性がないのが残念だけど、前者の方がよいかなぁ。
汎用性を高めるんなら、mallocかなぁ、と考えてる。
ただ、結合テストで問題が出そうな気がしてならない。
0218デフォルトの名無しさん
2012/01/15(日) 17:22:55.280219デフォルトの名無しさん
2012/01/15(日) 17:23:54.61マルチスレッドらしいから、各スレッドの役割を書いてみて
0220デフォルトの名無しさん
2012/01/15(日) 17:27:15.15やるならスレ立ててそっちでやれ。
0221デフォルトの名無しさん
2012/01/15(日) 17:32:49.04>> グローバル変数やstatic変数がある領域って一般的になんていうの?
> テキストってのはコードのことだ。
市ね or >>207
0222デフォルトの名無しさん
2012/01/15(日) 18:24:45.54パイロットを目指すかパイロットを雇うかの違いがある。
0223デフォルトの名無しさん
2012/01/15(日) 18:33:47.920224デフォルトの名無しさん
2012/01/15(日) 18:43:45.81風力発電コスト高、モニュメントに
オホーツク地方で唯一の風力発電施設の北海道興部町風力発電所が、修繕費用難のた
めに昨年11月、完成から約10年で廃止され、風車を固定したモニュメントとして残
されることになった。
東日本大震災を受けた福島第一原子力発電所の事故後、風力発電は再生可能エネルギ
ーとして注目されているが、小規模風力発電施設が直面するコスト高の課題を露呈した
格好だ。
同町の風力発電所は2001年3月に完成。風車は1基で、建設費約1億9000万
円は、経済産業省が所管する独立行政法人の新エネルギー・産業技術総合開発機構(N
EDO)がほぼ半額を負担し、道の補助を除く約5000万円を町が負担した。隣接す
る町の農業研究施設に電力を供給したうえで、余剰分は北海道電力に売電してきた。約
9年半で計6170万円の売電収入があり、6430万円の維持管理費と収支はほぼ均
衡していた。
しかし、10年10月に発電機のベアリングが破損して稼働を停止。欧州製で部品発
注のほか高所作業が必要となるため、修理には約4000万円かかることが判明した。
全額を町が負担しなければならないことから、町は「長期的に見た場合、コスト面で運
転再開は困難」(町企画財政課)と判断、発電所を廃止した。
----------
http://www.yomiuri.co.jp/national/news/20120114-OYT1T00047.htm
http://www.yomiuri.co.jp/photo/20120114-463522-1-L.jpg
0225デフォルトの名無しさん
2012/01/15(日) 19:03:46.42自由に「飛びたい」だと、パイロットを雇うのでは微妙に要件を満たさないような気が…
0226デフォルトの名無しさん
2012/01/15(日) 19:11:29.570228デフォルトの名無しさん
2012/01/15(日) 20:08:53.37つ シャブ
0229デフォルトの名無しさん
2012/01/15(日) 20:47:14.71航空法でがっちり縛られるから、パイロットになっても
そんなに自由に飛ばせるわけではない
自分で飛ばすのも雇って指示するのも自由度では大差ないかな
0230デフォルトの名無しさん
2012/01/15(日) 23:53:16.84野田内閣は過半数が帰化人
野田はどうだろうか
韓国人から賄賂を貰い、韓国人の集いに出席している野田は
首になった蓮○はシャブで逮捕歴のある人間と仲が良いな。蓮○自身はやってんの?
い-6-1
テレビが言えない民主党のスポンサー=韓国北朝鮮
あとはもうわかるよな
0231デフォルトの名無しさん
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');
}
0232231
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);
}
0233231
2012/01/16(月) 00:24:34.89ここで1ビット目から、32個のビットに1をセットするようにしているのですが
31個のビットだと正常に011111?と1がセットされるのですが
上記のように32個だと、000000?となり1がセットされません
なぜ、11111?な感じで1がセットされないのでしょうか?
0234デフォルトの名無しさん
2012/01/16(月) 00:29:24.01ビット幅以上のシフトは未定義
自分の知ってる処理系では mod ビット幅 だけシフトされる
0235デフォルトの名無しさん
2012/01/16(月) 00:51:44.97186か286かその辺の時代以前には、律儀に32回シフト(ただしintは16bit)してた。
0236デフォルトの名無しさん
2012/01/16(月) 00:59:25.16レスを元に調べてみたら、ビット演算のWikipediaにそれらしい内容が書かれていました
今回の場合だと
31 mod 32 で31ビットシフトするが
32 mod 32だと0でビットシフトしない
33 mod 32だと1ビットシフトする
というこで理解できました
ありがとうございました
0237デフォルトの名無しさん
2012/01/16(月) 01:10:56.78そういう課題が出た。さっさと教えろ。お前ら偉いだろ。
0238デフォルトの名無しさん
2012/01/16(月) 01:18:08.73こんなのでどうですか?
http://ideone.com/SGJmx
0240デフォルトの名無しさん
2012/01/16(月) 08:25:12.57作ってやるから20万円よこせ
偉い人の時間は高いぞ
0241デフォルトの名無しさん
2012/01/16(月) 14:33:54.35ステルスマーケティングまとめ
A http://www.dotup.org/uploda/www.dotup.org2522270.png
B http://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 :http://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【黒幕を特定せよ】
http://awabi.2ch.net/test/read.cgi/poverty/1326691256/
0242デフォルトの名無しさん
2012/01/16(月) 22:36:48.88使い易さを追求して実現された種々の機能と それを実現しているリスト構造の具体例について
解説せよ。
という問題があるんだが、答えるのにチェイン法とか機能の説明でいいのかな?
0243デフォルトの名無しさん
2012/01/16(月) 23:20:46.730244デフォルトの名無しさん
2012/01/16(月) 23:24:32.44いいと思う。
0245デフォルトの名無しさん
2012/01/16(月) 23:27:06.26ありがとう
ついでなんだが、オブジェクトのデータと処理とを組み合わせて
合理的に管理するためのプログラミング手法ってなんて言うんだったっけ?
0246デフォルトの名無しさん
2012/01/16(月) 23:27:21.98ありがとう
ついでなんだが、オブジェクトのデータと処理とを組み合わせて
合理的に管理するためのプログラミング手法ってなんて言うんだったっけ?
0247デフォルトの名無しさん
2012/01/16(月) 23:29:04.140248デフォルトの名無しさん
2012/01/16(月) 23:34:49.93連レスすまない
0249デフォルトの名無しさん
2012/01/16(月) 23:50:08.16OOP, Object Oriented Programming
0250デフォルトの名無しさん
2012/01/16(月) 23:58:46.59アクネドート:
実用に成るコードを完成させるためには
定義の段階で同じ識別詞、同じ記述が繰り返し繰り返し現れる
0251デフォルトの名無しさん
2012/01/17(火) 00:34:19.57よろしくお願いします。
0252デフォルトの名無しさん
2012/01/17(火) 01:34:11.86その関数を呼び出す前に、その関数を使用する場合
プロトタイプ宣言しといて、実装を後に実装する。
あと、ライブラリを作成するとき、ヘッダに宣言をまとめて
書いといて、実装をコード側に書く。
0253デフォルトの名無しさん
2012/01/17(火) 10:04:03.55「データ」が「ステート(状態)」の事を意図してるなら、OOP。
「データ」一般なら色々あるからCTMCPなどが参考になる。
0254デフォルトの名無しさん
2012/01/17(火) 12:29:37.79aが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
0255254
2012/01/17(火) 12:30:35.88e = a > 224;
if(d || e){
if(d){
b = a; //A
}else{
b = 256 - a; //B
}
c = b * 100; //C
}
//D
こういうのもifが2つあって、なんだか冗長です。
0256254
2012/01/17(火) 12:30:55.20*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を使わないと、重複は避けられないのでしょうか?
0257デフォルトの名無しさん
2012/01/17(火) 13:26:36.03if( a < 32 ){
//A
}
if ( a > 224 ){
//B
}
if( ( a < 32 || a > 224)){
//C
//D
>>254は、コードが複雑になった場合に追っかけるのが面倒
>>255は、何やってるのかわかりづらい
>>256は、今時のシステムならそのくらいのコスト気にすんな。関数名次第では分かりにくい。
自分は、同じ基準で判定する方がコードが分かりやすい。
このケースの場合、a を基準にするのではなく、
//A、//B、//C、//Dのそれぞれのコードがどういう条件なら実行できるか、
を同じレベルで書いた方が後で見て分かりやすい。
0258254
2012/01/17(火) 14:59:48.07多少冗長になっても、メンテを考えればgotoなど使わない方がいいと言うことですね。
ありがとうございます。
0259デフォルトの名無しさん
2012/01/17(火) 15:13:29.390260デフォルトの名無しさん
2012/01/17(火) 16:08:24.420261デフォルトの名無しさん
2012/01/17(火) 16:14:30.480262デフォルトの名無しさん
2012/01/17(火) 16:30:33.18bool a32 = (a < 32)
bool a224 = (a > 224)
if (a32 || a224) {
if (a32) {
A();
} else {
B();
}
C();
}
D();
0263デフォルトの名無しさん
2012/01/17(火) 16:38:28.45if (a32 | a224) {
の方がいい場合あり。
昔逆アセンブルしてみたら
if(a32) goto xxx;
if(a224) {
xxx:
...
}
的な処理してた。
まぁ処理速度必要で、
一秒間に数千、数万回実行される処理でなきゃそこまでする必要は無いと思う。
0264デフォルトの名無しさん
2012/01/17(火) 16:40:24.400265デフォルトの名無しさん
2012/01/17(火) 16:40:35.91>>263
そこまで速度を必要とするならそもそも条件判断をしないようにすればいい。
0266254
2012/01/17(火) 16:50:41.22条件判断しないようにすればいいとは、どのように書けばよいのですか?
0267デフォルトの名無しさん
2012/01/17(火) 16:51:40.47||を|とかかれると?と思ってしまう。
あー、これはほかにもいろいろバグが入ってるんだろうなー、と残念な
気持ちになるんで人が見るコードの場合はやめてくれ。
0268デフォルトの名無しさん
2012/01/17(火) 16:52:58.71一番簡単なのは必要な処理を用意して関数ポインタ使って条件によって切り替える。
一般的に高速化と冗長性の削減は両立しないんだよ。
0269デフォルトの名無しさん
2012/01/17(火) 16:53:19.030270デフォルトの名無しさん
2012/01/17(火) 16:53:41.910271デフォルトの名無しさん
2012/01/17(火) 16:55:25.05フラグ取得→ローテーション命令で0か0ffffhに加工→計算過程でANDして加算
速くなったかどうかは知らん。
0272デフォルトの名無しさん
2012/01/17(火) 16:55:39.990273デフォルトの名無しさん
2012/01/17(火) 16:57:15.881%の処理を100万倍速くしたところで1%も速度は向上しない。
0274デフォルトの名無しさん
2012/01/17(火) 16:58:51.380=偽 0以外=真 って確証(確信?)ないからやらないよ。
0275デフォルトの名無しさん
2012/01/17(火) 17:00:19.16どういうこと?
0276デフォルトの名無しさん
2012/01/17(火) 17:02:44.890277デフォルトの名無しさん
2012/01/17(火) 17:06:38.130278デフォルトの名無しさん
2012/01/17(火) 17:07:49.12関数のサイズと関数の呼び出しコストって関係あるの?
0279デフォルトの名無しさん
2012/01/17(火) 17:09:48.500280デフォルトの名無しさん
2012/01/17(火) 17:12:29.87ない。
0281デフォルトの名無しさん
2012/01/17(火) 17:13:23.01が、そんなことを気にするのはあと数レベル先の話。
0282デフォルトの名無しさん
2012/01/17(火) 18:10:35.590283デフォルトの名無しさん
2012/01/17(火) 18:14:32.35テトリスをC言語によって作るのは出来ると思うのですが
標準出力のみで作れますか?
0284デフォルトの名無しさん
2012/01/17(火) 18:17:54.160285デフォルトの名無しさん
2012/01/17(火) 18:17:59.440286デフォルトの名無しさん
2012/01/17(火) 18:18:39.200287デフォルトの名無しさん
2012/01/17(火) 18:20:30.520288デフォルトの名無しさん
2012/01/17(火) 18:23:18.51グラフィック関連の低級性ってどうなってんの?
プログラミングだとアセンブラでしょう。
グラフィックは?
0289デフォルトの名無しさん
2012/01/17(火) 18:24:24.400290デフォルトの名無しさん
2012/01/17(火) 18:31:30.36見てみたらどうか。
0291デフォルトの名無しさん
2012/01/17(火) 18:32:00.5016ビットのときは、CPUで特定のアドレスに書きこむと画面に反映されてた。
それ以降は知らん。
0292デフォルトの名無しさん
2012/01/17(火) 18:40:41.05見た感じCUIだった。
0293デフォルトの名無しさん
2012/01/17(火) 19:05:11.88Windows には専用の API がある。
0294デフォルトの名無しさん
2012/01/17(火) 19:23:05.12エスケープシーケンス使うかすればいいのかな?
0296デフォルトの名無しさん
2012/01/17(火) 19:48:22.990297デフォルトの名無しさん
2012/01/17(火) 19:57:22.70環境に依存すると思う。どういう環境(OS、処理系)で作りたいかを教えれ
0298デフォルトの名無しさん
2012/01/17(火) 19:57:30.73なんか、遠い記憶にそんな努力をしたことがあるような、無いような。
ポケコン時代だと、
if文ってスゲー遅いんだよな・・・
それを嫌ってForNextで書いてた。
でも、そうするとコードの容量が大きくなるんだよなぁ。
>>266
224と32にとても意味があるのであれば、ビットシフトを駆使する方法もあるかもねぇ。
a >> 8 が0 なのは ABD
a >> 9 が1 なのは ACD
( a >> 8 ) * ( a >> 9 ) が1なのはD
0299デフォルトの名無しさん
2012/01/17(火) 20:04:34.390300デフォルトの名無しさん
2012/01/17(火) 20:06:31.090301デフォルトの名無しさん
2012/01/17(火) 20:06:37.721990年くらいのパソコン。
一太郎しか入ってなかった。
0302デフォルトの名無しさん
2012/01/17(火) 20:12:01.090303デフォルトの名無しさん
2012/01/17(火) 20:14:06.20MS−DOSの頃で、PC9801をターゲットにしてたなら、
テキストVRAM直書きが速かったかも。VRAMに表示文字以外に
確か属性があって、色やブリンクなどをセットできてた。
0304デフォルトの名無しさん
2012/01/17(火) 20:16:56.86詳しすぎワロタw
C言語に詳しい人って同時にコンピュータ関連詳しすぎw
0305デフォルトの名無しさん
2012/01/17(火) 20:22:07.270306デフォルトの名無しさん
2012/01/17(火) 20:24:02.15ちゃうちゃう。
サンプルコード書けない理由にもなってるけど、
もしABCDの処理が加算なら、
(加算数A) * ( (~a) >>8 ) + (加算数B) * (a >> 9 ) + .....
と比較しなくてもできる。
>>299
まあねぇ。
特に最近はHyperThreadingとかキャッシュとかねぇ。コードでは全く見えない高速化があるからねぇ。
0307デフォルトの名無しさん
2012/01/17(火) 20:25:57.57アセンブラの次にハードを直接いじるのに適してる言語だと思ってるから。
0308デフォルトの名無しさん
2012/01/17(火) 20:36:08.57複合機(レーザー)やってたが、PCで作るのは画像データorスクリプトだけだよ。
後は複合機側でやる。色はCMYKを混ぜると全色でる。
0309デフォルトの名無しさん
2012/01/17(火) 20:38:23.26テレビの画質なんてものはLSIで決まる
Cプログラマは上からレジスタ操作してハードウェア様の機能をオンオフするだけ
0310デフォルトの名無しさん
2012/01/17(火) 20:39:05.47VxWorks ?
0311デフォルトの名無しさん
2012/01/17(火) 20:40:56.60大当たりw
0312デフォルトの名無しさん
2012/01/17(火) 20:42:15.01メタリックインキや蛍光インキもありますぜ旦那
0313デフォルトの名無しさん
2012/01/17(火) 20:42:46.37CMYKって表現が分かる人、どのくらいいるのかな?
0314デフォルトの名無しさん
2012/01/17(火) 20:42:59.11豊橋じゃないってことやねwww
0315デフォルトの名無しさん
2012/01/17(火) 20:43:48.600316デフォルトの名無しさん
2012/01/17(火) 20:44:14.16違う。
豊橋だ
0317デフォルトの名無しさん
2012/01/17(火) 20:44:28.440318デフォルトの名無しさん
2012/01/17(火) 21:37:08.40かなりたくさん。
0319デフォルトの名無しさん
2012/01/17(火) 21:37:45.43プリントゴッコなつかしい
それが、裏VRAM に書く方法が今でもわからなかったりするのです。
わかんない。シアンマゼンダイエロー、K‥‥‥K‥‥‥K‥‥‥キンタマか?
0322デフォルトの名無しさん
2012/01/17(火) 23:15:45.85ブラック
0323デフォルトの名無しさん
2012/01/17(火) 23:26:58.27バンク切り替えすればいいだけだろ。
ほんと、程度が低いな、お前。
0324デフォルトの名無しさん
2012/01/17(火) 23:27:49.89遙か彼方の記憶なのだが、どこかのポート出力でバンク切り替えしていたような?
バンク切り替えはどうやればいいのですか?
>>324
http://www.webtech.co.jp/company/doc/undocumented_mem/
を探してはみたのですが‥‥‥。0A4hか?
0326デフォルトの名無しさん
2012/01/18(水) 01:40:51.10そんなのPC98使ってた人間なら常識だろ。
知らないのに出てくるとは、よっぽどなんだな。
0327デフォルトの名無しさん
2012/01/18(水) 02:18:15.95PC98つかったことないけど。
0328デフォルトの名無しさん
2012/01/18(水) 02:46:44.230329デフォルトの名無しさん
2012/01/18(水) 02:59:37.350330デフォルトの名無しさん
2012/01/18(水) 03:35:14.00x86以外ではmipsしか知らない俺には無理。
0331254
2012/01/18(水) 08:29:12.36>>306 なるほど、条件×加算数 というふうにすればいいのか。
これを使って、いくつか書き直してみたいと思います。
ありがとうございます。
条件とAとBは例で示したものが多いです。
Cは3〜10行くらいです。
Dはいろいろあって、かなり長いです。
0332デフォルトの名無しさん
2012/01/18(水) 08:40:06.15まず、メモリアクセスと条件分岐を減らすのが基本。
その上で、ビット演算がどうとかいうのは実際に測定してから。
0333デフォルトの名無しさん
2012/01/18(水) 09:47:49.57自分で書いていてなんなんだが、
× ( (~a) >>8 )
○ ( (~a) >>8 ) && 1 //シフトした後1桁目だけを抽出
演算量が増えると、比較した方が早くなる可能性は十分にある。
また、デバッグがしにくい。16進法を脊髄反射で2進法にできるなら問題ないけど。
値の持たせ方も変わってくる(ビット演算しやすいデータ形式で持たせる必要がある)
ポインタを妙に使い出す
フラグを妙に使い出す( int 変数に複数の情報を持たせたくなる )
デバッグ関数( printf で2進法を表示するコードが欲しくなる )
結果としてコードの見通しが悪くなる
なんて特徴もあるからねぇ。注意は必要だけど。
0334デフォルトの名無しさん
2012/01/18(水) 10:05:23.18ちょっとばかしアセンブラを勉強して、この資料を見るとよい。
http://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クロック以上掛かることになる。
この辺は詳しくないので、説明はできないけど。
0335デフォルトの名無しさん
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文って分岐予測が当たればさらに高速化するし。
0336デフォルトの名無しさん
2012/01/18(水) 11:53:53.16バーとボールの当たり判定はどうすればいいんだ?
0337デフォルトの名無しさん
2012/01/18(水) 11:57:33.93物理演算ライブラリに丸投げ
0338デフォルトの名無しさん
2012/01/18(水) 13:39:39.33バーとボールの座標値を比較。
つーか、どう作っているのか判らんのにどう判定すればいいか分かるわけないだろw
>>335
すげぇ無駄な努力をしていることに気付け。
その高々数十クロックは一体何分の一秒なのか判っているのか?
0339デフォルトの名無しさん
2012/01/18(水) 13:43:27.54映像処理って、1秒に30個とか60個の画像が含まれていて、それぞれの画像は1920*1080ドットあったりして
その各ドットにはRGBの3つの8bit値が存在するんだけど、
1秒の映像を処理するのに何回画素値に対する処理が動くか判っているのか?
0340デフォルトの名無しさん
2012/01/18(水) 13:57:18.96アムダールの法則で言うところのpの値が限りなく1に近い。
0341デフォルトの名無しさん
2012/01/18(水) 13:58:12.830342デフォルトの名無しさん
2012/01/18(水) 14:02:05.12DOS時代は同じ処理を16回分連続で書いたこともあった。
0343デフォルトの名無しさん
2012/01/18(水) 14:03:04.33そりゃぁ、一画素を三回ずつ愚直に計算してたら回数は多いわねぇ。
CPUでそんなことすることを考えているとしたらそのほうが間抜けだ。
0344デフォルトの名無しさん
2012/01/18(水) 14:04:12.65今時のコンパイラなら、ループアンローリングもやってくれるよ。
ついでにベクタ化もしてくれるかもしれない。
0345デフォルトの名無しさん
2012/01/18(水) 14:56:20.00愚直に計算しないためにも、たとえばSSEつかって4画素(4つの32bit整数として)同時にフィルタをかけたりするよね。
>>335はそういうことにつながる話でもあるんだけど、それも>>338みたいに無駄な努力で間抜けな考えだと思うの?
ただいえるのは、スレ違いだということ。
0346デフォルトの名無しさん
2012/01/18(水) 15:02:35.06だからどうしたのって話だけどねー
0347デフォルトの名無しさん
2012/01/18(水) 15:06:42.41パイプラインもあればキャッシュミスすればペナルティもある。
クロック数だけ足し算しても屁の突っ張りにもならないな。
前からこのスレでも言われているだろう。所要時間を知りたかったら実測しろと。
0348デフォルトの名無しさん
2012/01/18(水) 15:16:49.690349デフォルトの名無しさん
2012/01/18(水) 15:21:30.93所要時間を知りたいわけじゃないでしょ
今問われている箇所がボトルネックになっていることを突き止めたあとかもしれないよ
0350デフォルトの名無しさん
2012/01/18(水) 15:27:36.73int main() {
func1();
}
void func1() {
func2();
}
void func2() {
func3();
}…
ひとつの関数を見やすくするという理由だけで、こんな風に
入れ子になっていく事は、なるべく避けた方がいいのかな?
0351デフォルトの名無しさん
2012/01/18(水) 15:30:56.90ちゃんと名前付けてれば大丈夫だと思うよ。
「見やすくする」という基準がずれてなければ。
0352デフォルトの名無しさん
2012/01/18(水) 15:40:12.61言ってることはあってるが、今言うことじゃないな
0353デフォルトの名無しさん
2012/01/18(水) 15:52:40.36すばやい回答ありがとう!
見やすくしようと思って整理してたら、どんどん関数が増えていって
ちと不安になってきたので質問しました。
0354デフォルトの名無しさん
2012/01/18(水) 17:17:24.00その実測が既に難しくなっているんだけどな。
そのコードがどのくらい掛かるかを調べるために、そのコードを繰り返したら
キャッシュあたりまくりでパフォーマンスが良すぎる値が出てくる。
0355デフォルトの名無しさん
2012/01/18(水) 17:26:20.650356デフォルトの名無しさん
2012/01/18(水) 17:37:23.710357デフォルトの名無しさん
2012/01/18(水) 17:47:20.87http://toro.2ch.net/test/read.cgi/tech/1130349336/
0358デフォルトの名無しさん
2012/01/18(水) 17:55:11.41それでキャッシュヒットしまくって全体に対する占有時間が小さくなってるなら
>>356の言うとおり改善する意味なし。
0359デフォルトの名無しさん
2012/01/18(水) 19:59:00.54ヘッダファイル作ってコメント入れときゃ多少マシだろ。
0360デフォルトの名無しさん
2012/01/18(水) 20:04:22.56実際に見やすくなり、再利用が出来るなら、そうして良いんじゃないの?
0361デフォルトの名無しさん
2012/01/18(水) 20:34:18.832〜3行しかない処理を関数化するのは逆によろしくないようで。
0362デフォルトの名無しさん
2012/01/18(水) 20:39:13.90意味のある名前をつけられるかどうかを指標にする
同じコードを2回書くならそれを関数かできないか検討する
解決するべき条件をひとつずつ皮をむくようにクリアしながら下位の関数に投げてしまう、というのは私はよくします。
直近では
http://toro.2ch.net/test/read.cgi/tech/1325685876/339
main() は fopen() と fclose() しかしていない。
0364デフォルトの名無しさん
2012/01/18(水) 20:41:53.23画面解像度やフォントサイズでかなり違いがでそうだけど
0365デフォルトの名無しさん
2012/01/18(水) 20:44:51.45一つの関数が300行を楽々超えていた。
0366デフォルトの名無しさん
2012/01/18(水) 20:50:00.46>>365
開発だとそうなりがちだわな。
2000超えてるの見たときは、驚いたけど。
0367デフォルトの名無しさん
2012/01/18(水) 21:10:25.39まあ(C++ではなく)C言語なら、多少は自重するが
それでも20行以内の関数なんて全然珍しくはない
0368デフォルトの名無しさん
2012/01/18(水) 21:16:46.85基準が行数って時点で目的意識はどこへやら
いまどき行いくらって稼ぎ方はそうないだろうが
頭脳労働者らしからぬ発言には気をつけろな
0369デフォルトの名無しさん
2012/01/18(水) 21:32:50.30アルゴリズムが埋もれないように関数化する
0370デフォルトの名無しさん
2012/01/18(水) 21:54:25.28> ひとつの関数を見やすくするという理由だけで、こんな風に
> 入れ子になっていく事は、なるべく避けた方がいいのかな?
必要ないなら、「入れ子 (ネスト)」は少ないほうがいい。
俺なら、こう書くかな。
int main() {
func1();
func2();
func3();
}
void func1() {
...
}
void func2() {
...
}
void func3() {
...
}
0371デフォルトの名無しさん
2012/01/18(水) 21:58:58.37あまりにこの形式になりすぎて
上位のほうの関数が実際に何やってるのか
よくわからんくなってるプロジェクトを最近見た
0372デフォルトの名無しさん
2012/01/18(水) 22:21:44.34ナンセンス
関数内に隠せないものを関数スコープで宣言とか
おまえは B の時代のヨボヨボジジイか?
0373デフォルトの名無しさん
2012/01/18(水) 22:22:28.10こういう場面で言われる1画面は80*25をさす場合が多い。80文字、25行ね。
最近はメソッドや変数名が長い場合も多く、横方向への基準を緩和していることも多い。
たとえば120文字までにおさめるなど。
縦方向は今も昔もさほど変わっていないと思う。
でもメソッドチェーンなんかで、1かたまりの処理が複数行にわたる場合なんかを考えると、
今となっては25行は厳しいかもしれないね。
0374デフォルトの名無しさん
2012/01/18(水) 22:24:25.63ステマ相関図画像更新(1/17)
http://gazo.restspace.jp/img-box/img20120117010742.jpg
テレビや新聞、大規模なネットサイトで「今流行の」「今話題の〜」「女性に人気の〜」等と言われるものはほぼ全て
この画像上部、○○堂がコントロールしている。
・世間にどの程度流行らせるか
・流行に乗り遅れる(流行に乗り遅れさせる)人間をどのくらい作るか
・話題に乗り遅れた人間に対してどの程度の疎外感を与えるか
・いつその流行を終わらせるか
2chもステマ会場
http://www.dotup.org/uploda/www.dotup.org2526030.jpg
ちなみに ハリーポッターと賢者の石の 「石」とはテレビのこと(著者が執筆当時)
ダイオード→半導体→シリコン→石
賢者とはテレビを見る人間でも番組を作る人間でもなく、テレビを操る人間。
0375デフォルトの名無しさん
2012/01/18(水) 22:42:55.850376デフォルトの名無しさん
2012/01/18(水) 22:47:08.66俺もそれっぽい書き方するわ。
もちろん、そこまで極端ではないけど。
0377デフォルトの名無しさん
2012/01/18(水) 22:50:22.440378デフォルトの名無しさん
2012/01/18(水) 22:52:07.610379デフォルトの名無しさん
2012/01/18(水) 23:07:22.27意味わからん、あくまでも >>350 の改善案だぞ。
0380デフォルトの名無しさん
2012/01/18(水) 23:51:17.96関数化の大きな目的の1つである同一コードを纏めて修正を1回で済ませる、という目的を忘れてる気がする。
どんなコードの書き方でも基本的に構わないけど、
バグの温床になる書き方はどんな書き方でもNGだと思うが
0381デフォルトの名無しさん
2012/01/18(水) 23:54:29.63>>379
ナンセンス以前に、おまえら超能力者かと
mainからみて隠蔽したい内容であるなら、>>350だし、
それがアルゴリズムとして重要でmainからみとおせる必要があるなら>>370だし。
それが、>>350で読み解けてるみたいだから、超能力でもあるんだろう。
0382デフォルトの名無しさん
2012/01/19(木) 00:12:29.16検証お願いします
0383デフォルトの名無しさん
2012/01/19(木) 07:30:01.470384デフォルトの名無しさん
2012/01/19(木) 08:21:13.400385デフォルトの名無しさん
2012/01/19(木) 08:21:41.811関数は百行以内で頼みたい。
0386384
2012/01/19(木) 08:25:52.230387デフォルトの名無しさん
2012/01/19(木) 10:52:47.12ぱっと見、抽象型プログラミングっぽいけど、よく見たらファイル一個につき
selfが一個だな。
あんまり利点を感じない。
0388デフォルトの名無しさん
2012/01/19(木) 14:07:44.90意味がわからんのだが。
0389デフォルトの名無しさん
2012/01/19(木) 15:18:28.050390デフォルトの名無しさん
2012/01/19(木) 15:50:28.51ぱっと見、OOPを噂で聞いたくらいで何かそういうことを
やろうとしたような残念なコードにしか見えないんだが。
0391デフォルトの名無しさん
2012/01/19(木) 17:34:27.20! ! ! ! give_up という事で、
give_upがtrueなら
! ! ! ! give_up もtrueという事で
ギブアップなんですよね?
0392デフォルトの名無しさん
2012/01/19(木) 17:51:02.21だよ
0393デフォルトの名無しさん
2012/01/19(木) 18:37:49.17[範�ヘ外の数値が入覧ヘされました。]としか表示されません
番号通りの処理をさせるにはどうしたらいいのでしょうか
http://codepad.org/IOuFqtMb
0394デフォルトの名無しさん
2012/01/19(木) 18:44:58.18- scanf("%d", menu);
+ scanf("%d", &menu);
0395デフォルトの名無しさん
2012/01/19(木) 18:51:32.77有難うございます
早速修正します
0396デフォルトの名無しさん
2012/01/19(木) 20:51:59.130397デフォルトの名無しさん
2012/01/19(木) 21:00:03.22配列のサイズ以外に何かあるの?
0398デフォルトの名無しさん
2012/01/19(木) 21:25:55.65int は4バイト(処理系によりけり)
long は8バイト(処理系によりけり)
とかを聞きたいんじゃね?
0399デフォルトの名無しさん
2012/01/19(木) 21:44:19.30としか
0400デフォルトの名無しさん
2012/01/19(木) 21:48:02.12が8バイト分確保するとか。
コンパイラ依存だろうが。
0401396
2012/01/19(木) 22:24:08.730402デフォルトの名無しさん
2012/01/19(木) 22:32:17.25char配列?
0403デフォルトの名無しさん
2012/01/19(木) 22:32:39.53>すまん、要素数が1の時に1byte、2〜16で16byte、17〜32で32byte、33〜64で64byteっていう実験結果が得られたのを前提に頼む。
そんなのじゃなく、実際の宣言部分を見せろ。
0404デフォルトの名無しさん
2012/01/19(木) 22:37:07.14OSやコンパリラとか書かないと
0405396
2012/01/19(木) 22:56:02.82コンパイラはgcc
0406デフォルトの名無しさん
2012/01/19(木) 22:57:55.71俺の超能力をもってしても、お前のレスは意味不明。
0407デフォルトの名無しさん
2012/01/19(木) 23:02:24.89別に普通のことだろ。
何が疑問なんだ?
0408デフォルトの名無しさん
2012/01/19(木) 23:03:38.250409デフォルトの名無しさん
2012/01/19(木) 23:05:06.72とりあえず↓だと
#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)
0410デフォルトの名無しさん
2012/01/19(木) 23:07:02.20>char a[i];
要素数が変数になっているのが気になるな。
情報小出しにしないで、>401でどうしてそう判断したのか、
コードを出しな。
0411デフォルトの名無しさん
2012/01/19(木) 23:25:53.81#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);
}
0412デフォルトの名無しさん
2012/01/19(木) 23:27:23.14>>405がやってるのは、なに言語?
0413デフォルトの名無しさん
2012/01/19(木) 23:27:53.71そういう書き方、気持ち悪いと思う
0414デフォルトの名無しさん
2012/01/19(木) 23:28:00.330415デフォルトの名無しさん
2012/01/19(木) 23:28:08.950416デフォルトの名無しさん
2012/01/19(木) 23:42:07.25環境によって、4の倍数のアドレスがアクセスが速いとか、奇数アドレスにアクセスできないとか
あるから変数とかきっちり敷き詰めて置かれないことのほうが多い。
0417デフォルトの名無しさん
2012/01/19(木) 23:43:01.09char 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
0418デフォルトの名無しさん
2012/01/19(木) 23:44:02.24配列の添字が変数のトキはとくべつなしょりになるよ
0419デフォルトの名無しさん
2012/01/19(木) 23:44:43.21#pragma pack(1)
みたいな、隙間無く埋めろとか指定できるのもあるな。
こんなの使わないから忘れたけど。
0420デフォルトの名無しさん
2012/01/19(木) 23:45:13.81a,bの順番にかくほされるとはかぎらないよ
0421デフォルトの名無しさん
2012/01/19(木) 23:53:00.39例えば、
struct a{
long n;
char c[4];
};
a.nの次のアドレスにa.c[0]が続いてるんじゃないの??
0422デフォルトの名無しさん
2012/01/19(木) 23:54:34.00char c[3];
long n;
};
はどうなってるのかと考える?
0423デフォルトの名無しさん
2012/01/19(木) 23:54:42.230424デフォルトの名無しさん
2012/01/19(木) 23:57:17.34char c[3]がlongに合わせられるんでしょ?
ちなみにlongは4バイトでw
0425デフォルトの名無しさん
2012/01/19(木) 23:58:17.420426デフォルトの名無しさん
2012/01/20(金) 00:00:03.47隙間あいてることもあるよ。
0427デフォルトの名無しさん
2012/01/20(金) 00:01:02.85>char c[3]がlongに合わせられるんでしょ?
×
0428デフォルトの名無しさん
2012/01/20(金) 00:03:08.82char c[3]の領域破壊したら、その下のlong nも壊れるんじゃないんだ
0429デフォルトの名無しさん
2012/01/20(金) 00:07:56.70それは配列がどう配置されるかで、
>>396
>コンパイラが宣言された配列に対して実際に確保するメモリ領域の大きさを決める基準ってなに?
の、配列に対して確保されるメモリ領域の大きさとは、話が変わってるぞ。
>>409で示したように、「配列に対して実際に確保するメモリ領域」の大きさは、char a[N];
ならNになっている。
0430デフォルトの名無しさん
2012/01/20(金) 00:17:02.14ttp://www.g-ishihara.com/c_st_01.htm
0431デフォルトの名無しさん
2012/01/20(金) 00:43:40.33よろしくお願いいたします。
0432デフォルトの名無しさん
2012/01/20(金) 00:46:33.99double (*p)[20] = array;
0433デフォルトの名無しさん
2012/01/20(金) 00:56:51.620434デフォルトの名無しさん
2012/01/20(金) 00:58:22.670435デフォルトの名無しさん
2012/01/20(金) 01:00:02.56とりあえずコマンドライン引数を使おうとすると、早速char **argvが出てくるな。
0436デフォルトの名無しさん
2012/01/20(金) 01:06:52.78コマンドラインで char *argvしか使ったこと無いけどそれ何の意味があるの?
0437デフォルトの名無しさん
2012/01/20(金) 01:28:56.92複数パラメータ時は?
0438デフォルトの名無しさん
2012/01/20(金) 06:52:37.88>コマンドラインで char *argvしか使ったこと無いけどそれ何の意味があるの?
コマンドライン引数はint argc, char **argvしかありえないが、処理系なに使っている?
0439デフォルトの名無しさん
2012/01/20(金) 06:53:40.580440デフォルトの名無しさん
2012/01/20(金) 09:28:45.67知らない人のが多いだろう。
0441デフォルトの名無しさん
2012/01/20(金) 09:33:20.810442デフォルトの名無しさん
2012/01/20(金) 11:42:40.29引数の場合同じことになるだけで、実際は前者だろ。
0443デフォルトの名無しさん
2012/01/20(金) 12:03:26.720444デフォルトの名無しさん
2012/01/20(金) 12:09:20.92ループ(・・・){
n = 10 * n + (s[i] - '0');
・・・
}
return n;
この処理って何をやっているのですか><
iPhoneセミコロン打てない><
0445デフォルトの名無しさん
2012/01/20(金) 12:14:30.210446デフォルトの名無しさん
2012/01/20(金) 12:20:58.460447デフォルトの名無しさん
2012/01/20(金) 12:31:09.330448デフォルトの名無しさん
2012/01/20(金) 12:45:13.57ヒント:
(s[i] - '0') この部分はs[i]の1文字から、数値を得ている
s[i]がcharの'1'だとすると、'1'=0x31
'0'は0x30なので、0x31 - 0x30 から 数値として1を得る
0449デフォルトの名無しさん
2012/01/20(金) 13:25:11.24>iPhoneセミコロン打てない><
「日本語テンキー」を使っている状態だろうから、
左下の地球儀アイコンを押して「English(US)」にすればフルキーが出る。
そこで左下の「123」キーを押せば「;」キーが見える。
0450デフォルトの名無しさん
2012/01/20(金) 15:09:21.28グリコゲーム作ろうと思ったんだけど、うまく動作しないんだ。
助けてくれ。
エンドレスじゃんけん状態から抜け出せない・・・><
↓みたいなプログラム作ったんだが。
0451デフォルトの名無しさん
2012/01/20(金) 15:11:34.14プログラムです
#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);
0452デフォルトの名無しさん
2012/01/20(金) 15:12:40.43srand(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);
0453デフォルトの名無しさん
2012/01/20(金) 15:13:44.78if (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);
}
0454デフォルトの名無しさん
2012/01/20(金) 15:15:02.09宿題スレって知ってるか
>>1嫁
0455デフォルトの名無しさん
2012/01/20(金) 15:15:22.80else 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));
0456デフォルトの名無しさん
2012/01/20(金) 15:16:33.71とりあえずscanfに\nが入ってる時点でおかしい
それ以上は宿題スレ行け
0457デフォルトの名無しさん
2012/01/20(金) 15:16:48.40そっちにいってみます
0458デフォルトの名無しさん
2012/01/20(金) 15:18:18.730459デフォルトの名無しさん
2012/01/20(金) 15:24:18.77チ・ヨ・コ・レ・エ・ト!だろ?
0460デフォルトの名無しさん
2012/01/20(金) 15:28:08.035文字か4文字の言葉にしようと思いました。
普通はチョコレートですよね
0461デフォルトの名無しさん
2012/01/20(金) 15:55:31.890462デフォルトの名無しさん
2012/01/20(金) 16:21:23.140463デフォルトの名無しさん
2012/01/20(金) 16:29:03.160464デフォルトの名無しさん
2012/01/20(金) 16:29:39.620465デフォルトの名無しさん
2012/01/20(金) 19:59:29.24パーは橋本真也
グーはグレートムタ
さんしろうがわらった
げんごろうがもぐった
かみふうせんがきえた
ゆうらんせんがゆれた
へんとうせんがはれた
かめれおんのあかちゃん
ちゃんぴおんのでかぱん
あみにおんのぼうさん
うちゅうせんがとんでく〜
http://www.youtube.com/watch?v=010MEVmjoVA
0467デフォルトの名無しさん
2012/01/20(金) 21:59:17.25相手にするなカス
0469デフォルトの名無しさん
2012/01/21(土) 01:23:37.04468 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
これが正しい対処法
0470デフォルトの名無しさん
2012/01/21(土) 01:41:15.320471デフォルトの名無しさん
2012/01/21(土) 01:48:10.53透明にしたほうがよくね?
0472デフォルトの名無しさん
2012/01/21(土) 01:50:55.030473デフォルトの名無しさん
2012/01/21(土) 02:35:27.450474デフォルトの名無しさん
2012/01/21(土) 12:49:08.280475uy
2012/01/21(土) 13:08:01.480476デフォルトの名無しさん
2012/01/21(土) 14:15:20.400477デフォルトの名無しさん
2012/01/21(土) 15:40:05.55.ni 7 / \ ご冥福をお祈りします
l^l | | l ,/) / /・\ /・\ \ .n
', U ! レ' / |  ̄ ̄  ̄ ̄ | l^l.| | /)
/ 〈 | (_人_) | | U レ'//)
ヽっ \ | / ノ /
/´ ̄ ̄ ノ \_| \rニ |
`ヽ l
0478デフォルトの名無しさん
2012/01/21(土) 15:49:56.91(厨房にわかるレベルでお願いします)
0479デフォルトの名無しさん
2012/01/21(土) 15:52:03.71国語の勉強すりゃいい
0480デフォルトの名無しさん
2012/01/21(土) 15:52:06.95↓
0481デフォルトの名無しさん
2012/01/21(土) 15:55:40.810482馬鹿で中2病な厨房
2012/01/21(土) 15:58:40.180483デフォルトの名無しさん
2012/01/21(土) 16:08:44.71strcmp()とか普通の方法じゃご不満なんですかね。
どうご不満とか書かないと、回答もないですよ。
0484デフォルトの名無しさん
2012/01/21(土) 16:49:03.21#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");
}
0485デフォルトの名無しさん
2012/01/21(土) 16:51:13.880486デフォルトの名無しさん
2012/01/21(土) 16:55:17.010487デフォルトの名無しさん
2012/01/21(土) 17:07:57.40>>485は答えられないんじゃないかな
0488デフォルトの名無しさん
2012/01/21(土) 17:08:06.180489デフォルトの名無しさん
2012/01/21(土) 17:08:36.760490デフォルトの名無しさん
2012/01/21(土) 17:50:37.510491485
2012/01/21(土) 18:07:48.60俺はプロだから答えられるに決まってるだろ
0492デフォルトの名無しさん
2012/01/21(土) 19:10:09.97何をと訊かれても知らないが
0493デフォルトの名無しさん
2012/01/21(土) 21:36:33.960495デフォルトの名無しさん
2012/01/21(土) 22:03:31.360496デフォルトの名無しさん
2012/01/21(土) 22:24:45.540497デフォルトの名無しさん
2012/01/21(土) 23:07:06.970498デフォルトの名無しさん
2012/01/21(土) 23:18:27.220499デフォルトの名無しさん
2012/01/21(土) 23:20:27.020500デフォルトの名無しさん
2012/01/21(土) 23:30:12.370501デフォルトの名無しさん
2012/01/22(日) 02:03:16.110502デフォルトの名無しさん
2012/01/22(日) 04:35:58.10昨日の俺だわw
strcatとか使う意味ないわwww
0503デフォルトの名無しさん
2012/01/22(日) 08:57:59.99win32apiでMessageBoxで変数の値を出力したいときとかも重宝する
0505デフォルトの名無しさん
2012/01/22(日) 16:15:06.900506デフォルトの名無しさん
2012/01/22(日) 18:09:40.27n = 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;
}
の一部分でした。
0507デフォルトの名無しさん
2012/01/22(日) 18:10:41.90#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');
この式ってすごいうまいことやってるんですね
0508デフォルトの名無しさん
2012/01/22(日) 18:56:12.52#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行目がいけないでしょうか?
0509デフォルトの名無しさん
2012/01/22(日) 19:05:41.910510デフォルトの名無しさん
2012/01/22(日) 19:14:23.06ありがとうございます
初歩的なミスですね。。。
0511デフォルトの名無しさん
2012/01/22(日) 21:51:57.76就活中
(p)http://livedoor.blogimg.jp/jin115/imgs/3/1/31a6f8e6.jpg
就職後
(p)http://livedoor.blogimg.jp/jin115/imgs/2/b/2b790359.jpg
街の人(やらせ業者)募集中です
0512デフォルトの名無しさん
2012/01/22(日) 22:58:40.48「math.h」をインクルードすることで使えるようになりますが
このヘッダ内を文字列「sqrt」で検索しても、よくわかってないせいもありますが
それらしい計算式が見当たりません
sqrt関数はどのようにして、平方根を求めてるのでしょうか?
数学的な計算式は理解しています
math.h内でどのように処理されてるのか知りたかったので、聞いてみました
win7でVC2010を使用しています
0513デフォルトの名無しさん
2012/01/22(日) 23:15:17.23ヘッダは宣言のみです
0514デフォルトの名無しさん
2012/01/22(日) 23:21:47.22勘違いしてました
ありがとうございます
0515デフォルトの名無しさん
2012/01/23(月) 01:00:27.01標準関数や基本的な関数ははじめから組み込むようにコンパイラやIDEが指定してくれている。
このオマケのような仕組みのために間違えたんだろう。
0516デフォルトの名無しさん
2012/01/23(月) 01:32:34.590517デフォルトの名無しさん
2012/01/23(月) 01:36:10.210518デフォルトの名無しさん
2012/01/23(月) 01:37:30.57これはGNU libcのものだが、
とにかく高速である事が求められる数値計算系の実装は
パッと見て何をやっているのかさっぱり分からないことも多いw
http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/ieee754/dbl-64/e_sqrt.c
0519デフォルトの名無しさん
2012/01/23(月) 01:38:23.050520デフォルトの名無しさん
2012/01/23(月) 01:39:17.77できるよ
地球の中心を原点として2点の座標のなす角を
内積(内積が0に近いときは外積)から求めて半径を掛ければおk
0521デフォルトの名無しさん
2012/01/23(月) 01:42:00.26やや大仰でめんどくさい式があったはず
0522デフォルトの名無しさん
2012/01/23(月) 01:43:42.870523デフォルトの名無しさん
2012/01/23(月) 01:44:06.59ありがとうございます。
どのように行えばいいのでしょうか。
>>520
ありがとうございます。
むずかしそうな話ですね^^;
今探してたら
http://www2s.biglobe.ne.jp/~satosi/gmap/map_length.html
こういうのがあったんですが、これで可能でしょうか。
0524デフォルトの名無しさん
2012/01/23(月) 01:45:31.89ありがとうございます。
ヒュベニの公式みたいなやつでしょうか。
>>522
制度は一応、mぐらいあれば大丈夫です。
0525デフォルトの名無しさん
2012/01/23(月) 01:49:23.81その計算じゃ無理だし地形データと海抜情報も必要だろう
0526デフォルトの名無しさん
2012/01/23(月) 01:56:21.45東京タワー一階と、展望台では移動距離違うしな。直線も。
0527デフォルトの名無しさん
2012/01/23(月) 02:18:43.44ありがとうございます。
そうですか。
結構複雑な式になるんですかね^^;
>>526
ありがとうございます。
高さもですか。。。
高さは平らとして考えていました。
0528デフォルトの名無しさん
2012/01/23(月) 02:30:51.20m精度がいるのに高さ無視とか、どうせ大した意味もないんだろうけど。
0529デフォルトの名無しさん
2012/01/23(月) 02:40:10.74はい。
2点の距離を図り速さで割って
そこまでにかかる時間を求めたいのです。
0530デフォルトの名無しさん
2012/01/23(月) 02:44:24.19話にならんわ
0531531
2012/01/23(月) 03:43:29.63入力されたデータをテキスト形式でファイルへ保存しないといけないのですが
ファイルには-1076994648 2516192 8 1536358
といったわけの分からない数字が保存されます
どうすればいいでしょうか?
http://codepad.org/T7yR4vHH
0532デフォルトの名無しさん
2012/01/23(月) 03:49:24.860534デフォルトの名無しさん
2012/01/23(月) 04:20:00.150535531
2012/01/23(月) 04:36:55.59ファイルの入出力以外は問題ないようです
0536デフォルトの名無しさん
2012/01/23(月) 04:43:16.68save_textfil(int startpos[][2], int movedir[][MAXMOVE + 1], int movesteps[][MAXMOVE + 1])
のように渡してそれらを順次出力するだけでは?
0537デフォルトの名無しさん
2012/01/23(月) 08:13:05.150538デフォルトの名無しさん
2012/01/23(月) 13:15:54.940539デフォルトの名無しさん
2012/01/23(月) 14:02:51.920540デフォルトの名無しさん
2012/01/23(月) 20:16:49.74double 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
となります。なぜでしょう?
0541デフォルトの名無しさん
2012/01/23(月) 20:18:01.17%f だから
0542デフォルトの名無しさん
2012/01/23(月) 20:20:40.25double 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^)/
0543デフォルトの名無しさん
2012/01/23(月) 20:25:04.22%4.1f だから
0544デフォルトの名無しさん
2012/01/23(月) 20:27:58.60lですかぁ
ありがとうございます
本には1とかいてあるようにみえたので・・・
0545デフォルトの名無しさん
2012/01/24(火) 20:07:37.800546デフォルトの名無しさん
2012/01/24(火) 20:10:33.780547デフォルトの名無しさん
2012/01/24(火) 20:32:53.920548デフォルトの名無しさん
2012/01/24(火) 20:37:02.06君の言う「なんでも」というのが「妹を作りたい」とか
「ヨガファイアを身に付けたい」とか云うことなんだとすれば、
そんなことを思う人はキチガイだ。
0549デフォルトの名無しさん
2012/01/24(火) 20:37:21.10はい
0550デフォルトの名無しさん
2012/01/24(火) 20:46:11.59ilink32.cfg は拡張子変更できたんだけどbcc32.cfg が .txtファイルのままになってしまう
0551デフォルトの名無しさん
2012/01/24(火) 20:50:19.84自己紹介乙。
0552デフォルトの名無しさん
2012/01/24(火) 20:53:55.18setbccでググるといいかも
0553デフォルトの名無しさん
2012/01/24(火) 20:56:02.76Cを知っていれば他の言語は簡単、みたいな意味だったら20年くらい前はよくそんなこと言われてたなって感じ。
0554デフォルトの名無しさん
2012/01/24(火) 21:00:30.49C言語を学ぼうと思った人がいるかも知れない。
0555デフォルトの名無しさん
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"))))));
}
0556デフォルトの名無しさん
2012/01/24(火) 21:07:14.39"YES,NO,YES,"になると思うけど
保証されないはず
0557デフォルトの名無しさん
2012/01/24(火) 21:07:31.46× str == "YES" ?
0558デフォルトの名無しさん
2012/01/24(火) 21:10:04.14違うな。
ゴールに近い言語を使うのが正解。
VBで目的が達成できるものに、Cを敢えて使う理由なんか、無い
0559デフォルトの名無しさん
2012/01/24(火) 21:12:47.63どうすればいいんですか?
char a[10]=
0560デフォルトの名無しさん
2012/01/24(火) 21:13:58.37大概excelで出来ちゃうので、プログラムくむ必要がなくなる。
0561デフォルトの名無しさん
2012/01/24(火) 21:14:11.05コンパイラオプションによる。
0562デフォルトの名無しさん
2012/01/24(火) 21:14:35.89char a[10] = { 1, 2, 3 };
0563デフォルトの名無しさん
2012/01/24(火) 21:15:04.56char a[10] = { '1'. '2'. '3' };
0564デフォルトの名無しさん
2012/01/24(火) 21:15:26.43コンパイラ依存だったような。
>>557
この話でそこに突っ込みを?
0565デフォルトの名無しさん
2012/01/24(火) 21:22:10.34できません。
教えてくれませんか?
0566555
2012/01/24(火) 21:24:14.11やっぱり保証はされないですか
残念です。
>>561
具体的にこのオプションがあればOKとかあれば
注意書きして、この方法を使ってみたいのですが
>>564
大抵のコンパイラならOKそうな気がするんですけどね
0567デフォルトの名無しさん
2012/01/24(火) 21:30:16.43ab3と入力したら
・abbb
・aaabbb
どっちになるの?
あと0の扱いは?
a01bb2
とかの文字列はどう解釈すんの?
プログラム以前の問題だ
0568デフォルトの名無しさん
2012/01/24(火) 21:30:57.36文字列の比較ならstrcmp()使えよ
0569デフォルトの名無しさん
2012/01/24(火) 21:32:06.26ab3 => abbb
a3b3 => aaabbb
a01bb2 => abbb
0570デフォルトの名無しさん
2012/01/24(火) 21:32:54.55ab0c12d5
こういう入力だと、出力はどうしたい?
0571デフォルトの名無しさん
2012/01/24(火) 21:36:16.27すみません。
数字の0と1は入力ミス扱い。
連続した数字も入力ミス扱い。
二桁以上も入力ミス扱い。
ab3はabbbとなります。
お願いします。
0572デフォルトの名無しさん
2012/01/24(火) 22:00:55.70念のため聞くけど、
「連続した数字」と「二桁以上(の数字?)」は何か違う全くベツのモノ?
0573デフォルトの名無しさん
2012/01/24(火) 22:08:36.77同じです;;
二桁以上の数字は入力ミス扱いです
a10やa23など。
0574デフォルトの名無しさん
2012/01/24(火) 22:13:00.32もう少し聞くけど、
もしかしてその文字列は「数字から始まってはいけない」とかいうルールがあったりしない?
0575デフォルトの名無しさん
2012/01/24(火) 22:19:19.40まぁ早く解いて。
0576デフォルトの名無しさん
2012/01/24(火) 22:28:23.660577デフォルトの名無しさん
2012/01/24(火) 22:31:54.75明らかにお前の方がなめてただろ
こっちがいらつくのはあたり前だろ
早く寝ろおっさんw
0578デフォルトの名無しさん
2012/01/24(火) 22:41:42.77パターンマッチングの精度半端ねーな
0579デフォルトの名無しさん
2012/01/24(火) 23:43:34.53#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;
}
0580デフォルトの名無しさん
2012/01/24(火) 23:51:28.42gccで-fwritable-stringつけたら動かないんじゃないの
0581デフォルトの名無しさん
2012/01/24(火) 23:52:52.47manから引用
> -fwritable-strings
> 文字列定数を書き込み可能なデータセグメントに配置し、同内容の文字列を 1 つの共有オブジェクトにする処理を行いません。これは、文字定数に書き込むことができることを仮定した昔のプログラムとの互換性をと
> るために提供されています。‘-traditional’ オプションも同様の効果を含みます。
>
> 文字定数に書き込むという考えは非常によくない考えです。“定数” はまさに定数であり、変化すべきではありません。
0582デフォルトの名無しさん
2012/01/25(水) 00:52:06.30これでいけ
#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;
}
0583デフォルトの名無しさん
2012/01/25(水) 00:56:52.340584デフォルトの名無しさん
2012/01/25(水) 01:05:34.77それなら単に2つポインタ使えばいいだけじゃねーのか。
0585デフォルトの名無しさん
2012/01/25(水) 07:14:03.55「同じ領域に割り当てられると保証されて」いてほしい理由があって聞いたのか
どっちでしょうね
0586デフォルトの名無しさん
2012/01/25(水) 08:01:41.80仕事だったらありえねぇ馬鹿だがw
0587デフォルトの名無しさん
2012/01/25(水) 08:31:02.40マクロで文字列リテラルが展開されまくったとき、exe サイズ膨れ上がらないかとか
さらにそのソースはいろんなコンパイル環境で使いまわすとか
気にしなきゃいけない可能性はいろいろあるだろうに
0588デフォルトの名無しさん
2012/01/25(水) 08:34:18.18文字リテラルなんて埋め込むなよ
0589デフォルトの名無しさん
2012/01/25(水) 09:27:52.57もしそういう要求があるなら尚のこと、コンパイラ任せにするべきじゃない。
例えば、リテラルへのポインタを返す関数を用意しておけば済むことだ。
それにどうせ、マクロを使ったってリテラルの連結をする場合は別領域だ。
0590デフォルトの名無しさん
2012/01/25(水) 12:24:43.54VC2008では再帰展開は行われず、aaaがbbb aaaに展開されます。
#define aaa bbb aaa
0591デフォルトの名無しさん
2012/01/25(水) 12:37:28.66Cリファレンスマニュアルによれば、規格上はアリ。ただし古い処理系だと
再帰展開して止まらなくなってしまうケースがあったようだ
0592デフォルトの名無しさん
2012/01/25(水) 12:51:22.39ありがとう。これで安心して使えます。
0593デフォルトの名無しさん
2012/01/25(水) 13:01:01.040594デフォルトの名無しさん
2012/01/25(水) 13:07:38.56このstdio.hみたいな○○.hっていうので他にもどんなことが事が出来るのか知りたいのですが
なんていうキーワードで検索したら出てきますか?
C 標準ライブラリ
0596デフォルトの名無しさん
2012/01/25(水) 13:15:45.05そのまんま"stdio.h"で検索しても
それなりのものが出ると思うんだが
0597デフォルトの名無しさん
2012/01/25(水) 13:27:18.07赤くなーれ!
標準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 ...
0598デフォルトの名無しさん
2012/01/25(水) 13:33:59.190599デフォルトの名無しさん
2012/01/25(水) 13:56:21.61while (*p++) {
...
}
このpは、ポインタをインクリメントしているのであって、pの指す*pをインクリメントしているのではないのですよね?
そうであれば、これは*pが0x00か比較してからpをインクリメントしているのか、それともpをインクリメントしてから*pが0x00かどうか比較しているのか、どちらなのでしょうか。
演算子の優先順位を見ても、間接演算子*とインクリメント演算子++は優先順位が同じなので、わかりませんでした。
0600デフォルトの名無しさん
2012/01/25(水) 14:01:06.77後置++の演算値はインクリメント前、したがって*演算子に与えられるアドレスはインクリメント前。
0601デフォルトの名無しさん
2012/01/25(水) 14:12:00.71>while (*p++) {
while (*p) {p++; と見なせる。
0602デフォルトの名無しさん
2012/01/25(水) 14:14:48.840603デフォルトの名無しさん
2012/01/25(水) 14:21:59.100604デフォルトの名無しさん
2012/01/25(水) 14:47:01.82ああああああああああああ赤くなっちまったよ!
最後にすいません
これら全部の標準ライブラリを覚えないとやっぱりやっていけないですか?
0605デフォルトの名無しさん
2012/01/25(水) 14:55:25.120606デフォルトの名無しさん
2012/01/25(水) 14:56:30.220607デフォルトの名無しさん
2012/01/25(水) 15:00:18.81別に覚えなくとも、うっすら片隅にいれておけばいいよ
標準ライブラリで提供されてるのに自作するのを避けられる、、けど>>606みたいな人は
自作前にこことかで聞くだろうから未然に防がれるのかな。
0608デフォルトの名無しさん
2012/01/25(水) 15:01:35.540609デフォルトの名無しさん
2012/01/25(水) 17:21:41.26矢印キーを押すとマウスカーソルを動かす事に最初に成功したので、
同じようにすればキーも変えられると思ったのですが何故か反応せず。
キー関係はマウスと違い何か必要なのでしょうか?
よければサンプルプログラムなどいただけないでしょうか
0610デフォルトの名無しさん
2012/01/25(水) 17:23:05.540611デフォルトの名無しさん
2012/01/25(水) 17:24:15.440612デフォルトの名無しさん
2012/01/25(水) 17:38:40.85Cでツールチップを指定した座標に表示させたいのですがなんて標準ライブラリを使えば実現できますか?
0613デフォルトの名無しさん
2012/01/25(水) 17:40:19.540614デフォルトの名無しさん
2012/01/25(水) 17:43:59.59ツールチップを表示させたいだけです
0615デフォルトの名無しさん
2012/01/25(水) 17:51:39.380616デフォルトの名無しさん
2012/01/25(水) 17:53:39.68付箋アプリみたいな?ウィンドウ作ればいい
0617デフォルトの名無しさん
2012/01/25(水) 18:28:25.50#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の前の「;」にはなんの意味があるの?
それ抜きにするとエラーになるんだけど
0618デフォルトの名無しさん
2012/01/25(水) 18:30:12.470619デフォルトの名無しさん
2012/01/25(水) 18:38:12.65std::cin>>name
;
0620デフォルトの名無しさん
2012/01/25(水) 18:42:51.90;std::cout<<name<<std::endl;
0621デフォルトの名無しさん
2012/01/25(水) 18:43:01.47つまり、std::cin>>nameの結果を表示するために;std::cout<<name<<std;;endl;にしなくちゃいけないことでおk?
0622デフォルトの名無しさん
2012/01/25(水) 18:44:43.270623デフォルトの名無しさん
2012/01/25(水) 18:44:50.34std::cin>>name
0624デフォルトの名無しさん
2012/01/25(水) 18:51:45.51std::cout<<"hello"<<std::endl
;
std::cout<<"こんにちは"<<std::endl
;
std::cin>>name
;
std::cout<<name<<std::endl
;
}
べつにこうでもいいよ
0625デフォルトの名無しさん
2012/01/25(水) 18:54:55.700626デフォルトの名無しさん
2012/01/25(水) 19:19:26.140627555
2012/01/25(水) 21:48:50.01昔は文字列定数書き換えられたんですね。(確かに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 "味噌煮込み";
}
0628デフォルトの名無しさん
2012/01/25(水) 21:55:16.530629デフォルトの名無しさん
2012/01/25(水) 22:02:03.95なんだかタッチパネル方式になるって
どこかに書いてあったけど。
0630デフォルトの名無しさん
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;
}
0631デフォルトの名無しさん
2012/01/25(水) 22:32:50.660632デフォルトの名無しさん
2012/01/25(水) 22:38:43.77こういうのが30分以内にさらっとかける男になりたいんですが
C言語のおすすめの入門書を教えてください
JavaScriptだとオライリーが有名です
0633デフォルトの名無しさん
2012/01/25(水) 22:39:23.220634デフォルトの名無しさん
2012/01/25(水) 22:48:41.09落ち着いて。基本に忠実に書いているだけだよ。
意識してやったことは、
文字列はマクロで定義しておく、
文字列に対応する整数値は 文字列 + _(アンダースコア)
文字列を格納する配列はNULL終端にする。
関数の引数は一度変数に代入したものにする。
# こうすると、debugの時に便利だよね。
私は本をそんなに読んでないけど、
もっている本は、
プログラミング言語C第2版
プログラミング作法
ぐらいだった。
0635デフォルトの名無しさん
2012/01/25(水) 23:00:40.57ありがたきお言葉頂戴しました
0636デフォルトの名無しさん
2012/01/25(水) 23:27:52.22strcat_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;
}
0637デフォルトの名無しさん
2012/01/25(水) 23:30:50.41http://www2s.biglobe.ne.jp/~satosi/gmap/map_length.html
このページで大丈夫なのでしょうか。
また、違うようでしたらどのようにすればよいのでしょうか。
参考になるページなどございましたら、よろしくお願い致します。
0638デフォルトの名無しさん
2012/01/25(水) 23:37:40.46コイツバカじゃねーの、
&alphabet[0]+rand()%26
なんてアフォなことしなくてもいいじゃん
0639デフォルトの名無しさん
2012/01/25(水) 23:41:13.07是非教えていただきたいです・・
0640デフォルトの名無しさん
2012/01/25(水) 23:41:22.46どこがって。。。
全体的に悪かったから書き直しておいたよ。
こっち使って。
コメントにしている所を有効にした場合は、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;
}
0641デフォルトの名無しさん
2012/01/25(水) 23:43:13.46かな?よく分からんけど
0642デフォルトの名無しさん
2012/01/25(水) 23:46:03.45const char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
もしくは
const char *alphabet = "abcdefghijklmnopqrstuvwxyz";
0643デフォルトの名無しさん
2012/01/25(水) 23:49:16.77ありがとうございます!凄い勉強になります・・
0644デフォルトの名無しさん
2012/01/25(水) 23:50:56.06C言語に関係ない問題
地理板?地学板?の方がいいと思うよ
でも、まあ、どうぞ
http://oshiete.goo.ne.jp/qa/249931.html
0645デフォルトの名無しさん
2012/01/25(水) 23:52:15.40typedef 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# 側の値の設定方法が悪いのでしょうか??
0646デフォルトの名無しさん
2012/01/25(水) 23:55:07.45APIが提供されるはずだからCで問題ないよ
0647デフォルトの名無しさん
2012/01/25(水) 23:58:53.92わかりました
words[i] = 'a' + r;みたいな書き方もできるんですね・・
本当に参考になります。ありがとうございます。
0648デフォルトの名無しさん
2012/01/26(木) 01:59:00.64ありがとうございます。
挑戦してみたんですが、なかなかうまくいきません。
どのようなプログラムになりますか。
0649デフォルトの名無しさん
2012/01/26(木) 02:02:46.07あーーーウゼーな、
勘違いしたアホがいつくとロクなことがねーよ
プログラムは簡単だよ
あとは数学の問題
その数学部分を理解出来ないのは
お前がアホだから
さっさと出てけ
0650デフォルトの名無しさん
2012/01/26(木) 02:21:07.90ありがとうございます。
数学はなんとなく理解はできるのですが、
プログラムがかけません。
また、ヒュベニの公式を使って、求めることができるみたいなのですが、
プログラムをどのようにしたらよいのかわかりません。
0651デフォルトの名無しさん
2012/01/26(木) 02:46:01.520652デフォルトの名無しさん
2012/01/26(木) 02:59:12.57適当な計算プログラムつくればいいのに。
数学理解できるなら段階を踏めばいいことぐらいわかるでしょ
0653デフォルトの名無しさん
2012/01/26(木) 07:50:35.29そのなんちゃらの公式は理解してるんだよね?
だったらあとはそれを分解して目的に応じて再構築するだけじゃないの
とそのなんちゃらの公式を知らないがいってみるテスト
0654デフォルトの名無しさん
2012/01/26(木) 13:24:31.17ググったらJavaのコードがあったから、これをCにすればいいのでは?
http://yamadarake.web.fc2.com/trdi/2009/report000001.html
0655デフォルトの名無しさん
2012/01/26(木) 15:15:11.42http://codepad.org/lqKCchcU
なんでcodepadはCだとsin/cosが使えないんだろうか。
0656デフォルトの名無しさん
2012/01/26(木) 15:44:05.570657デフォルトの名無しさん
2012/01/26(木) 16:57:27.590658デフォルトの名無しさん
2012/01/26(木) 16:58:18.750659デフォルトの名無しさん
2012/01/26(木) 17:05:01.55Language: Cを選ぶとそういう状態だね。
どっかオプションとかあるんかな。
0660デフォルトの名無しさん
2012/01/26(木) 18:22:26.63確か前見たときはなかった
>rand() % 26;
rand() の返り値は悲惨なまでにランダムではない処理系があるので剰余演算子で乱数生成範囲を制限するのは誤りとはいわないまでも疑問手である件について云々かんぬん
http://www.kouno.jp/home/c_faq/c13.html#16
0662デフォルトの名無しさん
2012/01/26(木) 20:14:22.25コテも大変だな。
0663デフォルトの名無しさん
2012/01/26(木) 20:20:37.49>>636の初期の目的に沿おうとするなら、こう?
rand() / (RAND_MAX / N + 1) - 1
N + 1 な理由が分からね。
N だけでいいなら - 1 が不必要になるんだが。
0664デフォルトの名無しさん
2012/01/26(木) 20:40:52.010665デフォルトの名無しさん
2012/01/26(木) 20:42:54.550666デフォルトの名無しさん
2012/01/26(木) 20:53:46.83兆か京のけた?
0667デフォルトの名無しさん
2012/01/26(木) 21:06:41.65ええええ...
どうやって開発者は書いたんだ。
大学のレポート課題です。お願いします。
0668デフォルトの名無しさん
2012/01/26(木) 21:13:07.13大学の課題だったら自分で調べるといい
0669デフォルトの名無しさん
2012/01/26(木) 21:13:07.47さぁどっから推定しようか。人数?会社?機器?PCの台数?
0670デフォルトの名無しさん
2012/01/26(木) 21:16:41.930671デフォルトの名無しさん
2012/01/26(木) 21:19:47.19C言語開発者が開発に取り組んだ時の、動機、人事的な背景を考察せよ。
っていう問題。
0672デフォルトの名無しさん
2012/01/26(木) 21:22:35.450673デフォルトの名無しさん
2012/01/26(木) 21:26:37.29直接機械をいじってプログラムを作ってたんだろ?
静電気とか走っただろうな、手袋してたろうけど。
0674デフォルトの名無しさん
2012/01/26(木) 21:27:30.83(int)(rand() / (RAND_MAX + 1.0) * 26)
でいいんじゃないですか?
+1.0 するのは RAND_MAX
0676デフォルトの名無しさん
2012/01/26(木) 21:56:10.580677デフォルトの名無しさん
2012/01/26(木) 22:03:02.70>>672
そうなんだけど、それだけじゃ△だな
0678デフォルトの名無しさん
2012/01/26(木) 22:07:50.390679デフォルトの名無しさん
2012/01/26(木) 22:10:26.26C言語のソースコードって言っても、どのコンパイラの話かも不明だし。
0680デフォルトの名無しさん
2012/01/26(木) 22:13:34.280681デフォルトの名無しさん
2012/01/26(木) 22:38:25.74#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
0682デフォルトの名無しさん
2012/01/26(木) 22:46:51.02for(h=0;h<HEIGHT;h++){
for(w=0;w<WIDTH;w++){
for(d=0;d<DEPTH;d++){
0683デフォルトの名無しさん
2012/01/26(木) 22:47:03.01a[10]の場合、a[0]〜a[9]しかアクセスしちゃダメよ。
0684デフォルトの名無しさん
2012/01/26(木) 23:05:46.98うわああああああ恥ずかしいいいいいい
おかげで問題は解決しました。
説明書を読まない初心者みたいな質問をしてすみませんでした。
0685デフォルトの名無しさん
2012/01/26(木) 23:21:19.54ある大手メーカーの看板商品でだいたい数百万行(当時20世紀)
ある大手物流センターでは最長不倒関数の競技場で1ソース1万行超えが日常だった
ある半官半民の案件では C なのにグローバルとマジックナンバーの嵐でまるで拷問室
ハード系(C よりアナログやメカが得意)の某社さんのコードは美しさが際立っていた
おめ、gcc のソースの行数数えてみたか? 数えていなければ、それが正解だと思うぞ
0686デフォルトの名無しさん
2012/01/26(木) 23:28:14.90大量のグローバル変数も整理されてるなら正しい使い方
でもマジックナンバーはヤバイよな
0687デフォルトの名無しさん
2012/01/26(木) 23:37:01.71コード量が少なく開発日数の少ないのが優れてる。
同品質なら。
0689デフォルトの名無しさん
2012/01/26(木) 23:54:34.24もちろん、でますん。
0690デフォルトの名無しさん
2012/01/27(金) 00:06:52.66ありがとうございました。
助かりました。
単位は、メートルですよね?
0691デフォルトの名無しさん
2012/01/27(金) 00:10:56.57ある程度は正しいかもしれない。
0692デフォルトの名無しさん
2012/01/27(金) 00:13:34.250693デフォルトの名無しさん
2012/01/27(金) 00:18:41.80え、どういうことですか。
0694デフォルトの名無しさん
2012/01/27(金) 00:19:58.990695デフォルトの名無しさん
2012/01/27(金) 00:39:35.20ベッセル楕円体という近似はいまいちということが判明してる。
国土調査課 地籍活用GIS 世界測地系への移行
http://tochi.mlit.go.jp/tockok/gis/gps/main4.html
日本経緯度原点に450mのズレ
近年では人工衛星を使った観測等により、地球の極めて正確な形状が明らかになりました。それによると、地球は当時推定されていたベッセル楕円体よりも長半径が約700m長いことが判明しました。
座標系
http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html
いろいろな地球楕円体
天文経緯度と測地経緯度
http://www.h2.dion.ne.jp/~kazuf/sao/135e/tenmonsokuchi.htm
0696デフォルトの名無しさん
2012/01/27(金) 00:39:39.75答えが正確ではないということですか。
0697デフォルトの名無しさん
2012/01/27(金) 00:41:30.39地球を真球と考えた結果ということですね。
そして、地球は真球ではなく、楕円となっているため
値が正確ではないということですね。
0698デフォルトの名無しさん
2012/01/27(金) 00:42:44.480699デフォルトの名無しさん
2012/01/27(金) 00:44:24.130700デフォルトの名無しさん
2012/01/27(金) 00:52:04.99距離を求めて、そこまでの時間を求めたいです。
速さは、GPSから取得します。
>>699
そうですか。
これだけだと正確ではないのですね。。。
0701デフォルトの名無しさん
2012/01/27(金) 00:52:59.040702デフォルトの名無しさん
2012/01/27(金) 01:18:19.64いいかげんあきらめろよ
0703デフォルトの名無しさん
2012/01/27(金) 01:57:40.67陸上では、あまり意味がないかもしれませんが
海上などでは、直線距離で大丈夫ですよね?
0704デフォルトの名無しさん
2012/01/27(金) 02:06:52.650705デフォルトの名無しさん
2012/01/27(金) 02:29:56.50はずかしがるってことは、間違えている内容をちゃんと理解できてるから。
恥ずかしがらなくていいよとはいえないけど、喜んどけ
0706デフォルトの名無しさん
2012/01/27(金) 02:31:02.44最長不倒関数とか懐かしい言葉を出しつつも関数の行数を出さないあたりが渋いよね
0707デフォルトの名無しさん
2012/01/27(金) 02:33:02.24海流
0708デフォルトの名無しさん
2012/01/27(金) 03:12:57.150709デフォルトの名無しさん
2012/01/27(金) 03:13:41.570710デフォルトの名無しさん
2012/01/27(金) 03:55:17.37つか、ファイルに分けるんだったらその時点で行数わかるし。
0711デフォルトの名無しさん
2012/01/27(金) 04:21:46.971文を複数行に分けて書いたときをどう扱うかにもよる。
コメント行を含めるか、含めないかでも変わる。
結局、元の質問(>>665)が、実行数と論理行数(ステップ数)の
どっちが欲しいかによる。
答えは知らないけど・・・。
0712デフォルトの名無しさん
2012/01/27(金) 04:28:50.08ステップカウンタってのがあるよ。
0713デフォルトの名無しさん
2012/01/27(金) 04:44:45.480714デフォルトの名無しさん
2012/01/27(金) 12:30:45.04ライブラリは存在しませんか?
0715デフォルトの名無しさん
2012/01/27(金) 12:37:37.62openssl, ssh, gmp, crypto
0716デフォルトの名無しさん
2012/01/27(金) 12:39:02.26今はそういうライブラリは存在しない。
そもそも、
・一方向性関数が存在すれば暗号論的擬似乱数生成機が存在する事が知られている。
・現在のところ、一方向性関数の存在性は証明されていない。
・一方向性関数の存在性が示せれば、P≠NP予想が証明できる。
という状況。
凡人にゃあ無理。
あとは、ソフトウェアじゃなくてハードウェアデバイスでなんとかするしかない。
放射性物質の崩壊を検知して、それを0,1で置き換えてくれる装置とか。
0717デフォルトの名無しさん
2012/01/27(金) 12:53:47.90常に0しか返ってきません
原因は何故ですか?
0718デフォルトの名無しさん
2012/01/27(金) 13:27:52.010719デフォルトの名無しさん
2012/01/27(金) 13:34:16.43出力はreturn 0の前ですけども
0720デフォルトの名無しさん
2012/01/27(金) 13:38:49.56http://codepad.org/Vou6Xbqh
0721デフォルトの名無しさん
2012/01/27(金) 13:54:56.13毎回違う数字は帰れないんですか?
0722デフォルトの名無しさん
2012/01/27(金) 14:16:39.52Wikipediaの例は標準的な環境で正しく動くはずだ。
0723デフォルトの名無しさん
2012/01/27(金) 14:37:59.51Win32コンソールアプリケーション
test.cにコード貼り付けて
printfとreturn 0;の間にブレークポイント置いてF5押したら
同じ数字しかでません
0724デフォルトの名無しさん
2012/01/27(金) 15:20:46.38もいっかいやってみろ。さっきとは違う値が出ないか?
0725デフォルトの名無しさん
2012/01/27(金) 15:29:41.77今年出るIvy Bridgeまで待て。AVXにRdRAND命令が追加される。
0726デフォルトの名無しさん
2012/01/27(金) 16:45:41.500727デフォルトの名無しさん
2012/01/27(金) 16:58:53.45やってみた。VC++のrandomの性能が悪すぎる。
seedの下位ビットはまるっきり無視されてるような感じだ。
srand((unsigned int)(time(0) << 16)));
こんなもんでどうか。
0728デフォルトの名無しさん
2012/01/27(金) 17:01:26.43処理系によっては、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
http://codepad.org/ では
121543468
627453109
1744218406
応急回避方法は、0~9が必要なら、rand() % 10
0730デフォルトの名無しさん
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());
}
0731デフォルトの名無しさん
2012/01/27(金) 18:02:05.15ファイルへのアクセスだとOSや他のアプリやサービスなどが働いて等速度でなくなる。
0732デフォルトの名無しさん
2012/01/27(金) 18:09:55.220733デフォルトの名無しさん
2012/01/27(金) 18:12:07.470734デフォルトの名無しさん
2012/01/27(金) 18:21:25.14なるべく高精度のタイマーだったらなんでもいい。最低一ビットリターンできれば良い。
0735デフォルトの名無しさん
2012/01/27(金) 18:33:22.510736デフォルトの名無しさん
2012/01/27(金) 19:28:27.89#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()); }
0738デフォルトの名無しさん
2012/01/27(金) 20:13:15.74下位ビットが無視されるって、何秒かたっても同じ乱数が生成されたってこと?
0739デフォルトの名無しさん
2012/01/27(金) 20:14:18.72世の中の逆を行くコードを書くことになるとは
0740デフォルトの名無しさん
2012/01/27(金) 20:14:53.69>>727 がバカなだけ
内部状態の伝播にちょいと時間がかかる
0741デフォルトの名無しさん
2012/01/27(金) 20:21:17.990742デフォルトの名無しさん
2012/01/27(金) 20:42:37.60待てないならこれでも使え。
http://www.fdk.co.jp/whatsnew-j/release041005-j.html
0743デフォルトの名無しさん
2012/01/27(金) 20:51:48.000744デフォルトの名無しさん
2012/01/27(金) 21:16:44.820745デフォルトの名無しさん
2012/01/27(金) 21:31:46.54そりゃ使えるだろ。
0746デフォルトの名無しさん
2012/01/27(金) 21:35:31.60なんとかなんとかじゃないひとが使えないんじゃないでしょうか
0747デフォルトの名無しさん
2012/01/27(金) 22:05:36.770748デフォルトの名無しさん
2012/01/27(金) 22:43:43.410749デフォルトの名無しさん
2012/01/28(土) 00:18:21.29このサイトの、「(3)自己参照構造体を使ったリスト処理」のところで、
/* ポインタのつなぎ換え */
p->next = head; /* 今までの先頭ポインタを次ポインタに */
head = p; /* 新たな領域を先頭ポインタに */
とあるのですが、「p++」などで、次の構造体のアドレス移動していないのにどうして上書きせずに次のアドレスの構造体に保存できるのでしょうか?
用語がうまく使えなくて申し訳ないのですが・・・
0750デフォルトの名無しさん
2012/01/28(土) 00:49:05.130751デフォルトの名無しさん
2012/01/28(土) 00:57:37.35どうしてって言われてもリンクリストだからとしか言いようがない。
セルが配列みたいに連続して並んでたらポインタをインクリメントして次のセルだけど。
図入りでコードがあるんだから、おっかけてください。
0752デフォルトの名無しさん
2012/01/28(土) 00:58:59.070753デフォルトの名無しさん
2012/01/28(土) 01:44:40.310754デフォルトの名無しさん
2012/01/28(土) 02:06:55.48if(式A||式B||式C||式D)
のように複数の式が論理演算子||で並んでいる時に、手持ちのコンパイラですと
実行時に、左側の式から順に(式A、式B、式C、式Dの順で)評価されていて、
かつ、途中の式が真の場合、残りの式は評価されていないみたいです。
※例えば式Aが真の場合、式B〜Dの中に含まれている関数は実行されない
これはC言語に共通する規則でしょうか?
それともコンパイラ固有の仕様ですか?
0755デフォルトの名無しさん
2012/01/28(土) 02:08:56.05C言語の規格通り
「短絡評価」といったキーワードで検索してみる
0756デフォルトの名無しさん
2012/01/28(土) 02:11:23.51ありがとうございました
0757デフォルトの名無しさん
2012/01/28(土) 07:11:53.75>pが新しいアドレスに移っているということですね
この表現の意味がわからない。
ポインタといっても通常の変数と変わらない。
mallocの戻り値を保持しているだけだよ。
ついでにリスト構造について、根本的に理解ができていないと思われる。
ポインタpに対してp++すると、pが指しているオブジェクトサイズ分値が増える。
配列の場合はメモリ上に稠密にデータが確保されているため、配列の次の要素を
指すことになる。リストで次の要素を指すためにはp = p->next;とすることになる。
0758デフォルトの名無しさん
2012/01/28(土) 17:45:05.28char strput(char *str){
while(*str){
putchar(*str);
*str++;
}
}
int main(void){
char str[20];
scanf("%s", str);
strput(str);
}
これは入力した文字を出力するプログラムなのですが、
6行目の「*str++」について疑問があります
もちろん、コンパイルすればエラーも出ずに結果も正常なのですが
「*」がない「str++」にしても同様にできました
そこで「*」がいるのかいらないのか分かりません
つける必要はないんでしょうか?
0759デフォルトの名無しさん
2012/01/28(土) 17:46:21.320760デフォルトの名無しさん
2012/01/28(土) 17:48:00.120761デフォルトの名無しさん
2012/01/29(日) 01:22:28.75浮動小数点数の演算結果って、
CPUによって違ったりしたりする?
i7, i5 と比べて ATOM とか、
FX, A と比べて E, C とか、
後者は演算ユニットが128ビットと64ビットで差があったりするんだが。
0762デフォルトの名無しさん
2012/01/29(日) 01:26:59.68#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);
}
0763デフォルトの名無しさん
2012/01/29(日) 01:50:14.07p は構造体へのポインタです。
*((int *)((char *)p - sizeof(int)))
だとか
*((char *)p - sizeof(int))
といったかんじのコードをみかけるのですが、
これって何を意味しているのですか?
0764デフォルトの名無しさん
2012/01/29(日) 03:28:13.08pには構造体の配置されてるアドレスが入っている。それをたとえば123456番地とする。
sizeof(int)は4バイトとすると
123452=123456-4番地を文字としてみたときの0-255のいずれかの値を表す。
0765デフォルトの名無しさん
2012/01/29(日) 03:32:51.06char p[]="abcxyz";とすると、p+3は文字列"xyz"の先頭アドレスだったり、*(p+3)はxを表したりする。
この操作と同じ。これがわかり無くそうになってだけで同じだ。
0766763です
2012/01/29(日) 04:37:03.22ありがとうございます。
構造体の配置されているアドレスであるpからtypeof(int)を
引いたアドレスにはどんな意味があるのでしょうか?
ここを参照してintやcharとしての値を取得する目的があるのでは
ないかと思うのですが...
0767デフォルトの名無しさん
2012/01/29(日) 05:01:34.61それはその通りだけど、その場所に何が入っているかなんてCでは決まっていない。
環境またはそのプログラムが何かを入れているのだろうとしか言えないな。
0768763です
2012/01/29(日) 05:15:59.87たとえば、
C++の例ですが
ttp://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=287
には、
int sz= *(((char *) p)-sizeof (int));
がnew XXX [size] したときのsize と関係があるようなことが
書いてあります。
環境依存かもしれませんが。
0769デフォルトの名無しさん
2012/01/29(日) 05:37:50.44new された配列 char p[N] について。
C++ では new された配列は delete [] p; といったように書く。
delete [] のようにした場合、その配列の要素分だけメモリから開放するわけだが、
その要素数は、p の sizeof(int) 分手前に格納されている。(環境依存のはず)
0770デフォルトの名無しさん
2012/01/29(日) 05:49:41.03中国大手検索サイト百度の掲示板に、「2030年に韓国のGDPは日本を追い越すって本当?」というスレッドが立てられた。
これに対して反対意見が多数寄せられている。
● スレ主:八戒窘6
アジア開発銀行のデータによれば、2030年に韓国のGDPは日本を追い越すらしい。
● せんとう
どんな予測も多少なりとも正確ではない所があるが、今回の話はあり得なさ過ぎる。
● satay醤
本当にデタラメだな。アジア開発銀行によるレポートだって?じゃあバンク・オブ・アメリカや欧州の銀行の結論はどうなのよ?
● 佚名野菜地
アジア開発銀行ってのは、韓国人が開いているのか?
● Joseph19969
俺の妄想では、2100年日本人の1人当たりのGDPは46万ドル、韓国は8万だな!
● o落葉不知秋o
その頃までに韓国という国が残っているかどうかも分からないぞ。
● 梨花陰凉
死んでも信じない。
● MakiのLove
なんか最近、韓国のニュースが多くね?
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0128&f=national_0128_091.shtml
0771デフォルトの名無しさん
2012/01/29(日) 06:57:55.48その記事にも「典型的な実装では」て断って書いてあるだろうが。
0772デフォルトの名無しさん
2012/01/29(日) 07:19:31.51念のため、配列の先頭よりも前をさすような減算を行ったばあいの動作は未定義
あと、配列の最終要素の次をさすまでは合法だけど、内容を取得しようとしたときの動作は未定義
0773デフォルトの名無しさん
2012/01/29(日) 10:53:23.43意味を理解しながら勉強していこうと思います
ありがとうございました
0774763です
2012/01/29(日) 11:49:16.47ありがとうございます。
0775デフォルトの名無しさん
2012/01/31(火) 16:16:16.16また明日来て下さい。
0776デフォルトの名無しさん
2012/01/31(火) 16:32:48.21!(a && b)
という式を||の式に変換すると、
(a == 0 || b == 0)
という式で合ってますでしょうか?
ド・モルガンの法則でぐぐって一応確認しました
0777デフォルトの名無しさん
2012/01/31(火) 16:36:40.260778デフォルトの名無しさん
2012/01/31(火) 16:39:46.26NANDゲートか。
http://www.allaboutcircuits.com/vol_4/chpt_3/5.html
0779デフォルトの名無しさん
2012/01/31(火) 18:17:39.94!aだとよくわかんないので、
他人のソースを書きなおす作業をしてます
0780デフォルトの名無しさん
2012/01/31(火) 18:19:49.06なんか間抜け。
0781デフォルトの名無しさん
2012/01/31(火) 18:54:03.420とか1とかアフォなことは書かず、FALSEとかTRUEとかにしろ
0782デフォルトの名無しさん
2012/01/31(火) 19:00:17.310783デフォルトの名無しさん
2012/01/31(火) 19:40:46.96わざわざなんちゃらの法則だしたり2ちゃんできかないと答えに自信が持てないような難易度か?
0784デフォルトの名無しさん
2012/01/31(火) 19:44:35.500785デフォルトの名無しさん
2012/01/31(火) 19:50:27.650786デフォルトの名無しさん
2012/01/31(火) 20:29:47.10Cの場合、FALSEは0のみだからいいにしても、TRUEは0以外があてはまるから
そんなことするとわけのわからないバグに悩まされるだけだよ。
>>783
わざわざ出すとか以前に、ド・モルガンの法則なんて基本中の基本だろ。
0787デフォルトの名無しさん
2012/01/31(火) 20:33:08.92FALSEは-1じゃなかったっけ
なんかどっかでみたことあるよw
0788デフォルトの名無しさん
2012/01/31(火) 20:34:26.930789デフォルトの名無しさん
2012/01/31(火) 20:36:58.600790デフォルトの名無しさん
2012/01/31(火) 20:38:47.89違う。
>>789
論争にもなっていない。
0791デフォルトの名無しさん
2012/01/31(火) 20:39:10.550792デフォルトの名無しさん
2012/01/31(火) 20:39:50.47#undef FALSE
#define TRUE 0
#define FALSE (!TRUE)
0793デフォルトの名無しさん
2012/01/31(火) 20:40:02.15そもそもCに即値trueなんて無いしな
0794デフォルトの名無しさん
2012/01/31(火) 20:40:53.550795デフォルトの名無しさん
2012/01/31(火) 20:41:49.090796デフォルトの名無しさん
2012/01/31(火) 20:42:29.400797デフォルトの名無しさん
2012/01/31(火) 20:43:06.480798デフォルトの名無しさん
2012/01/31(火) 20:43:19.44こいつ殺したくなった。コード見て殺意がわいたのは
↓これ書いた奴についで二人目だ。
#define void int
0799デフォルトの名無しさん
2012/01/31(火) 20:44:24.020800デフォルトの名無しさん
2012/01/31(火) 20:44:36.06voidなんてハイソな予約語なんか無かった
0801デフォルトの名無しさん
2012/01/31(火) 20:45:23.72#define FALSE !TRUE
0802デフォルトの名無しさん
2012/01/31(火) 20:47:01.44#define TRUE (!0)
#define FALSE (!TRUE)
0803デフォルトの名無しさん
2012/01/31(火) 20:49:52.46何か型を導入したいならそのルール前提記述するしかない。
ルールを強制するならこれでいい。
typedef enum {
false,
true
} bool;
0804デフォルトの名無しさん
2012/01/31(火) 20:57:41.07a=(1==1)だったのならa=(1!=1)にする
でそのまま条件式に使えば真偽値の値がなんなのかなんて気にしなくて済む
0805デフォルトの名無しさん
2012/01/31(火) 20:59:44.13普通に整数書いてもコンパイル通るからあんまりありがたくない
0806デフォルトの名無しさん
2012/01/31(火) 21:00:07.89個人てきにはa==0より!aのほうが分かりやすいと思う
0807デフォルトの名無しさん
2012/01/31(火) 21:01:35.73だからCならルールを強制するしかないと言ってるだろ。
defineでも同じだろ。
0808デフォルトの名無しさん
2012/01/31(火) 21:02:57.150809デフォルトの名無しさん
2012/01/31(火) 21:31:12.050810デフォルトの名無しさん
2012/01/31(火) 22:03:47.300811デフォルトの名無しさん
2012/01/31(火) 22:06:45.510812デフォルトの名無しさん
2012/01/31(火) 22:09:36.68それだけだろ。
0813デフォルトの名無しさん
2012/01/31(火) 22:22:54.150814デフォルトの名無しさん
2012/01/31(火) 22:31:12.110815デフォルトの名無しさん
2012/01/31(火) 22:52:21.60他はC++なら聞くがCってのは聞かないな
0816デフォルトの名無しさん
2012/01/31(火) 23:07:03.26今のところC以外に移りそうな様子は微塵もないな
0817デフォルトの名無しさん
2012/01/31(火) 23:07:48.320818デフォルトの名無しさん
2012/01/31(火) 23:26:15.60組み込みって何?
TVだと思いっきりC++だったな。
0819デフォルトの名無しさん
2012/02/01(水) 01:36:38.40組み込みシステムのソフトウェア開発には、C言語が主に使われています」
H8で学ぶマイコン開発入門(2):組み込みソフトウェア開発はC言語が主流だ (1/3) - @IT MONOist
http://monoist.atmarkit.co.jp/mn/articles/0610/12/news142.html
0820デフォルトの名無しさん
2012/02/01(水) 08:16:11.14携帯もC++でやったことがある。
0821デフォルトの名無しさん
2012/02/01(水) 10:26:44.02組込みってもPICマイコンの電子工作から産業機械の制御まで幅広いからな。。。
0822デフォルトの名無しさん
2012/02/01(水) 10:53:03.240823デフォルトの名無しさん
2012/02/01(水) 11:09:21.300824デフォルトの名無しさん
2012/02/01(水) 11:34:15.450825デフォルトの名無しさん
2012/02/01(水) 11:45:01.820826デフォルトの名無しさん
2012/02/01(水) 11:47:10.58ちょっwww それ2006年の記事じゃんw 古っ
0827デフォルトの名無しさん
2012/02/01(水) 11:47:16.09高級言語の拡張とかにも使われる
0828デフォルトの名無しさん
2012/02/01(水) 11:52:28.64プロトタイプ無しで呼べるとか
違う型のポインタが暗黙に変換できるとか
負の資産を感じる。
classとかtemplateとか使いたい訳じゃないが
CソースもC++コンパイラでコンパイルしたい。
0829デフォルトの名無しさん
2012/02/01(水) 12:44:39.39コンパイラが使いにくいとかの理由?
0830デフォルトの名無しさん
2012/02/01(水) 12:55:16.29純Cの仕様はかなり緩いところがあるから、ミスを誘発する…と
0831デフォルトの名無しさん
2012/02/01(水) 13:00:50.75Cにこだわらなくてもいいな、lispやらperlやらでもかけるぞ
0832デフォルトの名無しさん
2012/02/01(水) 13:43:55.290833デフォルトの名無しさん
2012/02/01(水) 14:12:53.12置き換えることを検討しろって出るんですけど、標準入出力関数って、あぶないの?
0834デフォルトの名無しさん
2012/02/01(水) 14:15:11.720835デフォルトの名無しさん
2012/02/01(水) 14:17:19.170836デフォルトの名無しさん
2012/02/01(水) 14:26:42.380837デフォルトの名無しさん
2012/02/01(水) 14:28:52.870838デフォルトの名無しさん
2012/02/01(水) 14:29:44.430839デフォルトの名無しさん
2012/02/01(水) 14:37:32.190840デフォルトの名無しさん
2012/02/01(水) 14:41:30.540841デフォルトの名無しさん
2012/02/01(水) 14:43:38.68鞘付きのバージョンが用意された、くらいだな。
ちゃんとした使い方しないと危ないことに変わりは無い。
0842デフォルトの名無しさん
2012/02/01(水) 15:09:04.310843デフォルトの名無しさん
2012/02/01(水) 16:50:08.800844デフォルトの名無しさん
2012/02/01(水) 16:58:40.680845デフォルトの名無しさん
2012/02/01(水) 17:04:36.96すでにわかってるんだから意味が無い
0846デフォルトの名無しさん
2012/02/01(水) 17:08:20.210847デフォルトの名無しさん
2012/02/01(水) 17:09:31.60別の言語使えや
0848デフォルトの名無しさん
2012/02/01(水) 17:11:32.51>>839
0849デフォルトの名無しさん
2012/02/01(水) 17:12:49.760850デフォルトの名無しさん
2012/02/01(水) 17:55:17.44++をくっつけてちょっとおしゃれに斜めに配置しただけじゃないの?
もしくは音楽で#は半音上げるだからそこからきてるなかも
だとすると++は1上がるけど#は0.5しか上がらないから
C<<<<C#<<<<<C++
つまりC++には敵いませんという意味の謙虚なネーミングだな
0851デフォルトの名無しさん
2012/02/01(水) 17:57:04.36脆弱性があるだけで使っちゃダメなわけじゃない
勝手にかえられて勝手に速度が下がるとか勘弁願いたい
0852デフォルトの名無しさん
2012/02/01(水) 18:07:13.920853デフォルトの名無しさん
2012/02/01(水) 19:43:11.75■■
■■
0854デフォルトの名無しさん
2012/02/01(水) 20:07:54.570855デフォルトの名無しさん
2012/02/01(水) 20:25:42.760856デフォルトの名無しさん
2012/02/01(水) 20:27:11.300857デフォルトの名無しさん
2012/02/01(水) 20:29:40.460858デフォルトの名無しさん
2012/02/01(水) 20:42:07.140859デフォルトの名無しさん
2012/02/01(水) 21:03:15.680860デフォルトの名無しさん
2012/02/01(水) 21:20:51.19たった1行なのにバグってるとかw
C++なんだから評価後をチェックしないとアカン。
0861デフォルトの名無しさん
2012/02/01(水) 21:29:54.140862デフォルトの名無しさん
2012/02/01(水) 21:31:19.430863デフォルトの名無しさん
2012/02/01(水) 21:32:05.620864デフォルトの名無しさん
2012/02/01(水) 21:34:03.240865デフォルトの名無しさん
2012/02/01(水) 21:35:26.50こうか
a=b=c;
puts((a++-1+2 == b+2) ? ">>857 m9" : ">>854 m9");
0866デフォルトの名無しさん
2012/02/01(水) 21:48:43.57C == C++
0867デフォルトの名無しさん
2012/02/01(水) 22:22:10.990868デフォルトの名無しさん
2012/02/01(水) 22:52:12.370869デフォルトの名無しさん
2012/02/01(水) 22:53:01.300870デフォルトの名無しさん
2012/02/01(水) 22:55:20.260871デフォルトの名無しさん
2012/02/01(水) 23:03:55.270872デフォルトの名無しさん
2012/02/01(水) 23:21:41.09Cでやってる=過去の遺産を使ってる=謎設計コードを含んでる=?
0873デフォルトの名無しさん
2012/02/01(水) 23:29:05.36嫌がるやつ多いからな
0874デフォルトの名無しさん
2012/02/01(水) 23:47:20.860875デフォルトの名無しさん
2012/02/02(木) 04:10:25.73ここ、ゲハじゃないっすよ
0876デフォルトの名無しさん
2012/02/02(木) 04:11:27.300877デフォルトの名無しさん
2012/02/02(木) 06:55:02.65結局は使い捨ての奴隷
0878デフォルトの名無しさん
2012/02/02(木) 08:54:25.32興味があっても趣味に留めておくのがいい
0879デフォルトの名無しさん
2012/02/02(木) 10:27:02.00趣味ならPICマイコンでアセンだな
0880デフォルトの名無しさん
2012/02/02(木) 10:28:06.21アセンブラのブラ消してたw
0881デフォルトの名無しさん
2012/02/02(木) 11:10:53.090882デフォルトの名無しさん
2012/02/02(木) 11:18:13.43大陸や半島に後れを取るんだよ
0883デフォルトの名無しさん
2012/02/02(木) 11:53:06.84ノーブラ
0884デフォルトの名無しさん
2012/02/02(木) 12:24:05.260885デフォルトの名無しさん
2012/02/02(木) 12:28:33.030886デフォルトの名無しさん
2012/02/02(木) 15:22:46.33このコードみたいなunionの使い方って安全?
x , y , zの間にパディングが入ることってあり得る?
0887デフォルトの名無しさん
2012/02/02(木) 15:29:50.23#pragmaなりオプションなりそのコンパイラ固有のものを使わないと。
0888デフォルトの名無しさん
2012/02/02(木) 15:35:25.220889デフォルトの名無しさん
2012/02/02(木) 15:41:30.36これで勝つる
0890デフォルトの名無しさん
2012/02/02(木) 15:43:41.0380 ビットの long double とかならありそうじゃないか? 試してないけど
0891デフォルトの名無しさん
2012/02/02(木) 15:56:08.84CPUの都合に合わない大きさのものに入る
0892デフォルトの名無しさん
2012/02/02(木) 16:03:08.560893デフォルトの名無しさん
2012/02/02(木) 17:00:59.970894デフォルトの名無しさん
2012/02/02(木) 17:05:35.600895デフォルトの名無しさん
2012/02/02(木) 17:07:52.00どうこういっても意味なし
0896デフォルトの名無しさん
2012/02/02(木) 17:08:02.45オプションによってはそうじゃなかったかなと。
0897デフォルトの名無しさん
2012/02/02(木) 17:18:13.79最初からそう言ってるんだが、>>892はそんなものは実在しないと言ってるんだ。
0898デフォルトの名無しさん
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;}
どなたか解決方法がわかるかた教えてください。
よろしくお願いします。長文すいません。
0899デフォルトの名無しさん
2012/02/02(木) 21:07:44.000900デフォルトの名無しさん
2012/02/02(木) 21:16:47.230901デフォルトの名無しさん
2012/02/02(木) 21:19:09.090902デフォルトの名無しさん
2012/02/02(木) 21:22:52.46このようになおせば動くと思うよ。
int main (void){
input_data(); calculate(); output_data();
return 0;}
> コードに問題があるんでしょうか?
プログラムは書かれた通りに動く。期待通りに動かないのは
キミ自身が期待するコードをキミが書いていないからだ。
0903デフォルトの名無しさん
2012/02/02(木) 21:22:53.67スペースは書き込んだときに改行多すぎというエラーが
でたので改行減らすためにコードをいじったためかと・・・
x code上ではno issuesって出てます。
0904デフォルトの名無しさん
2012/02/02(木) 21:23:31.91スレ違い
Xcode part10
http://anago.2ch.net/test/read.cgi/mac/1319171665
0905デフォルトの名無しさん
2012/02/02(木) 21:24:04.12ここに問題があるに1000ペリカ
0906デフォルトの名無しさん
2012/02/02(木) 21:25:05.25http://codepad.org/wD7XPijJ
b.c は私が書きたいように書いた。
b.c.orig は >>898 の書き方になるべく沿って書いた。
global 変数は余り使わないようにしよう。
変な癖がついて、糞野郎って思われるようになるよ。
0907デフォルトの名無しさん
2012/02/02(木) 21:46:51.24902さんのいう通りにしたら動きました。
コードの内容がまだ理解できていないので、なんで動かなかったか
調べてみます。
ありがとうございました。
global変数はだめなんですか?
ニコ動の動画通りにやってたので、プログラマーの常識(?)なんかは
全然知らないので勉強になりました。
ありがとうございました。
0908デフォルトの名無しさん
2012/02/02(木) 22:08:32.44ちょっとどの動画を見たのか教えて欲しい
あと検索単語も
> global変数はだめなんですか?
使わないで書けるなら使わない方が良い。
>>898のは数十行だからそこまで問題ないけど、
global変数の値の書き換えってどこでもできちゃうから、
数百行や数千行になってくると、
bugの温床となりやすい。
どこか〜〜_init()関数だけでglobal変数の設定をして
他の場所ではglobal変数の参照だけする。
とかならいいんだけど、なかなかうまくいかないんだ。
特に初心者のうちは使わない方が吉。
0909デフォルトの名無しさん
2012/02/02(木) 22:12:44.410910デフォルトの名無しさん
2012/02/02(木) 22:14:51.48書き方が汚かったので、多分書き方を知らないんだと思う。
Pythonのなんだけど、これを参考にして書くといいよ。
以下だけは、
タブは4個の空白に等しいとする。
って読み替えて。
PEP 7 -- Style Guide for C Code:
http://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.
- ソースのインデントには、タブ一つを使う。タブは八個の空白に等しいとする。
0911デフォルトの名無しさん
2012/02/02(木) 22:52:10.790912デフォルトの名無しさん
2012/02/02(木) 23:00:44.010913デフォルトの名無しさん
2012/02/02(木) 23:30:57.29高度な技を出しやがって
0914デフォルトの名無しさん
2012/02/02(木) 23:42:19.210915デフォルトの名無しさん
2012/02/03(金) 03:13:14.55タブの使用未使用については特に問わないが、
タブは8タブ、インデントは4カラムがいいな。
0916デフォルトの名無しさん
2012/02/03(金) 03:36:48.87私はタブ使わない派です。
インデントは空白4つでやってます。
タブを8空白として使ったことないので、
空白4つ派です。。。
最後に。
タブって昔々KB辺りの単価が高かった頃、
1文字でインデントを表現するために必要だった文字なんだと思います。
今後は廃れてなくなっていくんじゃないかなー?
と思っていたりします。
0917デフォルトの名無しさん
2012/02/03(金) 03:41:38.800918デフォルトの名無しさん
2012/02/03(金) 03:42:46.31そうだとするとなぜですか?
0919デフォルトの名無しさん
2012/02/03(金) 03:54:16.45韓国の知識経済省が1日発表した1月の貿易統計によると、輸出から輸入を差し引いた貿易収支は、19億5700万ドル(約1490億円)の赤字となった。
また輸出額も415億3700万ドルと前年同月比で6・6%減少した。
同省では、長引く欧州の財政危機と原油価格上昇の影響だとしている。
http://www.yomiuri.co.jp/world/news/20120201-OYT1T01150.htm
0920デフォルトの名無しさん
2012/02/03(金) 03:57:58.10>>918はwebブラウザで2chしてるの?
0921デフォルトの名無しさん
2012/02/03(金) 04:03:12.008空白として使うとかじゃなくて、タブの幅は8文字分を想定してほしいという話だよ。
で、インデントサイズを4とした場合に、1段なら4つの空白、2段分は8個の空白でもタブ1つでもいいよってだけ
0922デフォルトの名無しさん
2012/02/03(金) 04:16:58.10ああ、なーるほど。
変に読んじゃってましたね。失礼しました。
0923デフォルトの名無しさん
2012/02/03(金) 04:24:25.82補足しておくと、viの設定だとこう
set sts=4 sw=4 ts=8
ただ、書かれてるとおり、今はタブを使わないってのが主流かも。
0924デフォルトの名無しさん
2012/02/03(金) 04:29:33.860925デフォルトの名無しさん
2012/02/03(金) 04:45:44.30設定でどうにでもなるだろ情弱
0926デフォルトの名無しさん
2012/02/03(金) 04:48:41.25IDEとか使いづらいだろjk。
set expandtab
set shiftwidth=4
set ts=4
私はこんな感じ。
0927デフォルトの名無しさん
2012/02/03(金) 04:49:39.93なーんかトゲトゲしいですね。
困ったチャンですね。
もう寝ましょう。
0928デフォルトの名無しさん
2012/02/03(金) 05:16:23.840929デフォルトの名無しさん
2012/02/03(金) 05:27:59.140930デフォルトの名無しさん
2012/02/03(金) 05:28:55.160931デフォルトの名無しさん
2012/02/03(金) 05:39:41.700932デフォルトの名無しさん
2012/02/03(金) 05:42:10.12char* p; も含む?
0933デフォルトの名無しさん
2012/02/03(金) 05:43:23.45c-modeという意味では含まない。
0934デフォルトの名無しさん
2012/02/03(金) 05:44:27.860935デフォルトの名無しさん
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)
0936デフォルトの名無しさん
2012/02/03(金) 05:49:18.690937デフォルトの名無しさん
2012/02/03(金) 05:54:50.76がいわゆるハードタブってのを使わない設定だね。
0938デフォルトの名無しさん
2012/02/03(金) 06:00:18.192/4/8で切り替えられるようにしてるから別にきにしてないけど。
0939デフォルトの名無しさん
2012/02/03(金) 06:00:50.210940デフォルトの名無しさん
2012/02/03(金) 06:17:23.93下らない
0941デフォルトの名無しさん
2012/02/03(金) 06:28:27.78どうやってもMetaが押しづらくて挫折する
0942デフォルトの名無しさん
2012/02/03(金) 06:50:41.16altキーに換えられない?
0944デフォルトの名無しさん
2012/02/03(金) 07:36:40.05替えるまでもなくデフォルトでAltにマップされてない?
でも押しづらい
無変換に変えても大差ない
CapsLockってのも抵抗がある
端末上ならEmacsバインドでも構わないけど
エディタとしては出番多すぎてつらすぎ
0945デフォルトの名無しさん
2012/02/03(金) 07:50:18.55親指で押せばそうでもないと思うが、キーボード次第かも
Emacsに限らずviとかもだけど、昔のエディタって
キーボードによって結構能率に差が出る印象がある
因みに俺はMacではvi派、WindowsではEmacs派
Linuxはむしろ使うエディタにキーマップ合わせに行くw
0946デフォルトの名無しさん
2012/02/03(金) 07:57:35.300947デフォルトの名無しさん
2012/02/03(金) 08:02:02.28Escは押しづらい位置にあることが多い気がする
0948デフォルトの名無しさん
2012/02/03(金) 08:05:01.88CAPS⇔CTRLとESC⇔漢字で、あとはASCII配列に変更して使ってる。
最近は英語キーボードがなかなか手にはいらないので。
0949デフォルトの名無しさん
2012/02/03(金) 08:06:44.510950デフォルトの名無しさん
2012/02/03(金) 08:08:32.240951デフォルトの名無しさん
2012/02/03(金) 08:18:35.25左親指に割り当ててる
同時押しいつもやってることだし
0952デフォルトの名無しさん
2012/02/03(金) 08:27:22.04問題は結局Ctrlの位置なんだよね。
まあ自分のコンピュータならキーバインドをカスタマイズすればいいんだろうけど、
ちょっと触るだけの環境とかでそういうのを使うわけにもいかず。
0953デフォルトの名無しさん
2012/02/03(金) 09:44:10.410954デフォルトの名無しさん
2012/02/03(金) 10:09:22.950955デフォルトの名無しさん
2012/02/03(金) 10:35:36.470956デフォルトの名無しさん
2012/02/03(金) 12:22:30.01大学で3年間「使いにくいー!!誰だこんな仕様考えたやつは!!」
と思ってたけど会社入っても結局これ一本だった。
0957デフォルトの名無しさん
2012/02/03(金) 12:54:42.67最初に必ずソースにjjjjjjjjjjjjjjjjjとかタイプするのはお約束w
0958デフォルトの名無しさん
2012/02/03(金) 13:32:13.320959デフォルトの名無しさん
2012/02/03(金) 14:05:26.280960デフォルトの名無しさん
2012/02/03(金) 14:51:00.16課題なのに一向にできません;;
0961デフォルトの名無しさん
2012/02/03(金) 14:52:14.790962デフォルトの名無しさん
2012/02/03(金) 15:32:25.140963デフォルトの名無しさん
2012/02/03(金) 15:40:36.24ググれ
0964デフォルトの名無しさん
2012/02/03(金) 15:42:22.25小町算っていってもローカルルールとかいろいろあるからちゃんと定義書いてくれないとこっちも困るよ
0965デフォルトの名無しさん
2012/02/03(金) 15:55:19.16それそのままevalしたほうがラクじゃん
perlじゃなくても、文字列が評価できるならなんでもいいけどさ
cなんて使うかよアフォ
0966デフォルトの名無しさん
2012/02/03(金) 18:10:43.60あっそ。
0967デフォルトの名無しさん
2012/02/03(金) 18:22:13.590968デフォルトの名無しさん
2012/02/03(金) 19:07:16.790969デフォルトの名無しさん
2012/02/03(金) 19:10:01.78さくらエディタ
WZEditor
terapad
この辺使ってるやつは大体厨
大抵エクスプローラの表示を"詳細"にしてないし
デスクトップのテーマをクラシック設定にしてないくせにPCが重いとかほざく
0970デフォルトの名無しさん
2012/02/03(金) 19:17:37.35逆にそれを考えてないやつにはvi使ってるという資格はないよね。
0971デフォルトの名無しさん
2012/02/03(金) 19:19:04.700972デフォルトの名無しさん
2012/02/03(金) 19:19:55.80うーん、思い出せない。ほかに何か使ってたかなぁ...
0973デフォルトの名無しさん
2012/02/03(金) 19:21:17.90それはvi使いに言え。
0974デフォルトの名無しさん
2012/02/03(金) 19:22:24.830975デフォルトの名無しさん
2012/02/03(金) 19:23:32.01指が勝手に動いて気付いたらプログラムが完成してるようにならないと
0976デフォルトの名無しさん
2012/02/03(金) 19:25:23.36キーボードというスタイルは近いうちに無くなる
0977デフォルトの名無しさん
2012/02/03(金) 19:25:35.720978デフォルトの名無しさん
2012/02/03(金) 19:29:00.82VSでも外部エディタは基本だな。
0979デフォルトの名無しさん
2012/02/03(金) 19:30:18.190980デフォルトの名無しさん
2012/02/03(金) 19:34:16.050981デフォルトの名無しさん
2012/02/03(金) 19:45:29.190982デフォルトの名無しさん
2012/02/03(金) 19:54:21.17SASIには反応しない?
0983デフォルトの名無しさん
2012/02/03(金) 20:05:38.91すぐ上のvi使いに言ったんだが。
0984デフォルトの名無しさん
2012/02/03(金) 20:32:28.17そいつはvi使いじゃないってことだろ。
0985デフォルトの名無しさん
2012/02/03(金) 20:33:07.08SASIに別の意味があるのか?
0986デフォルトの名無しさん
2012/02/03(金) 20:33:18.55外部エディタって補完きくの?
0987デフォルトの名無しさん
2012/02/03(金) 20:33:41.01それは外部エディタ次第だろ。
0988デフォルトの名無しさん
2012/02/03(金) 20:35:52.900989デフォルトの名無しさん
2012/02/03(金) 20:37:07.71使い方を覚えるとか、消極的な理由を挙げてる奴は中立を装った否定派だから信用すんなよ。
0990デフォルトの名無しさん
2012/02/03(金) 20:38:48.85外部エディタが独自に補完機能をもってれば使えるってことか。
弱そうだな。
0991デフォルトの名無しさん
2012/02/03(金) 20:56:04.170992デフォルトの名無しさん
2012/02/03(金) 20:57:40.78そうだな、お前の頭が。
0993デフォルトの名無しさん
2012/02/03(金) 21:01:33.23外部エディタでもVSと同じレベルの補完が使えるってこと?
外部エディタの欠点を指摘されたような気になって煽ってるだけ?
って聞いても、頭弱そうだからまともな答えは返ってこなさそう。
>自分のコンピュータならキーバインドをカスタマイズすれば
きょうも上司に小言をいわれました。
「お前のPCのキーボードは変態」
自分でもなにがなんだかわからない‥‥‥。
0995デフォルトの名無しさん
2012/02/03(金) 21:09:22.610996デフォルトの名無しさん
2012/02/03(金) 21:09:32.15サムスン経済研究所が2日発表した各国の国家ブランド価値によると、韓国は50カ国のうち実態は15位で、
イメージでは19位の順位だったことが明らかになった。複数の韓国メディアが相次いで報道した。
2011年11月4日から1週間、世界の26カ国・地域のオピニオンリーダー1万3500人を対象に行ったアンケート調査の結果に基づいて算出された。
イメージの順位では日本がトップとなり、ドイツ、アメリカ、カナダが続いた。
韓国メディアは「周辺国からの認識は変わっていない」「広報戦略を強化すべき」などと相次いで伝えている。
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0203&f=national_0203_153.shtml
0997デフォルトの名無しさん
2012/02/03(金) 21:13:13.87すまん、そこまで弱いとは思ってなかったわ、お前の頭が。
0998デフォルトの名無しさん
2012/02/03(金) 21:16:55.43それで外部エディタが基本とか人に薦めてるのか。
普通にVS使ったほうがましか。
0999デフォルトの名無しさん
2012/02/03(金) 21:19:26.821000デフォルトの名無しさん
2012/02/03(金) 21:23:40.11いやviは大好き。
もしVSでviのキーアサインを再現できたらそれ使う。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。