1 :
デフォルトの名無しさん :
2012/05/30(水) 17:16:22.14
for (i=0;i<END;++i){ 〜 if (i==END-1)〜; if (i==0)〜; 〜} 関数を使わずif 文消す方法ってどんなのある?
愛と信頼の個別処理
〜 〜 〜 for (i=1;i<END-1;++i){ 〜 〜 } 〜 〜 〜
break 禁止
for (i=0;i<END;++i){ 〜 switch(i){ case (i==END-1):〜;break; case (i==0):〜;break; default: } 〜}
例題がないとよくわかんない
等式を削り忘れたんだよ そのくらいわかれよ7君はゴミでカスでADHDでOCDでSADか?
ループの最初と最後に特別な処理をしたいけど、毎回if判定するのを避けたいって事だしょ
自分なら
>>4 のようにすると思うが、ケースバイケースだぬ
瞬間湯沸かし器Qwww
>case (i==END-1) え?
ウソです
>>16 >これは両方のケースがあり、正解は決まっていません。
本当でしょうかね?
integral promotion が利いているから、int になるんだね、この場合。
処理をvoid〜で別のクラスから呼び出すようにすると、処理速度って遅くなりますか?
レッツ実測
unused parameterの警告抑止だな。 チョン出てくるかな。
>>2 if(END!=0)for(i=0;;++i){
〜A〜;
if(i!=0&&i<END-1);else
if(i==0) 〜B〜; else
if(i==END-1){ 〜C〜; 〜D〜; break;}
〜D〜}
26 :
23 :2012/05/31(木) 13:58:32.61
構造体へのポインタをvoidへとキャストしてるようにしか見えない
>>2 ∴1つは消えた
for (i=0;i<END;++i){
〜
if (i==0 || i==END-1){
if (!i)〜;
else〜;
}
〜}
マジもんのアホがいる
いやこのスレでマジのアホは大抵わざとアホの振りをしている ホンマモンのアホはあの人一人だけ
昨日終わってるネタなのにアホの振りとか てか「マジのアホ」が「アホの振り」ってどゆこと?
>2 消さなきゃならない理由は? 消してもコンパイル後の処理はそんなに変わらないよ。
終わってるだとかネタだとかお前はここのヌシかナニかか?
>>33 「終わってる=解決済み」だけど?
理解出来ないアホなの?
「あの人」ってあんたのことなの?
>>35 お前ん中で終わってんならそれはそれでいいけど
その妄想をさも事実のように脳外へ排泄するのは止めような
朝鮮人でもあるまいし
既に解決策が書かれてるのに 「if文1個消えた〜」ってアホだろ
自分で勝手に増やした分から減らしただけで、結局2個使って個数減ってない上に判定に無駄が増えてるっていうw
馬鹿とクズしかいねぇ
41 :
28 :2012/05/31(木) 18:34:52.82
#define DEF1 〜 #define DEF2 〜 DEF1; 〜 // i==0 DEF2; for (i=1;i<END-1;++i){ DEF1; DEF2; } DEF1; 〜 // i==END-1 DEF2;
自演が分かりやすくて笑える そもそも >4 で終わってるだろ
ENDが1の場合に処理破綻するな >4 >6 >26
条件がむちゃくちゃ。ちゃんと考えよう。
つーか int a, b, c; なのに scanf("%f", &a); ってなんだよ
直角三角形 何れかの角が90度 鋭角三角形 全ての角か90度未満 鈍角三角形 何れかの角が90度超
0<=a<=b<=c となるように並べ替えて a+b>=c なら三角形にならない a*a+b*b>c*c なら 鋭角三角形 a*a+b*b==c*c なら 直角三角形 a*a+b*b<c*c なら 鈍角三角形
>>50 >a+b>=c なら三角形にならない
本当か?3, 4, 5 は三角形じゃないのか?
(a+b)<=cなら三角形にならない
メインクラスで宣言した変数を他のクラスで使いたいんですが、グローバル変数を使えばいいんでしょうか? int a:だけだと宣言されていないと出てしまい、使い方がイマイチ分からないです
すみませんc++の機能なんですね
数独を作るプログラム作りたいんだけどどうしたらいいですか? 9マスで1パーティーとしたら a[8]〜i[8]を左上から対応させていく。 a〜iの1〜9をそれぞれランダムにソートして 横一列a[0]a[1]a[2]b[0]・・・c[2]を調べて、1〜9まで重複がなかったらOK これを9列までやる。 縦一列も同様にやる。 縦と横で18箇所重複がなかった瞬間一つのパズル完成って なるんですがどうでしょう? もっと効率の良い方法ありますか?
>>56 二次元配列使うだけでもずいぶん楽になるよ
1.2次元配列hoge[9][9]を用意する 2.適当な場所に適当な数字を入れる 3.縦・横・エリアの重複チェック。エリアはarea[9][9].row/colなど用意しておくといい 4.解けるかチェック 解けない→2.へ 解ける→完成
>>56 総当たりすりゃあいい
横一列が9!通り、
その中から9本選んで並べるだけじゃん
ラクだろ?
>>57 >>58 なるほど。二次元配列ですか
でも完成する可能性って
1/(9!*2^18)=1/950億じゃないですか?
一つのパズル完成するのに1日くらいかかりませんか?
二次元配列を使ってもやることは変わらんわなwww 計算量が驚くほど減る……なんてのを探してんだろ
>>59 なるほど。
確かに一番上の帯は1〜9までが絶対9!の内どれかですよね。
でも一つの帯パターンでパズル完成が不可能になるケースも
ありませんか?
例えば 132456879
だと不可能とか。
>>62 さすがに二つ目からじゃね?
一本目だけでは決定できない
なんかこう チャッチャと 巡回群とかのパワーを借りて サッサとできそうな気がする そこんところはGAPとか使えばいいし
githubでも行けばサンプルになりそうなコードがいくらでも転がってそうなもんだが
数独の問題作る方は、オープンソースのがPDA用にあったと思うな。 いずれにしても、人手で作るのに比べて味気ないから好きじゃないけどね。 他の板(パズル板とか?)にスレがあるだろうからそっちで聞いた方が早そうな。
1+1=
チャッチャとかサッサ」は判るけど 巡回群とかGAP」がむずかしい
ふう
__  ̄ ̄ ̄二二ニ=- '''''""" ̄ ̄ -=ニニニニ=- /⌒ヽ _,,-''" _ ,(^ω^ ) ,-''"; ;, / ,_O_,,-''"'; ', :' ;; ;,' (.゙ー'''", ;,; ' ; ;; ': ,' _,,-','", ;: ' ; :, ': ,: :' ┼ヽ -|r‐、. レ | _,,-','", ;: ' ; :, ': ,: :' d⌒) ./| _ノ __ノ
大衆をバカにするテレビ朝日
(前略)
民放のディレクターなら誰でも知っているように、テレビを見ているのは国民の中でも知的水準の低い層で、平均レベルは中学生ぐらいだ。
NHKでさえ、ニュース番組の視聴率が最高なのはスポーツコーナーだ。それに迎合してスポーツ・芸能ネタをやれば数字がとれることはわかっているが、メディアとしてのプライドが歯止めをかけている。
だからテレビ朝日のように羞恥心を捨ててバカに迎合すれば、数字をとるのは簡単だ。それは戦争中に「国民の火の玉が炸裂する」などと大衆を煽動して部数を増やした朝日新聞と同じだ。
ヒトラーは「大衆は女のように感情だけで動く」と言ったが、朝日新聞グループもヒトラー的マーケティング手法をとっているのだろう。
(後略)
http://ikedanobuo.livedoor.biz/archives/51791430.html
>>72 朝日系列だけじゃないですけれどもね。
B-CAS 崩壊を一番に報道したところのみ、まともな報道機関として認めてあげよう。
73 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
スレタイで釣って初心者を叩き潰す流れに戻そうよ。
78 :
デフォルトの名無しさん :2012/06/04(月) 21:09:38.97
ぷよぷよの消えぷよ判定コードを、できるかぎり短く書いてみてくれ。 ボードの仕様 int B[8*16]; /* 0空。1〜7ぷよの色 */
おいおいおいおい ホントに B[8*16] なのかよ B[8][16] じゃあねーーーのかよ ホントのホントに、一時限行列で テトリスのようなモンを作り出せ、 っていうんだな?
おじゃまぷよとかたぷよが書かれてないほうが問題
81 :
デフォルトの名無しさん :2012/06/04(月) 21:32:15.82
82 :
78 :2012/06/04(月) 21:40:14.87
int D[8*16]; /* 対応した場所の消えぷよフラグ。1なら消えぷよ*/
あと一つ 「できるだけ短い」の定義は?
ぷよぷよって13x6(13段目は消えない)だろ
85 :
78 :2012/06/04(月) 21:46:57.49
>>83 ここに1レスで貼れる程度(1行100文字程度で15、6行)が最低ライン。
それより短ければ短いほど良い。
というゲーム。
86 :
78 :2012/06/04(月) 21:54:24.39
こんなメッセージが出てfunc1とmain関数内のデータのやり取りがうまいこといきません。
エラーメッセージの通りなんでしょうけれども、色々弄ってもうまく行かず3日ほど悩んでます。
tescal.c: 関数 ‘main’ 内:
tescal.c:69:1: 警告: 互換性のないポインタ型から 3 番目の ‘func1’ の引数に渡しています [デフォルトで有効]
tescal.c:17:5: 備考: expected ‘struct hoge_t *’ but argument is of type ‘struct hoge_t (*)[31]’
開発環境はFedora16+gcc
エディタはgeany使ってます。
どなたか教えて頂けますでしょうか。
http://codepad.org/pfZsf6P4
>>87 func1(t_year, t_month, hog);
にすりゃいいんじゃないの
>>85 無理だった
バカみたいに詰めれば収めるのは出来るけど
それだと行数制限というより文字数制限になるしな
void check_r(int D[8][16], int B[8][16], int x, int y, int col, int mark, int *num){
if(x<0 || 8<=x || y<0 || 16<=y || D[x][y]!=0 || B[x][y]!=col) return;
*num+=1;
D[x][y]=mark;
check_r(D, B, x+1, y, col, mark, num);
check_r(D, B, x-1, y, col, mark, num);
check_r(D, B, x, y+1, col, mark, num);
check_r(D, B, x, y-1, col, mark, num);
}
void check(int D[8][16], int B[8][16]){
int x, y, num, mark=1, i, j;
memset(D, 0, sizeof(int)*8*16);
for(x=0;x<8;x++){
for(y=0;y<16;y++){
if(B[x][y]==0 || D[x][y]!=0) continue;
num=0;
check_r(D, B, x, y, B[x][y], ++mark, &num);
if(num>=4){
for(i=0;i<16;i++){
for(j=0;j<8;j++){
if(D[j][i]==mark) D[j][i]=1;
}
}
}
}
}
}
90 :
デフォルトの名無しさん :2012/06/04(月) 22:38:11.40
>>88 ありがとうございます、main内のfunc1をそのように変更したところ、
エラーは出ていませんが値が持ってこれてないようです。
(./hogを実行したところ、0が表示されただけでした。)
値渡しではなくアドレス渡しをすれば良いのかも知れませんがなんともです。
テスト用のprintf文(37-38)を有効にしたところファイルは読めている事を確認しました。
csvの中身は
1,test1
2,test2
という内容になっています。
わざわざ引き数で渡したボインタを自分で書き換えてるじゃねぇか。
92 :
78 :2012/06/04(月) 23:10:52.68
94 :
デフォルトの名無しさん :2012/06/04(月) 23:58:40.29
>>93 ありがとうございます、比較してみましたがmallocの部分とprintfの部分だけでしたね。
無事動きましたので感謝しています。
>>91 と合わせて考えてみるにmallocするならmain関数の中で無いとダメという事だったのでしょうか。
また、構造体使うときはmallocする必要は無いという事なんでしょうか。
>>94 mallocするならmain関数の中で無いとダメという事だったのでしょうか。
→そんな事はない
また、構造体使うときはmallocする必要は無いという事なんでしょうか。
→場合による
配列で確保できるならそうした方がいいし、動的に確保したい場合はmallocを使う
ttp://codepad.org/NC422HNs
fgetc ファイルポインタfpから1文字読み込んで、その文字をint型として返す 文字コードを格納するための関数って理解でおk?
#include <stdio.h> #include <conio.h> #include <windows.h> int main(void){ char ka; int kb; while(1){ system("cls"); printf("「a」か方向キー「↑」を押してください\n"); kb=getch( ); if (kb!=0){continue;} kb=getch( ); if(kb==0x61){ka='a';} if(kb==0x48){ka='u';} if(ka=='a'){system("cls"); printf("bが押されました"); Sleep(1000);} else if(ka=='u'){system("cls"); printf("↑が押されました"); Sleep(1000);} } } 「a」か「↑」を押すとそれぞれメッセージが出るように作ったのですが ・「a」を押しても反応しない ・「↑」を押した後、他の方向キーを押すと「↑」のメッセージが出てしまう の2つを解決したいのですがどうすればいいでしょうか?
すでに2,3時間これで悩んでいます。 Aの文字コード41から順番に表示されると思いきや1個飛ばし、あとコメントアウトしてる部分を本文化すると、 何も表示されないで終了になってしまいます。 #include <stdio.h> unsigned char buffer[10000]; int main(int argc, char *argv[]){ FILE *fp_i,*fp_o; int i,c; fp_i = fopen("a.txt","rb"); /*if(fp_i = NULL) { fprintf(stderr,"Input File cannot open\n"); exit(8); }*/ i = 0; while((c = fgetc(fp_i)) !=EOF){ c = fgetc(fp_i); printf("c = %02X \n",c); buffer[i] = c; i++; } fclose(fp_i); return 0; } a.txtの内容:ABCDEFGHIJK 実行結果 c = 42 c = 44 c = 46 c = 48 c = 4A c = FFFFFFFF
while((c = fgetc(fp_i)) !=EOF){ c = fgetc(fp_i); なんで二回書いてんだ
気付かなかった・・・ 有難うございます。 /*if(fp_i = NULL) { fprintf(stderr,"Input File cannot open\n"); exit(8); }*/ の部分を本文にするとなにも起こらないで終了する理由はわかりますでしょうか? 本からのサンプルプログラムなんですが。
fp_i に NULL を代入してるから
ぬるぽ
if(fp_i == NULL) { 多分こうでも書かないと気付かない
「謝罪か、攻撃か」=正恩氏侮辱と韓国に警告―北朝鮮軍
北朝鮮人民軍総参謀部は4日、韓国の李明博政権を支える保守系メディアが、
北朝鮮で始まった朝鮮少年団創立66周年行事と金正恩労働党第1書記を「侮辱した」と反発、李政権などに対し、謝罪するか、北朝鮮の攻撃を受けるか「最後の選択」を求める通告を公表した。朝鮮中央通信が伝えた。
通告は、韓国紙の朝鮮日報、中央日報、東亜日報などが「李政権に動員され」、66周年行事について「(大衆の)歓心を買うための行事」「ヒトラーをまねしている」と報じたと反発。
正恩氏や行事に参加した子供を侮辱したと非難している。
http://dailynews.yahoo.co.jp/fc/world/south_north_korea/?1338793745 謝罪するか、北朝鮮の攻撃を受けるか「最後の選択」を求める
だっておwwwwwwwwwwwwww
109 :
99 :2012/06/05(火) 10:14:37.80
>>108 条件式で=と==を見間違えるのはよくある、
もののサイト・ものの本でも「よくあるミス」として注意・解説されてる
問題は、fgetcを二度書いてるところ、
こっちの方がより重篤な勘違いのように見える
これだけデカデカと書かれているのを「見落とす」てのはまずあり得ない、
つまりは、見えているのに見えていない
(==のところは文字通りに「見えなかった」)
fgetcの二度書きは、何か根本的なところで理解しそこなっているような気がしてならない
書いてあることを見落とすなんてのは良くあること それに単なるテキストでデカデカもクソもない 問題は思い込みで見てしまうこととデバッガを使わないこと デバッガが使えないなら机上デバッグの技術を身につけるべき
デバッガ出動まで追い込まれるのは数えるくらいしかない。 ここはprintf()の乱発をお勧めする。
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0605&f=national_0605_024.shtml 韓国テレビの番組で日本海表記の地図を使用し、非難殺到=韓国
韓国MBC放送の日曜番組『出発! ビデオ旅行』の3日の放送で、「日本海」と表記
した地図を使用していたとして、韓国世論から非難が巻き起こった。多数の韓国メディアが4日、大きく取り上げた。
『出発! ビデオ旅行』は新作映画の紹介から名作など、さまざまなジャンルの映画を
紹介する番組。3日の放送で日本海が「SEA OF JAPAN」と表記された世界地図を
使用したという。
番組放送後に視聴者掲示板には、抗議や非難の書き込みが殺到した。番組の制作陣は
世論の非難を受けた当日、公式サイトに謝罪文を掲載し「今後はこのようなミスを絶対に
しないように最善を尽くす」との立場を表明した。しかし、同番組の5月6日の放送分で
も日本海と表記された地図を使用したことが発覚し、番組やテレビ局への非難はしばらく続く見通しだ。
韓国メディアは「目を疑う場面が電波に乗った」「東海ではなく日本海と表記した地図
を使用して視聴者の怒りを買った」などと伝えた。現在MBC放送は2月から突入した
ストライキがまた続いており番組に支障をもたらしていることも「ミス」の原因とみるメディアもある。
デバッガを使うのを「追い込まれた時」とかアホとしか言いようがない デバッガってそんなに敷居が高いのかね?
高いよ
環境次第 敷居を下げるためのIDE #include <windows.h>ならvc++で簡単だろ
117 :
デフォルトの名無しさん :2012/06/05(火) 14:04:38.63
うん
でもまぁ、デバッガやエディタのコピペに頼る奴はそれらが使えなくなった途端に馬脚を現すがな。
assert使えよ
道具は使ってなんぼのもの 使えなくなった途端に馬脚を現すような奴は「道具に使われてる」だけ
>>120 それは詭弁だな
100kmの道のりを自動車で走らずに徒歩で行って「どうだ自動車なんかいらないだろう
100kmを自動車で走る奴は自動車に使われてるだけ」と言ってるのと全く同じ
傍から見ると馬鹿にしか見えない
貴重な時間と労力を無駄に費やしていいのはニートだけだろ 現場はいつも一刻を争うしバグは絶対に許されない 悠長な事は言ってられない
>>121 何を言っているのか分からない
「道具が無くても出来るなら道具なんか要らない」とは言ってないんだが
道具が無くなった(使えなくなった)とき
「道具が無いから出来ません」→「道具に使われてる奴」
「道具の代わりを考えます」→「道具を使ってる奴」
ってことだぞ
何を言ってるのかわかんないなら構うなよ
コンピュータが無いと仕事が出来ません
>>125 仕事の種類にも拠るけど、
そんな時のためにネカフェでもなんとかなるように用意しておくのが技師ってもんだ。
少なくとも同じ納期、同じ金額では出来ません。
書いただけで動くと思ってる奴の言ってるバグってなんだ? 頭がバグってないか、そいつ?
>>123 ( ゚,_ゝ゚)バカジャネーノ
道具は「使う」もんだ
「使われる」のはアホだけ
「謝罪か、攻撃か」=正恩氏侮辱と韓国に警告―北朝鮮軍
北朝鮮人民軍総参謀部は4日、韓国の李明博政権を支える保守系メディアが、
北朝鮮で始まった朝鮮少年団創立66周年行事と金正恩労働党第1書記を「侮辱した」と反発、李政権などに対し、謝罪するか、北朝鮮の攻撃を受けるか「最後の選択」を求める通告を公表した。朝鮮中央通信が伝えた。
通告は、韓国紙の朝鮮日報、中央日報、東亜日報などが「李政権に動員され」、66周年行事について「(大衆の)歓心を買うための行事」「ヒトラーをまねしている」と報じたと反発。
正恩氏や行事に参加した子供を侮辱したと非難している。
http://dailynews.yahoo.co.jp/fc/world/south_north_korea/?1338793745 謝罪するか、北朝鮮の攻撃を受けるか「最後の選択」を求める
だっておwwwwwwwwwwwwww
お蔭様でやっている作業が何とかなりそうです、感謝。
>>95 スタック、ヒープについて勉強してみました。 言われたことが少しは理解できました。
また、サンプル有難うございました、色々な書き方が出来て面白い。
>>96 サンプルありがとうございました。
まだまだ勉強不足なので頑張ります。
>>78 べつのアプローチで試してみたが短くならなかった。x86のgccならreturn r;を消しても戻るはずだがcodepadだと動かないのでreturnしてる
int W=8,H=16,L=128,T[999],B[8*16],U[999],D[8*16],i,c,*p,*q;
G(d){int r=*(p+d);if(d==-1)r=(i%W>0)**(p-1);if(d==1)r=(i%W<W-1)**(p+1);return r;}
C(d){int r=c==G(d);return r;}
I(int (*f)()){i=0;while(i<L){f();p++;q++;i++;}}
O(){int _(){*p=*q=0;}I(_);}
E(){int _(){*q=C(0)*(C(-W)+C(W)+C(-1)+C(1));}p=B;q=T+W;I(_);}
F(){int _(){*q=(*p>0)*(G(-W)+G(W)+G(-1)+G(1));}p=T+W;q=U+W;I(_);}
J(){int _(){*q|=(*p>0)*(G(-W)>2|G(W)>2|G(-1)>2|G(1)>2);}p=U+W;q=D;I(_);}
f(){p=q=D;O();c=0;while(c++<8){p=T;q=U;O();E();F();J();}}
/* test */
#include <stdio.h>
#include <stdlib.h>
N(int* a){int _(){*q=rand()%8;}srand(time(0));q=a;I(_);}
P(int* a){int _(){if(i%W==0)printf("\n");printf("%d",*p);}p=a;I(_);printf("\n");}
main(){N(B);P(B); f();P(D);}
>>135 すげー
何やってるのかさっぱり分からん
#include<stdio.h> #include <conio.h> int main(void){ char k; int n; while(1){ n=getch( ); if (n==0x31){printf("1\n");} if (n==0x32){printf("2\n");} if (n==0x33){printf("3\n");} else{continue;} } } #include<stdio.h> #include <conio.h> int main(void){ char k; int n; while(1){ n=getch( ); if (n==0x31){printf("1\n");} else if (n==0x32){printf("2\n");} else if (n==0x33){printf("3\n");} else{continue;} } } 上のような感じにifを連続で多く使った場合とelse ifを連続で多く使った場合で どちらがより処理速度が速いとか何か処理で違いあるかな?
>>137 例のように簡単な場合は -O2 オプションで全く同じコードが生成された
@ MinGW gcc 4.5.2
elseをつけといたほうが無難
#define DEBUG 1 #if DEBUG #endif #if !DEBUG #endif これでどうですか
getch使ってF11とF12の値調べると F11がffffff85、F12がffffff86と出たんだけど 検索だとF11とF12がそれぞれ0x85、0x86でしか出なく、 このffffffってこちらの環境(Win7,64bit)のせいで出てるいるのか キー入力でF11とF12押した時に反応するようプログラム作ったら 0x85と0x86のじゃなくて0xffffff85と0xffffff86の方で反応します。 この値について何か分かるでしょうか?
getchってファンクションキー対応してるの?
147 :
143 :2012/06/06(水) 11:25:40.86
>>146 あんたの知っているgetchと>143の言っているgetchは違うのだろうよ。
引数がよく理解出来なかったけどwikiみたらどのサイトよりも詳しく載ってるんだな、理解できた テンプレいれてもいいんじゃ
引数の項目だよ、仮から実まで載ってる 仮引数はそこらのサイトの説明じゃintがついてるから変数じゃないの?って思ってた
ごめんpediaね
Wikipedia見たけど何に感心したのか分からん ものすごく初心者ってこと? なら英語の方も見るといいよ
C言語では仮引数は変数じゃね
#include <stdio.h> #include <windows.h> int main(void){while(1){ system("cls"); printf( "□■□\n" "□■□\n" "□■□\n" "□■□\n" "□■□"); Sleep(500); system("cls"); printf( "■■■\n" "□□■\n" "□■□\n" "■□□\n" "■■■"); Sleep(500); system("cls"); printf( "■■■\n" "□□■\n" "■■■\n" "□□■\n" "■■■"); Sleep(500); }} 1〜3までを繰り返し表示を切り替える上のようなプログラムを作ると どうしてもチラつきが出てしまうのですが なにかチラつきを抑える方法はないでしょうか?
>>155 環境依存の方法でカーソル位置を移動させる
Vsyncチェック
>>155 普通は裏vramへ描画してダブルバッファリングする
>155 system("cls"); を使わずに(最初のは除く)カーソル移動に変える。
エスケープシーケンス? いいかげん だ
え?
(0,1)の範囲の6つの数値を複数掛け合わせてできる数値を配列に格納し、 その配列をソートし、配列の隣り合う要素の差の最大が最も 小さくなるような6つの数値を算出しなさい。 ただし、6つの数値のうち1つは0とする。
0, 0, 0, 0, 0, 0
167 :
デフォルトの名無しさん :2012/06/07(木) 15:59:51.20
若干スレ違いですが、 fwriteでファイルに書き込んだ8byteの浮動小数を hexdumpでフォーマット指定して眺めることはできますか? hexdumpのオプションの使い方がよくわからないのでよろしくお願いします。
168 :
デフォルトの名無しさん :2012/06/07(木) 16:01:04.82
8byte小数|8byte小数|8byte小数|... って感じでたんに並んでいます。
hexdump -e '1/8 "%f\n"' input hexdump -e '4/8 "%f "' -e '"\n"' input
>>169 >>170 ありがとうございます!
とりあえず変換はできてるので、あとはスペースで区切ったりしてみます。
なるほど、%fの後ろにスペース入れてるのが味噌ですね。
ですね
57行目を直せばいい ついでにエラー番号、 #define でなんとかしておいた方がいい
>>174 buf2にコピーした際に、jを1減していない。
つーか、ロジックの見通しの悪いコードだな。
int i = 41; char x; x = i; printf();
int i = 41; char x; x = i; printf("%c\n",x); これで A が表示されるかと思いきや ) が表示される どうしてでしょう? ちなみに x = i; の部分でint型からchar型に型変換されている、という認識で正しいでしょうか?
int i = 0x41;
そうでした 16進数でした。有難うございます
/* 4バイトの数値データをファイル出力する */
int fputLong(long num, FILE *fp){ //num(long型):入力データの総文字数 fp:出力ファイルのポインタ
fputc((num
>>24 ) & 0xff,fp);
fputc((num
>>16 ) & 0xff,fp);
fputc((num
>>8 ) & 0xff,fp);
fputc((num) & 0xff,fp);
return 0;
}
右シフトして&演算をして出力していますが、
0xffと&演算を取るのにはどういった意味があるのでしょうか?
0xff = 1111 1111 なので&演算しても元の値がそのまま残ると思うのですが。
#include <stdio.h> #include <conio.h> void KEY(int *j1){ int g; g=getch( ); if(g==0){ g=getch( ); if (0<*j1 && g==0x4b){*j1--;}// 左移動 else if (*j1<2 && g==0x4d){*j1++;}// 右移動 } } int main() { int j=0; printf("\nカーソルを合わせる\n"); while(1){ if(j==0){printf("\r→A B C");} if(j==1){printf("\r A →B C");} if(j==2){printf("\r A B →C");} KEY(&j); } } 左右のキーで矢印が動くのを作ったのですが j1に代入された値が使われていないとエラーが出て矢印が動きません どう修正したらいいでしょうか?
>>182 *j1--; → (*j1)--;
*j1++; → (*j1)++;
0x41424344 → 0x00000041 & 0x000000FF = 0x41 0x41424344 → 0x00004142 & 0x000000FF = 0x42 0x41424344 → 0x00414243 & 0x000000FF = 0x43 0x41424344 → 0x41424344 & 0x000000FF = 0x44
>>181 確かにその論理積演算は無意味だね。
理由は違うけど。
189 :
デフォルトの名無しさん :2012/06/08(金) 10:57:08.54
| チョパーリ様が新しい支配者ニダ! | チョパーリの言うことは全て素直に聞いて | 日帝様に気に入ってもらわなければいけないニダ!! \_ ____________________ ∨ Λ_Λ <丶`∀´> Λ_Λ / ̄ ̄ ̄ ̄ ̄ ( 両班 ) <丶`∀´>< チョパーリに | |〈_フ∧アイゴー ⊂ つ | 出稼ぎに行くニダ 〈_フ<´Д`丶> 人 Y \_______ ( 白丁 ) レ (_フ (_(_) アイゴー 888888 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ <丶´Д`> <丶`∀´>< チョパーリに売り飛ばすニダ (┌斤Y斤⊃⊂ ) \__________ / / .| | ヽ | | | └-レ─レ─ゝ〈_フ__フ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ <# `Д´> < 日帝はウリナラ国民を虐殺し強制連行を行い ( つ. .| 従軍慰安婦を強制連行したニダ!! | | | | 謝罪と賠償を要求するニダ! 〈_フ__フ \____________ ┌────┐ | チョパーリは| | 反省しる!! | └──┬─┘ 888888 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ .彡 ⌒ ミ .│ <丶`Д´> < チョパーリ政府は < #.`Д´>│ (┌斤Y斤) | 従軍慰安婦への謝罪と賠償を!! ( // つ / / .| | ヽ \_______________
へへ
for(i=0; i<=data; i++){
下の方に エラー EE2209 a.cpp 1: インクルードファイル 'stdio.h' がオープンできない と出てるように見える インクルードパスを設定しなきゃいけないんじゃないか
200 :
デフォルトの名無しさん :2012/06/09(土) 12:59:48.45
>>199 インクルードパスを設定するだけで直るんですか
そもそも16bitアプリを作ってるのが問題 コンパイラの設定をいじるか、新しいコンパイラに替えるか
202 :
質問者 :2012/06/09(土) 13:03:10.46
>>201 設定をいじるのと新しく替えるのとどっちが楽ですか?
204 :
質問者 :2012/06/09(土) 13:19:01.94
>>203 Borland C++を使わなきゃいけないんです
設定のいじり方を宜しければ教えてください
こんな馬鹿な質問初めて見た
CPadってLSI試食版かBCC対象じゃなかったっけ? これから勉強するんなら Cを勉強したい->GCCかTCC C++を勉強したい->GCC(G++)かMSVC++ を使えるように環境そのものを替えるべき
>>206 c++に関して互換性で悪名高きmsvc(msc++)を推薦するのか?
>>205 普段が『自称初心者』を装ったヤツ多いんだよ。
>>208 そういう意味じゃねーよバカが いつもの池沼か?
211 :
質問者 :2012/06/09(土) 16:01:07.14
いや俺初心者になりきってんじゃなくて ガチ初心者
>>211 で、なんでとっくの昔に存在価値のなくなったBCCでなきゃいかんの?
213 :
質問者 :2012/06/09(土) 16:30:05.43
>>212 ちょとまって
質問に質問で返して悪いんだけど
BCCって時代遅れなん?
最近の主流は何?
gccかclangだろ
>>209 multilibなgccの-m32/-m64とかと似たようなもんじゃね?
>>213 BCC 5.5 が公開されたのは 2000 年のことだぞ。 当然だがそれ以降の規格改定 (C++03, C++11) に追従していない。
流れの速いこの業界で 10 年以上も前ってのはさすがに時代遅れと言われても仕方がないわな。
ただ、規模が小さくてインストールが楽だっていうところから初心者向けに紹介しているサイトは多いかも。
釣り耐性が育まれてない連中多過ぎwwwwww
charの配列に2バイト文字列が入ってるものをifとかで場合分けしたいんですが、どーしたらいいんでしょう? 初歩的な質問ですいませんがよろしくお願いします
char str[100] = "あ"; if(strcmp(str, "あ") == 0)
初歩的だけどクソな作業だな 俺ならそういう作業は絶対にやりたくない sjisとutf8 あたりだろうけど 出来あいのライブラリつかう
>>221 ,222
素早い回答ありがとうございます
解決しました
どこがどう解決したのかと
>>221 >char str[100] = "あ";
>
色々と、無駄。
>static const char str[] = "あ";
とでもしておくべき。
配列とポインタの違いも分からない人って…
自己紹介おつ
, -‐-'´ー- 、._
,、' : : ,:-'´: : : : : : :\
/: : :/: : : : : : : : : : : : \
/:/ : /: : :, : : : : : :/: : : : : : : ヽ
!': : :/: :/;.、=7;、イ;i: : |: : : : 、: ヽ
!: : /': :'´ ;| 'iァz;、,'ト|: :/;イ: : : }: i l
!: : : : : : :{ `''゛'` !/'´/イ;ィ:/: リ'!
'; : : : : ;|ヾ ,ィ')y'/;ィ:/
ヽ:|'; :{ヘ _ ゝ./!'´ !' あなたは貰えるわ
/' ヽ! 、 ´,. ィ':i/
_,,..../ /` ‐' ´l/リ゛ ミヤネ屋を見たもの。
ノ `丶、 {、 ´
http://i.imgur.com/GPVGM.jpg / ' ‐- 、 \トヽ、
,イ;;;:::、:_:::::::`ヽ、 _\!`)、
日本テレビ 社長 「不正ではない、問題ない」
フジテレビ 社長 「不正ではない、問題ない」
テレビ朝日 社長 「不正ではない、問題ない」
毎日放送 社長 「不正ではない、問題ない」
テレビ東京 社長 「不正ではない、問題ない」
NHK ただイマ! 「不正ではない、問題ない」
しんぶん赤旗 「不正ではない、問題ない」
ファイルの入出力できるようになったらいろいろできて面白いです〜
Win32を呼び出して2GB超のファイルの読み書きに挑戦してみよう
HDD容量の限界に挑戦
233 :
220 :2012/06/10(日) 16:14:00.88
度々すいません char kotoba[100] = "\0"; char gobi[2] = "\0"; int i = 0; scanf ("%s",kotoba) i = strlen(kotoba); strcat (gobi,&kotoba[i-2]); strcat (gobi,&kotoba[i-1]); if(strcmp(gobi,"あ") == 0) {printf ("い")} どこが違うのでしょうか? gobiを出力してみると目的の字の後に半角文字が出力されています なぜgobiに2バイト文字+1バイト文字?が入ることが出来るのでしょうか?
書式指定子スレとかがフォークして正しく機能すれば 純Cスレなんて超過疎化しそうだな
>char gobi[2] = "\0";
>>233 何をやりたいのかいまいちだけど
char gobi[2];
これで2バイト文字入れちゃうと終端文字が入らなくなるよ。
終端文字で終端されていないと、str**系の関数が正しく動作しないです。
でも今時C95をサポートしてないコンパイラなんて、それこそ組込みとかの世界の話じゃね?
if(strncmp(kotoba,"あ",streln("あ")-1) == 0)
また意味不明なことを……
うきっ
円盤が三枚の時のハノイの塔攻略のプログラミングなんですが、いろいろ考えて みても、どういう手順でどう処理をしているのか理解できません。どなたか 解説お願いします。 n … 移動させる円盤の枚数 from … 移動元の棒の名前 work … 作業用に使う棒の名前 dest … 移動先の棒の名前 void Hanoi(int n,char *from,char *work,char *dest) { if(n>=2) Hanoi(n-1,from,dest,work); printf("%d を %s から %s へ\n",n,from,dest); if(n>=2) Hanoi(n-1,work,from,dest); } int main(void) { Hanoi(3,"A","B","C"); return 0; }
再帰ってなんかおそろしいよな そのたったそれだけの処理が再帰の本体だなんて それで答えが出るからまた驚きだ しかも処理をやっているようには見えない、 全然見えない ひさびさにそういう恐怖を感じることができた 中身がカラッポなのに処理が出来ることの恐怖と素晴らしさ それが詰まってる
構文だけで再帰出来れば最高なんだけどな
>>247 Bccは過去の遺物なので、const intでも定数として使えません。
近代的なコンパイラで試行するか、マクロ定数に置き換えましょう。
249 :
247 :2012/06/11(月) 04:44:27.72
>>248 フォロー乙です
テキストの方はUNIX C(富士通)を想定しております
250 :
デフォルトの名無しさん :2012/06/11(月) 06:31:34.99
1文字ではなく文字列を代入する場合には、char型の配列を利用する方法がありますが、 1文字ずつではなく複数文字を1つの配列にいれることはできないのでしょうか? 例: char+[3]; char+[0] = "ABC"; char+[1] = "BC"; char+[2] = "C"; 仮に char+型と仮定するとこんな感じです。 お願いします。
有難うございます。 急いでいたので大変助かりますs
>>250 >複数文字を1つの配列にいれることはできないのでしょうか?
↓こういうことでは無いの?
char s[3];
memcpy(s, "ABC", 3);
中国 「韓国がまたまた中国文化を盗んだ」
http://hayabusa3.2ch.net/test/read.cgi/news/1339372752/ 2012年6月9日、光明日報は、社会科学院の宗波(ゾン・ボー)氏による文化遺産保護に関する記事を掲載、
保護を徹底しなければ韓国に盗まれると警告した。
6月9日は第7回目となる中国の文化遺産デー。光明日報は再生できない貴重な資源だが、
中国の文化遺産保護は遅れていると指摘。遺跡や文化財保護の問題も深刻だが、それ以上に無形文化遺産の遅れが目立つという。
無形文化遺産の保護は中華民族の文化的基盤を揺るがし、文化安全保障にも影響すると警告している。
その事例としてあげられたのが韓国。2007年に孔子を祭る「祭孔大典」を世界無形文化遺産に申請したほか、
活版印刷は韓国の発明だといったり、中国の文化を奪おうとする動きが目立つという。
そうした動きが国家ぐるみのものであると示すのが1万ウォン紙幣。中国の張衡が発明した地動儀が図案として採用されている
(地動儀は世界初の地震計。韓国の紙幣に印刷されているのは天体観測器具の渾天儀で誤りと見られる)。
韓国の学者は地動儀が中国の発明であることを知っているが、政府やビジネスマンはそれを韓国文化の一部分に変えてしまった。
また紙の発明も韓国だとする主張もあるという。もし中国が無形文化遺産の保護を徹底しなければ、
中国民族の特色ある文化と歴史は他国のものとなってしまうだろう。
http://www.recordchina.co.jp/group.php?groupid=61984
#include <stdio.h> #include <conio.h> void botan(int *b){ *b=getch( ); } int main() { int f; while(1){ printf("ENTERを押して終了\r"); botan(&f); if(f==13) break; else continue; } } 上のbreakとcontinueをイメージ的に下のような感じに関数内にしたいのですが whileから出して動作させることはできないでしょうか? void botan(int *b){ *b=getch( ); if(*b==13) break; else continue; } int main() { int f; while(1){ printf("ENTERを押して終了\r"); botan(&f); } }
257 :
デフォルトの名無しさん :2012/06/11(月) 10:51:03.38
授業で出された課題のドミノの計算ってので詰んだ…何が分からないのか分からないよ…ふぇ
staticな二次元配列を関数func内で宣言し、それの先頭アドレスを返したいのですが、 intの配列へのポインタを返す関数func(パラメータなし)の関数プロトタイプ宣言の書き方を教えてください。 また、それを受ける側の変数の宣言(配列へのポインタ?)の仕方も教えてください。 よろしくお願いいたしますm(_ _)m
構造体を経由したら? struct hoge { int foo[20][30]; }; struct hoge* func(void) { static struct hoge body; return &body; }
//せめてtypedefを使うことを強く奨める int (*fnc())[3] { static int v[2][3]; return v; } void x() { int (*p)[3] = fnc(); p[1][1] = 2; }
#include <stdio.h> int* hoge(int* p) { int i,j; for(i=0;i<10;i++){for(j=0;j<10;j++)p[i*10+j]=1;} return p; } int* hage(int p[10][10]) { int i,j; for(i=0;i<10;i++){for(j=0;j<10;j++)p[i][j]=2;} return &(p[0][0]); } void main() { int i,j,p[10][10]={0},*pp,(*ppp)[10]; pp=&(p[0][0]); pp=hoge(pp); for(i=0;i<10;i++){for(j=0;j<10;j++){printf("%d ",pp[i*10+j]);}printf("\n");} printf("\n"); ppp=(int (*)[10])&(p[0][0]); ppp=(int (*)[10])hage(ppp); for(i=0;i<10;i++){for(j=0;j<10;j++){printf("%d ",ppp[i][j]);}printf("\n");} printf("\n"); } お好きなほうを
>>262 さんのを見ると
int (*hage(int p[10][10]))[10]
の関数宣言で良いんだな
でもポインタ渡しじゃないとコピーコストがかかりそう
みなさんありがとうございます でもダメだorzここまで複雑になると文法の理解が足りなくて読めない>< みなさんどうやって勉強されたのですか? もしよろしければ教えてください C言語のプロになりたくて......
関数間の配列参照は普通ポインタ渡しだそ
#include <stdio.h> int* hoge(int* p) { int i,j,(*pp)[10]; pp=(int (*)[10])p; for(i=0;i<10;i++){for(j=0;j<10;j++)pp[i][j]=1;} return p; } int (*hage(int p[10][10]))[10] { int i,j; for(i=0;i<10;i++){for(j=0;j<10;j++)p[i][j]=2;} return p; } void main() { int i,j,p[10][10]={0},*pp,(*ppp)[10]; pp=&(p[0][0]); pp=hoge(pp); ppp=(int (*)[10])pp; for(i=0;i<10;i++){for(j=0;j<10;j++){printf("%d ",ppp[i][j]);}printf("\n");} printf("\n"); ppp=(int (*)[10])&(p[0][0]); ppp=hage(ppp); for(i=0;i<10;i++){for(j=0;j<10;j++){printf("%d ",ppp[i][j]);}printf("\n");} printf("\n"); } hogeをおすすめする hageはコピーコストがかかるよ
//staticな二次元配列を関数func内で宣言し、それの先頭アドレスを返したいのですが、 //intの配列へのポインタを返す関数func(パラメータなし)の関数プロトタイプ宣言の書き方を教えてください。 また、それを受けとって関数内で関数ポインタ配列を宣言し、その先頭アドレスを返す 関数プロトタイプの書き方を教えてください こういうの普通に出てくるしな 仕事でtypedefなしに書くと叱られるけど
と思ったんだがhageの方が速かったです
なんじゃこりゃ気持ち悪いな x()[1][1]なんて書き方した事ないぞ int (*fnc(void))[10] { static int v[10][10]; return v; } int (*x(void))[10] { int (*p)[10] = fnc(); p[1][1] = 10; return p; } int main(void) { printf("x[1][1] = %d\n", x()[1][1]); return 0; }
>>271 もっと短く書くと
int (*fnc(void))[10]
{
static int v[10][10];
return v;
}
int (*x(void))[10]
{
fnc()[1][1] = 10;
return fnc();
}
int main(void)
{
printf("x[1][1] = %d\n", x()[1][1]);
return 0;
}
グローバルに置かないで関数内staticにする理由が分からない 衝突が嫌ならポインタ渡しだそ
staticにしないと配列へのポインタを返しても関数を抜けると同時に配列が 消滅するからだろう
グローバル 〜 ファイル内 static 〜 関数内 static
>>274 サブルーチン
メインループ
main関数
変数宣言は参照のルーチンレベル一つ下でいい
参照のルーチンレベル以上で宣言するならstaticだけど避けるべき
>>276 あんたの言いたい事は分かるけど今は
>>259 さんのプログラムの書き方について
議論してるんだから
int g=0; int *hoge(int *p){ int pp; static int s=2; pp=p;pp=&g;pp=&s;//どれか return pp; } void main(){ int *p; *p=1; p=hoge(p); } ポインタ渡し>グローバル>static だろ
ミス main訂正 int i=1,*p=&i;
関数内static使うのはその関数呼び出し毎に関数内で参照する値を保持したい時位だろ
関数が呼び出された回数を数えたいだろ
クソコテの持論なんてどうでもいいんだよ
書き方を教えてください ↓ グローバル変数でいいだろ アホですか?
#include <stdio.h> ??? mozi(???){ printf("表示成功\n"); } int main(void) { mozi(???); } 関数の呼び出しで数値や文字を扱わないで printfで文章だけ表示させるさいに戻り値と引数はどうするのでしょうか?
void mozi(void) { printf("fuck!!\n"); }
286 :
284 :2012/06/11(月) 19:08:46.43
staticな二次元配列を関数func内で宣言し、それの先頭アドレスを返したいのですが、 intの配列へのポインタを返す関数func(パラメータなし)の関数プロトタイプ宣言の書き方を教えてください。 また、それを受けとって関数内で関数ポインタ配列を宣言し、その先頭アドレスを返す 関数func2のプロトタイプ宣言の書き方を教えてください なおどの関数もfuncで宣言した配列へのポインタを返すものとします
だめぽ・・・typedefを使わずになんとか書きたいんですが int (*func(void))[10] { static int v[10][10]; return v; } int (*f1(int (*p)[10]))[10] { p[1][1] = 10; return p; } int (*f2(int (*p)[10]))[10] { p[2][2] = 20; return p; } int (*(*func2(int (*p)[10])))(int (*p2)[10])[10] { static int (*(*f[])(int (*)[10]))[10] = {f1, f2}; return f; } int main(void) { printf("%d\n", f1(func())[1][1]); printf("%d\n", f2(func())[2][2]); return 0; }
staticな二次元配列の先頭アドレスとはいうが 単に32ビットのデータに過ぎないわけで unsigned char address[4]; に入れてもいいし unsigned int address; に入れてもいいしやな
いいえ違います。
>>288 ちなみに
int (*(*func2(int (*p)[10])))(int (*p2)[10])[10]
を
int (*(*func2(int (*p)[10])))(int (*p2)[10])
にすると警告が出ますが動きます
x86+BCC6.4.4です
しかし警告が出るという事はポインタの互換性がないので、アーキテクチャや
コンパイラによってはバグるでしょう(鼻から悪魔)
int* sub(void) { static int data[2][2]; data[0][0] = 1; data[0][1] = 2; data[1][0] = 3; data[1][1] = 4; return &data[0][0]; } int main(int argc, char *argv[]){ unsigned int address = 0; address = (unsigned int)sub(); printf("addr: %x\n", address); printf("data[1][1]: %d\n", *((int *)address+3)); return 0; } /////////////////// ./a.exe addr: 403010 data[1][1]: 4 こんなんで駄目なん
>>288 int (*(**func2(int (*p)[10]))(int (*p)[10]))[10];
>>295 通りましたありがとうございます!!
**と2つ必要だとは・・
cdeclでは
func2 is a function with int (*p)[10] returning pointer to pointer to function with int (*p)[10] returning pointer to array[10] of int
となりましたので、関数のポインタ配列がポインタのポインタとして表現しなければならないわけですね
これを関数のポインタ配列として表現したいところですがCはポインタ配列といえども配列を返す
事は出来ないのでこうなるわけですね
よく理解出来ました!
使うときも int main(void) { printf("%d\n", func2(f1(func()))[0](f1(func()))[1][1]); printf("%d\n", func2(f1(func()))[1](f1(func()))[2][2]); return 0; } なんて書き方になってしまい非実用的ですがCの複雑な宣言を理解するにはもってこいのようです
もうそこまでくると読めないレベルなのですが 何か読み方のコツといったものはあるのでしょうか
>>298 cdeclというプログラムがいいですよ
プログラミング言語C第2版にソースプログラムが載ってます
難しいのは演算子の優先順位がぱっと見にはわかりにくいからです
>>298 無駄に煩雑になってしまう型宣言の記述は
そもそもC言語の文法設計ミスとも言われている
「エキスパートCプログラミング」では、宣言のためだけに一章を割いてるw
>>299 ありがとうございます
ちょうど手元にあるので読んでみます
>>301 さんもありがとうございます
ぜひ買って読んでみようと思います
鬼としかいいようがない‥‥‥
>>301 頭の体操のために時々わざと複雑な宣言を文章で書いてそれをプログラムにしている(^^ゞ
とんでもないプログラムになって面白いです
他人も見るような実用的プログラムじゃ使えないだろ
実用的じゃないが「こういう書き方も出来る」というだけ
こういうのってどういうときに使うんだろうね?
上級者ぶりたい時
ビル・ゲイツ「反原発派の政治家や国民はもう少し科学的知識を持った方がいい」
http://ikedanobuo.livedoor.biz/archives/51740658.html きょうシアトルで、西和彦さんと一緒にビル・ゲイツにインタビューした。
彼は福島事故について驚くほどくわしく知っていて、
「合理的な日本人が非合理的な反応をしているのは残念だ」と言っていた。
特に原発や放射線のリスクについての科学的知識が政治家や一般国民に知られていないことが問題を必要以上に混乱させている、と語った。
印象的だったのは、中国がウェスティングハウスのAP1000を60基発注するという話だ。
中国は世界中からエンジニアを集め、国家プロジェクトとして原子力開発を進めている。
先月、第1号機が納品された。これは1基115万kWだから、合計6900万kW。
これだけで日本の原発の合計をはるかに上回る。設計はすべて同じだから、コストも非常に安い。
重要なのは安全性だが、AP1000のような第3世代の原子炉には、
炉心溶融を物理的に防ぐ受動的安全装置がついており、巨大地震が起きても大丈夫だ。
福島第一原発は古いマークTで、30年前から技術者が危険だと警告していた。
日本も「脱原発か否か」といった不毛な論争ではなく、古い原発を新しい原発に代えて
安全性を高めることも必要ではないか。
エネルギー産業は、情報通信産業の次の大きなフロンティアだ。
古い地域独占の電力会社が残っているおかげで、イノベーションの余地は非常に大きい。
新興国は安くて効率的なエネルギーを求めている。環境問題を考えても、きわめて危険な
石炭を減らすために原子力は重要だ。風力エネルギーも有望だが、フィードインタリフは
イノベーションを殺してしまう。
大事なのは、かつての通信と同じく、電力を全面的に自由化して競争を促進することだ。
エネルギー産業でも、かつてマイクロソフトがIBMを倒したように、巨大な電力会社を倒す
ベンチャーが出てくる可能性がある。そのためには不合理な規制を徹底的に見直すことが必要だ。
アメリカにはシェールガスもクリーンコールも第4世代原子力技術もあり、イノベーターも多い。
足りないのは合理的な政府だけだ。
313 :
デフォルトの名無しさん :2012/06/12(火) 13:09:27.35
2×2正方行列Aと2次ベクトルy、xの関数 →y = A ・→x を関数matmulf( )内でyについて計算して 、yをメイン関数の配列の中に返したいのですが どういう式の書き方をすると良いか教えてください。 配列xと二次元配列Aの値を使って配列yを計算したいです。 行列同士の計算は参考書にも載っているんですが、こちらはやり方が思いつかなくて。 初歩的な質問ですみません>< よろしくお願いしますm(_ _)m
それも行列同士の掛け算ではある
わからないですが Nの2乗を10個表示させたいんてすがどうしたらいいんですかね。 ちなみにstdio.hのみで、for文を使ってです
Nの乗数でした。
int (*(**func2(int (*p)[10]))(int (*p)[10]))[10]; この関数プロトタイプ宣言解析してください
___,,,,,..... -一ァ / ̄;;;´;;、;;;ヾ;;;, -──--、,! . /'´|;;;;,、;;;;;;;;;;/ ,! . /:.:.:.レ´:.ヾ;;;;;;i 断 だ ,! /:.:.:.:.:.:.:.:.:.:.:ヾ;i る が ,! . /:.;.イ:.:.:.:.:.:.:.:.:.:..ヽ ,! . /レ' ;|:.:.:.:.:.:.:,:ィ:.:.:.:〉 __,.,! /-、ヽ,:|:.:.:,/ /:.:.://.:,:ィ:.:.:.,! /'ヽ、ヾi ゙´.: /__;:;:-'"´ ,;|:.:.:.,! . /ゝ-`';:/ .:〈ニ=-=ニ二 ̄ヽレ',! /::::;;;;;/ ' ,, ニ`ー-,、__\〉ィ,! . /;:::::/ ::. ::.,,\_ゞ;'> 〈;,! /i!:::::iヾ-'、::.. '';~ ,;:'/,! . /;;;i!fi´l_、,.` .: ,;:' ,! /;;;;;i' ('ー、ヽ ..: ,;:'' ,! ヽ、jゝ、`ヾ:、゙、 ,..:'.:'" .: ,! ``ヽ.、_ ¨` ,:' (_r:,! ``ヽ.、.. ノr;ソ~,! ``ヾ、 / 7,! ``ヽ,!
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を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。