321 :
デフォルトの名無しさん :
2012/06/12(火) 20:25:48.12 ある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の値を変えずに読み書きするにはどうしたらいいですか?
>>321 float の7桁目以降は飾りなので気にしない
fabsf(a - b) 桁落ち 絶対値がほぼ等しい異符号の数値同士の加算後や、同符号でほぼ等しい数値同士の減算の後、正規化で有効数字が減少すること。
325 :
デフォルトの名無しさん :2012/06/12(火) 20:52:43.23
>>324 それで a b は(だいたいほぼ)同じだとどうやって比較したらいいのですか?
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;
>>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 どうもありがとうございます<(_ _)>
>>321 どうしてもfscanfとかで扱いたいなら、とりあえず文字列で受けてからパースするなりすればいいんでないの
あるfloatの値をテキストファイルに書いてまた読み込んで 値の変化がfloatの仕様上許容できる範囲かをチェックしたいだけなんだけどそんなに難しいことなの? %E の出力は同じだから同じ丸め方で一致するか比較できればいいだけで %E の出力の桁数がC言語の仕様上7桁と決まっているのなら 絶対値の小さいほうの10の対数とってからEPSILONを求めればいいけど そのへんを組み込みの定数から華麗に求められないの?という質問です
符号部と指数部を揃えた上で仮数部の差が一定の範囲内であれば一致と見なすとか ゼロ近傍は符号の関係で別途考慮する必要がある
数値計算の誤差無くすのに人類がどんだけ苦労したと思ってんだ アホはクソして寝ろ
>>335 ふたつの値の差の絶対値が許容できる誤差の範囲であれば一致しているとみなしてよいと思ってて
その「許容できる誤差の範囲」を比較する値とFLT_EPSILONみたいな定数から求められればいいと思うんだけど
できないの
fabsf(a - b) <= N * FLT_EPSILON * fmaxf(fabsf(a), fabsf(b)) でいい(Nは16くらい) というようなのがチラホラあるんだけど、こいつら全員間違っているんでしょうか
>>321 float の7桁め以降は飾りなので気にしない。(再掲)
別に精度が悪くなっている/よくなっているわけではない。単に10進表示したときにどこで丸めるか、だけの話で、%f は下々の桁まで展開しちまっているのでは?
>>340 妥当にみえるのですけれども。
342 :
デフォルトの名無しさん :2012/06/13(水) 02:19:52.26
複素数を入力すると、偏角と絶対値を出力するプログラムを教えて下さい。
偏角は atan2(imag, real) 絶対値は sqrt(real * real + imag * imag)
つ[hypot()]
>>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;
}
>>341 妥当に見える理由はなんでしょう
a b の絶対値を掛けるのは、FLT_EPSILONが1.0を基準にしたものだからスケーリングするためで
16というのは4bit分は余分な精度っぽいので捨てろという意味でよいですか?
そもそも計算誤差ではなく、scanf %E で読みこんだときに
書かれていた値以上の精度の桁が勝手についてるのが悪いのですが
それによってズレる範囲がFLT_EPSILONから求める値、
つまり計算の誤差の範囲と同じくらい、ということにしてもいいの?
>>346 10進小数の2進数への直し方とエプシロンの意味分かる?
何を困っているのかよくわからない 浮動小数点数で2進10進間の変換をしたら循環小数になる場合がある 情報を失いたくないならバイナリで書きましょう printfにfloatは渡せないよ、doubleに変換される 可変引数だから
doubleに変換して必要な精度でfloatに変換しろよ。
全部double使えばいいよ
>>346 >書かれていた値以上の精度の桁が勝手についてるのが悪いのですが
これが間違い。勝手についてくるのではない。精度に関しては float 4バイトの内容以上でも以下でもない。
10進法表示としたときに、どの桁まで展開されるかによって、一見表現が違うようにみえるだけなのです。
float の7桁め以降は飾りなので気にしない。(再々掲載)
>>321 が分かってないのは
float f=1970.199707;
ってすると、fの値は1970.199707であってそれ以外ではない!
と思ってることでしょ
でもprintf("%.8f",f)とやれば分かるように、そうじゃない。
精度を指定しない%fが6桁という仕様からくる錯覚…
2進の世界で1/10はできないっていうのはわかります 2進の世界では1/10するには1/2^nのシグマをとって限りなく0.1に近づけるのですよね
何事にも限度はあるよ!
0から99までの100個の戻り値のサイズがばらばらの関数がある。 これらの関数を引数no 0-99に応じて読み出す関数 long readset(int no){}があったとすると、readsetの中身 の処理をどのように作るのがいいでしょうか? switch caseで分岐すると処理が長くなりすぎるし、関数ポインタ の配列にしようにも0-99関数の戻り値がばらばらなのでうまくいかないし。 0から99までの関数の戻り値はlongが最大なので、intで足りる関数も一 番大きいサイズの関数に合わせて戻り値longで作れば関数ポインタ配列で 割とスッキリ作れますが、そういうのってありですかね。
その readset() の戻り値の取り扱いが 引数の no 寄らず固定でいけるんなら 個別関数は戻りを long にするな。 たまたま値域が最大で long にまとまるってだけで あるときは 座標値を意味してたり、あるときは関数の成否を意味してたり とばらばらだったら まとめようとは思わない
void readset(int no, void *ret)にして 戻り値の代わりにretに書き込む。
readsetの呼び出し元が戻り値を7桁LCDに表示するんですが、 その関係で戻り値がlongになってます。 0-99の100個の個別関数は意味はばらばらですが、なにかしらの 設定値です。関数の成否を表すようなことには使っていません。
>>357 この状態です
a を %E で出力した後その値を %E でbに読むと値が変わっているけども
その差が許容される範囲であるのなら a と b は一致している判定したいだけ
>>351 10進数で7桁目というのはC言語の仕様上決まっていて決め打ちしてもいい値ですか?
浮動小数点数というものを少しは自分で調べた方がいい Cの仕様の範囲内ではないが、IEEE754がデファクトスタンダード 正規化数しか考えないならその制度は10進でlog(2^24) = 7.2247199桁 非正規化数も考えるならlog(2^23) = 6.9236899桁 >その差が許容される範囲であるのなら a と b は一致している判定したいだけ そうすりゃいい あなたが許容する範囲もあなたが自由に決めていい
>>321 この質問に立ち返ると
>%fだと精度が高いのはなぜですか?
%Eの有効桁数は6桁。%fの有効桁数は小数点以下6桁
つまり整数部分があると%fの有効桁数は増える(それでもfloatの有効桁数7桁どまりだが)
>fprintfとfscanfでfloatの値を変えずに読み書きするにはどうしたらいいですか?
%.8Eなど精度を上げるか、いっそのこと4バイト配列と見なして16進文字列に変換してしまえば精度は維持できる
ttp://ideone.com/QK45N 人間の目で分かりづらいのであれば%.8Eなどを併記しておき、読み込む際は無視する
>>363 誤差の範囲は7桁より下と言いたかった人ではないの
>>363 状況に応じたというのは a の b の値に応じた汎用的なチェックはC言語の範囲では書けないという意味ですか
汎用的にfloatの値を保存して読み出したいだけなので値の範囲は float の範囲が全部あります
>>365 %Eのフォーマットが7桁って何かの規格によるものでしょうか
記憶違いかもしれないけどVC++の%Eは8桁だった気がする
すみません clで確認したら7桁でした ideoneの人が一番分かってそうでしたが 結局誰も答えられないということか
>>371 絶対値の大きさに依存できないんですよね
指数部は動き回るわけで
10進数7桁でいいなら
if (fabsf(a - b) < 1.0e-7f * powf(10.0f, floorf(logf(min(fabsf(a), fabsf(b)))/logf(10.0f)))) {
// ok
}
みたいな式でもいい気がするのですが
>>372 別にいいけど、そのこだわりには普通は意味がない。
普通は、だいたいどういう大きさの数値を扱っているかわかってるから
>>371 ぐらいの方法でいい。
やりたいことは誤差を無視して比較する、ってことなはずだけど
まず、10進7桁の精度は絶対ではない。みんな2進数だって言ってるでしょ。
それに途中で演算しているなら、どんどん誤差はたまっていく。
いつまでも 10進7桁の精度が有効とは限らない。
>>373 テキストベースで汎用的なfloatの送受信処理が書きたいので数値の大きさは想定できないです
絶対値の大きさはFLT_MAXからFLT_MINまであります
演算による誤差の話はここでは問題にしていません
で、もちろん、floatのサイズなんかの話もあるし正確に移動したいわけではなく
%Eで表現できる範囲でよくて、極端に言えばsprintf %Eで文字列比較して一致していればよくて
それはつまり仮数部10進数7桁目までが一致していればよくねと思い始めていますが
これも難しいですか?
>>374 >%Eで表現できる範囲でよくて、極端に言えばsprintf %Eで文字列比較して一致していればよくて
じゃあそれでいいじゃん
char test[] = {0x01, 0x02, 0x03, 0x04}; っていう配列があったとして long op(void) { return (long)test[3]; } とキャストした場合戻り値って0x01020304でなく0x00000004に なりますよね。 これって新たに4byteどこかに確保され0x00000004で上書きされ てるってことですよね?
>>376 そうだよ
戻り値用のスタックの4バイトに0x00000004が格納される
いや普通レジスタだから
>>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 とか使えばいいよ
>>376 test[3]が0x01020304なワケがない
キャストに関係なく
よく読めよ
C言語で、外部の.exeファイルを実行するにはどうすればいいですか? 使っているソフトはVS2010です
system
system()
本に記載されているサンプルプログラムをVC++2010で実行したところ if(fp_i ==NULL) { fprintf(stderr,"Input File cannot open\n"); exit(8); の部分で 関数exitが定義されていません と警告がでました。 } ヘッダファイル等をインクルードする必要があるのでしょうか?
本とVCを窓から投げ捨てれ
printfだろうとstdio.hをインクルードしないと未定義だからな exitを選択してF1キーでヘルプを調べて必要なヘッダファイルをインクルードしる
389 :
デフォルトの名無しさん :2012/06/14(木) 21:00:16.57
goto文を使う場面ってどんな時ですか?
三重のfuckなループから一瞬で抜け出したい時、 あるいはその会社から抜け出したい時
goto使わないことだな、初心者は特に なれると、どういうときに使えるのか、わかってくるよ
goto文を使っていいのはエラー処理と多重ループからの脱出のみ ここは試験に出るから覚えておくように
俺もgoto使って会社から抜け出さないと
多重ループから抜けたいお・・・ でもフラグ使うとソースが読みづらくなるお・・・ そうだ、gotoで一気に抜けよう! エラー処理でmallocした領域を解放したいお・・・ でもいちいち解放してたら大変だお・・・ そうだ、gotoで関数の最後に飛ぼう! 少なくとも前の方に飛ぶ事はないな
受験と同じに点数取ることだけ考えてたら、初心者止まりになる可能性が高くねえか?
対象データをより大きくしようと、配列宣言で取る領域をさらに大きくすると 実行時にフリーズになってしまうんだけど、どうしたらいいんでしょう?
グローバル変数にするかstaticを付ける
__fastcallで書いた方いいだろ
400 :
デフォルトの名無しさん :2012/06/15(金) 07:27:17.98
>>386 system("");
を使いたいなら
#include <stdlib.h>
を書かなければならない
>>400 嘘乙。このスレ的には必要はない。
しかも、問題になっているのはsystemじゃない。
>>386 >>388 それはc++としてコンパイルしているから。cならエラーにならん。
# インクルードしておいた方がいいことには違いないが。
お礼は入りませんよ
解決したかどうかぐらいは報告しろよクズ
お礼は三行
おまえらマルチに優しいな
最近は、人の質問をあちこちにコピペしてマルチ認定するのも居る。 応答したい奴がすれば良いんじゃね?
アホか 質問者がトリつけりゃあいいだろ そこまで頭が回らないなら C言語以前だ 小学中学から人生の勉強やり直した方が ソイツのためだろ
トリが違うからマルチじゃなくてコピペされたんですってかw? 判断付かねぇよ
良い流れだ。
>>412 スレチだし、韓国では普通のコト。
一々書き込むなよ。
414 :
デフォルトの名無しさん :2012/06/17(日) 09:40:08.67
>>391 逆だね
初心者ほど何でもありで
やりたい放題やっておいたほうがいい
分岐命令そのものの否定という間違った理解こそ有害だ
>>414 やりたい放題、というほどやらない人が大半だから(私もここでやりたい放題やることができるようになった口だし)、最初に制限をかましておくことも時には必要で、goto はそれにあたるのでは?
>>415 低脳がやりたい放題やってもやっぱり低脳ですね(笑)
やりたい放題って人の話を聞かないとかミスを指摘されても無視するってことでしょ? そりゃいつまでたっても成長せんさ。
わかってgoto使ってるんなら、いいんだけど 難読化するような使い方してるの見たことあるけど、何作ってるのってかんじだったなあ、BASICの考え方をそのまま持って来ましたって...
そう言うのを書く人はこう思ってる、 「なんでC言語とかいうアホは、BASICのようにキチンとgotoが使えないんだ」 と
BASICだって80年代には「goto使うなgosub使え」って言われてたよ ベーマガのDr.Dとか
,_________________ | | | ._,,..-..,,,__ ○ .| | |:::::::: ニ=.T _______. .| | |:::::::: ニニ ト、 _,.-个:::::::| | |___ .|:::::::: ニニ |叫 |.=ニレ-'个ー‐-| |.  ̄\:. ニニ.|叫 ̄ ̄ ̄~T=ニ|::|`'ー.,_ .| |-ー‐''''个.ニニ.レ'´√ ̄ ̄'个-.,|::| 叫 `'ー| |. ニ= |::_,.-'´ / _ ';_ ``|., .| | _,.ト'´ / /入ヽ `;_ \ | | / / ヽ∵フ `;_ \, | |_/ / √ |Y| `'i `;_ \_| | / | |.|.| .| `;_ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>416 ,417
んー、NGワードに登録しないでくれているんだ、ありがとうです。
localtime関数のような構造体へのポインタを返す関数を作ってみると、 「ローカル変数またはテンポラリのアドレスを返します。」と出てきます。 動的に確保されたメモリ領域が解放されるのにそのポインタを返すのはおかしいという解釈でよろしいのでしょうか。 だとすれば何故localtime関数は構造体へのポインタを返す事ができ、それをmainからアクセス出来るのでしょうか よろしくお願いします。
424 :
デフォルトの名無しさん :2012/06/18(月) 00:01:37.21
自動変数は「動的に確保されたメモリ領域」とは呼ばない。 localtimeは、static変数のアドレスを返している。 (処理系によっては、スレッドローカルな変数を使っている)
425 :
423 :2012/06/18(月) 00:04:24.07
>>424 なるほど
勉強になりました
ありがとうございました
いえいえ
今の処理系ってそんなこと警告してくれるんだ
情報系の学科にいるが、絶対に大学院には行かない。 ガチで就職がやばいんで、さっさと小企業に就職しますわ。 プログラミングは絶対趣味にすべき。
例えば小飼弾なんかは ゴミクズ寸前?だったストックオプションを切り抜けて 優雅な引退生活を送ってる ように見える ついでにハクもついた 結局は、入る企業とヌける時期による
プログラミングは場合によって時間食うのがな
プログラミング得意な奴見たことない。 都市伝説でいるのか不思議。
得意っつってもな。 やるこたぁKBDでパチパチ打ち込んでるだけだからな。 その動きじたいがスゴイ!……ってな話でもないし ヘタなヤツも動き自体はプロと同じだろうし。 それにTVで放映されるような種類の職でもなし、 UMA認定されるのも当然だろう
BPS バトル プログラマーシラセ
>>435 すげぇのはいる。
一体どこいらがすごいのかが分からないくらいに凄いと言われてんのが。
もちろんソイツは情報課
わしゃーおっぱい大学出身じゃ。
スタックオーバーフロー
443 :
440 :2012/06/19(火) 00:42:06.25
>>441 ご返答ありがとうございます。
実行してファイルを検索してみたところ、残念ながら一致するファイルは見つかりませんでした。
このようなプログラムを書くとファイルがおかしな(いつもと違う)場所にできてしまうことが多い、ということでしょうか
444 :
440 :2012/06/19(火) 00:46:46.21
>>442 ご返答ありがとうございます。
データ数を50に変更してみたところ、同じようにファイルは出力されないままでした。
また、データを二分探索で探せるように先ほどのプログラムを拡張した(クイックソートはそのまま)ところ、正しく結果が出力されるようになりました。
クイックソートだけを記述している場合のほうがスタックオーバーフローを起こしやすいということでしょうか。
レスを分けてしまい申し訳ありません。
>>443 Visual Studio ならデバッガで実行してみればいい。
ツール→デバッグ開始
それでエラーにならなかったら
ファイルはどこかにできてる。
>>444 とりあえずgccでは特に問題なく動いているみたいだけど。
447 :
440 :2012/06/19(火) 01:35:06.51
>>445-446 皆さんご返答ありがとうございます。やはり私の実行の仕方がまずかったのでしょうか。
他の方法でも実行してみようと思います
448 :
uy :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" しないとダメな場合もあるかもしれない
>>440 ,447
swap ( data, 0, rand() % n ); は何のため?
450 :
uy :2012/06/19(火) 04:41:52.26
今はそこじゃねーだろカス
メモリ的な意味でエラーになってるならエラーが表示されてしかるべきだろう。 だから最初にこう聞くべきだった。 「エラーメッセージはないの?」と。
へえ
453 :
片山博文MZボット ◆0lBZNi.Q7evd :2012/06/19(火) 16:27:22.49
454 :
uy :2012/06/19(火) 23:35:26.95
だから関数に割り当てられたスタックサイズの上限超えてるっつってんだろボケカス
スタックの上限って関数単位でコントロールできる環境ってあるの? アプリケーションで1括りや スレッド単位で って環境は知ってるけど
たかが200KBで何ほざいてんだこのアホコテどもは
スタックサイズの問題なら最初の奴でもエラーにならなきゃおかしいだろ
配列をstaticにしたら普通に動いた やっぱり配列が大きすぎてスタックオーバーフローを起こしてるな スタックを多目に取るかmalloc/newするか
ちゃんとコテ付けろよ
460 :
uy :2012/06/20(水) 02:10:25.58
uyって真性の池沼か
スタックが関数ごとにさらに分けられてる? なにそれ?
スレッド?のことじゃあ
たぶんスタックフレームのこと(?)
スタックの問題なら50に変えてもファイルが出力されないわけねーだろw
カレントディレクトリの問題じゃね?
441に戻る
でもWindowsはフラットモデルを採用したためにスタックサイズがコンパイル時に固定 されちゃったんだよな(ページングを使用) セグメントモデル使ってればスタック可変に出来たのに(Unix、Linuxの floating stack model はそうなっている) よほど8086時代のセグメントが嫌だったのか しかし確かにスタック可変というのは良くないっちゃあ良くない点もあるからこれでいいのかも
は?
>>440 ,447
ファイルは出来るし、再帰レベルは2桁(100未満)だから、スタックオーバーフローの可能性は低い。
>>440 かもな。
471 :
デフォルトの名無しさん :2012/06/20(水) 10:51:12.72
私大の情報科とかヤバそう そら院行かずに就職したほうがいいわ
void line(void) { int i; 以下省略 この(void)ってなんですか? あとプロトタイプ宣言ってなんですか?
>>472 あなたがCをどこまで知っているかによって説明の仕方が変わります。
・(void)
(void)じゃなくて()なら判りますか?
・プロトタイプ宣言
関数の宣言のうち、引き数リストを明示したものを指します。
474 :
デフォルトの名無しさん :2012/06/20(水) 11:54:27.98
ふう
新しいプロジェクトの作成で、Win32、MFCアプリ、Win32アプリなど があって、誤って作成したんですが変更するにはどうすればいいですか?
>>475 新しく作り直せばいい
できたものを比較すれば何が違うのかわかるよ
削除して作り直した方がいいよ
つーか、プログラムの使い方はスレ違いだろ、と。
よいしょっと
まー入門編スレだし
>>478 おまえ頭いいなぁ・・・気付かんかったw
で、プログラムの使い方はどこで聞けばいい?
>>481 Visual Studio の事なら Visual Studio スレで訊けばいいんじゃね
>>481 >で、プログラムの使い方はどこで聞けばいい?
ソフト板だろ。JK
主婦の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
>>447 446だけどVC++2010expressでも試してみたけど、
普通に実行できたよ。
hogeソリューションを作成したけど
\hoge\hoge\data.txt
にできてた。今ひとつファイルが置かれた場所は腑に落ちないが、
参考までに。exeファイルと同じフォルダにできると思ったのだが、、、。
スタックサイズ増やせばいいがな
スタックがなければヒープを使えばいいじゃない
ふにゃ〜
まだスタックとか言ってんのかよ
すったかたー。
【6月19日 AFP】大韓航空は18日、ケニアの人々が「原始的エネルギー」で満ちていると広告で表現したことを謝罪し、
ウェブサイトから広告を削除した。
ソウル・ナイロビ間の便を近日就航する予定の大韓航空は、そのPR広告で「大韓航空で飛び、アフリカの大いなるサバンナ、
サファリツアー、そして原始的エネルギーに満ちた先住民たちを楽しみましょう」と表現した。
あるケニア人はこうツイートしている。
「私の #原始的エネルギーを処理するために今日はライオン狩りとゾウいじめをしようと思う」
別のケニア人はこうツイートした。
「私は毎朝起床するために #原始的エネルギー を使っています」
数百件のツイートが集まったことを受け、大韓航空は、「ナイロビ便の最近の広告についてしかるべき確認を行っています。
この状況に対して心から謝罪いたします」と発表した。
以下省略
http://www.afpbb.com/article/economy/2885046/9141540
492 :
デフォルトの名無しさん :2012/06/20(水) 23:29:19.87
スタックって64bitくらい?
>>485 起動時のカレントディレクトリは起動したアプリによって決定される。
エクスプローラからならプロパティで変えられるし、VisualStudioでは便宜上ソリューション配下のバイナリ置き場の上になっている。
495 :
uy :2012/06/21(木) 05:53:45.26
Cのスタックオーバーフローは再現性が低いんだよ よく覚えとけ 自身のプロセスに割り当てられたスタックより上を使ったとしても そこのメモリを誰も使っていなければスタックオーバーフローしてても普通に動く メモリ配置が変われば動かなくなる事もある そんなゴミカス言語でITは作られてる 動的言語とか、動的言語の問題点とか ソースコードかいているうちに目に見えないバグとポインタの使用によって脆弱性だらけになっていくC言語に比べたら メモリ管理だけはしっかりされているだけよっぽどマシだ
スタックより上って…… せめてスタックオーバーフローとは何か、調べてから書けよ。
いやもう書かなくていいよ
スタックの底が FFFF だった頃のご老人かと
そうだね、自分でメモリ管理できない子はGCある言語使ったほうがいいよ 特にローカル変数で1MB超えるようなメモリ使っちゃうようなおバカさんはね
500
次に該当する人は少し勉強しましょう。 ・スタックオーバーランとバッファオーバーランは同じだと思っている ・ローカル変数を沢山使うと確保により時間が掛かると思っている ・関数を呼ぶと必ずスタックを消費すると思っている ・自分を卑下しつつもエリートであると矛盾したことを言ってしまう
503 :
uy :2012/06/21(木) 15:30:51.62
>>496 どんだけ知識ないのにレスしてんだ
これだからOSすら作れないゴミは
504 :
uy :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]);
}
ここら辺にはいってるデータがなんなのかを知れゴミクズ
505 :
uy :2012/06/21(木) 15:41:02.09
理解したら二度と話かけんな 二度と話かけんなよ
506 :
uy :2012/06/21(木) 15:44:13.48
>>501 > ・スタックオーバーランとバッファオーバーランは同じだと思っている
はああっアアアアあああああああ???????????wwwwww
どんな俺様実装ですか??
スタックも所詮、割り当てられたバッファに過ぎない
バッファオーバーランが スタックオーバーランなんだよ
> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
それだけpush命令行われてるのにバカじゃねえの??????
> ・関数を呼ぶと必ずスタックを消費すると思っている
>>504 これみてもわからないなら死んだほうがいいと思うwwwwwwwww
> ・自分を卑下しつつもエリートであると矛盾したことを言ってしまう
偽と本物の区別も付かないゴミカスってまだいたんだ
C/C++あたりでゲーム作りたいと思ってるんだけど、まず初めにゲームを作るとしたら どんなゲームがいいんだろう? 知識はprintf,scanfとか、for,while,とかまだ触りだけしかしてないけど 参考書なりぐーぐる先生なりに聞いて独学でやるつもり。 できることならクオリティ高いゲーム作りたいけど はじめから高望みもいけないのでお手軽なものを教えていただきたい C/C++以外の言語がオススメっていうのもあればお願いします
>>506 ローカル変数を沢山使ったからと言ってpushが使われるとは限らない。
スタックポインタの書き換えで終わるならpushなんて出てこない。
関数の戻り番地の話は良いけど、引数の話を持ち込むなら
スタックを使うとは限らない。
64ビット版Windowsなら条件はあるけどレジスタを使って引数を渡す。
正直もう少し落ち着けと言いたい。
残念ながら、それでも不充分。 世の中には関数の戻り先をスタックに積むのはサブルーチン側の役目になっているCPUもある。 そのCPUでは、関数を呼ぶときにはIPを特殊なレジスタに積んでサブルーチンのアドレスをIPに代入するわけだ。 それに、ローカル変数もレジスタが豊富な最近のCPUなら一々スタックに置かない。 まぁ、そんなことはどうでもよくて、関数がインライン展開されてしまえばどの途スタックは関係なくなるよ。 ついでに言えば、スタックオーバーランはスタックオーバーフローと同義と考えられる。 だとすれば、関数呼び出しのネストが深くなってスタックを使い尽くすことを指す。 バッファオーバーランは、スタックに限らずどこででも発生し得る。有名なのは、gets()だね。 まぁ、>501の言うように少しは勉強しろってこった。
/) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
うむ。 スタックがなんだかんだとつまらんことを気にするよりライブラリの使い方一つでも読み解いてた方がマシ
>>509 例を挙げただけなのに不十分とか言われても…
それに結局スタックを使っているような…
使う変数はレジスタでも、呼び出した関数でレジスタを使うためにレジスタの値を
スタックに保存する場合だってあるわけだし、ちょっと乱暴な話になってる気がする。
>>513 スタックの話も知ってないと困ることがあるから、つまらんことでは無いと思う。
それにしても、何でコテはすぐ荒れるんだろう…
ちゃんと糞コテ付けろ
516 :
uy :2012/06/21(木) 19:59:59.45
七誌が俺に見えてきてるなら病気だぞそれ
517 :
uy :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]);
}
ここら辺にはいってるデータがなんなのかを知れゴミクズ
猫でも使ってるんだけど、ポインタで???になって困ってる オススメの参考サイトとかある?
猫でもの良い所はIDEに頼ってないところだけじゃないかな
>>519 わかんない;; 複数の変数を一緒に宣言するみたいな感じ? アドレスの話もふわふわしてる
>>520 サイトありがとう じっくり考えてみる
配列⇔文字列⇔ポインタ ここらへんの関係はややこしい
配列理解してないのに、ポインタガーとか
>>506 >バッファオーバーランが スタックオーバーランなんだよ
バッファオーバーランとスタックオーバーフローは全然違う概念なんですけど。
想定した範囲を超えてアクセスしてしまうのがバッファオーバーラン。
フラットなメモリモデルでスタックがヒープ領域にまで達してしまったのがスタックオーバーフロー
それはそうと、「スタックオーバーラン」?きいたことないね。
>> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
>それだけpush命令行われてるのにバカじゃねえの??????
おいおい、スタックポインタをローカル変数分だけずらす(定数マイナスとする)だけなんですけど。
スタックポインタを動かせるのはcall/ret, push/pop だけじゃないんですけど。
sp に対して加減算するオペコードは普通に存在するんですけど。
そもそもローカル変数をアクセスするときはインデックスレジスタを使うと思うんですけど。
>> ・関数を呼ぶと必ずスタックを消費すると思っている
臨機応変にインラインに展開する賢いコンパイラってあるんでしょうかね。そうでなければ call/ret でスタックを消費すると思いますが、はてさて。
糞コテQZに突っ込まれるようでは糞コテ以下と認定せざるを得ません。本当にかわいそうだと思います。
お薬飲みましたか?
QZひでぇw
527 :
uy :2012/06/21(木) 21:46:30.31
俺がお前たちに言える事はひとつだけ
さっさと死ねとしかいえないわ
>>525 このゴミカスはpush以外の命令は実行時間が0秒とでも思ってんのか?
だったら0秒後にお前が早く死ね
さっさと死ね
>>509 >世の中には関数の戻り先をスタックに積むのはサブルーチン側の役目になっているCPUもある。
???
kwsk。
サブルーチン側うんぬん、というのは ip/pc が変わる前にスタックに積まれるか、変わった後に詰まれるか、っていう差異を問題にしている?
呼び出し側、サブルーチン側の境目の定義を教えてください。
>IPを特殊なレジスタに積んでサブルーチンのアドレスをIPに代入するわけだ。
ということは call のネスト数に限りがあるのでしょうか?
>ローカル変数もレジスタが豊富な最近のCPUなら一々スタックに置かない。
そのかわりに使うレジスタをあらかじめpush/pop しているような気がしてならない‥‥‥。
あるいは使い捨てレジスタを決め打ちしているとか。
今のパソコン環境なら、スタック不足はOSでわかるようになってる スタック検出機能がない環境もある、パソコン以外なら
>>530 うーん、それが、どうやってスタック不足を正確に検出することができるのか、不思議におもっています。
かりにフラットなメモリモデルだとして、ヒープの底とスタックの頭の差をいちいちチェックするのも、なんだか無駄な気がしますし。
>>532 インテルアーキテクチャ (というか 80386 以降) にはメモリ保護の機能があり、
事前に指定した領域にアクセスがあると例外を投げる仕組がある。
例外を受取ったらその領域を有効にするなど、スタックサイズを必要に応じて伸長することが出来る。
>>532 ヒープの底とスタックの頭の差で見てたのはDOS時代?
仮想メモリって、知ってる?
ヒープとスタックって、メモリ空間が2Gもあると隙間ができるみたい
スタック割り当て空間以外をアクセスするとわかるようになってるってだけ
ヌルポも割り当て空間以外をアクセスしてるよってことでしょ
フラットモデルはヒープとスタック領域がほとんど同等に扱われているから問題なんだよ 利点もたくさんあるけど セグメントモデルにするとスタックが足りなくなると伸長するようにOSが組める その分スタックセグメントを別扱いしないといけないなど欠点もある でもこちらの方が安全性が高い
まーたセグメントとか言ってるあほが居るよ
>>536 どうせならユーザースタックpush/popとシステムスタックcall/retもわけたらいいと夢想してきてはいたのですが、もうそんなOS/言語系って存在するのでしょうか?
なんだっけ、規定以上の水を入れたせいで固まりが悪く、阪神大震災では大きな被害をもたらす原因となったんだっけ?
それコンクリート
ああ、フランス人ピエール・シェフェルが始祖とされる音楽の一分野ね。
>>533 仮想記憶もそれと基本的に同じ仕組で実現してるしな
>>538 ユーザースタックとシステムスタック
を、そういう風に分けてるマイコン?ってあるんっけ?
>>543 6809ははっきりそうだったのですが、それ以降はよくわからないのです。68k は違うみたいだし。
>>544 なんか古いの知ってるみたいだけど
push/popだけ分けたのは6809で終わったんじゃね
68000はデータスタックとコードスタックを分けられるね。
分けない環境も多いけど。
>>520 その先頭はとってもダメになるサイトだ。
>データレジスタとアドレスレジスタはそれぞれ8本の使い道が自由です。
もっとはっきりと 「そのサイトはゴミだ」 と言わないとダメだろw 伝わらねーよwww
bigインディアンだろう
>>517 > 俺がいつ「引数」っていった?
> 504
> インライン展開でもしてない限り関数呼んだ時点でスタック使ってるから
>
>
> まずはお前らは
>
> void main(){
> int a[1];
> printf("%d \n" , a[1]);
> printf("%d \n" , a[2]);
> printf("%d \n" , a[3]);
> }
>
>
> ここら辺にはいってるデータがなんなのかを知れゴミクズ
「関数を呼んだ時点」と「はいってるデータ」の繋がりが全く分からないんだが…
printfでも、archによっては引数もある程度はレジスタ渡ししてることもある printfは入り口であって、本体は別の関数だったりするし
時代についていけないのを高飛車に言い放ってごまかそうとしてるのかもしれない?
>>546 68k命令表をみたところでは、ポストインクリメント/プリデクリメントつきレジスタ間接アドレッシングのmovでデータスタックとしてやっていけそうですね。link/unlk は使用禁止かもしれませんが。
実際どうなんでしょう?
>>554 PalmOSはA6をデータスタックに使っていたよ。
今見たけど、linkも使っているね。
x86のレジスタのbp系の使い方してるだけでしょ
>>555 コールスタック・データスタックの話とは関係ないでしょう。
>>556 link/unlink を使うと‥‥‥コールスタックにデータを載せているような気が。
>データスタック フレームポインタのこと?
68kは相対的なコードが吐けるから、データ領域とかのアクセス時にレジスタ経由でやってるだけじゃねえの? x86の勢いがよかったから、絶対番地アクセスが優位になった?
>>559 call/ret に使うスタックはそれ以外の用途では使用しないようにして、バッファオーバーランによる乗っ取りが皆無になればずいぶんと安全になるのでは?というお話です。
>バッファオーバーラン 個人的には、未熟者が作ったって証明でしかないように思ってるけど
ご連絡 平成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/
>>535 プロテクトモードにセグメントなんて無いよ。
>>562 月例のWindowsのパッチですら「未チェックバッファ」とかなんとか頻繁に出てくるくらいですから、「未熟者」よばわりという旧日本軍的竹槍ストラテジーではどうしようもないと思います。
>>565 いや、あります。フラットモデルではセグメント=セレクタを同一にしていると思います。
>>565 てめぇ80286さんをdisってるのかよ?
>>566 有限、無限の違いがわからない人が作ってるだけでしょ
>>569 個人的な経験からいうのもなんですが、ついうっかりやってしまったりします。アマチュアゆえに回避定石や検出手法を知らないだけだといいのですが。
>>571 窓s系やってるのは初心者ってことかい?
>>572 ん?よくわからないんですけど。
Windowsのパッチでバッファオーバーラン関連が少なくない、というのは事実を述べたまで。
アマチュアの自分でもやっちまう、というのは個人的感想を述べたまで。
その両者に関連があるとは一言も申しておりませんが、両方に関連があると考えてしまうその思考過程には興味があります。すくなくとも論理学初歩を通過した思考過程ではありますまい。
バッファオーバーラン で、今だに騒いでるのはどっち方面かよく調べてみようね
馬鹿が論理学を習っても論理的な思考ができるようになるわけじゃないんだな
学習して論理的思考ができるのは最初から馬鹿じゃないよ
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共に正常 ディレクトリ・ファイルの権限の問題なのか、ファイルの中身の問題なのか色々とプログラムを確認しましたが、解決できません。 指定が間違っている、読み取りファイルが空というのでは無いようです。 いちおディレクトリにも権限を与えています。 考えでも良いので、もしよければ意見お願い致します。
感想文的思考じゃあ、プログラム系はできんでしょ
580 :
デフォルトの名無しさん :2012/06/22(金) 23:26:00.15
足したら10になる4次元の組み合わせを1000回作るプログラム。 正し要素はfloat型。 どういうアルゴリズムがいいかな? 3.4323+4.2342+1.323+1.23121=10になればいい ランダム生成。
>正し要素はfloat型。 ?
582 :
デフォルトの名無しさん :2012/06/22(金) 23:30:02.21
>>581 小数点型ってことです。
int型じゃない。
3とか2じゃない。
2.1212
4.0
0.232
とか。
>>580 総和が10って以外に特に制約がないなら
3つランダムで決めて4つ目で帳尻合わせればいい
そのアバウトな問題をどう解けと言ってるのかいな?
585 :
デフォルトの名無しさん :2012/06/22(金) 23:37:20.69
>>583 あーそれが早いかな。
1時間も頭使って俺馬鹿だ。
そんなアバウトな問題じゃなく、3以上の整数nについて、 x^n + y^n = z^n となる自然数の組み合わせ( x, y, z )を見つけ出すプログラム書こうぜ?^^
あ、ちなみにここでは ^ はべき乗とします・3・ Cは pow 使わないとねー
588 :
デフォルトの名無しさん :2012/06/22(金) 23:48:43.94
>>586 n=1,2以外は自然数で無いんじゃないっけ?
マジバカなのかコイツ 1000000なりの長さの棒きれをランダムに三か所で割って あとから1/100000にすりゃあいいだろ…… それを実装して終わりだろが
ところで、イギリスでは自然数というと0を含むらしいな。 あと、前にもこの板で話題になったけど、小数点を表すのに . を使う地域と , を使う地域があるらしいな。 で、小数点に . を使う地域は桁区切りに . を使うので大変ややこしいとかなんとか。
592 :
デフォルトの名無しさん :2012/06/22(金) 23:53:51.24
>>589 フェルマーでしょ。
それ。
ところで最近はiphoneのアプリとか多いわけだが、どんなゲームが
流行ってるの?やっぱり形を変えて同じ原理のゲームが流行ってるわけ?
Cでパズルゲーム作りたいから教えて。
無限個の答え探し?
高校3年以上の女性nについて、 味^n + 香り^n = 舌触り^n となるブルマの組み合わせは存在しない
ゴミ箱にゴミを投げ入れる糞ゲーでも作ってろ
>>589 >>591 どうでもいいが、
>>588 は「自然数では、n=1,2以外の解は存在しない」という意図だと
読み取れないようだとまずいだろ。
多少わかりにくいとしても、「1,2以外は自然数ではない」がおかしいのはわざわざ指摘するまでもなく
「そんなふうに思っている人がいるのかも」という考え自体も非常識。
,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; Standard Input/Output … ヾ;;;ハ ノ .::!lリ;;r゙ `Z;i 〈.,_..,. ノ;;;;;;;;> そんな事も知らない時期が ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f 俺にもありました。 ~''戈ヽ `二´ r'´:::. `!
>>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 とか類似系いくらでもあるじゃん。 何が楽しくてこんなもん解くんだろうな。
今まで誰もわからなかった問題を解いた俺様すごいだろっていう気持ちはなかなか楽しいんじゃね
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みたいな。適当だけど。 有理数まで広げたらスパコンでも解析無理そうだね。
>>604 正の有理なら整数倍すれば整数になるんじゃあるまいか
そこから小数点省いてみろよ
>>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;は同じ意味ですか?
わからないなら char *a; char *b; と書くこと覚えませう
/*
>>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
*/
611 :
uy :2012/06/23(土) 03:51:17.21
>>531 -n
なんだ、
お前もただのヴァカか
そもそもC言語って幅広く使われて
コンパイラも実行環境も腐るほどあるわけで
どこの環境を前提に話してんだお前
Windows限定の話ならさっさと死ねよお前
ローカル変数でスタック1MBくらい常に使ってろよwwwwwwバーーカwwwwwwwwwww
実行速度がかわらねーとかなんとか、どこで拾ってた知識だからしらねえけど・・・ベンチマーク取れよカス
何もしねーのなwwwwwwwwwwww
根本的にはずれた事言っちゃう時点でマジでお前知ったかだ、死んだほうが良い
お前のゴミカスレスなんて信用ならないんだから、ちゃんとソースだせソース、実行結果と環境と全てを示せゴミが
612 :
uy :2012/06/23(土) 03:57:26.61
死なねば直らんか こんな場所でグダグダ知ったかレス続けてるくらいなら勉強しろ お前は俺の高校生の時点でのレベルさえ超えていない 何年やっても何十年やっても絶対に超えられない 見えないものに対しての予想、憶測と、確信の違い お前の予想なんてだれもきいてねえから俺みたいに確信のあるレスをしたいならあと10年は勉強してろ 大体さぁC言語を語るならアセンブラとOSレベルまで詳しくなれよゴミカスが OSすら作った事のない奴が機械語レベルでまともな議論できるはずが無いwww ぷろせすの仕組み(笑) かーねる(笑) とかwwwwwww 教科書に書かれてる知識だけで実際のコードを知らないから 何にもわかっていない 目障りだ 知ったかはさっさと死ね
ひどいブーメランを見た
完全に間違ってることに確信もたれてもw
611 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん 612 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
>>564 訴訟社会のアメリカで『私の設計ミスといってよいかもしれない』か。
617 :
uy :2012/06/23(土) 06:16:46.54
ゴミカスはやはり処刑するしかない 今の時代にC言語を使っている層 そりゃな、大体わかるが
これがruby脳ってやつか。
いきてたのかこいつ ◆QZaw55cn4c [
621 :
uy :2012/06/23(土) 09:34:33.80
真性のクズ
ninjaVSQZというあまりにもどうでもいい展開に唖然……
>>602 それ自体は (今のところは) それほど応用が見出されてないみたいだが、
証明の過程で様々な発見は有った。
どれがどんな役に立つか事前に完璧にわかるわけでもないので、
意味が有るとか無いとかは解いた後じゃないとわからないし、
後々に有用性が発見される場合もある。
ブール代数が考案された時に現代のようなコンピュータは想像もできなかったと思うぞ。
究極的には意味なんてないだろ。
そんなこと言ったらお前って何の意味があるんだろうな?
似たような人生を歩む人はいくらでもいるじゃん?
何が楽しくて生きてるんだろうな。
などと意味不明な供述を繰り返しており
uyとか言う糞コテさんへ質問です。 ローカル変数を沢山使うとpush命令が沢山使われて遅くなるのは本当ですか?
#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; } カンマの前後を入れ替えて表示したいんですが、エラーになってしまいます。
scanf("%s", word);
>printf("%s,", word[j+1]);
630 :
uy :2012/06/23(土) 14:49:42.54
この程度もできないゴミカス
質問にすら答えられない糞コテ
632 :
vy :2012/06/23(土) 15:23:59.69
膣内に出すぞゴルァ
>>610 いまさら32ビットwwwwwwwwww
4バイトwwwwwwwwww
x32かも
>>564 staticに文句言う奴は読み方が間違ってるんだよ。
const int a int const b の違いを教えてください。
うんこ
見た目の印象が違います
>>564 このURLのページ、
> Cといえばポインタと現在でも騒がれていますが、設計者本人も"変なもの"と考えているわけです
出鱈目だな。ポインタと配列の扱い方に歪みがあったと言ってるだけ。
/*
>>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>
*/
メモリリークの解消ってどうやるんですか?
COBOLでも使ってろ
Boehm GC使ってろ
実体がスコープを2つ以上またいだら設計失敗くらいの覚悟で書けばOK
>>611 >そもそもC言語って幅広く使われてコンパイラも実行環境も腐るほどあるわけで
いわれなくても。
>どこの環境を前提に話してんだお前Windows限定の話ならさっさと死ねよお前
どんなCでもローカル変数の量で速度が変わるなんてきいたことない。
アセンブラを知らないruby脳はこれだから困る。
>実行速度がかわらねーとかなんとか、どこで拾ってた知識だからしらねえけど・・・ベンチマーク取れよカス何もしねーのなwwwwwwwwwwww
ベンチとるまでもないこと。これだからruby脳は困る。
>お前のゴミカスレスなんて信用ならないんだから、ちゃんとソースだせソース、実行結果と環境と全てを示せゴミが
http://toro.2ch.net/test/read.cgi/tech/1313183984/
>>612 >大体さぁC言語を語るならアセンブラとOSレベルまで詳しくなれよゴミカスが
それはお前だ。さあ、Cのソースを貼ってごらん?できるかな?できないだろうが。
アセンブラのソースでもいいよ。
>>623 しかし残念なことには、フェルマーの最終定理ほど私のような素人にも内容の理解が容易でかつ証明困難、という魅惑的な未証明命題がなくなってしまったことだ。
なにかフェルマーの地位に到達できるほどの未証明定理はないものだろうか?
コラッツの予想?いまいちですなあ。
>>641 自前のランタイムを使っていたこともありましたが、今はエンバカなんとかの評価版 bcc32 -v -vG を便利につかわせてもらっています。別にソニータイマーは組み込まれていないようです。
素晴らしいね
>>641 メモリリーク
がどういうものか考えることからはじめせう
アサンジと関係あるわけ?
そのネタわかる奴いるのかな?
654 :
デフォルトの名無しさん :2012/06/24(日) 01:47:44.86
何と?
656 :
デフォルトの名無しさん :2012/06/24(日) 01:59:34.18
657 :
デフォルトの名無しさん :2012/06/24(日) 02:05:28.64
ツールによっちゃ動かないPCもあるってことでしょ。
658 :
デフォルトの名無しさん :2012/06/24(日) 03:31:13.36
自然数nの階乗を求めるプログラムを教えて下さい。
いえいえ
くとぅるー
664 :
uy :2012/06/24(日) 09:40:08.18
はっ
665 :
デフォルトの名無しさん :2012/06/24(日) 11:17:19.42
共用体っていつ使うんですか?あまり役に立たない機能だと思うんですが。
>>665 役に立たないプログラマを見分けるためのデータ構造だよ
採用では良く使われるよ
ビットマップのファイルフォーマットとか数種類あるじゃない あれを構造体で定義するときに共用体使って定義しといたら アクセスが容易になるじゃない
昔々のstructの使い勝手を残そうとした残留物だからね
>>670 それだと実装依存の使い方になるよね。
structやunionはbyte/bit配置の保証ないから。
ほとんどのコンパイラがpragmaかオプションで指示可能だけど。
コボルの集団項目とかredefineとかと同じか
文字列処理で 改行 が出てきたら〜 という条件分岐をしたいのですが どのように指定すればいいのでしょうか? スペースがでてきたら〜 は if(data[i] == ' '){ } のようにやっています
if(data[i] == '¥n'){ }
675 :
uy :2012/06/24(日) 12:41:08.24
>>645 >どんなCでもローカル変数の量で速度が変わるなんてきいたことない。
お前が無知なんだよ
当たり前のことが、わかっていない
>ベンチとるまでもないこと。これだからruby脳は困る。
そしてやったら自分の間違いに気づいてしまうから怖くて出来ないだけ
おいためしにローカル変数1000000TB分宣言して最適化オプションはずしてみろwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
さ っ さ と や れ
さ っ さ と や れ
さ っ さ と や れ
そして以下 キャリッジリターンと ラインフィード、 およびOSウんぬんの話
>>674 半角の \n ですよね? それでやりましたができませんでした
678 :
uy :2012/06/24(日) 12:46:34.88
そもそもローカル変数の宣言によってスタックを消費し、 ローカル変数を宣言しすぎればスタックオーバーフローするという事がわかってないんじゃないか 一体ここで「どういうチェック」が行われているか いってしまえばスタックオーバーフローなんてのはOSの設計ミスであって、 スタックサイズなんて伸縮させれば良い これだからOSすら作ったことないゴミは教科書に書かれてる知識以外が全然ないから アドリブ聞かせようとすると的外れなこと言いはじめるんだよ 「C言語」の実行コードの時点では速度は変わらないとしてもw コンピュータっていうのはCPU(レジスタ)とOSとメモリを使うんだからお前も頭使えよバカ
typedef を使わずに、関数の型をキャストすることはできますか?
ふう
682 :
uy :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
>>678 おまえが優秀なのはよくわかったよ
すこしはてかげんしてください
>>682 はいはい、よくできまちたねー、えらいえらい
馬鹿を煽ててお引取り願おうとしてるのに、台無しだろw
>>682 aaaaaaaaaaaaaaaaaaaaaaaaaaaa
689 :
uy :2012/06/24(日) 18:23:00.20
俺はゴミカスだがエリートゴミカスだ お前らのような下級ゴミカスとは格が違う 話しかけるなよクズ
690 :
uy :2012/06/24(日) 18:30:56.77
ゴミ
エリートゴミカスってゴミカス中のゴミカス、まさに真のゴミカスってことかw
692 :
uy :2012/06/24(日) 18:37:36.44
俺に言及するなど100光年早い
100光年とかえらい近いな
線形リストの考え方を教えてもらいたいです。
宿題スレに共用体きたぞ
696 :
uy :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
これで理解できなければプログラミングを引退しとけよ初心者はしね
698 :
デフォルトの名無しさん :2012/06/24(日) 20:55:45.58
>>694 次のロッカーの住所と適当なデータが入ったロッカーが連続している。次のロッカーがなければ住所はNULL。
699 :
デフォルトの名無しさん :2012/06/24(日) 20:57:32.96
誤)連続している 正)点在している
>>675 >>645 >どんなCでもローカル変数の量で速度が変わるなんてきいたことない。
>>675 >当たり前のことが、わかっていない
当たり前というのであれば、次のCコードと、それから吐かれた .s で説明してくれないか?
http://codepad.org/gVm1Y9Ps http://codepad.org/dwKs5LBd ローカル変数の定義数にしたがって変化するのは次の行
subl $212, %esp
の $212 の大きさだけ。この計算がオペランドの定数の大きさによって、速くなったり遅くなったりするとでもいうのか?
>>678 >そもそもローカル変数の宣言によってスタックを消費し、
>ローカル変数を宣言しすぎればスタックオーバーフローするという事がわかってないんじゃないか
速さの話から す り か え ま し た か?
>スタックサイズなんて伸縮させれば良い
i386 ならフラットなメモリ構造を捨てセグメンテーションを採用しないかぎり、それはできない。
論理アドレスがぶつかれば、そこでスタックオーバーフローだ。
そして i386 でセグメンテーションを積極的に採用した OS はないはずだ。
もっとも論理アドレス空間が 64bit になった現在、そんな心配は無用ともいえる。
脳内話で喧嘩でもしてるのかい?
702 :
uy :2012/06/24(日) 21:08:45.90
703 :
uy :2012/06/24(日) 21:11:43.82
どんだけ何をやっても「0%」にはならない箇所っていうのは知っとけよgomikasu
>>689 Hi, KS.
How was the last weekend?
>>702 そもそも
>>506 >> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
>それだけpush命令行われてるのにバカじゃねえの??????
とローカル変数を push で確保すると思っていた(爆笑)ようですが、それが論破されるといろいろ極端な例を後付けして凌いだつもりになっているのですね。
そろそろ、普通に使う範囲での妥当なサイズのソース
>>700 http://codepad.org/gVm1Y9Ps http://codepad.org/dwKs5LBd で説明していただけませんかね。ruby 脳ではやっぱり無理でしょうかね?
>>700 >そして i386 でセグメンテーションを積極的に採用した OS はないはずだ。
>>702 >え、もしあったらどうする?
使ってみたいですねえ。セグメンテーション利用リミット値できっちり保護されていて、コールゲートも使用していて、というのはプロユースではあるのかもしれません。
>これからの将来スタック伸縮可能なOSが出てきたら泣いて謝ってくれますか?
将来の話にすりかえるのですか?ということは現在はない、と認めているのですね。負けそうになると(というか負けているんけど)、話のすり替えばかりするのですね。
706 :
uy :2012/06/24(日) 21:49:55.73
ヒント: ローカル変数のサイズ合計 > CPUキャッシュサイズ
708 :
uy :2012/06/24(日) 21:57:34.13
はぁ、また初心者を論破してしまったか 悪い癖だわ
>>708 > はぁ、また初心者を論破してしまったか
pppppppppppppppppppppppppppppppppppppppppppppppp
>>706 そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは滑稽なんですが。
それはそうと、
>>506 >> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
>それだけpush命令行われてるのにバカじゃねえの??????
とローカル変数を push で確保すると思っていた(爆笑)ようですが、それが論破されるといろいろ極端な例を後付けして凌いだつもりになっているのですね。
そろそろ、普通に使う範囲での妥当なサイズのソース
>>700 http://codepad.org/gVm1Y9Ps http://codepad.org/dwKs5LBd で説明していただけませんかね。ruby 脳ではやっぱり無理でしょうかね?
まともに釣りもできんのか
712 :
uy :2012/06/24(日) 22:14:12.34
まあ俺はゴミカスだがエリートゴミカスだ お前らのような下級ゴミカスとは格が違う 俺に勝つなど100光年早い
714 :
uy :2012/06/24(日) 22:15:46.01
>そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。 >どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは滑稽なんですが。 あ、ついに遅くなるって認めちゃった? >そろそろ、普通に使う範囲での妥当なサイズのソース いきなり範囲指定wwww まだpush,pushいってるけどさ push命令を他の高速なcpu命令で代用するようにCコンパイラが最適化していたとか ある意味「遅くなるか」「全く遅くならないか」という議論においてはどうでもいい 「速くなった」というだけで、演算速度が0クロックになったわけではない まさか二進数の計算が、桁が1桁で、たとえも999999999^9999999桁でも実行速度が変わりませんとか、そこまで逝ってるのか?
715 :
uy :2012/06/24(日) 22:17:52.70
>、桁が1桁で、たとえも 桁が1桁でも、 たとえ999999999^9999999桁でも
716 :
uy :2012/06/24(日) 22:37:08.67
ローカル変数のサイズ合計 > CPUキャッシュサイズ
で、決着ついてる
初心者にも良くわかりそうなキャッシュについての説明
http://myoga.web.fc2.com/prog/cpp/opti02.htm まぁおれも詳細は今知ったんだけどね
詳細知らずとも遅くなる箇所と、遅くならない箇所くらいは分かるレベルなわけで
ローカル変数を大量に定義したら遅くなるって事です
そのサイトのここ重要
>スタック溢れにならなくても、スタックに巨大なデータを置くと、 スタック自体でキャッシュミスが起こったりして遅くなります。
>>714 >あ、ついに遅くなるって認めちゃった?
普通の領域でも遅くなるのにスタックだけが遅くならない理由があるとでも?普通の領域で起こる事象を「スタックで起こる事象だ」と主張するのは滑稽ですね。
>いきなり範囲指定wwww
だって、最初の主張
>>506 では、
>> ・ローカル変数を沢山使うと確保により時間が掛かると思っている
>スタック消費してんだから当たり前だろおおおおおおおおおおwwwwwwwwwwwwwwwww
>それだけpush命令行われてるのにバカじゃねえの??????
なんでしょ。比較的小さな範囲でも発生するんじゃないですか?
>>506 が正しければ。
>まだpush,pushいってるけどさ
>ush命令を他の高速なcpu命令で代用するようにCコンパイラが最適化していたとか
>ある意味「遅くなるか」「全く遅くならないか」という議論においてはどうでもいい
>「速くなった」というだけで、演算速度が0クロックになったわけではない
あのね。
>>506 ではローカル変数を沢山使うとスピードが遅くなる、つまりローカル変数の量によってスピードがかわると主張しているのでしょう?
だったら比較すればいいじゃない、ローカル変数1個のときと100個のときとで。そういう問題じゃないのでしょうか。
アセンブリソースをみればそういうわけではないことが自明なんですけれどもね。
でそれと、「演算速度が 0クロックにならない」とどんな関係があるのでしょうか?どういう主張を補強したいのか意味不明ですね。
論破されるといろいろ極端な例を後付けして凌いだつもりになっているのですね。
718 :
uy :2012/06/24(日) 22:39:41.42
>>713 >そういうOSも実際にある
ぜひ。大概のOSは DS=SS みたいなんです。紹介のページでも Windows はフラットモデル、といっているし。
>>716 >>710 そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは滑稽なんですが。
721 :
uy :2012/06/24(日) 22:43:31.67
>>720 いくら負けを認めたくないからって
負けを認めないためにキャッシュの勉強をあえてせずに盲目になるか
終わりだな
どんなメモリでも起きるならやっぱりローカル変数でも起きるんだなぁ。
知識が間違っててうけるわー
滑稽みたいな主観丸出し語句使っても何の反論にもなってないわ
面白すぎて毎日見にきてしまうじゃないか >それだけpush命令行われてるのにバカじゃねえの?????? uyさんはとっととこれについて解説してくれよ wktkして待ってるんだから 気になって眠れないよ
その脳内キャッシュの動作はどこで習ったの?
>>721 >>710 そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは滑稽なんですが。
>>724 では非論理的で説得力に欠ける、とでも言い換えておきましょうか。
>>716 ,721
そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは非論理的であり説得力皆無なんですけれども。
説得力みたいな主観丸出し語句使っても何の反論にもなってないわ
731 :
uy :2012/06/24(日) 23:02:27.30
俺はお前が思ってるよりもマジでレベルは高いから
二度とかみつかない事を薦める
http://myoga.web.fc2.com/prog/cpp/opti02.htm キャッシュの動作の第2項
キャッシュ内容の更新 を読め
>キャッシュの更新で何をするのかというと、 今回触ったアドレス X のデータとその周辺のデータのコピーを L1 に作成するのです。
>周辺のデータというのは、大体数十バイトから百バイト程度のブロックになります。
>周辺のデータもまとめてコピーするのは、先程説明した「局所性」に拠って、 アドレス X に触った時には
>その周辺のアドレスのデータに触る確率も高いと期待されるからです。
そのサイトのここも重要
>スタック溢れにならなくても、スタックに巨大なデータを置くと、 スタック自体でキャッシュミスが起こったりして遅くなります。
つまり、無駄なでかいローカル変数があったらキャッシュミスが起こって遅くなるのです
つまり、ローカル変数を沢山定義すると遅くなるのです
ワカッタカナー
>>730 そうですか。ではこういうときは、どういう言葉がいいんでしょうね。難しいですね。
>>731 そんなもの、スタック上のローカル変数のみならず、普通の static な領域でも、malloc() でとってきたヒープでも起こることなんですけれども。
どんなメモリでも起こることを論拠に「ローカル変数を多数使うと遅い」と主張するのは非論理的で筋が通らないんですけれども。
どんなメモリでも起こる → ローカル変数でも起こる
>それだけpush命令行われてるのにバカじゃねえの?????? これについて解説してくれよ早く
736 :
片山博文MZボット ◆0lBZNi.Q7evd :2012/06/24(日) 23:08:10.50
定義しただけでは遅くならねーよ、ばーか。論理飛躍だ。
「使う=定義」だったのか へぇ知らんかった 俺の国語辞典には載ってないな
引き際を知らないコピペゴミ
そうですね。コピペ多用はさすがにまずかったですね。飽きたのでやめます。
741 :
uy :2012/06/24(日) 23:36:52.82
俺が簡単に負けを認めたらスレが盛り上がらないだろ?
×スレが盛り上がらない ○スレが荒れない
743 :
uy :2012/06/24(日) 23:43:01.17
言いたいことはそれだけか? それくらいでは全く論破したことにもならないが
なんという糞コテ勢揃い感
>>739 引き際、確かにむずかしいですね。SCHEME餃子さんはうまくて感心しています。
日曜の夜はふけてゆく EUROまだー、ちんちん
今さら気づいて再レスしなくていいから
748 :
uy :2012/06/24(日) 23:51:24.07
749 :
uy :2012/06/24(日) 23:55:13.56
俺はゴミカスだがエリートゴミカスだ お前らのような下級ゴミカスとは格が違う
きてるきてる
/ / / / /三ミ} フ r'"rニニ`〈 .| rニ~~` } そんなことより野球しようぜ! j (_) / _,.-‐‐‐-'ヽ. / ,A_ ヽ. /,.--‐‐‐、 ヽ. / / | ヽ. / / /> ヽ ,..、ヽ / / | ヽ. /‐┘/,.-、 ! | 6)/ / __| ヽ !ニ=_"iO ヽ ヾ/ ./‐-'"i iZ } !TOヽヽ、_ノ __ /|__ / { ヽ ヽヾZ / ヽヽ_ノC /ン| L /___ヽ ヽヽ _>‐'" ヽ (∠ン´| ヽ、_.ク _ ヽ、/ `ー/| ヽ、__ /_/ _ | | ヽ、_. / _/ _|
猿だろ
なんだプロサルファーのゴルフが猿するのか・・・。
/ / / / /三ミ} フ r'"rニニ`〈 .| rニ~~` } バスケットはお好きですか? j (_) / _,.-‐‐‐-'ヽ. / ,A_ ヽ. /,.--‐‐‐、 ヽ. / / | ヽ. / / /> ヽ ,..、ヽ / / | ヽ. /‐┘/,.-、 ! | 6)/ / __| ヽ !ニ=_"iO ヽ ヾ/ ./‐-'"i iZ } !TOヽヽ、_ノ __ /|__ / { ヽ ヽヾZ / ヽヽ_ノC /ン| L /___ヽ ヽヽ _>‐'" ヽ (∠ン´| ヽ、_.ク _ ヽ、/ `ー/| ヽ、__ /_/ _ | | ヽ、_. / _/ _|
論理的でな馬鹿二人の煽り合いってどうしようもないな
756 :
uy :2012/06/25(月) 04:52:32.69
金星(まあず)
甘酢(あまず)
759 :
uy :2012/06/25(月) 08:20:41.52
吾妻(あずま)
さ(まぁ〜ず)
お前ら朝から何をやってんだ・・・。
762 :
uy :2012/06/25(月) 08:30:23.72
俺はゴミカスだがエリートゴミカスだ お前らのような下級ゴミカスとは格が違う
ベジータさん 早く仕事に戻ってください
764 :
デフォルトの名無しさん :2012/06/25(月) 10:15:22.44
なんだこれ。 アホとバカが共鳴しあってるのか?
K&R版文字列反転に感動した朝。
766 :
uy :2012/06/25(月) 10:26:35.11
俺に聞け
わざわざ反転させなくても 先頭末尾の両方から使えるようにすれば済む話
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::: :::::::::: ____ ∧_∧ ||....___ | ( ´・ω・) .|| └ヾ::::| | ┌/::::::: l ||__/._/_| | |:: |:::: | ┌━━ー┷┷┐
くぴー
無駄が無いな。
773 :
デフォルトの名無しさん :2012/06/25(月) 16:53:53.28
16行128列みたいな2次元の配列を作りたいんですけど、 int test[16][128]; ってやるのと int *test test = (int *)calloc(16*128, sizeof(int)); ってやるのどっちがいいですか?。
インデックスの計算を自前でやるとメリットがある場合は後者
>>773 int (*test)[128];
test=calloc(16*128, sizeof(int));
776 :
デフォルトの名無しさん :2012/06/25(月) 17:38:39.52
とてつもなく工学計算ぽいから R言語なりmathmaticaなりでやりゃあいいじゃん FFTとかだろたぶん
かなりの量の行列が生成死滅する場合、まとめて確保した方がメモリフラグメントが避けられる。
>>775 ただ *test は配列へのポインタだから添字と違い毎回アクセスされる可能性があるので
わずかに速度が遅いかも
781 :
デフォルトの名無しさん :2012/06/25(月) 17:52:19.63
783 :
776 :2012/06/25(月) 19:21:43.24
無能に用はないんだよ
おまえ後で楽屋まで挨拶にこいよ
よきにはからえ
rubyierの言うことは聞かんでいい
ruby脳はこれだからねえ。
791 :
デフォルトの名無しさん :2012/06/26(火) 02:51:27.77
#defineとtypedefはどう違うのですか?
>>791 typedef は コンパイラが理解できる。
#define は C コンパイラにわたる前の前処理プログラム(c プリプロセッサ)だけが理解できる。
使い分けはいろいろサンプルをみたり自分で試してみたりしてみてください。私は typedef のご利益を、実はよくわかっていない。
構造体の時便利
移植の時便利
enum使うとき便利
>>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の関数では型を引数にはできないが、マクロ関数なら、引数に型を与えるように扱える。
>>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 意識していませんでした。もしよろしければ例をくださりませんか。
何でもかんでもtypedefしまくって何バイトなのかすぐには分からんのが多い time_t size_t wchar_t とか C++でSTL使うときに長ったらしいのを短くできるのはありがたい
C++ Cording Standardsだったか、クラステンプレートにはtypedefで別名つけろって書いてたのは。
800
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
ナッパむかつくわ
ここまで「マクロの方がはやい」はない
別段早くないしな。
>>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);
--
typedefするとポインタかそうでないか分かりにくくなる場合がある 例えばLPCTSTRはポインタ
Pはなんだと思ってるんだよw
いい加減 LP = long (far) pointer をやめて欲しい
L Peaple
それより CTSTR の T がうざい。
質問なのですが、合計点と平均点を求めるプログラムを作ろうとしているのですが 上手くいきません。以下のどこが間違っているか教えてもらえますでしょうか? 合計も平均も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;
>>808 TemplateのTだろ
マルチバイトならLPCSTR
UnicodeならLPCWSTR
>>809 forを使えば直ぐに気付くミスなのに。
813 :
片山博文MZボット ◆0lBZNi.Q7evd :2012/06/26(火) 13:57:17.18
ぴよぴよ
815 :
809 :2012/06/26(火) 14:43:55.99
>>811 言われてみれば確かにその通りですね。
forなら(i=0,・・・)と書くので気付けたハズ。
iに数字が入ったままだったのですね。
>>812 ありがとうございます。助かりました。
これで無事に提出できます。
いえいえ
817 :
uy :2012/06/26(火) 15:57:30.56
>>809 p p((a=[1,4,5,10,20]).inject:+)/a.size
>40 合計
>8 平均
スレタイすら読めない馬鹿がいる っていつものことか
#defineの質問をした者です。ありがとうございました。
いえいえ
あーいやー
プログラムの速度を上げるには最適化のほかに 最新スペックのパソコンに変えると速度は上がりますか?
アルゴリズムを見直せ
825 :
デフォルトの名無しさん :2012/06/26(火) 20:32:14.95
C言語1か月の初心者です。 例えば、『9』『99』『999』『9999』『99999』というように同じ数字だけで桁数を増やす計算式ってありますか? 一番簡単な方法があればご教授願います!
質問の意味が分からない
後出しで劣化しとる
ずんちゃ
ビルドしたあと出かけて帰ってきて再ビルドしたら再定義されていませんって出たけど何が原因でしょう どこが間違ってるのか本気で分からない…構造体です struct camera{ float posx,posy,posz,eyex,eyey,eyez,dir,speed,range,size; }; camera cam;
再定義されていません って何だよ されてないならいいじゃないか
>>832 説明する気あんのかよ
ついでにC++はスレチ
835 :
uy :2012/06/26(火) 21:49:36.44
どう考えても言語問わず x = 9 x*10 + x これで済む話なのに なんでこんなバカしかいねーんだこのスレ
10^(i+1)-1でいいだろゴミカス
>>835 >x = 9
>x*10 + x
x = 88
x * 10 + x -> 968
また後出しで劣化しとる
まるで韓国人だな
>>832 (C++ ではなく)C言語だと struct は省略できないよ
× camera cam;
○ struct camera cam;
827,828,836とuyと同レベルが3人もいるのか…日本の未来は暗いな
844 :
uy :2012/06/26(火) 23:01:43.42
確かに俺はゴミカスだ
843も入れてあげて
846 :
825 :2012/06/26(火) 23:13:49.35
レスくれた方ありがとうございます! 何かいろいろと大変なことになっていますが、どれが一番良い方法なのでしょうか?
836は数学的で実に美しい
元はと言えば
>>825 の質問が悪い
いろいろ解釈できる質問しやがって
828で終わってるだろう
836,847馬鹿の自演
851 :
uy :2012/06/27(水) 00:17:47.01
はぁ? Cとかもういいから さっさとruby使えよ p ([9]*5666).join.to_i #=>99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
853 :
uy :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 あー、やっべつい末尾再帰で書いて最適化しちゃったわ
Rubyを初心者にすすめるとuyになるから絶対ダメってことですね
構うなバカ
なんだこのクソコード
Rubyが恐ろしいのは 汚く書こうと思えばいくらでもできちゃう所で そういう意味ではCに近い
859 :
uy :2012/06/27(水) 03:05:28.91
どんだけC言語やりたいんだよお前ら 時代遅れ時代遅れ時代遅れ時代遅れ
>>854 ruby... 2.0 になったら勉強しよう。そのときはいろいろご指導ください >uy さま
>>859 OS はいまだに C で記述するのが一般的だというのに、それでも C が時代遅れと主張するのでしょうか?
というか C の理解なくして他の言語が理解できるのでしょうか。あー lisp は許す。
863 :
uy :2012/06/27(水) 05:23:06.51
お前のようなゴミカスには教えない
×お前のようなゴミカスには教えない ○uyのようなゴミカスには教える能力が無い
865 :
uy :2012/06/27(水) 08:14:38.28
俺はゴミカスだがエリートゴミカスだ お前らのような下級ゴミカスとは格が違う
uyは放射能汚染ごみか。 世界中で受け入れ拒否。 このスレでも受け入れ拒否だからな。
やめるのです!ボクたち
C言語->LLVM->(最適化)LLVM->x86と変換するわけだけど 最初のLLVMを内部で出力するのに時間がかかるんじゃないかな clang test.c -S -emit-llvm -o - で最適化無しのLLVMコードを見ると山ほどの getelementptr [1048575 x i8]* %5, i32 0, i32 数字 が見れる 関数内での配列はとりあえずインライン化してみる仕様なのかも
くぴーっ
お前はガッチャンかっ!!
int a = 10; int i[a]; だとエラーが出るので #define a 10 int i[a]; にすると、違うソースファイルで externが使えないので、違うソースファイルでも #define a 10 int j[a]; としたのですが、これだと片方のソースファイルの数字を書き換えれば もう片方のソースファイルの数字も書き換えないといけなくて、 片方のソースファイルの数字だけを書き換えればいいように したいのですが、どうしたらいいですか?
hogehoge.h を用意して #define a 10 する fugafuga.c と hagehage.c の両方で #include "hogehoge.h" すれば、変更はhogehoge.hだけで済む
// 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]);
>>873 C以前に日本語の学習から始めてみたらいかがかな。
いえいえ
どうもどうも
880 :
uy :2012/06/27(水) 21:35:20.42
881 :
uy :2012/06/27(水) 21:37:31.93
>>873 int a = 10;
int i[a];
だとエラーが出るので
え?まじで?そんな言語使ってるほうが悪い
>>873 グローバルな配列宣言ではなく
関数の引数で渡すことを考えてみることもやってみませう
883 :
デフォルトの名無しさん :2012/06/28(木) 00:01:17.03
スタック領域とヒープ領域について教えてください。
884 :
uy :2012/06/28(木) 00:16:40.59
そんなもん直感で分かれよカス ↓以下ドヤ顔で初心者に長文レスかますC言語スレ古参たち
┃↑ ┗┛
ググればいくらでも解説が出てくるだろ その上で疑問が有るなら疑問点を限定しろ
>>883 言葉覚えたから、動くものが作れるってわけじゃないんだよ
888 :
uy :2012/06/28(木) 02:38:52.81
>>886 .887
??
もっとレス書きたいんだろ?書けばいいのに?
???
A「私の3人の子供の年齢を当ててみて」 B「ヒントは?」 A「年齢の積は36」 B「もう少しヒントを」 A「年齢の和はあなたの年齢と同じ」 B「う〜ん、もう1つだけ。年齢が一番上の子の名前は?」 A「Cだよ」 B「OK、それで分かった」 さて、3人の子供の年齢は?
今からプログラムを組んでくれって言ったら組んでくれる神様はいない…よな… 明日提出の課題がやばいんだが…
892 :
uy :2012/06/28(木) 02:56:05.71
呼んだ?
学校の課題をそれで通ってどうすんだか
uyのスパゲティはお断りします
カペリーニならいいのか?
うん
899 :
uy :2012/06/28(木) 14:27:03.12
学生の頃Cのミニ問題集100問を1時間で終わらした記録があるわ その頃からメタプログラミングは出来ていた コードジェネレータ(笑)をperlで5分でかいて、Cソースコード出力 そこからは一問あたり20秒以内で 後半のほうにじゃんけんゲームやスゴロクゲームをCUIで作れっていうのあったけど それらも1個、数分以内に作って1時間でクリアした あれは楽しかったな スクリプト言語はこうやって使うんだよ 素でCのソース書いてる奴には絶対に出せない効率
そんな妄想聞かされても、君を哀れに思うだけで誰も感心なんてしないよ?
901 :
デフォルトの名無しさん :2012/06/28(木) 14:48:38.84
>>775 の、int (*test)[128];ってどういう意味ですか?。
int *test[128];ってやるとエラーが出たんですけど、どういう違いがあるんですか?。
903 :
uy :2012/06/28(木) 15:01:35.08
>>901 そんなもん覚えても意味ない
理由は演算子の優先順位
ポインタの配列ではなく
配列のポインタになろうとして失敗してる
これで意味不明だったらお前も初心者だから俺に謝れよ
初心者uyが自分より格下を見つけていじめてる
uyが最下位だから格下なんていないよ
うひょー
ひょひょ
さすが、URL一行で取ってこれる絵のためにRubyごりごり書いてる 効率の悪いバカの言うことはちがうなw
910 :
デフォルトの名無しさん :2012/06/28(木) 18:07:42.77
912 :
uy :2012/06/28(木) 18:42:20.86
初心者以下のクズuyは消えろよ
>>903 演算子の優先順位じぇねーよ。嘘教えるなバカ
915 :
uy :2012/06/28(木) 20:30:01.32
>>905 お前本当に文章よめねーのな
多分このスレの中でお前だけが読めてないよ
int (*test)[128]; 配列のポインタ
int *test[128]; ポインタの配列
>>901 は下にして上手くいかないんだから、配列のポインタをポインタの配列にして失敗してる
うきょ
なろうとして失敗してる、じゃどーとでも言えるな… uyがプログラマになろうとして失敗してる とか uyが普通の社会人になろうとして失敗してる とか uyがあのコに気付いてもらえる男にry とか。 int (*test)[128]だとtest変数はintが128コある配列へのひとつのポインタだからcallocした戻り値を代入できるけど int *test[128]だとintを指すポインタが128コある配列なので、 callocした戻り値をtestのどれに代入するかわかりません、ってことです。
>>918 >int *test[128]だとintを指すポインタが128コある配列なので、
>callocした戻り値をtestのどれに代入するかわかりません、ってことです。
ん?「配列には代入できないからエラー」でしょ。
まぁ、そういうこってすなw
ハマりそうな書き方するんですね
素直に構造体にしたほうがいいと思う
うひ
演算子の優先順位だよな int *test[128]は int *test([128]) (エラーだけど意味を示したい) のように解釈される 配列演算子が逆参照演算子よりも優先度が高いためだ CはAPL、C++についで3番目に演算子が多い APLは演算子がCの倍あり、優先順位を決めるのを諦めてしまって評価順序を全部 左から右にしてしまった しかしCは優先順位があり、しかも不自然な順位だと思われるものもあるためなかなか 覚えにくい 印刷した紙を手元に置いておくか、カッコで囲む必要がある
あ、こう書けばいいのか int *(test[128])
>>924 だから演算子の優先順位じゃないって。
演算子は式に関するもの。
int *test[128]; (あるいはint (*test)[128];も)は宣言。
>>903 演算子の優先順位じゃないよ
今後恥をかかないようにしっかり覚えとけクズ
928 :
デフォルトの名無しさん :2012/06/28(木) 22:36:39.56
いいってことよ
931 :
uy :2012/06/29(金) 01:30:09.95
演算子の優先順位の問題だよ 特例みたいな抜け道の書き方が用意されているだけで コンパイラくらい作ってからわめけカス
932 :
uy :2012/06/29(金) 01:39:29.74
「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のような警告はが出ます。 どのようにやればいいですか?
連投すみません。 2つのオブジェクトを結合して1つのオブジェクトにしたいと言う事です。 よろしくおねがいします。
あのさーuyちょっと考えてみろよ、*と[]の優先順位?が逆だったとしたら、ポインタの配列を宣言するのに()が必要になるだろ結局。 特例でもなんでもないよな?
>>933 -nostdlib
とってみるとかせんの?
警告が出てるだけならできてるでしょ
938 :
uy :2012/06/29(金) 03:58:41.94
また謝らないのか
ごめんなさい で、何が?
間違ってるのはuy だからさっさと消えろゴミクズ
初級者はDeclaratorもしらんのだな。
>>933 リンカは普通、結合されたオブジェクトをオブジェクトとして出力することはしない。
つまり、gcc -nostdlib test.o test2.oではオブジェクトを結合して実行モジュールにしようとしている。
そして恐らくは、test.oにもtest2.oにもmain()がないので警告されている。
全体、何をしたいんだ?
くぷぅ
944 :
942 :2012/06/29(金) 12:35:48.45
あー訂正。nostdlibだからmain()ではなくてエントリポインタである_startがないってことか。 まぁ、本質は変わらないけど。 便宜上、オブジェクト(ファイル)を纏めたいならar(アーカイバ)で纏めればいいんじゃないのか? 普通のリンカなら、できたアーカイブファイルを指定するだけでtest.oとtest2.oをリンクできるか試みてくれる。 つーか、この辺りの話はWindowsに関係ないし、環境依存OKのスレ向きだなぁ。
stdlib内に真のエントリポイント_start()があって、 そいつがmain()を呼び出してくれる
>>942 gcc -Wl,-rで上手く行った。
用途はちょっとな。作りたいものがあるだけ。
ぱーぷぅ
,:::-、 __ ,,r::::::::::::〈:::::::::) ィ::::::ヽ 〃::::::::::::;r‐''´:::::::::::::::::::::ヽ::ノ ,'::;'::::::::::::::/:::::::::::::::::::::::::::::::::::: l::::::::::::::::::l::::::::::●::::::::::::::●:::::ji |::::::::::::::::::、::::::::::::::( _●_)::::::,j:l クマー! }::::::::::::::::::::ゝ、::::::::::|∪|_ノ::;! . {::::::::::::::::::::::::::::`='=::ヽノ:::::/ ';::::::::::::ト、::::::::::::::i^i::::::::::::/ `ー--' ヽ:::::::::::l l;;;;::::ノ 【ラッキーレス】 このレスを見た人はコピペでもいいので 10分以内に3つのスレへ貼り付けてください。 そうすれば14日後好きな人から告白されるわ宝くじは当たるわ 出世しまくるわ体の悪い所全部治るわでえらい事です
関数の外側で変数を宣言する場合なのですが extern をつける場合と、つけない場合で、何か意味的に違いがありますか?
つけてないと そこに本体がいるとする つけると その変数の本体がいないとする 最終的には複数のソースで唯一の変数を作らなきゃいけないので どのソースに本体が居ます 他はそこを参照してくださいな という制御
extern付きと無しは被ってもいいの? 一つのソース内で、 extern int a; //どこかにあるよ int a; //ここに実体 これはOK?
extern int x; void test() { x = 123; } int x; これとか
>>953 実態がどっちかというのは決まってない。
extern は関数の宣言では必要だけど グローバル変数の宣言では要らないんだっけ? 逆だった?
>>957 extern なんていらない子。使っていいことなどない。
959 :
uy :2012/06/29(金) 19:26:34.65
>>958 externは俺のものだ
ゴミカスは黙ってろ
やめるのですボクたち
ふっふっ
void hoge(void) { extern void hage(void); extern int foo; hage(); foo++; }
ふっほっ
ふつへっ
ぬっふぇ!
>>957 extern はグローバル変数の外部宣言では必要だけど
関数のプロトタイプでは要らない
QZはファイル分割やヘッダーファイル知らないのか?
968 :
uy :2012/06/30(土) 12:38:15.59
defineにループ文すら実装しなかったゴミカス言語の話か
スレタイが嫁
∩―‐、 / (゚) 、_ `ヽ / ( ● (゚) |つ | /(入__ノ ミ 人ノ゙ ⌒ヽ 彡ミ彡)彡ミ彡 +:;' 、 (_/ ノ ,,..、;;:〜''"゙゙ ) 从 ミ彡ミミ彡ミ :;' \___ ノ゙ / ̄ ̄ヽ_,,..、;;:〜-:''"゙⌒゙ 彡 ,, ⌒ヽ::::/彡:: :::ミゞ::::从从 i i⌒\__ノ ノ::::::゙:゙ '"゙ /: : : : ::;彡ミ: ;:: ; : : : :ゝミ) ヽヽ ヽ / / `゙⌒`゙"''〜-、:;;,_ ) ミ{:: :ミ: :ノ --‐' 、_\:: ミ:} )) )-─/ / ⌒`゙"''〜-、,, ,,,彡⌒''〜 {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::} // / // / "⌒''〜" l: :ノ /二―-、 |: ::ノ ((__ノ // / | //  ̄7/ /::ノ // ノ 〉(_二─-┘{/ |_|_/ /、//|  ̄ ̄ヽ / // |//\ 〉 / // /\ / ↑ ニート uy
>>970 そういう下品なのはRubyスレでやってくれないかな
1000
ふう
リンカの都合でexternを省略できるのって、そんなもんどこが便利なんだ? 頻繁にw使ってるとこを具体的に聞きたいもんだが。
>>975 >リンカの都合でexternを省略できるのって、そんなもんどこが便利なんだ?
「どんな場合でも extern が省略できないリンカ」というのはみたことがない、.obj, a.out, coff, elf どの時代でも。
そんなのどーでもいーけど で、どこが便利なの?
入力の手間が省けるくらいなもん
共有な変数名としてコードに落とすことがあるからね、最近のコンパイラとかは
>>977 特定のひとつのソースの外部変数は extern 抜きで書き、他のは全部 extern をつける、とかめんどくさいことを特に意識しなくてもいいこと。
外部変数を .h に書いておいて、その外部変数使う .c でのみその .h をインクルードすればいいだけ、というのもある種のスコーピングになりうる。
初期化はちゃんとコードに書かないといけないけれども、これはある意味必然だ。
そんなもんが結構便利って、いいかげんな仕事しかしてねぇんだなぁ。
>>982 同様の趣旨で MASM6 には EXTERNDEF ディレクティブっていうのがあったんだよね。
struct A {int a}; main() { struct A __i686; __i686.a = 686; } 上記のようなコードがgccだとエラーになる場合があるので困る。 glibcのソースコード中にもこれ由来の問題が昔からあるのだが、いまだに治ってない。gcc,glibcどちらの問題なのか?そんなウルリッヒドレッパー。
boke.c:1:16: 警告: 構造体または共用体の最後にセミコロンがありません [デフォルトで有効]
最近のgccをi686以降のみ対応で決め打ちビルドすると、組み込みマクロに #define __i686 1 などがずらっと追加される。
普通にコンパイルするだけでも、ソースコードに #define __i686 1 が頭に追加されてる状態。このマクロを利用してCPU最適化コードへの#ifdef分岐に使ったりできるのだが、
弊害として変数名などに__i686を使った場合に、マクロで1に置き換えられてしまうので、当然エラーとなる。
これが原因で最新のglibcがビルドできない。
しかも昔からある問題らしい
http://www.gcd.org/blog/2009/10/179/ __i686なんてよくある名前を組み込みマクロにしてるgccはどうかしてる。
つかglibcがgccでビルドできないって…
>>988 プリプロセッサ制御用コマンドラインオプション -U ではだめなのでしょうか?めんどくさそう。
>>991 どちらも協調性に難ありまくりな作者が書いてるコードだからな
おみゃがビルドしてる(使ってる)gccとglibcのver晒せや
次スレは980踏んだQZが立てるのか? つーか、さっさと立てろよQZ
1000get
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。