C言語なら俺に聞け(入門編)Part 102

このエントリーをはてなブックマークに追加
321デフォルトの名無しさん
あるfloatの値aを
fprintf(fp, "%E\n", a);
とすると、1.970200E+03
fprintf(fp, "%f\n", a);
とすると、1970.199707
と精度が違っていて、
scanf(fp, "%E", &b); で 1.970200E+03 を読み取ると
bは%Eだと 1.970200E+03 ですが、 %f だと 1970.199951 になります。
%fだと精度が高いのはなぜですか?
あとこれだと、
fabsf(a - b) <= FLT_EPSILON * max(fabsf(a), fabsf(b))
がFALSEなので比較しても一致しません。
fprintfとfscanfでfloatの値を変えずに読み書きするにはどうしたらいいですか?
322デフォルトの名無しさん:2012/06/12(火) 20:29:16.08
>>321
float の7桁目以降は飾りなので気にしない
323デフォルトの名無しさん:2012/06/12(火) 20:45:38.34
ttp://www.cc.kyoto-su.ac.jp/~yamada/pB/float.html
float 型の精度(有効桁数)は2進数にして 24 (=23+1) 桁であり,10進数では約 7 桁となる.
324デフォルトの名無しさん:2012/06/12(火) 20:50:22.86
fabsf(a - b)

桁落ち
絶対値がほぼ等しい異符号の数値同士の加算後や、同符号でほぼ等しい数値同士の減算の後、正規化で有効数字が減少すること。
325デフォルトの名無しさん:2012/06/12(火) 20:52:43.23
>>324
それで a b は(だいたいほぼ)同じだとどうやって比較したらいいのですか?
326デフォルトの名無しさん:2012/06/12(火) 21:13:33.97
float j=1.0;
for (i=0;i<7;++i){
while (!(a/j||b/j))j/=10;
while (a/j<j*10||b/j<j*10)j*=10;
if ((a%=j)!=(b%=j))break; }
bool eq=i==7;
327デフォルトの名無しさん:2012/06/12(火) 21:17:36.62
ttp://msdn.microsoft.com/ja-jp/library/c151dt3s(v=vs.80).aspx

#define FLOAT_EQ(x,v) (((v - EPSILON) < x) && (x <( v + EPSILON)))
桁落ちしないようこんなマクロ使うとか
328デフォルトの名無しさん:2012/06/12(火) 21:24:41.62
>>326
冗談はやめてください
FLT_EPSLION がなんか誤差の範囲みたいなやつでこれをどうにかすると
ズレてもいい範囲に変換でき、その結果が(a - b)の絶対値より大きければOKというような情報を得ていますが
インターネットを探しても間違った情報ばかりで意味が分かりません
>>327
そのEPSILONを x や v がどんな(正しい)floatの値の場合でも
正しく比較できるような範囲にするにはどうしたらいいですか?
その例だと EPSILON が 0.0001だから、1.0E-20くらい同士の比較だとほとんどOKになってしまいますよね?

329デフォルトの名無しさん:2012/06/12(火) 22:16:20.52
>>318
どうもありがとうございます<(_ _)>
330デフォルトの名無しさん:2012/06/12(火) 22:40:53.35
>>328
つ[double]
331デフォルトの名無しさん:2012/06/12(火) 23:18:12.96
>>330
それで何が解決するの
332デフォルトの名無しさん:2012/06/12(火) 23:28:36.91
>>321
どうしてもfscanfとかで扱いたいなら、とりあえず文字列で受けてからパースするなりすればいいんでないの
333デフォルトの名無しさん:2012/06/12(火) 23:28:59.02
>>331
全てが解決する魔法の呪文だ
334デフォルトの名無しさん:2012/06/12(火) 23:31:17.77
あるfloatの値をテキストファイルに書いてまた読み込んで
値の変化がfloatの仕様上許容できる範囲かをチェックしたいだけなんだけどそんなに難しいことなの?

%E の出力は同じだから同じ丸め方で一致するか比較できればいいだけで
%E の出力の桁数がC言語の仕様上7桁と決まっているのなら
絶対値の小さいほうの10の対数とってからEPSILONを求めればいいけど
そのへんを組み込みの定数から華麗に求められないの?という質問です
335デフォルトの名無しさん:2012/06/12(火) 23:37:25.21
符号部と指数部を揃えた上で仮数部の差が一定の範囲内であれば一致と見なすとか
ゼロ近傍は符号の関係で別途考慮する必要がある
336デフォルトの名無しさん:2012/06/12(火) 23:37:45.61
数値計算の誤差無くすのに人類がどんだけ苦労したと思ってんだ
アホはクソして寝ろ
337デフォルトの名無しさん:2012/06/12(火) 23:40:53.17
>>329
いえいえ
338デフォルトの名無しさん:2012/06/12(火) 23:52:02.33
>>335
ふたつの値の差の絶対値が許容できる誤差の範囲であれば一致しているとみなしてよいと思ってて
その「許容できる誤差の範囲」を比較する値とFLT_EPSILONみたいな定数から求められればいいと思うんだけど
できないの
339デフォルトの名無しさん:2012/06/13(水) 00:00:54.53
>>321
いっそ原点に立ち返って桁落ち覚悟で2つの数値の差を求める
ただ、許容する誤差の範囲としてFLT_EPSILONはあまりにも小さすぎる

ttp://ja.wikipedia.org/wiki/%E9%9D%9E%E6%AD%A3%E8%A6%8F%E5%8C%96%E6%95%B0
非正規化数の考慮や、ある程度の丸めによってゼロになれば一致と見なせないかな
340デフォルトの名無しさん:2012/06/13(水) 00:28:49.65
fabsf(a - b) <= N * FLT_EPSILON * fmaxf(fabsf(a), fabsf(b))
でいい(Nは16くらい)
というようなのがチラホラあるんだけど、こいつら全員間違っているんでしょうか

341 ◆QZaw55cn4c :2012/06/13(水) 01:21:37.79
>>321
float の7桁め以降は飾りなので気にしない。(再掲)
別に精度が悪くなっている/よくなっているわけではない。単に10進表示したときにどこで丸めるか、だけの話で、%f は下々の桁まで展開しちまっているのでは?

>>340
妥当にみえるのですけれども。
342デフォルトの名無しさん:2012/06/13(水) 02:19:52.26
複素数を入力すると、偏角と絶対値を出力するプログラムを教えて下さい。
343デフォルトの名無しさん:2012/06/13(水) 02:31:20.01
偏角は
atan2(imag, real)

絶対値は
sqrt(real * real + imag * imag)
344デフォルトの名無しさん:2012/06/13(水) 04:03:11.53
つ[hypot()]
345デフォルトの名無しさん:2012/06/13(水) 04:23:35.28
>>342
>>343をそのままプログラムにしてみた

#include <stdio.h>
#include <math.h>

int main(void)
{
double real, imag;

printf("複素数の実部を入力してください : ");
scanf("%lf", &real);
printf("複素数の虚部を入力してください : ");
scanf("%lf", &imag);

printf("入力された複素数は(%f, %fi)\n", real, imag);
printf("偏角(φ) = %f rad\n", atan2(imag, real));
printf("絶対値 = %f\n", sqrt(real * real + imag * imag));

return 0;
}
346デフォルトの名無しさん:2012/06/13(水) 10:17:35.54
>>341
妥当に見える理由はなんでしょう
a b の絶対値を掛けるのは、FLT_EPSILONが1.0を基準にしたものだからスケーリングするためで
16というのは4bit分は余分な精度っぽいので捨てろという意味でよいですか?

そもそも計算誤差ではなく、scanf %E で読みこんだときに
書かれていた値以上の精度の桁が勝手についてるのが悪いのですが
それによってズレる範囲がFLT_EPSILONから求める値、
つまり計算の誤差の範囲と同じくらい、ということにしてもいいの?
347デフォルトの名無しさん:2012/06/13(水) 10:52:14.30
>>346
10進小数の2進数への直し方とエプシロンの意味分かる?
348デフォルトの名無しさん:2012/06/13(水) 11:07:24.16
何を困っているのかよくわからない
浮動小数点数で2進10進間の変換をしたら循環小数になる場合がある
情報を失いたくないならバイナリで書きましょう

printfにfloatは渡せないよ、doubleに変換される
可変引数だから
349デフォルトの名無しさん:2012/06/13(水) 11:31:48.08
doubleに変換して必要な精度でfloatに変換しろよ。
350デフォルトの名無しさん:2012/06/13(水) 12:27:48.75
全部double使えばいいよ
351 ◆QZaw55cn4c :2012/06/13(水) 12:37:26.78
>>346
>書かれていた値以上の精度の桁が勝手についてるのが悪いのですが
これが間違い。勝手についてくるのではない。精度に関しては float 4バイトの内容以上でも以下でもない。
10進法表示としたときに、どの桁まで展開されるかによって、一見表現が違うようにみえるだけなのです。

float の7桁め以降は飾りなので気にしない。(再々掲載)
352デフォルトの名無しさん:2012/06/13(水) 13:29:45.90
>>321 が分かってないのは
float f=1970.199707;
ってすると、fの値は1970.199707であってそれ以外ではない!
と思ってることでしょ
でもprintf("%.8f",f)とやれば分かるように、そうじゃない。
精度を指定しない%fが6桁という仕様からくる錯覚…
353デフォルトの名無しさん:2012/06/13(水) 13:49:30.42
>>321
ttp://ideone.com/xxafU
ttp://codepad.org/Y50sv6FI

実際にビット列を見た方が早いんじゃないかと思ったが手持ちの環境ではa,bに差異がない

VC++ 2010 Express での結果

0 10001001 11101100100011001100110
1.970200E+003
1970.199951
0 10001001 11101100100011001100110
1.970200E+003
1970.199951
354デフォルトの名無しさん:2012/06/13(水) 14:09:56.50
2進の世界で1/10はできないっていうのはわかります
2進の世界では1/10するには1/2^nのシグマをとって限りなく0.1に近づけるのですよね
355デフォルトの名無しさん:2012/06/13(水) 14:20:14.68
何事にも限度はあるよ!
356デフォルトの名無しさん:2012/06/13(水) 15:42:40.67
357デフォルトの名無しさん:2012/06/13(水) 15:45:42.10
とりあえず>>321の状況を再現してみたんだが、はてさて
ttp://ideone.com/rU6G9
358デフォルトの名無しさん:2012/06/13(水) 16:35:12.46
0から99までの100個の戻り値のサイズがばらばらの関数がある。
これらの関数を引数no 0-99に応じて読み出す関数
long readset(int no){}があったとすると、readsetの中身
の処理をどのように作るのがいいでしょうか?
switch caseで分岐すると処理が長くなりすぎるし、関数ポインタ
の配列にしようにも0-99関数の戻り値がばらばらなのでうまくいかないし。
0から99までの関数の戻り値はlongが最大なので、intで足りる関数も一
番大きいサイズの関数に合わせて戻り値longで作れば関数ポインタ配列で
割とスッキリ作れますが、そういうのってありですかね。
359デフォルトの名無しさん:2012/06/13(水) 16:49:02.56
その readset() の戻り値の取り扱いが 引数の no 寄らず固定でいけるんなら
個別関数は戻りを long にするな。

たまたま値域が最大で long にまとまるってだけで
あるときは 座標値を意味してたり、あるときは関数の成否を意味してたり とばらばらだったら
まとめようとは思わない
360デフォルトの名無しさん:2012/06/13(水) 16:58:44.86
void readset(int no, void *ret)にして
戻り値の代わりにretに書き込む。
361デフォルトの名無しさん:2012/06/13(水) 17:01:00.80
readsetの呼び出し元が戻り値を7桁LCDに表示するんですが、
その関係で戻り値がlongになってます。
0-99の100個の個別関数は意味はばらばらですが、なにかしらの
設定値です。関数の成否を表すようなことには使っていません。
362デフォルトの名無しさん:2012/06/13(水) 17:02:32.78
>>357
この状態です
a を %E で出力した後その値を %E でbに読むと値が変わっているけども
その差が許容される範囲であるのなら a と b は一致している判定したいだけ
>>351
10進数で7桁目というのはC言語の仕様上決まっていて決め打ちしてもいい値ですか?
363デフォルトの名無しさん:2012/06/13(水) 17:30:55.44
浮動小数点数というものを少しは自分で調べた方がいい
Cの仕様の範囲内ではないが、IEEE754がデファクトスタンダード
正規化数しか考えないならその制度は10進でlog(2^24) = 7.2247199桁
非正規化数も考えるならlog(2^23) = 6.9236899桁

>その差が許容される範囲であるのなら a と b は一致している判定したいだけ
そうすりゃいい
あなたが許容する範囲もあなたが自由に決めていい
364デフォルトの名無しさん:2012/06/13(水) 17:32:34.50
>>362
結局のところ>>327のように状況に応じた適当な精度でイコール判定するのが手っ取り早い
365デフォルトの名無しさん:2012/06/13(水) 18:09:13.20
>>362
ttp://ideone.com/TU8G2
%Eによる指数表記の精度はfloatよりも悪いので
このように%.8Eのように精度を上げればあるいは
366デフォルトの名無しさん:2012/06/13(水) 18:19:07.29
ttp://ideone.com/LYHXd
要するにこう
367デフォルトの名無しさん:2012/06/13(水) 18:51:13.79
>>321
この質問に立ち返ると

>%fだと精度が高いのはなぜですか?
%Eの有効桁数は6桁。%fの有効桁数は小数点以下6桁
つまり整数部分があると%fの有効桁数は増える(それでもfloatの有効桁数7桁どまりだが)

>fprintfとfscanfでfloatの値を変えずに読み書きするにはどうしたらいいですか?
%.8Eなど精度を上げるか、いっそのこと4バイト配列と見なして16進文字列に変換してしまえば精度は維持できる
ttp://ideone.com/QK45N
人間の目で分かりづらいのであれば%.8Eなどを併記しておき、読み込む際は無視する
368デフォルトの名無しさん:2012/06/13(水) 18:58:16.60
>>363
誤差の範囲は7桁より下と言いたかった人ではないの
>>363
状況に応じたというのは a の b の値に応じた汎用的なチェックはC言語の範囲では書けないという意味ですか
汎用的にfloatの値を保存して読み出したいだけなので値の範囲は float の範囲が全部あります
>>365
%Eのフォーマットが7桁って何かの規格によるものでしょうか
記憶違いかもしれないけどVC++の%Eは8桁だった気がする
369デフォルトの名無しさん:2012/06/13(水) 19:02:44.63
>>367
ttp://ideone.com/qY71e
もっとシンプルにするとこうなる

>>368
>状況に応じたというのは a の b の値に応じた汎用的なチェックはC言語の範囲では書けないという意味ですか
汎用的なイコール判定は自分には思いつかない
370デフォルトの名無しさん:2012/06/13(水) 19:14:32.38
すみません
clで確認したら7桁でした

ideoneの人が一番分かってそうでしたが
結局誰も答えられないということか
371デフォルトの名無しさん:2012/06/13(水) 19:56:16.15
それほど精度が求められないプログラムであれば大体こんな判定になる
ttp://ideone.com/95cHD
きっちり精度を求めようと思ったら論文レベルになる
372デフォルトの名無しさん:2012/06/13(水) 22:14:07.05
>>371
絶対値の大きさに依存できないんですよね
指数部は動き回るわけで

10進数7桁でいいなら
if (fabsf(a - b) < 1.0e-7f * powf(10.0f, floorf(logf(min(fabsf(a), fabsf(b)))/logf(10.0f)))) {
// ok
}
みたいな式でもいい気がするのですが
373デフォルトの名無しさん:2012/06/14(木) 07:29:56.83
>>372
別にいいけど、そのこだわりには普通は意味がない。
普通は、だいたいどういう大きさの数値を扱っているかわかってるから
>>371 ぐらいの方法でいい。

やりたいことは誤差を無視して比較する、ってことなはずだけど
まず、10進7桁の精度は絶対ではない。みんな2進数だって言ってるでしょ。

それに途中で演算しているなら、どんどん誤差はたまっていく。
いつまでも 10進7桁の精度が有効とは限らない。
374デフォルトの名無しさん:2012/06/14(木) 08:46:24.21
>>373
テキストベースで汎用的なfloatの送受信処理が書きたいので数値の大きさは想定できないです
絶対値の大きさはFLT_MAXからFLT_MINまであります
演算による誤差の話はここでは問題にしていません

で、もちろん、floatのサイズなんかの話もあるし正確に移動したいわけではなく
%Eで表現できる範囲でよくて、極端に言えばsprintf %Eで文字列比較して一致していればよくて
それはつまり仮数部10進数7桁目までが一致していればよくねと思い始めていますが
これも難しいですか?
375デフォルトの名無しさん:2012/06/14(木) 08:49:48.77
>>374
>%Eで表現できる範囲でよくて、極端に言えばsprintf %Eで文字列比較して一致していればよくて
じゃあそれでいいじゃん
376デフォルトの名無しさん:2012/06/14(木) 09:54:06.96
char test[] = {0x01, 0x02, 0x03, 0x04};
っていう配列があったとして
long op(void)
{
return (long)test[3];
}
とキャストした場合戻り値って0x01020304でなく0x00000004に
なりますよね。
これって新たに4byteどこかに確保され0x00000004で上書きされ
てるってことですよね?
377デフォルトの名無しさん:2012/06/14(木) 09:58:19.22
>>376
そうだよ
戻り値用のスタックの4バイトに0x00000004が格納される
378デフォルトの名無しさん:2012/06/14(木) 10:02:32.35
いや普通レジスタだから
379デフォルトの名無しさん:2012/06/14(木) 10:10:31.80
>>374
末尾の N+1 ビットが違っていても許容する判定は

int32_t ia = *(int32_t*)&a;
int32_t ib = *(int32_t*)&b;
if(ia < 0) ia = -(ia ^ (int32_t)(0x80000000));
if(ib < 0) ib = -(ib ^ (int32_t)(0x80000000));

if(abs(ia - ib) < (1 << N)){ /* OK */ }

ただし IEEE 限定
それが嫌なら nextafter とか使えばいいよ
380デフォルトの名無しさん:2012/06/14(木) 10:26:37.88
>>376
test[3]が0x01020304なワケがない
キャストに関係なく
381デフォルトの名無しさん:2012/06/14(木) 10:57:16.77
よく読めよ
382デフォルトの名無しさん:2012/06/14(木) 11:01:54.61
>>374
正解は無いし分かってやるなら別に>>372でもsprintfでもいいんじゃね
参考
http://c-faq.com/fp/fpequal.html
383デフォルトの名無しさん:2012/06/14(木) 19:18:40.71
C言語で、外部の.exeファイルを実行するにはどうすればいいですか?
使っているソフトはVS2010です
384デフォルトの名無しさん:2012/06/14(木) 19:33:37.71
system
385デフォルトの名無しさん:2012/06/14(木) 19:49:21.82
system()
386デフォルトの名無しさん:2012/06/14(木) 19:53:21.05
本に記載されているサンプルプログラムをVC++2010で実行したところ

if(fp_i ==NULL) {
fprintf(stderr,"Input File cannot open\n");
exit(8);


の部分で 関数exitが定義されていません と警告がでました。
}

ヘッダファイル等をインクルードする必要があるのでしょうか?
387デフォルトの名無しさん:2012/06/14(木) 19:57:07.80
本とVCを窓から投げ捨てれ
388デフォルトの名無しさん:2012/06/14(木) 20:01:23.61
printfだろうとstdio.hをインクルードしないと未定義だからな
exitを選択してF1キーでヘルプを調べて必要なヘッダファイルをインクルードしる
389デフォルトの名無しさん:2012/06/14(木) 21:00:16.57
goto文を使う場面ってどんな時ですか?
390デフォルトの名無しさん:2012/06/14(木) 21:03:56.57
三重のfuckなループから一瞬で抜け出したい時、
あるいはその会社から抜け出したい時
391デフォルトの名無しさん:2012/06/14(木) 21:24:47.41
goto使わないことだな、初心者は特に
なれると、どういうときに使えるのか、わかってくるよ
392デフォルトの名無しさん:2012/06/14(木) 21:29:32.53
goto文を使っていいのはエラー処理と多重ループからの脱出のみ
ここは試験に出るから覚えておくように
393デフォルトの名無しさん:2012/06/14(木) 21:32:19.87
俺もgoto使って会社から抜け出さないと
394デフォルトの名無しさん:2012/06/14(木) 21:33:56.21
多重ループから抜けたいお・・・
でもフラグ使うとソースが読みづらくなるお・・・
そうだ、gotoで一気に抜けよう!

エラー処理でmallocした領域を解放したいお・・・
でもいちいち解放してたら大変だお・・・
そうだ、gotoで関数の最後に飛ぼう!

少なくとも前の方に飛ぶ事はないな
395デフォルトの名無しさん:2012/06/14(木) 21:36:33.09
受験と同じに点数取ることだけ考えてたら、初心者止まりになる可能性が高くねえか?
396デフォルトの名無しさん:2012/06/14(木) 22:36:10.42
対象データをより大きくしようと、配列宣言で取る領域をさらに大きくすると
実行時にフリーズになってしまうんだけど、どうしたらいいんでしょう?
397デフォルトの名無しさん:2012/06/14(木) 22:37:36.16
グローバル変数にするかstaticを付ける
398デフォルトの名無しさん:2012/06/14(木) 22:50:34.96
>>389
末尾再帰最適化
399デフォルトの名無しさん:2012/06/14(木) 23:25:50.03
__fastcallで書いた方いいだろ
400デフォルトの名無しさん:2012/06/15(金) 07:27:17.98
>>386
system("");
を使いたいなら
#include <stdlib.h>
を書かなければならない
401デフォルトの名無しさん:2012/06/15(金) 09:47:55.97
>>400
嘘乙。このスレ的には必要はない。
しかも、問題になっているのはsystemじゃない。
402デフォルトの名無しさん:2012/06/15(金) 09:50:11.44
>>386
>>388
それはc++としてコンパイルしているから。cならエラーにならん。
# インクルードしておいた方がいいことには違いないが。
403デフォルトの名無しさん:2012/06/15(金) 10:04:22.97
>>396
解決したらお礼を言えよクズ
404デフォルトの名無しさん:2012/06/15(金) 10:46:30.57
お礼は入りませんよ
405デフォルトの名無しさん:2012/06/15(金) 11:37:31.98
解決したかどうかぐらいは報告しろよクズ
406デフォルトの名無しさん:2012/06/15(金) 11:47:12.77
お礼は三行
407デフォルトの名無しさん:2012/06/15(金) 12:17:27.92
おまえらマルチに優しいな
408デフォルトの名無しさん:2012/06/16(土) 01:47:29.36
最近は、人の質問をあちこちにコピペしてマルチ認定するのも居る。
応答したい奴がすれば良いんじゃね?
409デフォルトの名無しさん:2012/06/16(土) 07:52:54.55
アホか
質問者がトリつけりゃあいいだろ

そこまで頭が回らないなら
C言語以前だ
小学中学から人生の勉強やり直した方が
ソイツのためだろ
410デフォルトの名無しさん:2012/06/16(土) 08:45:31.36
トリが違うからマルチじゃなくてコピペされたんですってかw?
判断付かねぇよ
411デフォルトの名無しさん:2012/06/16(土) 12:26:58.30
良い流れだ。
412デフォルトの名無しさん:2012/06/16(土) 19:34:17.53
米食品医薬品局 韓国製海産物の回収を求める

http://m.ruvr.ru/data/2012/06/16/1295821940/4RIA-618757-Preview.jpg

  米食品医薬品局(FDA)は、健康に害を及ぼす可能性があるとして米国市場に韓国製海産物製品を入れないよう求めた。
 14日ロイター通信が伝えたところでは、韓国製の海産物の中にヒトの糞便の痕跡が見つかり、この事は、胃腸の病気を
引き起こすノロウイルスが食べ物の中に存在する可能性を意味する、との事だ。

  問題となっているのは、韓国製のカキ、ホタテなどの貝類やイクラなどで、生のものも又、缶詰入りのもの、さらには別の
方法で加工された製品も含まれている。

  ロイター通信によれば、今のところ駐米韓国大使館からは、何のコメントも出されていない。

http://japanese.ruvr.ru/2012_06_16/78294694/


韓国製の海産物の中にヒトの糞便の痕跡が見つかり
韓国製の海産物の中にヒトの糞便の痕跡が見つかり
韓国製の海産物の中にヒトの糞便の痕跡が見つかり
韓国製の海産物の中にヒトの糞便の痕跡が見つかり
韓国製の海産物の中にヒトの糞便の痕跡が見つかり

413デフォルトの名無しさん:2012/06/17(日) 02:01:26.59
>>412
スレチだし、韓国では普通のコト。
一々書き込むなよ。
414デフォルトの名無しさん:2012/06/17(日) 09:40:08.67
>>391
逆だね

初心者ほど何でもありで
やりたい放題やっておいたほうがいい

分岐命令そのものの否定という間違った理解こそ有害だ
415 ◆QZaw55cn4c :2012/06/17(日) 10:05:04.52
>>414
やりたい放題、というほどやらない人が大半だから(私もここでやりたい放題やることができるようになった口だし)、最初に制限をかましておくことも時には必要で、goto はそれにあたるのでは?
416デフォルトの名無しさん:2012/06/17(日) 16:08:43.53
>>415
低脳がやりたい放題やってもやっぱり低脳ですね(笑)
417デフォルトの名無しさん:2012/06/17(日) 18:47:11.50
やりたい放題って人の話を聞かないとかミスを指摘されても無視するってことでしょ?
そりゃいつまでたっても成長せんさ。
418デフォルトの名無しさん:2012/06/17(日) 20:49:28.29
わかってgoto使ってるんなら、いいんだけど
難読化するような使い方してるの見たことあるけど、何作ってるのってかんじだったなあ、BASICの考え方をそのまま持って来ましたって...
419デフォルトの名無しさん:2012/06/17(日) 20:53:51.92
そう言うのを書く人はこう思ってる、
「なんでC言語とかいうアホは、BASICのようにキチンとgotoが使えないんだ」

420デフォルトの名無しさん:2012/06/17(日) 21:57:15.05
BASICだって80年代には「goto使うなgosub使え」って言われてたよ
ベーマガのDr.Dとか
421デフォルトの名無しさん:2012/06/17(日) 22:10:12.33
 ,_________________
 |                       |
 |  ._,,..-..,,,__          ○     .|
 |  |:::::::: ニ=.T         _______.   .|
 |  |:::::::: ニニ ト、      _,.-个:::::::|   |
 |___ .|:::::::: ニニ |叫     |.=ニレ-'个ー‐-|
 |.  ̄\:. ニニ.|叫 ̄ ̄ ̄~T=ニ|::|`'ー.,_  .|
 |-ー‐''''个.ニニ.レ'´√ ̄ ̄'个-.,|::| 叫 `'ー|
 |. ニ= |::_,.-'´ /   _   ';_ ``|.,     .|
 |   _,.ト'´  /  /入ヽ  `;_  \   |
 |  /    /   ヽ∵フ   `;_  \,  |
 |_/     /  √ |Y| `'i   `;_   \_|
 |      /    | |.|.| .|    `;_    |
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
422 ◆QZaw55cn4c :2012/06/17(日) 22:33:23.73
>>416,417
んー、NGワードに登録しないでくれているんだ、ありがとうです。
423デフォルトの名無しさん:2012/06/17(日) 23:53:14.39
localtime関数のような構造体へのポインタを返す関数を作ってみると、
「ローカル変数またはテンポラリのアドレスを返します。」と出てきます。
動的に確保されたメモリ領域が解放されるのにそのポインタを返すのはおかしいという解釈でよろしいのでしょうか。
だとすれば何故localtime関数は構造体へのポインタを返す事ができ、それをmainからアクセス出来るのでしょうか
よろしくお願いします。
424デフォルトの名無しさん:2012/06/18(月) 00:01:37.21
自動変数は「動的に確保されたメモリ領域」とは呼ばない。

localtimeは、static変数のアドレスを返している。
(処理系によっては、スレッドローカルな変数を使っている)
425423:2012/06/18(月) 00:04:24.07
>>424
なるほど
勉強になりました
ありがとうございました
426デフォルトの名無しさん:2012/06/18(月) 05:48:31.71
いえいえ
427デフォルトの名無しさん:2012/06/18(月) 16:26:09.38
今の処理系ってそんなこと警告してくれるんだ
428デフォルトの名無しさん:2012/06/18(月) 18:36:25.47
韓国の海産物はうんこ入り どうせ日本のマスゴミは報道しないからお知らせしとくわ
http://engawa.2ch.net/test/read.cgi/poverty/1339929120/



 米食品医薬品局(FDA)は、健康に害を及ぼす可能性があるとして米国市場に
韓国製海産物製品を入れないよう求めた。

 14日ロイター通信が伝えたところでは、韓国製の海産物の中にヒトの糞便の痕跡が見つかり、この事は、
胃腸の病気を引き起こすノロウイルスが食べ物の中に存在する可能性を意味する、との事だ。

  問題となっているのは、韓国製のカキ、ホタテなどの貝類やイクラなどで、生のものも又、
缶詰入りのもの、さらには別の方法で加工された製品も含まれている。

  ロイター通信によれば、今のところ駐米韓国大使館からは、何のコメントも出されていない。

ソース
http://japanese.ruvr.ru/2012_06_16/78294694/
画像
http://m.ruvr.ru/data/2012/06/16/1295821940/4RIA-618757-Preview.jpg
429デフォルトの名無しさん:2012/06/18(月) 18:42:21.68
情報系の学科にいるが、絶対に大学院には行かない。
ガチで就職がやばいんで、さっさと小企業に就職しますわ。

プログラミングは絶対趣味にすべき。
430デフォルトの名無しさん:2012/06/18(月) 18:46:29.58
例えば小飼弾なんかは
ゴミクズ寸前?だったストックオプションを切り抜けて
優雅な引退生活を送ってる ように見える
ついでにハクもついた

結局は、入る企業とヌける時期による
431デフォルトの名無しさん:2012/06/18(月) 20:03:08.91
プログラミングは場合によって時間食うのがな
432デフォルトの名無しさん:2012/06/18(月) 20:09:51.71
プログラミング得意な奴見たことない。
都市伝説でいるのか不思議。

433デフォルトの名無しさん:2012/06/18(月) 20:15:14.18
得意っつってもな。
やるこたぁKBDでパチパチ打ち込んでるだけだからな。
その動きじたいがスゴイ!……ってな話でもないし
ヘタなヤツも動き自体はプロと同じだろうし。

それにTVで放映されるような種類の職でもなし、
UMA認定されるのも当然だろう
434デフォルトの名無しさん:2012/06/18(月) 20:17:47.89
BPS バトル プログラマーシラセ
435デフォルトの名無しさん:2012/06/18(月) 20:17:50.36
>>433
お前国立大卒?
さっさと答えろよ
436デフォルトの名無しさん:2012/06/18(月) 20:23:05.24
>>435
すげぇのはいる。
一体どこいらがすごいのかが分からないくらいに凄いと言われてんのが。
もちろんソイツは情報課
437デフォルトの名無しさん:2012/06/18(月) 20:25:47.30
>>436
質問に答えろよおっさん。
438デフォルトの名無しさん:2012/06/18(月) 20:32:03.09
>>437
しつもん てどれ?
439デフォルトの名無しさん:2012/06/18(月) 20:32:11.96
わしゃーおっぱい大学出身じゃ。
440デフォルトの名無しさん:2012/06/18(月) 23:58:09.06
質問させてください。

テキストファイルにランダムな数値を出力するプログラムを作ったところ、通常通り出力されました。
http://codepad.org/8xXI3kgO

しかし、これをクイックソートでソーティングしてから出力するプログラムに変更したところ、ファイルが出力されなくなってしまいました。
http://codepad.org/5UZIz01p

実行しても、ファイルの生成自体行われません。開発環境はVisualStudioを使っています。なぜこのような事が起こるのでしょうか
441デフォルトの名無しさん:2012/06/19(火) 00:31:05.99
>>440
ファイルが変なフォルダにできてる気が
442デフォルトの名無しさん:2012/06/19(火) 00:38:39.22
スタックオーバーフロー
443440:2012/06/19(火) 00:42:06.25
>>441
ご返答ありがとうございます。
実行してファイルを検索してみたところ、残念ながら一致するファイルは見つかりませんでした。
このようなプログラムを書くとファイルがおかしな(いつもと違う)場所にできてしまうことが多い、ということでしょうか
444440:2012/06/19(火) 00:46:46.21
>>442
ご返答ありがとうございます。
データ数を50に変更してみたところ、同じようにファイルは出力されないままでした。
また、データを二分探索で探せるように先ほどのプログラムを拡張した(クイックソートはそのまま)ところ、正しく結果が出力されるようになりました。
クイックソートだけを記述している場合のほうがスタックオーバーフローを起こしやすいということでしょうか。

レスを分けてしまい申し訳ありません。
445デフォルトの名無しさん:2012/06/19(火) 00:50:49.17
>>443
Visual Studio ならデバッガで実行してみればいい。
ツール→デバッグ開始

それでエラーにならなかったら
ファイルはどこかにできてる。
446デフォルトの名無しさん:2012/06/19(火) 01:06:55.77
>>444
とりあえずgccでは特に問題なく動いているみたいだけど。
447440:2012/06/19(火) 01:35:06.51
>>445-446
皆さんご返答ありがとうございます。やはり私の実行の仕方がまずかったのでしょうか。
他の方法でも実行してみようと思います
448uy:2012/06/19(火) 02:30:09.94
ちげーよカス
問題の箇所は
int main ( void ){
int data[N_DATA];
          ↑   
の          これ

main内で宣言したAuto変数はmain関数に割り当てられたスタックを使ってる
それを超えるとスタックがぶっ壊れる
mainで使えるスタックのサイズはコンパイラごとに違うはず

50にしてファイルが出力されないっていうのはおかしいから何かのミスだろ

とりあえずint data[N_DATA];
をメイン関数の外において実行

もし変な環境でやってるなら
"data.txt" を "./data.txt" しないとダメな場合もあるかもしれない
449デフォルトの名無しさん:2012/06/19(火) 04:33:46.48
>>440,447
swap ( data, 0, rand() % n ); は何のため?
450uy:2012/06/19(火) 04:41:52.26
今はそこじゃねーだろカス
451デフォルトの名無しさん:2012/06/19(火) 09:00:14.76
メモリ的な意味でエラーになってるならエラーが表示されてしかるべきだろう。

だから最初にこう聞くべきだった。
「エラーメッセージはないの?」と。
452デフォルトの名無しさん:2012/06/19(火) 10:06:30.40
へえ
453片山博文MZボット ◆0lBZNi.Q7evd :2012/06/19(火) 16:27:22.49
こんなのクイックソートじゃない。再帰の方法がおかしいので、
無限に再帰してスタックオーバーフローになっているのでしょう。

これでも読んで勉強してください。
http://www1.cts.ne.jp/~clab/hsample/Sort/Sort9.html
454uy:2012/06/19(火) 23:35:26.95
だから関数に割り当てられたスタックサイズの上限超えてるっつってんだろボケカス
455デフォルトの名無しさん:2012/06/19(火) 23:46:49.95
スタックの上限って関数単位でコントロールできる環境ってあるの?

アプリケーションで1括りや スレッド単位で って環境は知ってるけど
456デフォルトの名無しさん:2012/06/20(水) 00:16:56.80
たかが200KBで何ほざいてんだこのアホコテどもは
457デフォルトの名無しさん:2012/06/20(水) 00:50:19.00
スタックサイズの問題なら最初の奴でもエラーにならなきゃおかしいだろ
458デフォルトの名無しさん:2012/06/20(水) 01:25:11.12
配列をstaticにしたら普通に動いた
やっぱり配列が大きすぎてスタックオーバーフローを起こしてるな
スタックを多目に取るかmalloc/newするか
459デフォルトの名無しさん:2012/06/20(水) 01:28:58.28
ちゃんとコテ付けろよ
460uy:2012/06/20(水) 02:10:25.58
だからmain関数のスタックっつってんだろバカかwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

C言語なら俺に聞けスレにいる奴ってこんなレベルなの?死ね

#include <stdio.h>
void main(){
int a[100000000];
printf("a\n");
}

これ実行してみろゴミカス
aは表示されない

aが表示された場合には10000000を適当に数値変えてみろ初心者死ね

http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%95%E3%83%AD%E3%83%BC
Wikipediaにすら書かれてるwwwwwwwwwwwwwwwww
ググることすら出来ないのか
461デフォルトの名無しさん:2012/06/20(水) 02:19:43.35
uyって真性の池沼か
462デフォルトの名無しさん:2012/06/20(水) 02:28:22.32
スタックが関数ごとにさらに分けられてる? なにそれ?
463デフォルトの名無しさん:2012/06/20(水) 02:30:58.12
スレッド?のことじゃあ
464デフォルトの名無しさん:2012/06/20(水) 02:39:04.70
たぶんスタックフレームのこと(?)
465デフォルトの名無しさん:2012/06/20(水) 03:34:30.40
スタックの問題なら50に変えてもファイルが出力されないわけねーだろw
466デフォルトの名無しさん:2012/06/20(水) 03:56:36.13
カレントディレクトリの問題じゃね?
467デフォルトの名無しさん:2012/06/20(水) 04:19:22.96
441に戻る
468デフォルトの名無しさん:2012/06/20(水) 07:14:26.76
でもWindowsはフラットモデルを採用したためにスタックサイズがコンパイル時に固定
されちゃったんだよな(ページングを使用)
セグメントモデル使ってればスタック可変に出来たのに(Unix、Linuxの floating stack model
はそうなっている)

よほど8086時代のセグメントが嫌だったのか

しかし確かにスタック可変というのは良くないっちゃあ良くない点もあるからこれでいいのかも
469デフォルトの名無しさん:2012/06/20(水) 07:44:02.38
は?
470デフォルトの名無しさん:2012/06/20(水) 08:03:01.35
>>440,447
ファイルは出来るし、再帰レベルは2桁(100未満)だから、スタックオーバーフローの可能性は低い。
>>440 かもな。
471デフォルトの名無しさん:2012/06/20(水) 10:51:12.72
私大の情報科とかヤバそう
そら院行かずに就職したほうがいいわ
472デフォルトの名無しさん:2012/06/20(水) 11:04:33.61
void line(void)
{
int i;
以下省略
この(void)ってなんですか?
あとプロトタイプ宣言ってなんですか?
473デフォルトの名無しさん:2012/06/20(水) 11:23:45.33
>>472
あなたがCをどこまで知っているかによって説明の仕方が変わります。

・(void)
(void)じゃなくて()なら判りますか?

・プロトタイプ宣言
関数の宣言のうち、引き数リストを明示したものを指します。
474デフォルトの名無しさん:2012/06/20(水) 11:54:27.98
ふう
475デフォルトの名無しさん:2012/06/20(水) 12:31:22.42
新しいプロジェクトの作成で、Win32、MFCアプリ、Win32アプリなど
があって、誤って作成したんですが変更するにはどうすればいいですか?
476デフォルトの名無しさん:2012/06/20(水) 12:51:28.48
>>475
新しく作り直せばいい
できたものを比較すれば何が違うのかわかるよ
477デフォルトの名無しさん:2012/06/20(水) 12:51:48.19
削除して作り直した方がいいよ
478デフォルトの名無しさん:2012/06/20(水) 14:02:00.45
つーか、プログラムの使い方はスレ違いだろ、と。
479デフォルトの名無しさん:2012/06/20(水) 16:42:18.28
よいしょっと
480デフォルトの名無しさん:2012/06/20(水) 16:57:47.48
まー入門編スレだし
481デフォルトの名無しさん:2012/06/20(水) 16:58:47.49
>>478
おまえ頭いいなぁ・・・気付かんかったw
で、プログラムの使い方はどこで聞けばいい?
482デフォルトの名無しさん:2012/06/20(水) 17:05:49.93
>>481
Visual Studio の事なら Visual Studio スレで訊けばいいんじゃね
483デフォルトの名無しさん:2012/06/20(水) 17:30:09.39
>>481
>で、プログラムの使い方はどこで聞けばいい?
ソフト板だろ。JK
484デフォルトの名無しさん:2012/06/20(水) 18:18:56.71
主婦の7割が「韓国タレントは嫌い」 地銀シンクタンクが調査した実態とは

日本でのK-POPブームに陰りが見え始めたとも指摘される昨今だが、それでも新たなグループが続々と日本進出している。
今年に入ってからだけでも日韓同時デビューのA-JAX、吉本興業系のレーベルから日本デビューするMYNAME(マイネーム)、
さらには「K-POP最後の大物」との触れ込みで7月にデビュー予定のWonder Girls(ワンダーガールズ)など、相変わらずの
「雨後のたけのこ」状態。それほどまでに日本市場はK-POPにとってオイシイのか、そして本当にK-POPは日本で売れてい
るのか。その実態を探ってみた。

 大垣共立銀行(岐阜)系列のシンクタンクである共立総合研究所による「韓流消費に関するアンケート」の調査結果に、
実に興味深い調査結果がレポートされている。なんと、アンケートに回答した主婦の7割が「韓流は好きではない」との結果だったのだ。

 同研究所は<K-POPの台頭、食品、コスメをはじめとする韓国製商品ブームのマスコミでの取り上げ方、新聞の テレビ欄における
韓国ドラマの占有状況からかなりの盛り上がりを予想したが、結果は予想を下回るものであった>と、調査レポートを結んでいる。

結局、K-POPブームとは単にKARAと少女時代という個別グループのブレイクにすぎず、やはり実体などなかったということか。

http://uramono.org/entertainment/2576.html
485デフォルトの名無しさん:2012/06/20(水) 20:38:34.42
>>447
446だけどVC++2010expressでも試してみたけど、
普通に実行できたよ。
hogeソリューションを作成したけど
\hoge\hoge\data.txt
にできてた。今ひとつファイルが置かれた場所は腑に落ちないが、
参考までに。exeファイルと同じフォルダにできると思ったのだが、、、。

486デフォルトの名無しさん:2012/06/20(水) 21:42:21.24
スタックサイズ増やせばいいがな
487デフォルトの名無しさん:2012/06/20(水) 21:46:33.30
スタックがなければヒープを使えばいいじゃない
488デフォルトの名無しさん:2012/06/20(水) 21:47:44.71
ふにゃ〜
489デフォルトの名無しさん:2012/06/20(水) 21:59:20.77
まだスタックとか言ってんのかよ
490デフォルトの名無しさん:2012/06/20(水) 22:05:38.83
すったかたー。
491デフォルトの名無しさん:2012/06/20(水) 22:23:33.74
【6月19日 AFP】大韓航空は18日、ケニアの人々が「原始的エネルギー」で満ちていると広告で表現したことを謝罪し、
ウェブサイトから広告を削除した。

 ソウル・ナイロビ間の便を近日就航する予定の大韓航空は、そのPR広告で「大韓航空で飛び、アフリカの大いなるサバンナ、
サファリツアー、そして原始的エネルギーに満ちた先住民たちを楽しみましょう」と表現した。

 あるケニア人はこうツイートしている。
 「私の #原始的エネルギーを処理するために今日はライオン狩りとゾウいじめをしようと思う」

 別のケニア人はこうツイートした。
 「私は毎朝起床するために #原始的エネルギー を使っています」

 数百件のツイートが集まったことを受け、大韓航空は、「ナイロビ便の最近の広告についてしかるべき確認を行っています。
この状況に対して心から謝罪いたします」と発表した。

以下省略
http://www.afpbb.com/article/economy/2885046/9141540
492デフォルトの名無しさん:2012/06/20(水) 23:29:19.87
スタックって64bitくらい?
493デフォルトの名無しさん:2012/06/20(水) 23:47:36.51
>>485
起動時のカレントディレクトリは起動したアプリによって決定される。
エクスプローラからならプロパティで変えられるし、VisualStudioでは便宜上ソリューション配下のバイナリ置き場の上になっている。
494デフォルトの名無しさん:2012/06/21(木) 01:22:26.44
>>492
Windowsだとデフォルトは1MBで、リンカのオプションで変更も可
http://msdn.microsoft.com/ja-jp/library/tdkhxaks(v=vs.100).aspx
495uy:2012/06/21(木) 05:53:45.26
Cのスタックオーバーフローは再現性が低いんだよ
よく覚えとけ

自身のプロセスに割り当てられたスタックより上を使ったとしても
そこのメモリを誰も使っていなければスタックオーバーフローしてても普通に動く
メモリ配置が変われば動かなくなる事もある

そんなゴミカス言語でITは作られてる
動的言語とか、動的言語の問題点とか
ソースコードかいているうちに目に見えないバグとポインタの使用によって脆弱性だらけになっていくC言語に比べたら
メモリ管理だけはしっかりされているだけよっぽどマシだ
496デフォルトの名無しさん:2012/06/21(木) 08:34:03.09
スタックより上って……
せめてスタックオーバーフローとは何か、調べてから書けよ。
497デフォルトの名無しさん:2012/06/21(木) 08:38:56.87
いやもう書かなくていいよ
498デフォルトの名無しさん:2012/06/21(木) 08:41:11.67
スタックの底が FFFF だった頃のご老人かと
499デフォルトの名無しさん:2012/06/21(木) 08:42:13.22
そうだね、自分でメモリ管理できない子はGCある言語使ったほうがいいよ
特にローカル変数で1MB超えるようなメモリ使っちゃうようなおバカさんはね
500デフォルトの名無しさん:2012/06/21(木) 09:20:39.29
500
501デフォルトの名無しさん:2012/06/21(木) 09:56:21.90
次に該当する人は少し勉強しましょう。
・スタックオーバーランとバッファオーバーランは同じだと思っている
・ローカル変数を沢山使うと確保により時間が掛かると思っている
・関数を呼ぶと必ずスタックを消費すると思っている
・自分を卑下しつつもエリートであると矛盾したことを言ってしまう
502デフォルトの名無しさん:2012/06/21(木) 09:58:57.68
あらゆる主要板にスレッド立てられてますなあ
こりゃアフィにも広まるし
完全に日テレはネットに嫌われるね

■モ娘(狼)
日テレ韓国マンセーで遂にGP帯オール一桁wwwwwwwwww
http://hayabusa3.2ch.net/test/read.cgi/morningcoffee/1335226115/

■ニュー速(嫌儲)
最近フジより韓流ゴリ押しの酷い日テレ GP帯(19〜23時)視聴率オール一桁達成
http://engawa.2ch.net/test/read.cgi/poverty/1335228771/

【フジ・日テレ死亡】テレビ朝日視聴率3冠おめでとうございます
http://engawa.2ch.net/test/read.cgi/poverty/1340233396/

■ニュース速報
【第二のフジテレビ】日テレ、韓流ゴリ押しで大爆死
http://engawa.2ch.net/test/read.cgi/news/1335230981/

■なんでも実況J
【朗報】韓流ゴリ押しの日テレが低視聴率
http://hayabusa.2ch.net/test/read.cgi/livejupiter/1335229538/


503uy:2012/06/21(木) 15:30:51.62
>>496
どんだけ知識ないのにレスしてんだ

これだからOSすら作れないゴミは
504uy:2012/06/21(木) 15:40:24.12
関数の実行コードはスタックには詰まれないと思われがちだが
再帰するごとに関数のリターンアドレスがちゃんとスタックに詰まれていく
main関数も例外じゃない


>>501
バカじゃねえの?
インライン展開でもしてない限り関数呼んだ時点でスタック使ってるから


まずはお前らは

void main(){
int a[1];
printf("%d \n" , a[1]);
printf("%d \n" , a[2]);
printf("%d \n" , a[3]);
}


ここら辺にはいってるデータがなんなのかを知れゴミクズ
505uy:2012/06/21(木) 15:41:02.09
理解したら二度と話かけんな





二度と話かけんなよ
506uy:2012/06/21(木) 15:44:13.48
>>501
> ・スタックオーバーランとバッファオーバーランは同じだと思っている
はああっアアアアあああああああ???????????wwwwww
どんな俺様実装ですか??
スタックも所詮、割り当てられたバッファに過ぎない
バッファオーバーランが スタックオーバーランなんだよ

> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
それだけpush命令行われてるのにバカじゃねえの??????

> ・関数を呼ぶと必ずスタックを消費すると思っている
>>504これみてもわからないなら死んだほうがいいと思うwwwwwwwww

> ・自分を卑下しつつもエリートであると矛盾したことを言ってしまう
偽と本物の区別も付かないゴミカスってまだいたんだ
507デフォルトの名無しさん:2012/06/21(木) 16:04:35.85
C/C++あたりでゲーム作りたいと思ってるんだけど、まず初めにゲームを作るとしたら
どんなゲームがいいんだろう?

知識はprintf,scanfとか、for,while,とかまだ触りだけしかしてないけど
参考書なりぐーぐる先生なりに聞いて独学でやるつもり。

できることならクオリティ高いゲーム作りたいけど
はじめから高望みもいけないのでお手軽なものを教えていただきたい
C/C++以外の言語がオススメっていうのもあればお願いします
508デフォルトの名無しさん:2012/06/21(木) 16:36:48.41
>>506
ローカル変数を沢山使ったからと言ってpushが使われるとは限らない。
スタックポインタの書き換えで終わるならpushなんて出てこない。

関数の戻り番地の話は良いけど、引数の話を持ち込むなら
スタックを使うとは限らない。
64ビット版Windowsなら条件はあるけどレジスタを使って引数を渡す。

正直もう少し落ち着けと言いたい。
509デフォルトの名無しさん:2012/06/21(木) 16:52:35.51
残念ながら、それでも不充分。
世の中には関数の戻り先をスタックに積むのはサブルーチン側の役目になっているCPUもある。
そのCPUでは、関数を呼ぶときにはIPを特殊なレジスタに積んでサブルーチンのアドレスをIPに代入するわけだ。
それに、ローカル変数もレジスタが豊富な最近のCPUなら一々スタックに置かない。

まぁ、そんなことはどうでもよくて、関数がインライン展開されてしまえばどの途スタックは関係なくなるよ。

ついでに言えば、スタックオーバーランはスタックオーバーフローと同義と考えられる。
だとすれば、関数呼び出しのネストが深くなってスタックを使い尽くすことを指す。
バッファオーバーランは、スタックに限らずどこででも発生し得る。有名なのは、gets()だね。

まぁ、>501の言うように少しは勉強しろってこった。
510デフォルトの名無しさん:2012/06/21(木) 16:56:32.70
             /)
           ///)
          /,.=゙''"/   
   /     i f ,.r='"-‐'つ____こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
511デフォルトの名無しさん:2012/06/21(木) 16:56:54.62
512デフォルトの名無しさん:2012/06/21(木) 17:26:43.06
>>511
すまん、ありがとう
513デフォルトの名無しさん:2012/06/21(木) 17:59:09.87
うむ。
スタックがなんだかんだとつまらんことを気にするよりライブラリの使い方一つでも読み解いてた方がマシ
514デフォルトの名無しさん:2012/06/21(木) 18:16:19.80
>>509
例を挙げただけなのに不十分とか言われても…
それに結局スタックを使っているような…
使う変数はレジスタでも、呼び出した関数でレジスタを使うためにレジスタの値を
スタックに保存する場合だってあるわけだし、ちょっと乱暴な話になってる気がする。

>>513
スタックの話も知ってないと困ることがあるから、つまらんことでは無いと思う。

それにしても、何でコテはすぐ荒れるんだろう…
515デフォルトの名無しさん:2012/06/21(木) 18:20:42.02
ちゃんと糞コテ付けろ
516uy:2012/06/21(木) 19:59:59.45
七誌が俺に見えてきてるなら病気だぞそれ
517uy:2012/06/21(木) 20:02:04.79
>>508
ほんっとうに文章読めないカスだな

俺がいつ「引数」っていった?



まずはお前は

void main(){
int a[1];
printf("%d \n" , a[1]);
printf("%d \n" , a[2]);
printf("%d \n" , a[3]);
}


ここら辺にはいってるデータがなんなのかを知れゴミクズ
518デフォルトの名無しさん:2012/06/21(木) 20:18:55.23
猫でも使ってるんだけど、ポインタで???になって困ってる
オススメの参考サイトとかある?
519デフォルトの名無しさん:2012/06/21(木) 20:26:42.11
>>518
配列については理解してる?
520デフォルトの名無しさん:2012/06/21(木) 20:29:52.40
>>518
http://www9.plala.or.jp/sgwr-t/index.html
http://d.hatena.ne.jp/kura-replace/20120611/1339376977
http://d.hatena.ne.jp/kura-replace/20120616/1339856279

猫でもってタイトルに反してめちゃくちゃ癖がなかったっけ
Cの仕様、Windowsの仕組み、Windows SDKの仕様は分けて考える必要がある

Cの仕様自体はたいした物ではないから
まずそこだけきっちり勉強したほうがいいぞ
521デフォルトの名無しさん:2012/06/21(木) 20:39:37.70
猫でもの良い所はIDEに頼ってないところだけじゃないかな
522デフォルトの名無しさん:2012/06/21(木) 20:46:10.16
>>519 わかんない;; 複数の変数を一緒に宣言するみたいな感じ? アドレスの話もふわふわしてる

>>520 サイトありがとう じっくり考えてみる
523デフォルトの名無しさん:2012/06/21(木) 20:51:33.25
配列⇔文字列⇔ポインタ ここらへんの関係はややこしい
524デフォルトの名無しさん:2012/06/21(木) 21:08:56.24
配列理解してないのに、ポインタガーとか
525 ◆QZaw55cn4c :2012/06/21(木) 21:38:08.85
>>506
>バッファオーバーランが スタックオーバーランなんだよ

バッファオーバーランとスタックオーバーフローは全然違う概念なんですけど。
想定した範囲を超えてアクセスしてしまうのがバッファオーバーラン。
フラットなメモリモデルでスタックがヒープ領域にまで達してしまったのがスタックオーバーフロー

それはそうと、「スタックオーバーラン」?きいたことないね。

>> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
>それだけpush命令行われてるのにバカじゃねえの??????

おいおい、スタックポインタをローカル変数分だけずらす(定数マイナスとする)だけなんですけど。
スタックポインタを動かせるのはcall/ret, push/pop だけじゃないんですけど。
sp に対して加減算するオペコードは普通に存在するんですけど。
そもそもローカル変数をアクセスするときはインデックスレジスタを使うと思うんですけど。

>> ・関数を呼ぶと必ずスタックを消費すると思っている
臨機応変にインラインに展開する賢いコンパイラってあるんでしょうかね。そうでなければ call/ret でスタックを消費すると思いますが、はてさて。

糞コテQZに突っ込まれるようでは糞コテ以下と認定せざるを得ません。本当にかわいそうだと思います。
お薬飲みましたか?
526デフォルトの名無しさん:2012/06/21(木) 21:45:18.33
QZひでぇw
527uy:2012/06/21(木) 21:46:30.31
俺がお前たちに言える事はひとつだけ

さっさと死ねとしかいえないわ

>>525
このゴミカスはpush以外の命令は実行時間が0秒とでも思ってんのか?
だったら0秒後にお前が早く死ね


さっさと死ね
528デフォルトの名無しさん:2012/06/21(木) 21:48:09.36
最近読んだポインタの説明は、これが結構良かった
http://www.chokkan.org/lectures/2012c/p2-3_pointer.pdf

でも、まったくの初心者には難しいかも
529 ◆QZaw55cn4c :2012/06/21(木) 21:48:20.07
>>509
>世の中には関数の戻り先をスタックに積むのはサブルーチン側の役目になっているCPUもある。
???
kwsk。
サブルーチン側うんぬん、というのは ip/pc が変わる前にスタックに積まれるか、変わった後に詰まれるか、っていう差異を問題にしている?
呼び出し側、サブルーチン側の境目の定義を教えてください。

>IPを特殊なレジスタに積んでサブルーチンのアドレスをIPに代入するわけだ。
ということは call のネスト数に限りがあるのでしょうか?

>ローカル変数もレジスタが豊富な最近のCPUなら一々スタックに置かない。
そのかわりに使うレジスタをあらかじめpush/pop しているような気がしてならない‥‥‥。
あるいは使い捨てレジスタを決め打ちしているとか。
530デフォルトの名無しさん:2012/06/21(木) 21:50:44.19
今のパソコン環境なら、スタック不足はOSでわかるようになってる
スタック検出機能がない環境もある、パソコン以外なら
531 ◆QZaw55cn4c :2012/06/21(木) 22:01:24.96
>>527
>このゴミカスはpush以外の命令は実行時間が0秒とでも思ってんのか?

>>506
>> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww

え?え?
沢山使うと「より」時間がかかる、というのは間違いだといっているだけね。
ローカル変数を沢山使おうが少なく使おうが、かかる時間は

変 わ ら な い。

定数分引くだけですからね。

私の飲んでるお薬あげます。よくききますよ。
http://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Thorazine_advert.jpg/388px-Thorazine_advert.jpg
532 ◆QZaw55cn4c :2012/06/21(木) 22:03:38.69
>>530
うーん、それが、どうやってスタック不足を正確に検出することができるのか、不思議におもっています。
かりにフラットなメモリモデルだとして、ヒープの底とスタックの頭の差をいちいちチェックするのも、なんだか無駄な気がしますし。
533はちみつ餃子 ◆8X2XSCHEME :2012/06/21(木) 22:11:47.28
>>532
インテルアーキテクチャ (というか 80386 以降) にはメモリ保護の機能があり、
事前に指定した領域にアクセスがあると例外を投げる仕組がある。
例外を受取ったらその領域を有効にするなど、スタックサイズを必要に応じて伸長することが出来る。
534デフォルトの名無しさん:2012/06/21(木) 22:16:01.33
>>532
ヒープの底とスタックの頭の差で見てたのはDOS時代?

仮想メモリって、知ってる?
ヒープとスタックって、メモリ空間が2Gもあると隙間ができるみたい
スタック割り当て空間以外をアクセスするとわかるようになってるってだけ

ヌルポも割り当て空間以外をアクセスしてるよってことでしょ
535 ◆QZaw55cn4c :2012/06/21(木) 22:40:55.84
>>533
ページングは普通に使われているだろうとは考えているのですが、フラットなメモリ構造を捨てセグメンテーションを積極的に使っている OS というのは寡聞にしてきいたことがないのです。
>>534
スタックとヒープの間をうーんと広げて隙間にページフォールトを仕掛ける、ということですか。

んー http://www.amazon.co.jp/dp/4756102131 を読みかえしてみよう‥‥‥。
536デフォルトの名無しさん:2012/06/21(木) 22:43:22.78
フラットモデルはヒープとスタック領域がほとんど同等に扱われているから問題なんだよ
利点もたくさんあるけど

セグメントモデルにするとスタックが足りなくなると伸長するようにOSが組める
その分スタックセグメントを別扱いしないといけないなど欠点もある
でもこちらの方が安全性が高い
537デフォルトの名無しさん:2012/06/21(木) 22:47:42.60
まーたセグメントとか言ってるあほが居るよ
538 ◆QZaw55cn4c :2012/06/21(木) 22:57:10.70
>>536
どうせならユーザースタックpush/popとシステムスタックcall/retもわけたらいいと夢想してきてはいたのですが、もうそんなOS/言語系って存在するのでしょうか?
539デフォルトの名無しさん:2012/06/21(木) 23:02:07.77
なんだっけ、規定以上の水を入れたせいで固まりが悪く、阪神大震災では大きな被害をもたらす原因となったんだっけ?
540デフォルトの名無しさん:2012/06/21(木) 23:08:39.40
それコンクリート
541デフォルトの名無しさん:2012/06/21(木) 23:13:32.48
ああ、フランス人ピエール・シェフェルが始祖とされる音楽の一分野ね。
542デフォルトの名無しさん:2012/06/21(木) 23:18:01.34
>>533
仮想記憶もそれと基本的に同じ仕組で実現してるしな
543デフォルトの名無しさん:2012/06/21(木) 23:25:42.60
>>538
ユーザースタックとシステムスタック
を、そういう風に分けてるマイコン?ってあるんっけ?
544 ◆QZaw55cn4c :2012/06/21(木) 23:42:59.75
>>543
6809ははっきりそうだったのですが、それ以降はよくわからないのです。68k は違うみたいだし。
545デフォルトの名無しさん:2012/06/21(木) 23:53:42.65
>>544
なんか古いの知ってるみたいだけど
push/popだけ分けたのは6809で終わったんじゃね
546デフォルトの名無しさん:2012/06/22(金) 00:14:04.91
68000はデータスタックとコードスタックを分けられるね。
分けない環境も多いけど。

>>520
その先頭はとってもダメになるサイトだ。
547デフォルトの名無しさん:2012/06/22(金) 00:15:58.43
>データレジスタとアドレスレジスタはそれぞれ8本の使い道が自由です。
548デフォルトの名無しさん:2012/06/22(金) 00:16:09.56
もっとはっきりと
「そのサイトはゴミだ」
と言わないとダメだろw
伝わらねーよwww
549デフォルトの名無しさん:2012/06/22(金) 00:19:14.93
bigインディアンだろう
550デフォルトの名無しさん:2012/06/22(金) 00:20:48.57
>>517
> 俺がいつ「引数」っていった?

> 504
> インライン展開でもしてない限り関数呼んだ時点でスタック使ってるから
>
>
> まずはお前らは
>
> void main(){
> int a[1];
> printf("%d \n" , a[1]);
> printf("%d \n" , a[2]);
> printf("%d \n" , a[3]);
> }
>
>
> ここら辺にはいってるデータがなんなのかを知れゴミクズ

「関数を呼んだ時点」と「はいってるデータ」の繋がりが全く分からないんだが…
551デフォルトの名無しさん:2012/06/22(金) 00:36:34.36
printfでも、archによっては引数もある程度はレジスタ渡ししてることもある
printfは入り口であって、本体は別の関数だったりするし
552デフォルトの名無しさん:2012/06/22(金) 00:50:13.88
>>551
>>508でレジスタ渡しの話をしたら>>517で噛み付いてきたのよ
「引数」の話じゃないって
だから何が言いたいのかな〜っと
553デフォルトの名無しさん:2012/06/22(金) 00:54:49.53
時代についていけないのを高飛車に言い放ってごまかそうとしてるのかもしれない?
554 ◆QZaw55cn4c :2012/06/22(金) 01:12:32.51
>>546
68k命令表をみたところでは、ポストインクリメント/プリデクリメントつきレジスタ間接アドレッシングのmovでデータスタックとしてやっていけそうですね。link/unlk は使用禁止かもしれませんが。
実際どうなんでしょう?
555デフォルトの名無しさん:2012/06/22(金) 01:35:30.98
ttp://www.kkaneko.com/kaneko/as/advanced/outline.html
>実は,スタックポインタは2つ存在し,CPUのモードによって自動的に使うべきスタックポインタが切 り替わる.
> CPUがスーパバイザモードの時はスーパーバイザスタックポインタ(SS P)が使用され, CPUがユーザモードの時はユーザスタックポインタ(US P)が使用される.
> 従って,スーパバイザモードでのスタック操作は,USPに影響を与えず, ユーザモードでのスタック操作は,SSPに影響を与えない.
556デフォルトの名無しさん:2012/06/22(金) 01:37:28.15
>>554
PalmOSはA6をデータスタックに使っていたよ。
今見たけど、linkも使っているね。
557デフォルトの名無しさん:2012/06/22(金) 01:48:05.21
x86のレジスタのbp系の使い方してるだけでしょ
558 ◆QZaw55cn4c :2012/06/22(金) 02:18:05.30
>>555
コールスタック・データスタックの話とは関係ないでしょう。
>>556
link/unlink を使うと‥‥‥コールスタックにデータを載せているような気が。
559デフォルトの名無しさん:2012/06/22(金) 02:20:00.11
>データスタック
フレームポインタのこと?
560デフォルトの名無しさん:2012/06/22(金) 02:25:48.19
68kは相対的なコードが吐けるから、データ領域とかのアクセス時にレジスタ経由でやってるだけじゃねえの?
x86の勢いがよかったから、絶対番地アクセスが優位になった?
561 ◆QZaw55cn4c :2012/06/22(金) 02:44:29.38
>>559
call/ret に使うスタックはそれ以外の用途では使用しないようにして、バッファオーバーランによる乗っ取りが皆無になればずいぶんと安全になるのでは?というお話です。
562デフォルトの名無しさん:2012/06/22(金) 03:07:36.89
>バッファオーバーラン
個人的には、未熟者が作ったって証明でしかないように思ってるけど
563デフォルトの名無しさん:2012/06/22(金) 08:16:44.38
ご連絡 平成24年6月21日

チケット購入者  各 位


1 「K-POP IN 豊岡・神鍋高原」のイベント中止について

株式会社アンフィニジャパンでは、「K-POP IN 豊岡・神鍋高原」と題するライブイベントを、平成24年6月30日及び同年7月1日に開催することとなっておりました。
  しかしながら、関係各所との行き違い等から、当初予定していたチケット販売計画は大幅な変更を余儀なくされ、チケット販売が低調に推移しました。
その結果、上記イベントを開催するために必要な各プロダクション、各業者への支払資金をねん出することができなくなり、上記イベントについては、中止させて頂くこととなりました。
チケットをご購入された皆様には、深くお詫び申し上げます。
 

2 ご購入いただいたチケット代金について
  イベントの中止に伴い、本来であれば、当然にチケット代金をご返金すべきこととなります。
  しかしながら、株式会社アンフィニジャパンにおいては、現在、見るべき資産がほとんどない状態です。
皆様にご購入いただきましたチケット代金についても、ほぼ全てを韓国プロダクションへの前金の支払及び開催準備費用に費消しており、株式会社アンフィニジャパンにおいてご返金することができなくなっております。
現状、株式会社アンフィニジャパンでは、大幅な債務超過状態にあり、自己破産の申し立てを行わざるを得ない状態です。
  チケットをご購入されました皆様には、大変なご迷惑をお掛けすることとなり、深くお詫び申し上げます。

http://www.infinijapan.jp/


http://ticket.pia.jp/pia/event.do?eventCd=1223924
K−POP IN 豊岡・神鍋高原

KARA、超新星、Rainbow、パク・ヒョンビン…K-POPの人気アーティト達が、
兵庫県豊岡市にある、神鍋高原に大集合!激レア・イベントをお見逃しなく!

【中止?】K-pop in 豊岡・神鍋高原【契約不履行】
http://uni.2ch.net/test/read.cgi/4sama/1340285151/
564デフォルトの名無しさん:2012/06/22(金) 10:37:47.33
・配列とポインタの宣言は実質的に区別が付かず、分かりにくい。
・配列とポインタについては現在でもわかりにくいため、私の設計ミスといってよいかもしれない。
http://web.archive.org/web/20081203130450/http://www.ttoyota.com/threedesigners/cjava04.php
565はちみつ餃子:2012/06/22(金) 19:08:01.73
>>535
プロテクトモードにセグメントなんて無いよ。
566 ◆QZaw55cn4c :2012/06/22(金) 19:17:27.36
>>562
月例のWindowsのパッチですら「未チェックバッファ」とかなんとか頻繁に出てくるくらいですから、「未熟者」よばわりという旧日本軍的竹槍ストラテジーではどうしようもないと思います。
567 ◆QZaw55cn4c :2012/06/22(金) 19:19:32.32
>>565
いや、あります。フラットモデルではセグメント=セレクタを同一にしていると思います。
568デフォルトの名無しさん:2012/06/22(金) 19:23:31.58
>>565 てめぇ80286さんをdisってるのかよ?
569デフォルトの名無しさん:2012/06/22(金) 19:24:46.33
>>566
有限、無限の違いがわからない人が作ってるだけでしょ
570 ◆QZaw55cn4c :2012/06/22(金) 19:39:22.57
>>568
LOADALL!
571 ◆QZaw55cn4c :2012/06/22(金) 19:51:12.56
>>569
個人的な経験からいうのもなんですが、ついうっかりやってしまったりします。アマチュアゆえに回避定石や検出手法を知らないだけだといいのですが。
572デフォルトの名無しさん:2012/06/22(金) 20:10:30.50
>>571
窓s系やってるのは初心者ってことかい?
573 ◆QZaw55cn4c :2012/06/22(金) 20:18:54.40
>>572
ん?よくわからないんですけど。
Windowsのパッチでバッファオーバーラン関連が少なくない、というのは事実を述べたまで。
アマチュアの自分でもやっちまう、というのは個人的感想を述べたまで。

その両者に関連があるとは一言も申しておりませんが、両方に関連があると考えてしまうその思考過程には興味があります。すくなくとも論理学初歩を通過した思考過程ではありますまい。
574デフォルトの名無しさん:2012/06/22(金) 20:21:44.41
バッファオーバーラン
で、今だに騒いでるのはどっち方面かよく調べてみようね
575デフォルトの名無しさん:2012/06/22(金) 20:35:28.03
馬鹿が論理学を習っても論理的な思考ができるようになるわけじゃないんだな
576デフォルトの名無しさん:2012/06/22(金) 20:46:24.56
学習して論理的思考ができるのは最初から馬鹿じゃないよ
577デフォルトの名無しさん:2012/06/22(金) 21:08:05.46
文字列処理(文章ファイルから一部を取得)を行ったファイルをChasenを利用して形態素解析を行っています。
具体的には、そのファイルを読み取り、違うファイルに書き出すという内容です。
しかし問題として…

読み取りファイル「AAA/BBB/c.txt」→オープンは正常だがChasenがエラー(存在しません)
読み取りファイルをディレクトリBBBにコピー「AAA/c.txt」→オープン、Chasen共に正常
読み取りファイルをディレクトリBBBにコピーし名前変更「AAA/BBB/d.txt(c.txt)」→オープン、Chasen共に正常

ディレクトリ・ファイルの権限の問題なのか、ファイルの中身の問題なのか色々とプログラムを確認しましたが、解決できません。
指定が間違っている、読み取りファイルが空というのでは無いようです。
いちおディレクトリにも権限を与えています。
考えでも良いので、もしよければ意見お願い致します。

578デフォルトの名無しさん:2012/06/22(金) 21:12:18.56
>>577
マルチウゼーという意見
579デフォルトの名無しさん:2012/06/22(金) 21:30:58.67
感想文的思考じゃあ、プログラム系はできんでしょ
580デフォルトの名無しさん:2012/06/22(金) 23:26:00.15
足したら10になる4次元の組み合わせを1000回作るプログラム。
正し要素はfloat型。

どういうアルゴリズムがいいかな?


3.4323+4.2342+1.323+1.23121=10になればいい

ランダム生成。
581デフォルトの名無しさん:2012/06/22(金) 23:28:33.88
>正し要素はfloat型。
?
582デフォルトの名無しさん:2012/06/22(金) 23:30:02.21
>>581
小数点型ってことです。
int型じゃない。

3とか2じゃない。

2.1212
4.0
0.232
とか。
583デフォルトの名無しさん:2012/06/22(金) 23:30:29.90
>>580
総和が10って以外に特に制約がないなら
3つランダムで決めて4つ目で帳尻合わせればいい
584デフォルトの名無しさん:2012/06/22(金) 23:33:54.42
そのアバウトな問題をどう解けと言ってるのかいな?
585デフォルトの名無しさん:2012/06/22(金) 23:37:20.69
>>583
あーそれが早いかな。
1時間も頭使って俺馬鹿だ。
586デフォルトの名無しさん:2012/06/22(金) 23:44:15.31
そんなアバウトな問題じゃなく、3以上の整数nについて、
x^n + y^n = z^n となる自然数の組み合わせ( x, y, z )を見つけ出すプログラム書こうぜ?^^
587デフォルトの名無しさん:2012/06/22(金) 23:44:45.83
あ、ちなみにここでは ^ はべき乗とします・3・ Cは pow 使わないとねー
588デフォルトの名無しさん:2012/06/22(金) 23:48:43.94
>>586
n=1,2以外は自然数で無いんじゃないっけ?

589デフォルトの名無しさん:2012/06/22(金) 23:49:43.55
>>588
不思議なところにお住まいですね
590デフォルトの名無しさん:2012/06/22(金) 23:52:46.86
マジバカなのかコイツ
1000000なりの長さの棒きれをランダムに三か所で割って
あとから1/100000にすりゃあいいだろ……
それを実装して終わりだろが
591デフォルトの名無しさん:2012/06/22(金) 23:52:54.64
ところで、イギリスでは自然数というと0を含むらしいな。
あと、前にもこの板で話題になったけど、小数点を表すのに . を使う地域と , を使う地域があるらしいな。
で、小数点に . を使う地域は桁区切りに . を使うので大変ややこしいとかなんとか。
592デフォルトの名無しさん:2012/06/22(金) 23:53:51.24
>>589
フェルマーでしょ。
それ。


ところで最近はiphoneのアプリとか多いわけだが、どんなゲームが
流行ってるの?やっぱり形を変えて同じ原理のゲームが流行ってるわけ?
Cでパズルゲーム作りたいから教えて。
593デフォルトの名無しさん:2012/06/23(土) 00:00:27.63
無限個の答え探し?
594デフォルトの名無しさん:2012/06/23(土) 00:01:41.82
高校3年以上の女性nについて、
味^n + 香り^n = 舌触り^n となるブルマの組み合わせは存在しない
595デフォルトの名無しさん:2012/06/23(土) 00:03:05.72
>>594
オチは?
596デフォルトの名無しさん:2012/06/23(土) 00:06:06.14
ゴミ箱にゴミを投げ入れる糞ゲーでも作ってろ
597デフォルトの名無しさん:2012/06/23(土) 00:12:08.84
>>589>>591
どうでもいいが、>>588は「自然数では、n=1,2以外の解は存在しない」という意図だと
読み取れないようだとまずいだろ。
多少わかりにくいとしても、「1,2以外は自然数ではない」がおかしいのはわざわざ指摘するまでもなく
「そんなふうに思っている人がいるのかも」という考え自体も非常識。
598デフォルトの名無しさん:2012/06/23(土) 00:21:55.72

    ,j;;;;;j,. ---一、 `  ―--‐、_ l;;;;;;
    {;;;;;;ゝ T辷iフ i    f'辷jァ  !i;;;;;      Standard Input/Output …
    ヾ;;;ハ    ノ       .::!lリ;;r゙
     `Z;i   〈.,_..,.      ノ;;;;;;;;>  そんな事も知らない時期が
     ,;ぇハ、 、_,.ー-、_',.    ,f゙: Y;;f              俺にもありました。
     ~''戈ヽ   `二´    r'´:::. `!


599 ◆QZaw55cn4c :2012/06/23(土) 00:25:27.79
600デフォルトの名無しさん:2012/06/23(土) 00:28:38.67
>>586
32bit の unsigned long でそれを満たす数値を探すってのなら成立しそう
ラップアラウンドのおかげで
601デフォルトの名無しさん:2012/06/23(土) 00:28:55.98
>>597
マジレスワロタwww


ガチで、iphoneとかで皆パチパチゲームやってるけど、どんなのやってんだ?
ミニゲームでも作りたい。
602デフォルトの名無しさん:2012/06/23(土) 00:33:50.13
でもフェルマーって何の意味があるんだろうな。

x^n+y^n+z^n=w^nとか

x^n+3^y^n=z^n

とか類似系いくらでもあるじゃん。
何が楽しくてこんなもん解くんだろうな。
603デフォルトの名無しさん:2012/06/23(土) 00:41:49.86
今まで誰もわからなかった問題を解いた俺様すごいだろっていう気持ちはなかなか楽しいんじゃね
604デフォルトの名無しさん:2012/06/23(土) 00:47:07.88
フェルマーの最終定理って、nは自然数っていう条件で
x,y,zが有理数の場合、nは3以上存在するようなx,y,zは存在するの?


1.323^3+1.1234^3=2.323^3みたいな。適当だけど。

有理数まで広げたらスパコンでも解析無理そうだね。


605デフォルトの名無しさん:2012/06/23(土) 00:49:23.03
>>604
正の有理なら整数倍すれば整数になるんじゃあるまいか
606デフォルトの名無しさん:2012/06/23(土) 00:49:40.26
そこから小数点省いてみろよ
607デフォルトの名無しさん:2012/06/23(土) 00:51:46.81
>>602
例えばガウスも「一見解けない問題なんていくらでも作れる」と
証明を試みる意義をあまり認めていない発言をしていたはず

とはいえフェルマーの最終定理の場合はかなり微妙なバランスの上にあるようで
類似のオイラー予想(x^4 + y^4 + z^4 = w^4を満たす自然数xyzwは存在しない)は
否定的に解決されている

まあ板に身近な所でいくと、4色問題がグラフの塗り分け問題に発展して、
コンパイラのレジスタ割り付けに応用されたり
未解決問題は研究発展の原動力になるという側面はあるんだろう
608デフォルトの名無しさん:2012/06/23(土) 02:49:34.35
char* a, b;と
char *a, *b;は同じ意味ですか?
609デフォルトの名無しさん:2012/06/23(土) 02:52:23.39
わからないなら
char *a;
char *b;
と書くこと覚えませう
610デフォルトの名無しさん:2012/06/23(土) 03:17:03.73
/* >>608 */
#include <stdio.h>
int main(void) {
  char* a, b;
  char *c, *d;
  int i;

  i = sizeof a;
  printf("%d\n", i);

  i = sizeof b;
  printf("%d\n", i); /* bは、char */

  i = sizeof c;
  printf("%d\n", i);

  i = sizeof d;
  printf("%d\n", i);
  return 0;
}
/*
D:\work>sizeofp
4
1
4
4

*/
611uy:2012/06/23(土) 03:51:17.21
>>531-n
なんだ、

お前もただのヴァカか


そもそもC言語って幅広く使われて
コンパイラも実行環境も腐るほどあるわけで

どこの環境を前提に話してんだお前

Windows限定の話ならさっさと死ねよお前


ローカル変数でスタック1MBくらい常に使ってろよwwwwwwバーーカwwwwwwwwwww

実行速度がかわらねーとかなんとか、どこで拾ってた知識だからしらねえけど・・・ベンチマーク取れよカス
何もしねーのなwwwwwwwwwwww

根本的にはずれた事言っちゃう時点でマジでお前知ったかだ、死んだほうが良い

お前のゴミカスレスなんて信用ならないんだから、ちゃんとソースだせソース、実行結果と環境と全てを示せゴミが
612uy:2012/06/23(土) 03:57:26.61
死なねば直らんか

こんな場所でグダグダ知ったかレス続けてるくらいなら勉強しろ
お前は俺の高校生の時点でのレベルさえ超えていない
何年やっても何十年やっても絶対に超えられない

見えないものに対しての予想、憶測と、確信の違い

お前の予想なんてだれもきいてねえから俺みたいに確信のあるレスをしたいならあと10年は勉強してろ
大体さぁC言語を語るならアセンブラとOSレベルまで詳しくなれよゴミカスが
OSすら作った事のない奴が機械語レベルでまともな議論できるはずが無いwww

ぷろせすの仕組み(笑) かーねる(笑) とかwwwwwww
教科書に書かれてる知識だけで実際のコードを知らないから
何にもわかっていない

目障りだ 知ったかはさっさと死ね
613デフォルトの名無しさん:2012/06/23(土) 03:59:09.10
ひどいブーメランを見た
614デフォルトの名無しさん:2012/06/23(土) 04:17:04.72
完全に間違ってることに確信もたれてもw
615デフォルトの名無しさん:2012/06/23(土) 04:17:05.02
611 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

612 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
616デフォルトの名無しさん:2012/06/23(土) 04:25:36.56
>>564
訴訟社会のアメリカで『私の設計ミスといってよいかもしれない』か。
617uy:2012/06/23(土) 06:16:46.54
ゴミカスはやはり処刑するしかない

今の時代にC言語を使っている層

そりゃな、大体わかるが
618デフォルトの名無しさん:2012/06/23(土) 07:22:35.07
朝鮮半島海域の貝類からプルトニウム

検出された放射能物質プルトニウムの濃縮係数は、国際原子力機構(IAEA)が
定める勧告値より最大2.11倍高かった。複数の韓国メディアが伝えた。

  濃縮係数は、海水中の放射性物質が、貝や海藻など生物に取り込まれ蓄積された
濃度を示す。貝類から検出されたプルトニウム濃縮係数の平均値は2813で、
IAEAの勧告値<3000>を下回ったが、江陵近海で採取した貝は6341に達した。

海草類からは放射性物質ストロンチウム90が検出された。濃縮係数の平均値は14でIAEAの
勧告値<10>よりも高く、江陵近海のわかめは17、仁川近海のわかめは10だった。
2005―09年の平均値も15で勧告値を超えていた。
朝鮮半島の周辺海域20カ所で採取した表層海水からは、プルトニウム239・240が検出され、
平均濃度は1キログラムあたり2.91―6.82マイクロベクレルだった。


韓国ソウルの道路は毎時3マイクロシーベルト 福 島 緊 急 避 難 区 域 よ り 上
http://blog-imgs-49-origin.fc2.com/f/x/y/fxya/wwwdotuporg2243941.jpg

韓国の量販店の食器から毎時23マイクロシーベルト
http://keyframe.imnews.imbc.com/today/2012/01/17/2/Large_3425047.jpg

K-POPでチケット詐欺発生か? 突如ライブ中止&代金返還不可 (´・ω・`)
http://long.2chan.tv/jlab-long/10/s/long289597.jpg


韓国食品の危険性 ネット販売のキムチから幼虫とカエル
http://www.nicovideo.jp/watch/sm16732021
不衛生すぎる韓国のキムチ工場 冷蔵庫にはウジ虫・・
http://www.nicovideo.jp/watch/sm16731897
韓国産キムチの日本向け輸出衛生検査が免除<`∀´>
http://www.nicovideo.jp/watch/sm14634923
619 ◆QZaw55cn4c :2012/06/23(土) 07:47:35.97
これがruby脳ってやつか。
620Perl忍者 ◆M5ZWRnXOj6 :2012/06/23(土) 08:56:06.26
いきてたのかこいつ ◆QZaw55cn4c [
621uy:2012/06/23(土) 09:34:33.80
真性のクズ
622デフォルトの名無しさん:2012/06/23(土) 09:43:51.70
ninjaVSQZというあまりにもどうでもいい展開に唖然……
623SCHEME餃子 ◆8X2XSCHEME :2012/06/23(土) 11:19:13.57
>>602
それ自体は (今のところは) それほど応用が見出されてないみたいだが、
証明の過程で様々な発見は有った。
どれがどんな役に立つか事前に完璧にわかるわけでもないので、
意味が有るとか無いとかは解いた後じゃないとわからないし、
後々に有用性が発見される場合もある。
ブール代数が考案された時に現代のようなコンピュータは想像もできなかったと思うぞ。

究極的には意味なんてないだろ。
そんなこと言ったらお前って何の意味があるんだろうな?
似たような人生を歩む人はいくらでもいるじゃん?
何が楽しくて生きてるんだろうな。
624デフォルトの名無しさん:2012/06/23(土) 11:32:04.13
などと意味不明な供述を繰り返しており
625デフォルトの名無しさん:2012/06/23(土) 13:40:59.35
uyとか言う糞コテさんへ質問です。
ローカル変数を沢山使うとpush命令が沢山使われて遅くなるのは本当ですか?
626デフォルトの名無しさん:2012/06/23(土) 14:09:15.04
#include <stdio.h>

int main(void)
{
int i, j;
char word[99];

scanf("%s", &word);

for (i=0;i<=98;i++){
if (word[i]==',')
j=i;
}
printf("%s,", word[j+1]);

for (i=0;i<=98;i++){
if (word[i]==',')
word[i]='\0';
}
printf("%s\n", word);
return 0;
}

カンマの前後を入れ替えて表示したいんですが、エラーになってしまいます。
627デフォルトの名無しさん:2012/06/23(土) 14:11:40.73
scanf("%s", word);
628デフォルトの名無しさん:2012/06/23(土) 14:15:57.52
>printf("%s,", word[j+1]);
629デフォルトの名無しさん:2012/06/23(土) 14:42:28.88
>>627
>>628
できました。ありがとうございます。
630uy:2012/06/23(土) 14:49:42.54
この程度もできないゴミカス
631デフォルトの名無しさん:2012/06/23(土) 15:21:55.83
質問にすら答えられない糞コテ
632vy:2012/06/23(土) 15:23:59.69
膣内に出すぞゴルァ
633デフォルトの名無しさん:2012/06/23(土) 15:25:11.06
>>610
いまさら32ビットwwwwwwwwww
4バイトwwwwwwwwww
634デフォルトの名無しさん:2012/06/23(土) 15:31:07.48
x32かも
635デフォルトの名無しさん:2012/06/23(土) 15:31:47.45
>>564
staticに文句言う奴は読み方が間違ってるんだよ。
636デフォルトの名無しさん:2012/06/23(土) 15:43:58.22
const int a
int const b
の違いを教えてください。
637デフォルトの名無しさん:2012/06/23(土) 16:15:02.14
うんこ
638デフォルトの名無しさん:2012/06/23(土) 16:55:40.67
見た目の印象が違います
639デフォルトの名無しさん:2012/06/23(土) 17:04:37.34
>>564
このURLのページ、
> Cといえばポインタと現在でも騒がれていますが、設計者本人も"変なもの"と考えているわけです
出鱈目だな。ポインタと配列の扱い方に歪みがあったと言ってるだけ。
640デフォルトの名無しさん:2012/06/23(土) 17:10:17.98
/* >>636 ちがいは、ないらしい */
#include <stdio.h>
void put_const_int(const int i)
{
  putchar(i);
}

void put_int_const(int const i)
{
  putchar(i);
}

int main(void)
{
  const int a = 97;
  int const b = a;

  put_const_int(a);
  put_const_int(b);
  put_int_const(a);
  put_int_const(b);
  return 0;
}
/*
D:\work>gcc -Wall -o int_const int_const.c

D:\work>int_const
aaaa
D:\work>
*/
641デフォルトの名無しさん:2012/06/23(土) 19:55:23.54
メモリリークの解消ってどうやるんですか?
642デフォルトの名無しさん:2012/06/23(土) 19:58:22.91
COBOLでも使ってろ
643デフォルトの名無しさん:2012/06/23(土) 20:01:48.01
Boehm GC使ってろ
644デフォルトの名無しさん:2012/06/23(土) 20:08:44.65
実体がスコープを2つ以上またいだら設計失敗くらいの覚悟で書けばOK
645 ◆QZaw55cn4c :2012/06/23(土) 20:32:18.22
>>611
>そもそもC言語って幅広く使われてコンパイラも実行環境も腐るほどあるわけで
いわれなくても。

>どこの環境を前提に話してんだお前Windows限定の話ならさっさと死ねよお前
どんなCでもローカル変数の量で速度が変わるなんてきいたことない。
アセンブラを知らないruby脳はこれだから困る。

>実行速度がかわらねーとかなんとか、どこで拾ってた知識だからしらねえけど・・・ベンチマーク取れよカス何もしねーのなwwwwwwwwwwww
ベンチとるまでもないこと。これだからruby脳は困る。

>お前のゴミカスレスなんて信用ならないんだから、ちゃんとソースだせソース、実行結果と環境と全てを示せゴミが
http://toro.2ch.net/test/read.cgi/tech/1313183984/
646 ◆QZaw55cn4c :2012/06/23(土) 20:34:01.28
>>612
>大体さぁC言語を語るならアセンブラとOSレベルまで詳しくなれよゴミカスが
それはお前だ。さあ、Cのソースを貼ってごらん?できるかな?できないだろうが。
アセンブラのソースでもいいよ。
647 ◆QZaw55cn4c :2012/06/23(土) 20:37:05.63
>>623
しかし残念なことには、フェルマーの最終定理ほど私のような素人にも内容の理解が容易でかつ証明困難、という魅惑的な未証明命題がなくなってしまったことだ。
なにかフェルマーの地位に到達できるほどの未証明定理はないものだろうか?

コラッツの予想?いまいちですなあ。
648 ◆QZaw55cn4c :2012/06/23(土) 20:40:11.05
>>641
自前のランタイムを使っていたこともありましたが、今はエンバカなんとかの評価版 bcc32 -v -vG を便利につかわせてもらっています。別にソニータイマーは組み込まれていないようです。
649デフォルトの名無しさん:2012/06/23(土) 21:41:17.92
素晴らしいね
650デフォルトの名無しさん:2012/06/23(土) 21:44:09.63
>>641
メモリリーク
がどういうものか考えることからはじめせう
651デフォルトの名無しさん:2012/06/23(土) 21:46:06.24
アサンジと関係あるわけ?
652デフォルトの名無しさん:2012/06/23(土) 21:47:58.09
そのネタわかる奴いるのかな?
653デフォルトの名無しさん:2012/06/23(土) 22:14:19.78
>>641
今時はツールだろ
654デフォルトの名無しさん:2012/06/24(日) 01:47:44.86
>>653
互換性あるツールじゃないと
655デフォルトの名無しさん:2012/06/24(日) 01:56:16.78
何と?
656デフォルトの名無しさん:2012/06/24(日) 01:59:34.18
>>655
スペック
657デフォルトの名無しさん:2012/06/24(日) 02:05:28.64
ツールによっちゃ動かないPCもあるってことでしょ。
658デフォルトの名無しさん:2012/06/24(日) 03:31:13.36
自然数nの階乗を求めるプログラムを教えて下さい。
659デフォルトの名無しさん:2012/06/24(日) 03:53:10.30
660デフォルトの名無しさん:2012/06/24(日) 06:16:38.29
>>659
ありがとうございました。
661デフォルトの名無しさん:2012/06/24(日) 07:26:59.43
いえいえ
662デフォルトの名無しさん:2012/06/24(日) 09:12:34.37
くとぅるー
663デフォルトの名無しさん:2012/06/24(日) 09:36:15.49
【K-POP】購入代金は既に韓国に送金されたことが判明【破産中止】
http://engawa.2ch.net/test/read.cgi/poverty/1340431520/

K-POP終了 「チケット12000枚完売」 → 実は450枚だった
http://engawa.2ch.net/test/read.cgi/poverty/1340496276/

↓チケット購入者の様子
http://long.2chan.tv/jlab-long/10/s/long289597.jpg


K-POPブームついに終焉? チケット売れずイベント中止、返金もできず

兵庫県内で開催予定だったK-POPイベントが、チケット売れ行きが低調で直前になって中止になった。
イベントを主催した会社は事実上倒産し、チケットの払い戻しも出来ないという有様で、
チケット購入者からは怒りの声が出ている。

同社担当弁護士によると、当初1万2000枚ほどの販売を見込んでいた代理店との契約がなくなってしまい、
他でまかなおうとしていたが、それも間に合わず中止になった。
いろいろ事情はあるにせよ、「飛ぶようには売れなかった」ということは確かなようだ。
帝国データバンクによると、同社が直接販売したチケットは450枚。

「『あのKARA』や『あの超新星』が来るのに何で販売低調なんだ」

ネットでは、チケット購入者からは「許せない。責任もって返金してもらわないと」と怒りの声が出ている。
疑問なのが、K-POPがブームの中、KARAや超新星といった大人気グループを呼んでも
なぜチケットを捌けなかったのか、という点だ。

2012/6/22 19:01
http://www.j-cast.com/2012/06/22136771.html?p=2
664uy:2012/06/24(日) 09:40:08.18
はっ
665デフォルトの名無しさん:2012/06/24(日) 11:17:19.42
共用体っていつ使うんですか?あまり役に立たない機能だと思うんですが。
666デフォルトの名無しさん:2012/06/24(日) 11:18:32.64
>>665
役に立たないプログラマを見分けるためのデータ構造だよ
採用では良く使われるよ
667デフォルトの名無しさん:2012/06/24(日) 11:22:53.93
ビットマップのファイルフォーマットとか数種類あるじゃない
あれを構造体で定義するときに共用体使って定義しといたら
アクセスが容易になるじゃない
668デフォルトの名無しさん:2012/06/24(日) 11:26:42.59
>>665
socket通信とかプロトコルスタックに使われている。プロユースだな。
http://itpro.nikkeibp.co.jp/article/COLUMN/20071024/285445/
669デフォルトの名無しさん:2012/06/24(日) 11:26:42.53
昔々のstructの使い勝手を残そうとした残留物だからね
670デフォルトの名無しさん:2012/06/24(日) 11:31:40.72
>>665
つっ マイコンチップレジスターの定義
671デフォルトの名無しさん:2012/06/24(日) 11:45:59.99
>>670
それだと実装依存の使い方になるよね。
structやunionはbyte/bit配置の保証ないから。
ほとんどのコンパイラがpragmaかオプションで指示可能だけど。
672デフォルトの名無しさん:2012/06/24(日) 12:33:32.10
コボルの集団項目とかredefineとかと同じか
673デフォルトの名無しさん:2012/06/24(日) 12:34:41.35
文字列処理で 改行 が出てきたら〜 という条件分岐をしたいのですが
どのように指定すればいいのでしょうか?

スペースがでてきたら〜 は
if(data[i] == ' '){

}

のようにやっています
674デフォルトの名無しさん:2012/06/24(日) 12:40:32.99
if(data[i] == '¥n'){

}
675uy:2012/06/24(日) 12:41:08.24
>>645
>どんなCでもローカル変数の量で速度が変わるなんてきいたことない。
お前が無知なんだよ
当たり前のことが、わかっていない

>ベンチとるまでもないこと。これだからruby脳は困る。
そしてやったら自分の間違いに気づいてしまうから怖くて出来ないだけ
おいためしにローカル変数1000000TB分宣言して最適化オプションはずしてみろwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww



 さ っ さ と や れ
 さ っ さ と や れ
 さ っ さ と や れ
676デフォルトの名無しさん:2012/06/24(日) 12:41:34.12
そして以下
キャリッジリターンと
ラインフィード、
およびOSウんぬんの話
677デフォルトの名無しさん:2012/06/24(日) 12:45:12.86
>>674
半角の \n ですよね? それでやりましたができませんでした
678uy:2012/06/24(日) 12:46:34.88
そもそもローカル変数の宣言によってスタックを消費し、
ローカル変数を宣言しすぎればスタックオーバーフローするという事がわかってないんじゃないか

一体ここで「どういうチェック」が行われているか
いってしまえばスタックオーバーフローなんてのはOSの設計ミスであって、
スタックサイズなんて伸縮させれば良い
これだからOSすら作ったことないゴミは教科書に書かれてる知識以外が全然ないから
アドリブ聞かせようとすると的外れなこと言いはじめるんだよ

「C言語」の実行コードの時点では速度は変わらないとしてもw
コンピュータっていうのはCPU(レジスタ)とOSとメモリを使うんだからお前も頭使えよバカ
679デフォルトの名無しさん:2012/06/24(日) 12:46:57.44
typedef を使わずに、関数の型をキャストすることはできますか?
680デフォルトの名無しさん:2012/06/24(日) 12:51:53.87
>>677
たりめーだ
strcmpつかえハゲ
681デフォルトの名無しさん:2012/06/24(日) 13:09:01.99
ふう
682uy:2012/06/24(日) 13:12:47.18
a="aaaa
bbb
ccc"

p a.split

# ["aaaa", "bbb", "ccc"]



683デフォルトの名無しさん:2012/06/24(日) 13:23:47.07
>>679
できる。(関数の型)式
684デフォルトの名無しさん:2012/06/24(日) 14:22:15.21
>>678
おまえが優秀なのはよくわかったよ
すこしはてかげんしてください
685デフォルトの名無しさん:2012/06/24(日) 15:51:54.29
>>682
はいはい、よくできまちたねー、えらいえらい
686デフォルトの名無しさん:2012/06/24(日) 16:52:18.45
>>684
どこが優秀なのか詳しく
自演か?
687デフォルトの名無しさん:2012/06/24(日) 17:42:01.79
馬鹿を煽ててお引取り願おうとしてるのに、台無しだろw
688デフォルトの名無しさん:2012/06/24(日) 17:54:39.31
>>682
aaaaaaaaaaaaaaaaaaaaaaaaaaaa
689uy:2012/06/24(日) 18:23:00.20
俺はゴミカスだがエリートゴミカスだ
お前らのような下級ゴミカスとは格が違う
話しかけるなよクズ
690uy:2012/06/24(日) 18:30:56.77
ゴミ
691デフォルトの名無しさん:2012/06/24(日) 18:33:14.61
エリートゴミカスってゴミカス中のゴミカス、まさに真のゴミカスってことかw
692uy:2012/06/24(日) 18:37:36.44
俺に言及するなど100光年早い
693デフォルトの名無しさん:2012/06/24(日) 18:44:03.87
100光年とかえらい近いな
694デフォルトの名無しさん:2012/06/24(日) 19:16:57.04
線形リストの考え方を教えてもらいたいです。
695デフォルトの名無しさん:2012/06/24(日) 19:18:27.63
宿題スレに共用体きたぞ
696uy:2012/06/24(日) 20:51:27.03
>>694


人は↓で出来ている 木構造
   .    o
    ┌─┴─┐
     o     o
   ┌┴┐  ┌┴┐
   .o  .o  o   o
 ┌┴┐
 o   o

世界は↓で出来ている グラフ構造

    o → o ← o
    ↑ ↓  ↑
    o ← o → o
    ↓ ,↓  ↑
    o → o → o

 ↑の2個を実装できない初心者(笑)が作るもの ↓ 線形リスト
  o → o → o → o → o → o o → o → o → o → o → o → o → o → o → o → o
  o ← o ← o ← o ← o ← o o ← o ← o ← o ← o ← o ← o ← o ← o ← o ← o

これで理解できなければプログラミングを引退しとけよ初心者はしね
697デフォルトの名無しさん:2012/06/24(日) 20:53:58.68
>>696
スレチ
698デフォルトの名無しさん:2012/06/24(日) 20:55:45.58
>>694
次のロッカーの住所と適当なデータが入ったロッカーが連続している。次のロッカーがなければ住所はNULL。
699デフォルトの名無しさん:2012/06/24(日) 20:57:32.96
誤)連続している
正)点在している
700 ◆QZaw55cn4c :2012/06/24(日) 20:58:06.18
>>675

>>645
>どんなCでもローカル変数の量で速度が変わるなんてきいたことない。
>>675
>当たり前のことが、わかっていない

当たり前というのであれば、次のCコードと、それから吐かれた .s で説明してくれないか?
http://codepad.org/gVm1Y9Ps
http://codepad.org/dwKs5LBd

ローカル変数の定義数にしたがって変化するのは次の行
subl $212, %esp
の $212 の大きさだけ。この計算がオペランドの定数の大きさによって、速くなったり遅くなったりするとでもいうのか?

>>678
>そもそもローカル変数の宣言によってスタックを消費し、
>ローカル変数を宣言しすぎればスタックオーバーフローするという事がわかってないんじゃないか

速さの話から す り か え ま し た か?

>スタックサイズなんて伸縮させれば良い
i386 ならフラットなメモリ構造を捨てセグメンテーションを採用しないかぎり、それはできない。
論理アドレスがぶつかれば、そこでスタックオーバーフローだ。
そして i386 でセグメンテーションを積極的に採用した OS はないはずだ。

もっとも論理アドレス空間が 64bit になった現在、そんな心配は無用ともいえる。
701デフォルトの名無しさん:2012/06/24(日) 21:00:19.82
脳内話で喧嘩でもしてるのかい?
702uy:2012/06/24(日) 21:08:45.90
言語の事情だけではなく
他の要因でも遅くなるケースはあるといっているのにまだわかってないか
http://toro.2ch.net/test/read.cgi/tech/1337067149/674-675


>そして i386 でセグメンテーションを積極的に採用した OS はないはずだ。
え、もしあったらどうする?
泣いて謝る?
これからの将来スタック伸縮可能なOSが出てきたら泣いて謝ってくれますか?
703uy:2012/06/24(日) 21:11:43.82
どんだけ何をやっても「0%」にはならない箇所っていうのは知っとけよgomikasu
704デフォルトの名無しさん:2012/06/24(日) 21:16:43.57
>>689
Hi, KS.
How was the last weekend?
705 ◆QZaw55cn4c :2012/06/24(日) 21:40:51.08
>>702

そもそも
>>506
>> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
>それだけpush命令行われてるのにバカじゃねえの??????

とローカル変数を push で確保すると思っていた(爆笑)ようですが、それが論破されるといろいろ極端な例を後付けして凌いだつもりになっているのですね。
そろそろ、普通に使う範囲での妥当なサイズのソース
>>700
http://codepad.org/gVm1Y9Ps
http://codepad.org/dwKs5LBd
で説明していただけませんかね。ruby 脳ではやっぱり無理でしょうかね?

>>700
>そして i386 でセグメンテーションを積極的に採用した OS はないはずだ。
>>702
>え、もしあったらどうする?
使ってみたいですねえ。セグメンテーション利用リミット値できっちり保護されていて、コールゲートも使用していて、というのはプロユースではあるのかもしれません。

>これからの将来スタック伸縮可能なOSが出てきたら泣いて謝ってくれますか?
将来の話にすりかえるのですか?ということは現在はない、と認めているのですね。負けそうになると(というか負けているんけど)、話のすり替えばかりするのですね。
706uy:2012/06/24(日) 21:49:55.73
ヒント:
ローカル変数のサイズ合計 > CPUキャッシュサイズ
707デフォルトの名無しさん:2012/06/24(日) 21:51:54.42
>>706
ヒント
馬鹿 |||||||||
708uy:2012/06/24(日) 21:57:34.13
はぁ、また初心者を論破してしまったか
悪い癖だわ
709デフォルトの名無しさん:2012/06/24(日) 22:01:37.30
>>708
> はぁ、また初心者を論破してしまったか
pppppppppppppppppppppppppppppppppppppppppppppppp
710 ◆QZaw55cn4c :2012/06/24(日) 22:02:17.63
>>706
そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは滑稽なんですが。

それはそうと、
>>506
>> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
>それだけpush命令行われてるのにバカじゃねえの??????

とローカル変数を push で確保すると思っていた(爆笑)ようですが、それが論破されるといろいろ極端な例を後付けして凌いだつもりになっているのですね。
そろそろ、普通に使う範囲での妥当なサイズのソース
>>700
http://codepad.org/gVm1Y9Ps
http://codepad.org/dwKs5LBd
で説明していただけませんかね。ruby 脳ではやっぱり無理でしょうかね?
711デフォルトの名無しさん:2012/06/24(日) 22:10:18.43
まともに釣りもできんのか
712uy:2012/06/24(日) 22:14:12.34
まあ俺はゴミカスだがエリートゴミカスだ
お前らのような下級ゴミカスとは格が違う
俺に勝つなど100光年早い
713デフォルトの名無しさん:2012/06/24(日) 22:14:14.34
だからフラットメモリモデルはDS=SSでセグメントの大きさが4GBになってるだけだっつーのに
フラットメモリモデルもセグメントモデルの一種

uyが言いたいのはスタックセグメントを分離しようって事だろ?そういうOSも実際にある

http://homepage3.nifty.com/ryuz/c/memorymodel.html
714uy:2012/06/24(日) 22:15:46.01
>そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
>どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは滑稽なんですが。
あ、ついに遅くなるって認めちゃった?


>そろそろ、普通に使う範囲での妥当なサイズのソース
いきなり範囲指定wwww


まだpush,pushいってるけどさ
push命令を他の高速なcpu命令で代用するようにCコンパイラが最適化していたとか
ある意味「遅くなるか」「全く遅くならないか」という議論においてはどうでもいい
「速くなった」というだけで、演算速度が0クロックになったわけではない

まさか二進数の計算が、桁が1桁で、たとえも999999999^9999999桁でも実行速度が変わりませんとか、そこまで逝ってるのか?
715uy:2012/06/24(日) 22:17:52.70
>、桁が1桁で、たとえも
桁が1桁でも、 たとえ999999999^9999999桁でも

716uy:2012/06/24(日) 22:37:08.67
ローカル変数のサイズ合計 > CPUキャッシュサイズ
で、決着ついてる

初心者にも良くわかりそうなキャッシュについての説明
http://myoga.web.fc2.com/prog/cpp/opti02.htm

まぁおれも詳細は今知ったんだけどね
詳細知らずとも遅くなる箇所と、遅くならない箇所くらいは分かるレベルなわけで
ローカル変数を大量に定義したら遅くなるって事です

そのサイトのここ重要
>スタック溢れにならなくても、スタックに巨大なデータを置くと、 スタック自体でキャッシュミスが起こったりして遅くなります。
717 ◆QZaw55cn4c :2012/06/24(日) 22:37:40.32
>>714
>あ、ついに遅くなるって認めちゃった?

普通の領域でも遅くなるのにスタックだけが遅くならない理由があるとでも?普通の領域で起こる事象を「スタックで起こる事象だ」と主張するのは滑稽ですね。

>いきなり範囲指定wwww

だって、最初の主張 >>506 では、

>> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
>それだけpush命令行われてるのにバカじゃねえの??????

なんでしょ。比較的小さな範囲でも発生するんじゃないですか?>>506 が正しければ。

>まだpush,pushいってるけどさ
>ush命令を他の高速なcpu命令で代用するようにCコンパイラが最適化していたとか
>ある意味「遅くなるか」「全く遅くならないか」という議論においてはどうでもいい
>「速くなった」というだけで、演算速度が0クロックになったわけではない

あのね。 >>506 ではローカル変数を沢山使うとスピードが遅くなる、つまりローカル変数の量によってスピードがかわると主張しているのでしょう?
だったら比較すればいいじゃない、ローカル変数1個のときと100個のときとで。そういう問題じゃないのでしょうか。
アセンブリソースをみればそういうわけではないことが自明なんですけれどもね。

でそれと、「演算速度が 0クロックにならない」とどんな関係があるのでしょうか?どういう主張を補強したいのか意味不明ですね。
論破されるといろいろ極端な例を後付けして凌いだつもりになっているのですね。
718uy:2012/06/24(日) 22:39:41.42
719 ◆QZaw55cn4c :2012/06/24(日) 22:40:56.91
>>713
>そういうOSも実際にある
ぜひ。大概のOSは DS=SS みたいなんです。紹介のページでも Windows はフラットモデル、といっているし。
720 ◆QZaw55cn4c :2012/06/24(日) 22:42:17.78
>>716
>>710
そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは滑稽なんですが。
721uy:2012/06/24(日) 22:43:31.67
>>720
いくら負けを認めたくないからって
負けを認めないためにキャッシュの勉強をあえてせずに盲目になるか

終わりだな
722デフォルトの名無しさん:2012/06/24(日) 22:44:11.73
どんなメモリでも起きるならやっぱりローカル変数でも起きるんだなぁ。
723デフォルトの名無しさん:2012/06/24(日) 22:44:20.83
知識が間違っててうけるわー
724デフォルトの名無しさん:2012/06/24(日) 22:46:20.77
滑稽みたいな主観丸出し語句使っても何の反論にもなってないわ
725デフォルトの名無しさん:2012/06/24(日) 22:48:33.45
面白すぎて毎日見にきてしまうじゃないか

>それだけpush命令行われてるのにバカじゃねえの??????

uyさんはとっととこれについて解説してくれよ
wktkして待ってるんだから
気になって眠れないよ
726デフォルトの名無しさん:2012/06/24(日) 22:48:37.76
その脳内キャッシュの動作はどこで習ったの?
727 ◆QZaw55cn4c :2012/06/24(日) 22:49:48.75
>>721
>>710
そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは滑稽なんですが。
728 ◆QZaw55cn4c :2012/06/24(日) 22:53:03.90
>>724
では非論理的で説得力に欠ける、とでも言い換えておきましょうか。

>>716,721
そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは非論理的であり説得力皆無なんですけれども。
729 ◆QZaw55cn4c :2012/06/24(日) 22:54:23.41
>>725
つきあっているんだからモリタポくれ
730デフォルトの名無しさん:2012/06/24(日) 22:59:17.66
説得力みたいな主観丸出し語句使っても何の反論にもなってないわ
731uy:2012/06/24(日) 23:02:27.30
俺はお前が思ってるよりもマジでレベルは高いから
二度とかみつかない事を薦める

http://myoga.web.fc2.com/prog/cpp/opti02.htm
キャッシュの動作の第2項
キャッシュ内容の更新 を読め

>キャッシュの更新で何をするのかというと、 今回触ったアドレス X のデータとその周辺のデータのコピーを L1 に作成するのです。
>周辺のデータというのは、大体数十バイトから百バイト程度のブロックになります。
>周辺のデータもまとめてコピーするのは、先程説明した「局所性」に拠って、 アドレス X に触った時には
>その周辺のアドレスのデータに触る確率も高いと期待されるからです。

そのサイトのここも重要
>スタック溢れにならなくても、スタックに巨大なデータを置くと、 スタック自体でキャッシュミスが起こったりして遅くなります。


つまり、無駄なでかいローカル変数があったらキャッシュミスが起こって遅くなるのです
つまり、ローカル変数を沢山定義すると遅くなるのです

ワカッタカナー
732 ◆QZaw55cn4c :2012/06/24(日) 23:03:13.47
>>730
そうですか。ではこういうときは、どういう言葉がいいんでしょうね。難しいですね。
733 ◆QZaw55cn4c :2012/06/24(日) 23:04:21.11
>>731
そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは非論理的で筋が通らないんですけれども。
734デフォルトの名無しさん:2012/06/24(日) 23:05:13.50
どんなメモリでも起こる → ローカル変数でも起こる
735デフォルトの名無しさん:2012/06/24(日) 23:07:42.20
>それだけpush命令行われてるのにバカじゃねえの??????

これについて解説してくれよ早く
736片山博文MZボット ◆0lBZNi.Q7evd :2012/06/24(日) 23:08:10.50
定義しただけでは遅くならねーよ、ばーか。論理飛躍だ。
737デフォルトの名無しさん:2012/06/24(日) 23:09:56.87
「使う=定義」だったのか

へぇ知らんかった
俺の国語辞典には載ってないな
738 ◆QZaw55cn4c :2012/06/24(日) 23:15:06.03
>>506
>> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
>それだけpush命令行われてるのにバカじゃねえの??????

とローカル変数を push で確保すると思っていた(爆笑)ようですが、それが論破されるといろいろ極端な例を後付けして凌いだつもりになっているのですね。
そろそろ、普通に使う範囲での妥当なサイズのソース
>>700
http://codepad.org/gVm1Y9Ps
http://codepad.org/dwKs5LBd
で説明していただけませんかね。ruby 脳ではやっぱり無理でしょうかね?
739デフォルトの名無しさん:2012/06/24(日) 23:17:36.25
引き際を知らないコピペゴミ
740 ◆QZaw55cn4c :2012/06/24(日) 23:22:03.53
そうですね。コピペ多用はさすがにまずかったですね。飽きたのでやめます。
741uy:2012/06/24(日) 23:36:52.82
俺が簡単に負けを認めたらスレが盛り上がらないだろ?
742デフォルトの名無しさん:2012/06/24(日) 23:38:09.55
×スレが盛り上がらない
○スレが荒れない
743uy:2012/06/24(日) 23:43:01.17
言いたいことはそれだけか?
それくらいでは全く論破したことにもならないが
744デフォルトの名無しさん:2012/06/24(日) 23:43:14.39
なんという糞コテ勢揃い感
745 ◆QZaw55cn4c :2012/06/24(日) 23:43:34.94
>>739
引き際、確かにむずかしいですね。SCHEME餃子さんはうまくて感心しています。
746デフォルトの名無しさん:2012/06/24(日) 23:44:44.53
日曜の夜はふけてゆく

EUROまだー、ちんちん
747デフォルトの名無しさん:2012/06/24(日) 23:47:38.38
今さら気づいて再レスしなくていいから
748uy:2012/06/24(日) 23:51:24.07
>>745
俺を論破できずに逃げるのか?ゴミカス
749uy:2012/06/24(日) 23:55:13.56
俺はゴミカスだがエリートゴミカスだ
お前らのような下級ゴミカスとは格が違う
750デフォルトの名無しさん:2012/06/24(日) 23:57:06.83
きてるきてる
751デフォルトの名無しさん:2012/06/24(日) 23:59:12.82
                        / /
                        / /
                     /三ミ} フ
                    r'"rニニ`〈
                   .| rニ~~` }    そんなことより野球しようぜ!
                   j (_)  /
     _,.-‐‐‐-'ヽ.      /  ,A_  ヽ.
   /,.--‐‐‐、  ヽ.    /  /  |  ヽ.
  / / />  ヽ ,..、ヽ /   /   |   ヽ.
  /‐┘/,.-、   ! | 6)/    /  __|   ヽ
  !ニ=_"iO ヽ   ヾ/    ./‐-'"i iZ    }
  !TOヽヽ、_ノ __ /|__   / { ヽ ヽヾZ   /
  ヽヽ_ノC /ン|   L  /___ヽ ヽヽ _>‐'"
   ヽ (∠ン´| ヽ、_.ク   _ ヽ、/
    `ー/| ヽ、__ /_/  _ |
      | ヽ、_. /   _/   _|
752デフォルトの名無しさん:2012/06/25(月) 00:03:40.58
猿だろ
753デフォルトの名無しさん:2012/06/25(月) 00:28:28.04
なんだプロサルファーのゴルフが猿するのか・・・。
754デフォルトの名無しさん:2012/06/25(月) 00:29:27.31
                        / /
                        / /
                     /三ミ} フ
                    r'"rニニ`〈
                   .| rニ~~` }    バスケットはお好きですか?
                   j (_)  /
     _,.-‐‐‐-'ヽ.      /  ,A_  ヽ.
   /,.--‐‐‐、  ヽ.    /  /  |  ヽ.
  / / />  ヽ ,..、ヽ /   /   |   ヽ.
  /‐┘/,.-、   ! | 6)/    /  __|   ヽ
  !ニ=_"iO ヽ   ヾ/    ./‐-'"i iZ    }
  !TOヽヽ、_ノ __ /|__   / { ヽ ヽヾZ   /
  ヽヽ_ノC /ン|   L  /___ヽ ヽヽ _>‐'"
   ヽ (∠ン´| ヽ、_.ク   _ ヽ、/
    `ー/| ヽ、__ /_/  _ |
      | ヽ、_. /   _/   _|
755デフォルトの名無しさん:2012/06/25(月) 04:18:14.16
論理的でな馬鹿二人の煽り合いってどうしようもないな
756uy:2012/06/25(月) 04:52:32.69
>>755
お前は誤字脱字を何とかしろゴミカス
757デフォルトの名無しさん:2012/06/25(月) 05:22:06.62
金星(まあず)
758デフォルトの名無しさん:2012/06/25(月) 08:18:23.74
甘酢(あまず)
759uy:2012/06/25(月) 08:20:41.52
吾妻(あずま)
760デフォルトの名無しさん:2012/06/25(月) 08:28:18.63
さ(まぁ〜ず)
761デフォルトの名無しさん:2012/06/25(月) 08:29:59.58
お前ら朝から何をやってんだ・・・。
762uy:2012/06/25(月) 08:30:23.72
俺はゴミカスだがエリートゴミカスだ
お前らのような下級ゴミカスとは格が違う
763デフォルトの名無しさん:2012/06/25(月) 08:40:21.50
ベジータさん
早く仕事に戻ってください
764デフォルトの名無しさん:2012/06/25(月) 10:15:22.44
なんだこれ。
アホとバカが共鳴しあってるのか?
765デフォルトの名無しさん:2012/06/25(月) 10:21:22.44
K&R版文字列反転に感動した朝。
766uy:2012/06/25(月) 10:26:35.11
俺に聞け
767デフォルトの名無しさん:2012/06/25(月) 10:28:30.20
わざわざ反転させなくても
先頭末尾の両方から使えるようにすれば済む話
768デフォルトの名無しさん:2012/06/25(月) 10:36:10.90
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::
::::::::::             ____
       ∧_∧    ||....___ |
      ( ´・ω・)   .|| └ヾ::::| |
    ┌/:::::::  l     ||__/._/_|
    | |:: |::::  | ┌━━ー┷┷┐
769デフォルトの名無しさん:2012/06/25(月) 11:34:53.26
くぴー
770デフォルトの名無しさん:2012/06/25(月) 13:33:01.58
>>765
どんな?
771デフォルトの名無しさん:2012/06/25(月) 15:51:53.50
772デフォルトの名無しさん:2012/06/25(月) 16:27:57.50
無駄が無いな。
773デフォルトの名無しさん:2012/06/25(月) 16:53:53.28
16行128列みたいな2次元の配列を作りたいんですけど、

int test[16][128];
ってやるのと
int *test
test = (int *)calloc(16*128, sizeof(int));

ってやるのどっちがいいですか?。
774デフォルトの名無しさん:2012/06/25(月) 16:57:52.06
インデックスの計算を自前でやるとメリットがある場合は後者
775デフォルトの名無しさん:2012/06/25(月) 17:02:57.69
>>773
int (*test)[128];
test=calloc(16*128, sizeof(int));
776デフォルトの名無しさん:2012/06/25(月) 17:38:39.52
>>775
その方がいいんですか?。
777デフォルトの名無しさん:2012/06/25(月) 17:43:29.89
とてつもなく工学計算ぽいから
R言語なりmathmaticaなりでやりゃあいいじゃん
FFTとかだろたぶん
778デフォルトの名無しさん:2012/06/25(月) 17:45:07.38
>>776
二次元配列と同じようにアクセスできる
779デフォルトの名無しさん:2012/06/25(月) 17:48:22.17
かなりの量の行列が生成死滅する場合、まとめて確保した方がメモリフラグメントが避けられる。
780デフォルトの名無しさん:2012/06/25(月) 17:49:25.95
>>775
ただ *test は配列へのポインタだから添字と違い毎回アクセスされる可能性があるので
わずかに速度が遅いかも
781デフォルトの名無しさん:2012/06/25(月) 17:52:19.63
>>774さん、>>775さん、>>777さん、>>778さん、>>779さん、>>780さん、
どうもありがとうございますm(__)m。
782デフォルトの名無しさん:2012/06/25(月) 19:21:28.48
>>781
いいの、いいの
お礼なんかいらないよ
783776:2012/06/25(月) 19:21:43.24
>>781
俺には挨拶なしかよ!
784デフォルトの名無しさん:2012/06/25(月) 19:27:22.29
無能に用はないんだよ
785デフォルトの名無しさん:2012/06/25(月) 19:33:59.45
786デフォルトの名無しさん:2012/06/25(月) 19:47:35.00
おまえ後で楽屋まで挨拶にこいよ
787デフォルトの名無しさん:2012/06/25(月) 20:27:04.19
よきにはからえ
788uy ◆pdu1UZmweE :2012/06/26(火) 00:41:13.23
>>773
記述量の少ないほうを常に選べ
789デフォルトの名無しさん:2012/06/26(火) 00:44:51.46
rubyierの言うことは聞かんでいい
790 ◆QZaw55cn4c :2012/06/26(火) 02:15:44.92
ruby脳はこれだからねえ。
791デフォルトの名無しさん:2012/06/26(火) 02:51:27.77
#defineとtypedefはどう違うのですか?
792 ◆QZaw55cn4c :2012/06/26(火) 03:00:40.89
>>791
typedef は コンパイラが理解できる。
#define は C コンパイラにわたる前の前処理プログラム(c プリプロセッサ)だけが理解できる。

使い分けはいろいろサンプルをみたり自分で試してみたりしてみてください。私は typedef のご利益を、実はよくわかっていない。
793デフォルトの名無しさん:2012/06/26(火) 03:25:23.24
構造体の時便利
794デフォルトの名無しさん:2012/06/26(火) 03:39:29.60
移植の時便利
795デフォルトの名無しさん:2012/06/26(火) 03:51:16.45
enum使うとき便利
796デフォルトの名無しさん:2012/06/26(火) 07:24:33.48
>>791
typedefは型名に別名をつけるようなもの。
だから宣言と同じ構文で識別子に当たる部分が型の別名になる。

#defineは単なる文字列置換だから、Cの文法では通らないようなこともできてしまう。

型Tの変数a, bの値を入れ替えるマクロ関数
T: 型名
#define SWAP(T, a, b) do{ T SWAP_tmp; SWAP_tmp = (a);(a) = (b); (b) = SWAP_tmp}while(0)

Cの関数では型を引数にはできないが、マクロ関数なら、引数に型を与えるように扱える。
797 ◆QZaw55cn4c :2012/06/26(火) 07:47:55.99
>>793
そうは思わない派です。
(a + b)(c + d) で a + b = A とおいて、(a + b)(c + d) = A(c + d) = Ac + Ad, A をもどして (a + b)c + (a + b)d = ac + bc + ad + bd とかやらないように、
typdef struct { ... } *HogeP;
とするくらいだったら
struct Hoge *
を直接書いてあるほうがありがたい。あくまでひとつの意見ですが。

>>795
意識していませんでした。もしよろしければ例をくださりませんか。
798デフォルトの名無しさん:2012/06/26(火) 08:40:22.92
何でもかんでもtypedefしまくって何バイトなのかすぐには分からんのが多い
time_t size_t wchar_t とか
C++でSTL使うときに長ったらしいのを短くできるのはありがたい
799デフォルトの名無しさん:2012/06/26(火) 09:15:16.40
C++ Cording Standardsだったか、クラステンプレートにはtypedefで別名つけろって書いてたのは。
800デフォルトの名無しさん:2012/06/26(火) 10:14:58.81
800
801デフォルトの名無しさん:2012/06/26(火) 10:25:26.74
622 :デフォルトの名無しさん:2012/06/09(土) 12:27:10.29
int*をtypedefしたらさらにややこしい

623 :デフォルトの名無しさん:2012/06/09(土) 13:20:15.63
いやそこは#define だろ

624 : ◆QZaw55cn4c :2012/06/09(土) 13:47:33.95
なんでもありの #define は避けれるのであれば避けたほうがいい。

625 :デフォルトの名無しさん:2012/06/09(土) 14:35:41.84
コテはアスペとわかっちゃいても
ヤッパむかつくな

626 : ◆QZaw55cn4c :2012/06/09(土) 15:12:12.59
>>625
コードをみせてくれ。話はそれからだ。

627 :デフォルトの名無しさん:2012/06/09(土) 15:46:21.13
ナッパむかつくわ
802デフォルトの名無しさん:2012/06/26(火) 11:17:57.51
ここまで「マクロの方がはやい」はない
803デフォルトの名無しさん:2012/06/26(火) 12:24:23.87
別段早くないしな。

>>797
structにしろenumにしろ、C++なら省略できるけどCだと省略できないから一手間省けるってことでしょ。
--
struct foo {...;}
struct foo bar; // typedefを使わない例
typedef struct {...;} foo_t;
foo_t bar; // typedefを使う例
--
const int や volatile int も int * 同様typedefできるけど、するべきじゃないと思うね。
サイズ情報を隠蔽するためにはしばしば使うけど。
--
#if SOME_ENVIRON
typedef double Float;
#else
typedef float Float;
#endif
Float foo = (Float) (1. /3);
--
804デフォルトの名無しさん:2012/06/26(火) 12:27:01.86
typedefするとポインタかそうでないか分かりにくくなる場合がある
例えばLPCTSTRはポインタ
805デフォルトの名無しさん:2012/06/26(火) 12:35:18.99
Pはなんだと思ってるんだよw
806デフォルトの名無しさん:2012/06/26(火) 12:45:34.60
いい加減 LP = long (far) pointer をやめて欲しい
807デフォルトの名無しさん:2012/06/26(火) 13:10:24.73
L Peaple
808デフォルトの名無しさん:2012/06/26(火) 13:12:07.06
それより CTSTR の T がうざい。
809 ◆bm8Y3upg2Y :2012/06/26(火) 13:20:04.90
質問なのですが、合計点と平均点を求めるプログラムを作ろうとしているのですが
上手くいきません。以下のどこが間違っているか教えてもらえますでしょうか?
合計も平均も0になってしまいます。

int ten[5], i = 0;
int sum = 0, ninzu = 5;
double avg;

printf("点数\n");
while (i < 5) {
printf ("%d人目 > ", i + 1);
scanf("%d", &ten[i]);
i++;
}

while (i < 5) {
sum += ten[i];
i++;
}

avg = (double)sum / ninzu;

printf("合計点: %d\n", sum);
printf("平均点: %f\n", avg);

return 0;


810デフォルトの名無しさん:2012/06/26(火) 13:21:48.91
>>808
TemplateのTだろ
マルチバイトならLPCSTR
UnicodeならLPCWSTR
811デフォルトの名無しさん:2012/06/26(火) 13:27:21.15
>>809
forを使えば直ぐに気付くミスなのに。
812デフォルトの名無しさん:2012/06/26(火) 13:28:13.64
813片山博文MZボット ◆0lBZNi.Q7evd :2012/06/26(火) 13:57:17.18
>>810
不正解。TEXTのTでした。
814デフォルトの名無しさん:2012/06/26(火) 14:37:13.67
ぴよぴよ
815809:2012/06/26(火) 14:43:55.99
>>811
言われてみれば確かにその通りですね。
forなら(i=0,・・・)と書くので気付けたハズ。
iに数字が入ったままだったのですね。
>>812
ありがとうございます。助かりました。
これで無事に提出できます。
816デフォルトの名無しさん:2012/06/26(火) 15:00:26.82
いえいえ
817uy:2012/06/26(火) 15:57:30.56
>>809
p p((a=[1,4,5,10,20]).inject:+)/a.size

>40 合計
>8 平均
818デフォルトの名無しさん:2012/06/26(火) 16:11:18.37
スレタイすら読めない馬鹿がいる
っていつものことか
819デフォルトの名無しさん:2012/06/26(火) 16:58:37.01
#defineの質問をした者です。ありがとうございました。
820デフォルトの名無しさん:2012/06/26(火) 17:10:57.16
いえいえ
821デフォルトの名無しさん:2012/06/26(火) 17:11:41.70
あーいやー
822デフォルトの名無しさん:2012/06/26(火) 19:12:32.10
プログラムの速度を上げるには最適化のほかに
最新スペックのパソコンに変えると速度は上がりますか?
823デフォルトの名無しさん:2012/06/26(火) 19:30:29.72
アルゴリズムを見直せ
824デフォルトの名無しさん:2012/06/26(火) 19:34:05.57
>>822
ボトルネック箇所次第
825デフォルトの名無しさん:2012/06/26(火) 20:32:14.95
C言語1か月の初心者です。
例えば、『9』『99』『999』『9999』『99999』というように同じ数字だけで桁数を増やす計算式ってありますか?
一番簡単な方法があればご教授願います!

826デフォルトの名無しさん:2012/06/26(火) 20:35:13.57
>>825
x=x*10+x%10;
827デフォルトの名無しさん:2012/06/26(火) 20:36:43.20
828デフォルトの名無しさん:2012/06/26(火) 20:44:38.42
>>825
k*(10^(n+1)-1)/9
829デフォルトの名無しさん:2012/06/26(火) 20:51:26.21
質問の意味が分からない
830デフォルトの名無しさん:2012/06/26(火) 20:59:12.35
後出しで劣化しとる
831デフォルトの名無しさん:2012/06/26(火) 21:17:45.46
ずんちゃ
832デフォルトの名無しさん:2012/06/26(火) 21:38:38.18
ビルドしたあと出かけて帰ってきて再ビルドしたら再定義されていませんって出たけど何が原因でしょう
どこが間違ってるのか本気で分からない…構造体です

struct camera{
float posx,posy,posz,eyex,eyey,eyez,dir,speed,range,size;
};
camera cam;
833デフォルトの名無しさん:2012/06/26(火) 21:41:06.69
再定義されていません
って何だよ
されてないならいいじゃないか
834デフォルトの名無しさん:2012/06/26(火) 21:41:06.87
>>832
説明する気あんのかよ
ついでにC++はスレチ
835uy:2012/06/26(火) 21:49:36.44
どう考えても言語問わず

x = 9
x*10 + x

これで済む話なのに
なんでこんなバカしかいねーんだこのスレ
836デフォルトの名無しさん:2012/06/26(火) 21:56:23.36
10^(i+1)-1でいいだろゴミカス
837デフォルトの名無しさん:2012/06/26(火) 22:13:50.01
>>835
>x = 9
>x*10 + x

x = 88
x * 10 + x -> 968
838デフォルトの名無しさん:2012/06/26(火) 22:33:13.33
>>835

www
839デフォルトの名無しさん:2012/06/26(火) 22:39:51.96
>>835
kkk
840デフォルトの名無しさん:2012/06/26(火) 22:44:48.22
また後出しで劣化しとる
841デフォルトの名無しさん:2012/06/26(火) 22:47:35.66
まるで韓国人だな
842デフォルトの名無しさん:2012/06/26(火) 22:51:49.19
>>832
(C++ ではなく)C言語だと struct は省略できないよ
× camera cam;
○ struct camera cam;
843デフォルトの名無しさん:2012/06/26(火) 23:00:46.86
827,828,836とuyと同レベルが3人もいるのか…日本の未来は暗いな
844uy:2012/06/26(火) 23:01:43.42
確かに俺はゴミカスだ
845デフォルトの名無しさん:2012/06/26(火) 23:09:31.59
843も入れてあげて
846825:2012/06/26(火) 23:13:49.35
レスくれた方ありがとうございます!
何かいろいろと大変なことになっていますが、どれが一番良い方法なのでしょうか?
847デフォルトの名無しさん:2012/06/26(火) 23:18:42.68
836は数学的で実に美しい
848デフォルトの名無しさん:2012/06/26(火) 23:20:14.23
元はと言えば>>825の質問が悪い
いろいろ解釈できる質問しやがって
849デフォルトの名無しさん:2012/06/26(火) 23:22:43.64
828で終わってるだろう
850デフォルトの名無しさん:2012/06/26(火) 23:26:33.10
836,847馬鹿の自演
851uy:2012/06/27(水) 00:17:47.01
はぁ?
Cとかもういいから
さっさとruby使えよ
p ([9]*5666).join.to_i #=>99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
852デフォルトの名無しさん:2012/06/27(水) 00:23:39.83
>>851
スレチ消えろ
853uy:2012/06/27(水) 00:32:26.36
class Module ; def tco(name)
    continue = [] ; first = true ; arguments = nil ;  private_name = "private_" + name.to_s
    alias_method private_name, name ; private private_name
    proc = lambda do |*args|
      if first ; first = false
        while true
          result = send(private_name, *args)
          if result.equal? continue ; args = arguments
          else ; first = true ; return result
          end ; end
      else ; arguments = args ; continue ; end ; end ; define_method name, proc ; end ; end
class A
  def q x , n
    n.times.map do | i |
      f x , i
    end.inject:+
  end
  def f x , n
    return x if n == 0
    f x * 10 , n - 1
  end
  tco :f
end
p A.new.q 5 , 3

あー、やっべつい末尾再帰で書いて最適化しちゃったわ
854デフォルトの名無しさん:2012/06/27(水) 00:32:52.88
Rubyを初心者にすすめるとuyになるから絶対ダメってことですね
855デフォルトの名無しさん:2012/06/27(水) 00:34:11.02
>>853
スレチだバカ
856デフォルトの名無しさん:2012/06/27(水) 00:34:58.75
構うなバカ
857デフォルトの名無しさん:2012/06/27(水) 00:41:56.39
なんだこのクソコード
858デフォルトの名無しさん:2012/06/27(水) 02:38:17.00
Rubyが恐ろしいのは
汚く書こうと思えばいくらでもできちゃう所で
そういう意味ではCに近い
859uy:2012/06/27(水) 03:05:28.91
どんだけC言語やりたいんだよお前ら

時代遅れ時代遅れ時代遅れ時代遅れ
860デフォルトの名無しさん:2012/06/27(水) 03:21:25.81
861 ◆QZaw55cn4c :2012/06/27(水) 03:29:43.92
>>854
ruby... 2.0 になったら勉強しよう。そのときはいろいろご指導ください >uy さま
862 ◆QZaw55cn4c :2012/06/27(水) 03:32:17.03
>>859
OS はいまだに C で記述するのが一般的だというのに、それでも C が時代遅れと主張するのでしょうか?
というか C の理解なくして他の言語が理解できるのでしょうか。あー lisp は許す。
863uy:2012/06/27(水) 05:23:06.51
お前のようなゴミカスには教えない
864デフォルトの名無しさん:2012/06/27(水) 08:07:36.36
×お前のようなゴミカスには教えない
○uyのようなゴミカスには教える能力が無い
865uy:2012/06/27(水) 08:14:38.28
俺はゴミカスだがエリートゴミカスだ
お前らのような下級ゴミカスとは格が違う
866デフォルトの名無しさん:2012/06/27(水) 09:02:13.45
uyは放射能汚染ごみか。
世界中で受け入れ拒否。

このスレでも受け入れ拒否だからな。
867デフォルトの名無しさん:2012/06/27(水) 09:25:57.24
やめるのです!ボクたち
868デフォルトの名無しさん:2012/06/27(水) 09:38:25.10
clangでhttp://codepad.org/CebfjmLMをコンパイルに時間がかかるのは何故でしょうか
配列の大きさを指定しているくせに違う大きさの配列リテラル?で初期化するのは良くないとは分かっていますが、気になって。
869デフォルトの名無しさん:2012/06/27(水) 09:54:43.10
C言語->LLVM->(最適化)LLVM->x86と変換するわけだけど
最初のLLVMを内部で出力するのに時間がかかるんじゃないかな
clang test.c -S -emit-llvm -o - で最適化無しのLLVMコードを見ると山ほどの
getelementptr [1048575 x i8]* %5, i32 0, i32 数字
が見れる
関数内での配列はとりあえずインライン化してみる仕様なのかも
870デフォルトの名無しさん:2012/06/27(水) 12:26:05.90
くぴーっ
871デフォルトの名無しさん:2012/06/27(水) 12:27:52.26
お前はガッチャンかっ!!
872デフォルトの名無しさん:2012/06/27(水) 12:29:01.39
>>871
お前はおっちゃんだ!
873デフォルトの名無しさん:2012/06/27(水) 19:24:21.87
int a = 10;
int i[a];
だとエラーが出るので

#define a 10
int i[a];
にすると、違うソースファイルで
externが使えないので、違うソースファイルでも

#define a 10
int j[a];
としたのですが、これだと片方のソースファイルの数字を書き換えれば
もう片方のソースファイルの数字も書き換えないといけなくて、
片方のソースファイルの数字だけを書き換えればいいように
したいのですが、どうしたらいいですか?
874デフォルトの名無しさん:2012/06/27(水) 19:32:37.37
hogehoge.h を用意して
#define a 10
する
fugafuga.c と hagehage.c の両方で
#include "hogehoge.h"
すれば、変更はhogehoge.hだけで済む
875デフォルトの名無しさん:2012/06/27(水) 19:34:11.98
// hoge.h

#ifdef MAIN
#define EXTERN
#else
#define EXTERN extern
#endif

#define a 10
EXTERN int i[a];

// main.c
#define MAIN
#include "hoge.h"

i[0] = 10;

// sub.c
#include "hoge.h"

printf("%d\n", i[0]);
876デフォルトの名無しさん:2012/06/27(水) 19:37:07.82
>>873
C以前に日本語の学習から始めてみたらいかがかな。
877デフォルトの名無しさん:2012/06/27(水) 19:53:46.60
>>874
>>875

できました。ありがとうございました
878デフォルトの名無しさん:2012/06/27(水) 20:24:35.93
いえいえ
879デフォルトの名無しさん:2012/06/27(水) 20:29:54.44
どうもどうも
880uy:2012/06/27(水) 21:35:20.42
>>861
気持ち悪い死ね

>>876
お前絶対に接客も接待もできないよ
881uy:2012/06/27(水) 21:37:31.93
>>873
int a = 10;
int i[a];
だとエラーが出るので

え?まじで?そんな言語使ってるほうが悪い
882デフォルトの名無しさん:2012/06/27(水) 21:39:31.79
>>873
グローバルな配列宣言ではなく
関数の引数で渡すことを考えてみることもやってみませう
883デフォルトの名無しさん:2012/06/28(木) 00:01:17.03
スタック領域とヒープ領域について教えてください。
884uy:2012/06/28(木) 00:16:40.59
そんなもん直感で分かれよカス

↓以下ドヤ顔で初心者に長文レスかますC言語スレ古参たち
885デフォルトの名無しさん:2012/06/28(木) 00:19:36.00
┃↑
┗┛
886デフォルトの名無しさん:2012/06/28(木) 00:22:22.09
ググればいくらでも解説が出てくるだろ
その上で疑問が有るなら疑問点を限定しろ
887デフォルトの名無しさん:2012/06/28(木) 00:25:26.12
>>883
言葉覚えたから、動くものが作れるってわけじゃないんだよ
888uy:2012/06/28(木) 02:38:52.81
>>886.887
??
もっとレス書きたいんだろ?書けばいいのに?
???
889デフォルトの名無しさん:2012/06/28(木) 02:44:33.80
A「私の3人の子供の年齢を当ててみて」
B「ヒントは?」
A「年齢の積は36」
B「もう少しヒントを」
A「年齢の和はあなたの年齢と同じ」
B「う〜ん、もう1つだけ。年齢が一番上の子の名前は?」
A「Cだよ」
B「OK、それで分かった」
さて、3人の子供の年齢は?
890デフォルトの名無しさん:2012/06/28(木) 02:45:49.00
891デフォルトの名無しさん:2012/06/28(木) 02:53:01.73
今からプログラムを組んでくれって言ったら組んでくれる神様はいない…よな…
明日提出の課題がやばいんだが…
892uy:2012/06/28(木) 02:56:05.71
呼んだ?
893デフォルトの名無しさん:2012/06/28(木) 02:58:44.60
>>889
2,2,9
894デフォルトの名無しさん:2012/06/28(木) 02:59:22.03
>>891
3万円でやるよ
895デフォルトの名無しさん:2012/06/28(木) 07:55:47.63
学校の課題をそれで通ってどうすんだか
896デフォルトの名無しさん:2012/06/28(木) 08:06:57.26
uyのスパゲティはお断りします
897デフォルトの名無しさん:2012/06/28(木) 14:14:56.08
カペリーニならいいのか?
898デフォルトの名無しさん:2012/06/28(木) 14:18:17.62
うん
899uy:2012/06/28(木) 14:27:03.12
学生の頃Cのミニ問題集100問を1時間で終わらした記録があるわ
その頃からメタプログラミングは出来ていた
コードジェネレータ(笑)をperlで5分でかいて、Cソースコード出力
そこからは一問あたり20秒以内で
後半のほうにじゃんけんゲームやスゴロクゲームをCUIで作れっていうのあったけど
それらも1個、数分以内に作って1時間でクリアした
あれは楽しかったな

スクリプト言語はこうやって使うんだよ
素でCのソース書いてる奴には絶対に出せない効率
900デフォルトの名無しさん:2012/06/28(木) 14:43:01.65
そんな妄想聞かされても、君を哀れに思うだけで誰も感心なんてしないよ?
901デフォルトの名無しさん:2012/06/28(木) 14:48:38.84
>>775の、int (*test)[128];ってどういう意味ですか?。
int *test[128];ってやるとエラーが出たんですけど、どういう違いがあるんですか?。
902デフォルトの名無しさん:2012/06/28(木) 14:58:26.13
903uy:2012/06/28(木) 15:01:35.08
>>901
そんなもん覚えても意味ない
理由は演算子の優先順位
ポインタの配列ではなく
配列のポインタになろうとして失敗してる
これで意味不明だったらお前も初心者だから俺に謝れよ
904デフォルトの名無しさん:2012/06/28(木) 15:15:27.38
初心者uyが自分より格下を見つけていじめてる
905デフォルトの名無しさん:2012/06/28(木) 15:45:15.36
>>903
906デフォルトの名無しさん:2012/06/28(木) 16:15:14.73
uyが最下位だから格下なんていないよ
907デフォルトの名無しさん:2012/06/28(木) 16:22:37.80
うひょー
908デフォルトの名無しさん:2012/06/28(木) 16:40:06.42
ひょひょ
909デフォルトの名無しさん:2012/06/28(木) 17:19:08.26
さすが、URL一行で取ってこれる絵のためにRubyごりごり書いてる
効率の悪いバカの言うことはちがうなw
910デフォルトの名無しさん:2012/06/28(木) 18:07:42.77
>>902さん、>>903さん、どうもありがとうございますm(__)m。
911デフォルトの名無しさん:2012/06/28(木) 18:09:26.62
>>910
いえいえ
912uy:2012/06/28(木) 18:42:20.86
>>911
お前だれだよ厚かましい
謝罪しろ
913デフォルトの名無しさん:2012/06/28(木) 18:44:38.68
初心者以下のクズuyは消えろよ
914デフォルトの名無しさん:2012/06/28(木) 19:46:53.39
>>903
演算子の優先順位じぇねーよ。嘘教えるなバカ
915uy:2012/06/28(木) 20:30:01.32
>>905
お前本当に文章よめねーのな
多分このスレの中でお前だけが読めてないよ
916デフォルトの名無しさん:2012/06/28(木) 20:38:16.82
int (*test)[128]; 配列のポインタ
int *test[128]; ポインタの配列

>>901は下にして上手くいかないんだから、配列のポインタをポインタの配列にして失敗してる
917デフォルトの名無しさん:2012/06/28(木) 20:45:51.56
うきょ
918デフォルトの名無しさん:2012/06/28(木) 20:48:57.53
なろうとして失敗してる、じゃどーとでも言えるな…
uyがプログラマになろうとして失敗してる とか
uyが普通の社会人になろうとして失敗してる とか
uyがあのコに気付いてもらえる男にry とか。

int (*test)[128]だとtest変数はintが128コある配列へのひとつのポインタだからcallocした戻り値を代入できるけど
int *test[128]だとintを指すポインタが128コある配列なので、
callocした戻り値をtestのどれに代入するかわかりません、ってことです。
919デフォルトの名無しさん:2012/06/28(木) 20:59:41.77
>>918
>int *test[128]だとintを指すポインタが128コある配列なので、
>callocした戻り値をtestのどれに代入するかわかりません、ってことです。

ん?「配列には代入できないからエラー」でしょ。
920デフォルトの名無しさん:2012/06/28(木) 21:01:52.31
まぁ、そういうこってすなw
921デフォルトの名無しさん:2012/06/28(木) 21:07:46.99
ハマりそうな書き方するんですね
922デフォルトの名無しさん:2012/06/28(木) 21:10:28.19
素直に構造体にしたほうがいいと思う
923デフォルトの名無しさん:2012/06/28(木) 21:19:02.42
うひ
924デフォルトの名無しさん:2012/06/28(木) 21:58:39.56
演算子の優先順位だよな

int *test[128]は int *test([128]) (エラーだけど意味を示したい) のように解釈される
配列演算子が逆参照演算子よりも優先度が高いためだ

CはAPL、C++についで3番目に演算子が多い

APLは演算子がCの倍あり、優先順位を決めるのを諦めてしまって評価順序を全部
左から右にしてしまった

しかしCは優先順位があり、しかも不自然な順位だと思われるものもあるためなかなか
覚えにくい

印刷した紙を手元に置いておくか、カッコで囲む必要がある
925デフォルトの名無しさん:2012/06/28(木) 21:59:29.22
あ、こう書けばいいのか

int *(test[128])
926デフォルトの名無しさん:2012/06/28(木) 22:12:56.70
>>924
だから演算子の優先順位じゃないって。
演算子は式に関するもの。
int *test[128]; (あるいはint (*test)[128];も)は宣言。
927デフォルトの名無しさん:2012/06/28(木) 22:24:10.88
>>903
演算子の優先順位じゃないよ
今後恥をかかないようにしっかり覚えとけクズ
928デフォルトの名無しさん:2012/06/28(木) 22:36:39.56
>>916さん、>>918さん、>>919さん、>>924さん、>>925さん、>>926さん、どうもありがとうございますm(__)m。
929デフォルトの名無しさん:2012/06/28(木) 22:45:25.27
いいってことよ
930デフォルトの名無しさん:2012/06/28(木) 22:48:13.84
>>916はuy
931uy:2012/06/29(金) 01:30:09.95
演算子の優先順位の問題だよ
特例みたいな抜け道の書き方が用意されているだけで

コンパイラくらい作ってからわめけカス
932uy:2012/06/29(金) 01:39:29.74
>>909
はぁ?
さっさとJAVAで描けよ
933デフォルトの名無しさん:2012/06/29(金) 01:41:46.29
「gcc -nostdlib -m32 -c test.c」と「gcc -nostdlib -m32 -c test2.c」
で作成したtest.oとtest2.oをリンクしたいのですが上手く行きません。
純粋に「gcc -nostdlib test.o test2.o」とやると warning: cannot find entry symbol _start; defaulting to 0000000000400144のような警告はが出ます。
どのようにやればいいですか?
934デフォルトの名無しさん:2012/06/29(金) 01:47:45.60
連投すみません。
2つのオブジェクトを結合して1つのオブジェクトにしたいと言う事です。
よろしくおねがいします。
935デフォルトの名無しさん:2012/06/29(金) 01:52:38.30
あのさーuyちょっと考えてみろよ、*と[]の優先順位?が逆だったとしたら、ポインタの配列を宣言するのに()が必要になるだろ結局。
特例でもなんでもないよな?
936デフォルトの名無しさん:2012/06/29(金) 01:57:19.23
>>933
-nostdlib
とってみるとかせんの?
937デフォルトの名無しさん:2012/06/29(金) 01:57:31.07
警告が出てるだけならできてるでしょ
938uy:2012/06/29(金) 03:58:41.94
また謝らないのか
939デフォルトの名無しさん:2012/06/29(金) 04:40:49.55
ごめんなさい

で、何が?
940デフォルトの名無しさん:2012/06/29(金) 07:13:31.22
間違ってるのはuy
だからさっさと消えろゴミクズ
941デフォルトの名無しさん:2012/06/29(金) 10:35:04.49
初級者はDeclaratorもしらんのだな。
942デフォルトの名無しさん:2012/06/29(金) 11:53:59.83
>>933
リンカは普通、結合されたオブジェクトをオブジェクトとして出力することはしない。
つまり、gcc -nostdlib test.o test2.oではオブジェクトを結合して実行モジュールにしようとしている。
そして恐らくは、test.oにもtest2.oにもmain()がないので警告されている。
全体、何をしたいんだ?
943デフォルトの名無しさん:2012/06/29(金) 12:15:05.04
くぷぅ
944942:2012/06/29(金) 12:35:48.45
あー訂正。nostdlibだからmain()ではなくてエントリポインタである_startがないってことか。
まぁ、本質は変わらないけど。

便宜上、オブジェクト(ファイル)を纏めたいならar(アーカイバ)で纏めればいいんじゃないのか?
普通のリンカなら、できたアーカイブファイルを指定するだけでtest.oとtest2.oをリンクできるか試みてくれる。

つーか、この辺りの話はWindowsに関係ないし、環境依存OKのスレ向きだなぁ。
945デフォルトの名無しさん:2012/06/29(金) 13:06:54.26
stdlib内に真のエントリポイント_start()があって、
そいつがmain()を呼び出してくれる
946デフォルトの名無しさん:2012/06/29(金) 13:48:35.07
>>942
gcc -Wl,-rで上手く行った。
用途はちょっとな。作りたいものがあるだけ。
947デフォルトの名無しさん:2012/06/29(金) 14:28:47.30
ぱーぷぅ
948デフォルトの名無しさん:2012/06/29(金) 14:31:37.25
>>946
つまり ld -r
949デフォルトの名無しさん:2012/06/29(金) 14:36:04.02
            ,:::-、       __
      ,,r::::::::::::〈:::::::::)    ィ::::::ヽ
      〃::::::::::::;r‐''´:::::::::::::::::::::ヽ::ノ
    ,'::;'::::::::::::::/::::::::::::::::::::::::::::::::::::
     l::::::::::::::::::l::::::::::●::::::::::::::●:::::ji
    |::::::::::::::::::、::::::::::::::( _●_)::::::,j:l  クマー!
    }::::::::::::::::::::ゝ、::::::::::|∪|_ノ::;!
.    {::::::::::::::::::::::::::::`='=::ヽノ:::::/     
    ';::::::::::::ト、::::::::::::::i^i::::::::::::/
      `ー--' ヽ:::::::::::l l;;;;::::ノ
【ラッキーレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です


950デフォルトの名無しさん:2012/06/29(金) 15:48:10.51
関数の外側で変数を宣言する場合なのですが
extern をつける場合と、つけない場合で、何か意味的に違いがありますか?
951デフォルトの名無しさん:2012/06/29(金) 15:55:12.74
つけてないと そこに本体がいるとする
つけると その変数の本体がいないとする

最終的には複数のソースで唯一の変数を作らなきゃいけないので
どのソースに本体が居ます 他はそこを参照してくださいな という制御
952デフォルトの名無しさん:2012/06/29(金) 16:02:49.38
>>951
理解しました、ありがとうございます
953デフォルトの名無しさん:2012/06/29(金) 17:39:33.38
extern付きと無しは被ってもいいの?
一つのソース内で、

extern int a; //どこかにあるよ
int a;    //ここに実体

これはOK?
954デフォルトの名無しさん:2012/06/29(金) 17:41:40.69
>>953
OK
955デフォルトの名無しさん:2012/06/29(金) 18:44:57.71
extern int x;
void test() {
x = 123;
}
int x;

これとか
956デフォルトの名無しさん:2012/06/29(金) 18:49:25.79
>>953
実態がどっちかというのは決まってない。
957デフォルトの名無しさん:2012/06/29(金) 19:12:24.77
extern は関数の宣言では必要だけど
グローバル変数の宣言では要らないんだっけ?
逆だった?
958 ◆QZaw55cn4c :2012/06/29(金) 19:24:23.47
>>957
extern なんていらない子。使っていいことなどない。
959uy:2012/06/29(金) 19:26:34.65
>>958
externは俺のものだ
ゴミカスは黙ってろ
960デフォルトの名無しさん:2012/06/29(金) 19:28:29.02
>>959
よっ、ゴミカス
961デフォルトの名無しさん:2012/06/29(金) 19:29:21.72
やめるのですボクたち
962デフォルトの名無しさん:2012/06/29(金) 19:41:01.73
ふっふっ
963デフォルトの名無しさん:2012/06/29(金) 19:44:37.59
void hoge(void)
{
extern void hage(void);
extern int foo;
hage();
foo++;
}
964デフォルトの名無しさん:2012/06/29(金) 21:38:41.09
ふっほっ
965デフォルトの名無しさん:2012/06/29(金) 21:41:08.46
ふつへっ
966デフォルトの名無しさん:2012/06/30(土) 04:39:18.62
ぬっふぇ!
967デフォルトの名無しさん:2012/06/30(土) 10:42:18.55
>>957
extern はグローバル変数の外部宣言では必要だけど
関数のプロトタイプでは要らない
QZはファイル分割やヘッダーファイル知らないのか?
968uy:2012/06/30(土) 12:38:15.59
defineにループ文すら実装しなかったゴミカス言語の話か
969デフォルトの名無しさん:2012/06/30(土) 12:47:34.13
スレタイが嫁
970デフォルトの名無しさん:2012/06/30(土) 13:26:11.58

  ∩―‐、                                  
 / (゚) 、_ `ヽ                               
/  ( ●  (゚) |つ                            
| /(入__ノ   ミ                      人ノ゙ ⌒ヽ       彡ミ彡)彡ミ彡  +:;'
、 (_/    ノ                ,,..、;;:〜''"゙゙       )  从    ミ彡ミミ彡ミ  :;'
\___ ノ゙  / ̄ ̄ヽ_,,..、;;:〜-:''"゙⌒゙          彡 ,,     ⌒ヽ::::/彡:: :::ミゞ::::从从
   i i⌒\__ノ     ノ::::::゙:゙                    '"゙    /: : : : ::;彡ミ: ;:: ; : : : :ゝミ)
   ヽヽ ヽ    / /   `゙⌒`゙"''〜-、:;;,_              ) ミ{:: :ミ: :ノ --‐' 、_\:: ミ:}  
    )) )-─/ /            ⌒`゙"''〜-、,,      ,,,彡⌒''〜 {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
    // /  //  /                     "⌒''〜"       l: :ノ /二―-、 |: ::ノ
   ((__ノ  // /                                   | //   ̄7/ /::ノ  
       // ノ                                    〉(_二─-┘{/  
       |_|_/                                   /、//|  ̄ ̄ヽ
                                           /   // |//\ 〉
                                          /    //   /\ /
                                               ↑
                                              ニート uy











971デフォルトの名無しさん:2012/06/30(土) 15:42:23.79
>>970
そういう下品なのはRubyスレでやってくれないかな
972デフォルトの名無しさん:2012/06/30(土) 15:47:08.78
1000
973デフォルトの名無しさん:2012/06/30(土) 19:02:06.41
ふう
974 ◆QZaw55cn4c :2012/06/30(土) 19:12:20.00
>>967
>extern はグローバル変数の外部宣言では必要だけど
ところが、外部変数であっても条件つきで extern なしでリンクが通る場合がある。
http://pc12.2ch.net/test/read.cgi/tech/1201153965/139
"tentative definition"

私見だがこれはリンカ依存。
これが結構便利で頻繁に使わせてもらっている。
975デフォルトの名無しさん:2012/06/30(土) 19:52:54.64
リンカの都合でexternを省略できるのって、そんなもんどこが便利なんだ?
頻繁にw使ってるとこを具体的に聞きたいもんだが。
976 ◆QZaw55cn4c :2012/06/30(土) 20:12:55.18
>>975
>リンカの都合でexternを省略できるのって、そんなもんどこが便利なんだ?
「どんな場合でも extern が省略できないリンカ」というのはみたことがない、.obj, a.out, coff, elf どの時代でも。
977デフォルトの名無しさん:2012/06/30(土) 20:28:49.52
そんなのどーでもいーけど
で、どこが便利なの?
978デフォルトの名無しさん:2012/06/30(土) 20:32:51.44
入力の手間が省けるくらいなもん
979デフォルトの名無しさん:2012/06/30(土) 20:34:01.92
共有な変数名としてコードに落とすことがあるからね、最近のコンパイラとかは
980 ◆QZaw55cn4c :2012/06/30(土) 20:35:48.43
>>977
特定のひとつのソースの外部変数は extern 抜きで書き、他のは全部 extern をつける、とかめんどくさいことを特に意識しなくてもいいこと。
外部変数を .h に書いておいて、その外部変数使う .c でのみその .h をインクルードすればいいだけ、というのもある種のスコーピングになりうる。
初期化はちゃんとコードに書かないといけないけれども、これはある意味必然だ。
981 ◆QZaw55cn4c :2012/06/30(土) 20:36:46.67
>>978
ま、そのとーり。
982デフォルトの名無しさん:2012/06/30(土) 20:48:08.05
そんなもんが結構便利って、いいかげんな仕事しかしてねぇんだなぁ。
983 ◆QZaw55cn4c :2012/06/30(土) 20:59:12.90
>>982
同様の趣旨で MASM6 には EXTERNDEF ディレクティブっていうのがあったんだよね。
984デフォルトの名無しさん:2012/06/30(土) 21:00:42.95
struct A {int a};

main()
{
struct A __i686;
__i686.a = 686;
}

上記のようなコードがgccだとエラーになる場合があるので困る。
glibcのソースコード中にもこれ由来の問題が昔からあるのだが、いまだに治ってない。gcc,glibcどちらの問題なのか?そんなウルリッヒドレッパー。
985デフォルトの名無しさん:2012/06/30(土) 21:04:39.16
boke.c:1:16: 警告: 構造体または共用体の最後にセミコロンがありません [デフォルトで有効]
986 ◆QZaw55cn4c :2012/06/30(土) 21:08:33.17
>>984
http://codepad.org/hGhMhuxO
__686 ってgcc特有のキーワードっぽいね、よくわからないけど。
987デフォルトの名無しさん:2012/06/30(土) 21:13:54.07
いや、ふつーこうじゃね?
>ttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.5.4.html
988デフォルトの名無しさん:2012/06/30(土) 21:15:53.50
最近のgccをi686以降のみ対応で決め打ちビルドすると、組み込みマクロに #define __i686 1 などがずらっと追加される。
普通にコンパイルするだけでも、ソースコードに #define __i686 1 が頭に追加されてる状態。このマクロを利用してCPU最適化コードへの#ifdef分岐に使ったりできるのだが、
弊害として変数名などに__i686を使った場合に、マクロで1に置き換えられてしまうので、当然エラーとなる。

これが原因で最新のglibcがビルドできない。
しかも昔からある問題らしいhttp://www.gcd.org/blog/2009/10/179/
__i686なんてよくある名前を組み込みマクロにしてるgccはどうかしてる。
989デフォルトの名無しさん:2012/06/30(土) 21:17:53.44
>>986
gccのverが古くねえか?
990デフォルトの名無しさん:2012/06/30(土) 21:18:43.80
>>988
glibcのverが古くねえか?
991デフォルトの名無しさん:2012/06/30(土) 21:20:08.57
つかglibcがgccでビルドできないって…
992 ◆QZaw55cn4c :2012/06/30(土) 21:22:07.25
>>988
プリプロセッサ制御用コマンドラインオプション -U ではだめなのでしょうか?めんどくさそう。
993デフォルトの名無しさん:2012/06/30(土) 21:23:39.42
>>991
どちらも協調性に難ありまくりな作者が書いてるコードだからな
994デフォルトの名無しさん:2012/06/30(土) 21:24:07.18
おみゃがビルドしてる(使ってる)gccとglibcのver晒せや
995デフォルトの名無しさん:2012/06/30(土) 21:26:18.71
次スレは980踏んだQZが立てるのか? つーか、さっさと立てろよQZ
996デフォルトの名無しさん:2012/06/30(土) 21:38:08.39
997 ◆QZaw55cn4c :2012/06/30(土) 21:38:35.52
>>995
C言語なら俺に聞け(入門編)Part 103
http://toro.2ch.net/test/read.cgi/tech/1341059858/
998デフォルトの名無しさん:2012/06/30(土) 21:39:26.09
>>996
999はちみつ餃子 ◆8X2XSCHEME :2012/06/30(土) 21:41:38.74
>>999 なら長門は俺の嫁
1000デフォルトの名無しさん:2012/06/30(土) 21:41:57.28
1000get
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。