>>2 ちなみに出るエラーは
'fibo' : 1 番目の引数を 'void' から 'int *' に変換できません。
と出ます。
偶数の値になるときは、
2項目、5項目、8項目、11項目、14項目・・・です。
3項先の値は約4倍の値になるので、それをaddに格納して400万を越えるかどうかの判定をしてます。
>>4 素晴らしい回答をありがとうございます!
あの、値渡しが上手くいかないんですけど、
どうすればいいでしょうか?
>>5 値渡し云々よりもまず、
add = fibo(fibo(&a,&b),fibo(&a,&b));
この呼び出しの仕方だけど、関数呼び出しの引数を渡す所で、
同じ変数を更新する関数を呼ぶのは、呼び出しの順番が保証されないのでまずい
int z;
void f(int a,b,c) { }
void a(void) { z = 1; } void b(void) { z = 2; } void c(void) { z = 3; }
f(a(),b(),c());
この例ではa b cでそれぞれzを更新しようとしても、
どの順番に呼ばれるのかは言語の仕様に規定がないので、
zの結果は処理系依存になる。
で、値渡しができない件については、関数の結果の値は右辺値だから、
その値に対してのアドレスは得られない。
一度、結果を別の変数に格納して、その変数のアドレスを渡せば良い。
int tmp = fibo()
fibo(&tmp)
つーかfiboの型はvoidじゃないか。
voidじゃなくてint *にして適当にreturnで返せば意図通りになるよ。
8 :
デフォルトの名無しさん:2012/02/04(土) 15:17:27.77
なるよね
呼び出しの順番がどうとか関係ないよね
ないよね。
Cには値渡ししかないけどな。
関数引数の評価順序は規定されてないんだから
あんな書き方するもんじゃないよって事だよ
そもそも元の意味がわからんが、どういう順でよばれても同じ結果になる感じじゃないのか。
だからそもそも論点が違う。
まぁ最近はあんまりしてないけど、はじめてCしたのはもう30年以上前だからな。
><
あれは30年前
止めるあなた駅に残し
>>9-10,
>>13 どんな順序でも結果が同じになればいいというわけじゃない。
それがいいなら、a = (i++) * (i++); もいいことになる。
C-FAQ: 3.2, 3.8
assertの内部実装に関して質問なのですが、
プログラム中でassertに引っかかって停止した場合、
OSに対して、何かしらの値を戻したりしているのでしょうか?
mainのなかでファイルからデータを読み込んで、構造体の配列で宣言したものを
ユーザー定義関数?でつかうにはどうしたらいいんですか?
>>23 mainのなかでファイルからデータを読み込んで、構造体の配列で宣言したものを
ユーザー定義関数?でつかえばいい。
「ファイルからデータを読み込んだデータ」をつかう?
「構造体の配列で宣言したもの」をつかう?
まずデータをファイルに書き込んでおいたものを読み込んで
それを構造体の配列で保持します。
mainの中でよみこんだのをユーザー定義関数で使えますか?
何を言ってるのかよくわからないが、使えない理由はない。
説明下手ですいません;
スレチかもしれないが・・・
(1)1から1000までの間に、3と7の倍数の値がいくつ含まれているのか求めるプログラムを書け。
(2)キーボードから西暦年を入力し、その年がサッカーワールドカップ開催年かどうかを判定するプログラムを作成せよ。
この2つのプログラムを作成してくれませんか?自分でやってみたのですが、イマイチうまくいかなくて・・・
スレ違い。
スレチか〜残念
>>14 まぁ、メジャーなサンプルだから、ここから学ぶことは多いよね。
>>18 順番関係ないよ。
その2行目は曲解もはなはだしいけど
>>24 結果が正しいからOKって?
いや、まあ君がそれでいいなら別に言うことはないけど。
head.h、one.cpp、two.cppのファイルの構成で
head.hの中にaaa()、bbb()という関数があったとして
one.cpp、two.cppともに、head.hをインクルードしたとき
関数aaaとbbbはちゃんと1つずつメモリに読み込まれるんでしょうか?
exe実行すると、2個ずつメモリに展開されるようになるんですか?
そもそもhead.hに関数の定義をしてはいけない。
してしまったとしたら、その関数が外部リンケージならエラーになるはず。
ファイルリンケージなら、実体は複数できる可能性が高い。
ありがとうございました
>>37 >>38の補足になるけど
>head.hの中にaaa()、bbb()という関数があったとして
これが宣言なのか定義なのかが問題。
通常は宣言だと思うので、それならば問題ない。
定義だとすると
>>38の問題がでる。
これがinline関数だとしたら処理がインラインに展開されることになり、
メモリは余計に食うことになる。
よっぽど短い関数の場合だとインライン展開した方が小さい場合もあるけどな。
FILE *fp;
fp = fopen("data.txt","r");
for(i=0; i<10; i++)
{
if((fscanf(fp,"%[^,],%d",data[i].name, data[i].score)) != EOF)
{
number++;
}
else
{
break;
}
ファイルの読み込みってこれであってますか?
うまくうごかないんですけど
>>42 どう、うまく動かないかわからんのだが。
ついでにdata構造体の宣言が見えないとわからん。
気になるのはdata[i].scoreはポインタを渡しているかってことかな。
struct file_data{
char name[100];
int score;
};
struct file_data data[10];
構造体の宣言はこんな感じです。
if(fp==NULL){
printf("指定されたファイルが存在しません\n");
}
if文の中が表示されてしまうんですけどどうしたらいいですか?
>>35 なぜ?
> どんな順序でも結果が同じになればいいというわけじゃない。
>
> それがいいなら、a = (i++) * (i++); もいいことになる。
>
> C-FAQ: 3.2, 3.8
とか言ってる人だから日本語通じないのかな
>>44 fscanf(fp,"%[^,],%d\n",data[i].name, &data[i].score)
>>45 どういう理由で日本語通じないと言ってるのか、さっぱりわからんが、
>>24 で満足してるなら別にいいんじゃね。
別に君がどうなろうと、俺にとってはどうでもいいし。
なんだ、まだ不定と未定義の区別もついてないのか。
それとも理解したくないのか。
function(exp_a(), exp_b(), exp_c());
この評価順も不定だからダメと言いたいのだろうか。バカ丸出しだな。
>>35
>>49 Q 【未定義の例】未定義である場合としては、どのようなものがあるか。
A 二つの副作用完了点の間に、オブジェクトの値を2回以上変更している場合、
又は変更した後で新しい値を得ること以外の目的でそのオブジェクトをアク セスしている場合。
fibo(fibo(&a,&b),fibo(&a,&b)); の式は、(間違ってるけど) 式中で a, b を2回以上
変更してるからダメということ。
>>47 この手の議論で「不定」とか出してくる奴には用はないよ。
>>48 exp_a( ), exp_b( ), exp_c( ) で、同一オブジェクトを変更しているかどうかが問題。
なので、exp_a( ) の内容も示せずにレスする奴は、何も理解してない馬鹿。
この場合重要なのは、一つの式の中で、副作用が発生する操作を二回行う
ということです。その結果は未定義なので、この printf がどのような値を表示
してもC言語の仕様としては問題ありません。極端な場合、ここでプログラムが
異常終了してしまっても問題ありません。
>>51 >この場合重要なのは、一つの式の中で、副作用が発生する操作を二回行う
>ということです。その結果は未定義なので、
ダウト。
printf("%d %d\n", a++, b++); は、副作用が発生する操作を2回しているが問題ない。
問題にすべきなのは、「同一オブジェクトに対して」副作用が複数回発生すること。
もうただの揚げ足の取り合いだなw
>>44 >if文の中が表示されてしまうんですけどどうしたらいいですか?
ってことはfpがNULLなんだろ。
ファイルが開けないのだから、ファイル名があっているか、パスがあっているか、
そのあたりでしょ。
それと、その構造体の宣言なら、%dに対応する変数はポインタを渡す必要があるから
>>45のとおりfscanf(fp,"%[^,],%d\n",data[i].name, &data[i].score)
data[i].nameもポインタになっているのは、わかるよね?
>>50 話の通じない人だな
24の簡単なサンプルが理解できないようだから
更に簡単に書くよ
int f() { static i=2; return i++; }
int sum(int a, intb) { return a+b; }
int sub(int a, intb) { return a-b; }
int main() {
printf("%d\n", sub(f(), f()));
printf("%d\n", sum(f(), f()));
return 0;
}
これなら分かるかい?
2-3 が 3-2では困るが
2+3 は 3+2は同じだろ?
小学生でも分かる交換法則な
>>2でのケースはそれなんだよ
>>51 > exp_a( ), exp_b( ), exp_c( ) で、同一オブジェクトを変更しているかどうかが問題。
かかったな。どの順序で呼んでも全然問題ありませんが、何か言い残す事は? w
int total
exp_a( )
{
total +=1;
}
exp_b()
{
total +=2;
}
exp_c( )
{
total +=3;
}
どの順序で呼ぶとか以前に
同じオブジェクトを1つの式中で変更するようなコードの動作は未定義なんでしょ?
足りなかった&ちょっと言い方が違うか
同じオブジェクトを1つの式中で複数回変更するようなコードを実行すると
鼻から悪魔が飛び出すんでしょ?
>>57 関数呼び出しの引数並びは「一つの式」じゃありませんが。
なるほど、こんなことも知らずに「副作用完了点ガー」って、
覚えたての念仏唱えてたのか。w
だから揚げ足取りw
>>59 関数呼び出し(を含む式)は1つの式じゃないの?
途中で(順序は不明だが)関数を呼び出してる(副作用完了点になる)
どういう順序で関数が呼ばれても結果が変わらない
からOKということか
float a = ...
float b = ...
float c = (float)(((double)a) * ((double)b));
このコードは誤差を減らすためにやっているんですか?
>>64 試してみりゃいいじゃん
double a,b,c;
double a,b; float c;
float a,b; double c;
とかのパタンで
素人が書きましたという意味。
それじゃ、誤差は減らないから。
で、結局
>>50がアフォってことでFA?
関数呼び出しが副作用完了点てことも知らなかったのかな。
何にしろf(g(), h())みたいな書き方はマイナス査定対象
アフォ登場。
文字列中の部分文字列を検索する関数を作成したいのですが
strstr関数だと先頭に来る文字列しか検索できないので、
その次以降にも文字列が含まれているかどうか探していくにはどうやってプログラムすればいいんでしょうか
例えば str1="abcabdefgabchaiab" という文字列がある時、文字列「abc」が含まれる個数を数えるといった具合です
しかし、
>>50の言い草はまたすごいなぁ
結局用が無かったのは
>>50なわけでwww
>>64 floatをdoubleにしても、元がfloatなので有効桁はfloatの時と
同じなので意味がない。
double化することにより、乗算の結果表現可能よりはみ出すこ
とを抑制できるが、float化するのでこれまた意味がない。
つまり
>>50並みのアフォが書いた意味なしコード。
>>67 よくわからないなら書かなければいいのにね
ミーティングの時に「副作用完了点」とぼそっと呟いてみよう。
ピクッと反応した奴が
>>50だ。見つけたら笑ってやれ。
変数の使い方についてなんですが
プログラムを作っていて、変数が新しく必要になった時に
今までの処理で使用したけどもう役目を終えて使っていない変数があればそれを再利用すべきなのか
それとも新しく宣言した方が良いのか、どっちなんでしょうか?うまく表現できなくてすみません
一時変数のtmpを使いまわすかどうかとか、
2個目のループでi j を使いまわすかどうかってレベルの気がする。
再利用か、別変数か、
>>50の意見も聞いてみたい。
>>50の逆をいけばいい。w
81 :
77:2012/02/06(月) 18:39:41.19
オブジェクトの解体と再構築のコストが大きくて
可読性を犠牲にして再利用したくなるぐらいなら最利用する
そうでなければ普通に新しく作る
>>77 まともな最適化機能をもったコンパイラなら再利用は避けた方が効率的なプログラムになる可能性が高い。
最適化の前段階でのフロー解析において、どの変数がどこに利用されるか等のプログラムの流れを検出しようとするが、
関係の無いところでの使い回しがあると解析しにくくなる。
これは人間にとっても同じで、関係の無い使い回しがあると流れがわかりにくくなり易い。
コンパイラが C99 に対応しているならループ変数程度のものは
for (int i=0; i<n; i++) hoge();
というようにその場限りの使い捨てがやりやすいので積極的に使うといいと思う。
昔の C は関数の先頭でしか変数の宣言をできなかったが、今ではどこでも宣言できるので、
使うところの近くで宣言し、なるべく狭い範囲でだけ使うのが近代的なスタイルと考えられている。
とは言うものの、これらはあくまで原則。 やりすぎるとそれはそれで不都合があることもある。
読み易さや効率はケースバイケースなので盲目的に従うのではなく、
どちらが良いか個別の「意味」を自分なりに考えよう。
プロジェクトによって書き方にガイドラインを設けているものもあるので、
既存のスタイルを参考にするのもいいかもしれない。
84 :
77:2012/02/06(月) 19:29:34.66
参考になりました。みなさんありがとうございます!
C99以外の環境ってブロックの先頭以外で変数宣言できたっけ?
void func(void) {
int x;
hoge(x);
{
int y;
fuga(x, y);
}
}
的な感じで書けるから実質宣言場所に制限はないと見てもいいよ
できないよ
88 :
87:2012/02/06(月) 19:37:04.79
>>80 しばらく
>>50を引き合いに出しそうな感じがするからコテつけてもらえると助かる。
> プロジェクトによって書き方にガイドラインを設けているものもあるので、
> 既存のスタイルを参考にするのもいいかもしれない。
>>50のように聞きかじりの知識を振りかざして混乱させるはた迷惑なバカが
ガイドラインを作っていることも多いので、プロジェクトのガイドラインに
は疑いの目を向けることも重要。
また変なのがでてきたなぁ…
コテ禁止にはしなかったんだっけ?
コテつけてもらったほうがありがたい
逆コンパイルでソースが復元できないC系のwindowsフォームアプリの開発言語でVSに入っているのはなんというものですか?
いや。
>>50はぜひコテをつけて、このスレのおもちゃになってもらいたい。
いやいや。すでに
>>50って名前で定着してるだろw
float a,b,c;
a = 425;
b = 293749;
c = (float)(((double)a) * ((double)b));
printf("%f %f\n",c,a*b);
>>98 printf()にdoubleで渡してるからだろ。
何がいいたいんだ?
また
>>50か?
初心者向けにC言語の暗黙のルールやバッドノウハウがまとまってるサイトとかってないかな
getsは使うなとかscanfは使うなとかそういうの
C FAQの初心者版って事?
確かにC FAQ理解できなくて
>>50になってしまったら悲惨だからなあ。
2chならいいけどリアルでやったら生きていけないよなあ。w
お前ら容赦ないなwww
>>101 バッドノウハウを学ぶタイミングは難しいとおもう。
非推奨の関数に関してはコンパイラの警告で。
今Macのxcodeでc言語してるんですけど質問はここでいいですかね?
mac板にxcodeスレがあるみたいだけど。そこじゃダメなの?
新Mac板は基本objective-cや変化の多い環境環境やアプリや機器の登録とかの話題多いからcだけとかそうゆう感じじゃないんですよね。。MacでCすると窓にはないイレギュラーな事態とか起こったりするんだろうか、?
あ、すみません質問は事故解決しました
ターミナルでgcc打ってるレガシーな感じでCの勉強してるのかな?
xcodeのiPhoneアプリやMac用ソフトとかのテンプレの中にcのテンプレがありますねん
メモリ2Gくらい使うソフトでやってるからレガシーではないですな
>>54-55 馬鹿すぎて話しにならない。
>>59 副作用完了点舐めすぎ。
関数呼び出しが副作用完了点と言うのは正しいが、今回の問題は引数の評価だから、全然違う話。
例えば
int foo(int x, int y){ return x + y; }
int main(){
int a = 1;
int b = foo(a++, a++);
printf("a = %d, b = %d\n", a, b);
return 0;
}
ってやってみればわかる。
引数の評価毎に副作用完了点があるなら、評価の順序にかかわらず a = 3, b = 3 になるはず。(GCC/2.95)
ところが、コンパイラによっては a = 3, b = 2 になる奴がある。(Visual Studio 2010)
もちろん両方ともに処理系としては正しい動作。
そもそも式がダメなのに、それに含まれる関数の引数評価に副作用完了点があると思えるなんて馬鹿すぎる。
まだほざいてるのかよ。
誰も引数の評価ごとに完了点があるなんて言ってねーよ。
112 :
デフォルトの名無しさん:2012/02/07(火) 00:06:24.95
a++の代わりにadd1(&a)とかにしてみろよ。
やたら3項演算子使いたがるよね、自称玄人プログラマはw
まぁ普通は低レベルに合わせないといけないから禁止されてるからそのせいだろw
3項演算も禁止しなきゃならないぐらいヘボグラマしか居ない環境でまともなアプリケーションなんて作れるの?
まぁお前も含めて大抵のとこはそんなもんだよ。
int fibo(int a)
{
if(a == 0) {
return 0;
} else if(a == 1) {
return 1;
} else {
return ( fibo(a - 1) + fibo(a - 2) );
}
}
↓
int fibo(int a)
{
return a == 0 ? 0 : a == 1 ? 1 : fibo(a - 1) + fibo(a - 2);
}
おれってかっけー、いやっほぅ!
returnの後にelseとか、いつも間抜けに見えるよね。
やってることは大したことないんだけど、記述次第で凄そうにみえる3項演算子
まぁ理解してたらその逆だと思うけどなw
おすすめの本教えて質問はできません
そもそもif-elseの羅列と三項演算は使い道が違うから
比較すること自体がナンセンス
ほうほう。
>>4の例が使うべき例だとそういうことだね
そんな低レベルの話はしなくていいよ。
この作例の利点は何だ?w
三項演算ってのは条件式から値へのマッピングなんだよ
条件分岐とは意味合いが異なる
うむ、その意味合いの違いが生かせる作例とは?
Perl使う様になれば理解できると思うよ
三項演算子は1段までなら簡潔にかけていいこともあるだろうが、
それ以降のネスト化はただの技巧披露にしか見えない
仮に、最適化オプションありでコンパイルしたコードをディスアッセンブリしてみて、
ソースを三項演算子で記述したほうが命令数少ないよって話なら別だが
慣れればフツーに読めるだろ、低能には無理だろうがな
とか言い出す玄人()が出てきそうなネタだね
むしろ3項のほうがすっきりして読みやすいと思うんだけど
カンマ式混ぜると痛い事に成るしな
>>131 そう? (cond) に対応して便利と思わない?
で、どこに自称玄人プログラマがいるんだ?
色々禁止してやらないとダメな
>>115のようなヘボグラマしかいないようだが。
質問には質問で返す。
典型的なヘボ。
そして論点をずらす。
#include <stdio.h>
void func(){
printf("i am func.¥n");
}
int fibo(int a){
return a == 0 ?
(a = 1, 0)
: a == 1 ?
(a = 2, func(), 1)
:
fibo(a - 1) + fibo(a - 2);
}
int main(){
printf("%d¥n", fibo(10));
return 0;
}
142 :
デフォルトの名無しさん:2012/02/07(火) 03:31:12.45
fatal error RC1015: cannot open include file 'l.jpn\windows.rc'.
リソースファイルのコンパイルに失敗します
どうすれば解決しますか?
>>126 それに慣れるとPHPでびっくりするからやめたほうがいいよ
おまいら、教えてくれ
page faultの許容ってどんくらい?
process explorerで測定したら2000くらい。
バッチプログラムなんだけど、バッチで2000って多いですか?
スレ違い。
int x = 0;
printf("%d %d", ++x, ++x);
>>2 #include <stdio.h>
void fibo(int *a, int *b)
{
*b += *a;
*a = *b - *a;
}
int main(void)
{
int sum, a, b;
for(sum = 0, a = 0, b = 1; a <= 4000000; fibo(&a, &b)) {
if(a % 2 == 0) {
sum += a;
printf("%d %d\n", a, sum);
} }
return 0;
}
static unsigned long long fib(unsigned n)
{
if (n == 0) return 0;
static unsigned long long a[94] = {0, 1, };
bool inRange = n < sizeof(a) / sizeof(* a);
if (inRange && a[n] != 0) return a[n];
unsigned long long val = fib(n - 1) + fib(n - 2);
if (inRange) a[n] = val;
return val;
}
int add_fibo_evnn(int n){
int a=0,b=1,c=0,d;
while((d=b,b+=a,a=d)<=n)c+=d*(~d&1);
return c; }
152 :
デフォルトの名無しさん:2012/02/07(火) 15:46:57.40
C言語のプログラムレポート15個中3個提出しなかっただけで3段階評価で
Cだった...8割出してC(可)ってありえないだろ。ふつうはAだよな。
みなさんどう思う?
3段階評価ならCって不可じゃねーの?普通
3段階なら、全提出でB、内容がマトモでAだな
提出してないのはCでも文句言えないだろ
プログラムの出来がパーフェクトで8割提出なら80点
プログラムの出来が80点で8割提出なら80*0.8=64点
プログラムの出来が90点で8割提出なら90*0.8=72点
00-60 不合格
60-70 C
70-80 B
80-100 A
お前のプログラムの出来が80から90に満たない程度の出来だったと判断されたんだろ
パンデモニウムさんは可愛いけど声がイラつく
156 :
デフォルトの名無しさん:2012/02/07(火) 16:03:32.42
>>154 専門科目が6割以上合格ってどんだけ昔の考え?
157 :
デフォルトの名無しさん:2012/02/07(火) 16:08:14.75
A 優
B 良
C 可
D 不可
だろw
Aくれない教授はゴミだよ。生ゴミ以下。
それ4段階じゃね?
レポートのみなら未提出がある時点でAはあり得ないだろ
>>158 単位がくれるっていう前提で3段階っていっちゃったね。
ふつうはどの大学も合格がABCの3つだからね。
未提出がある時点でAがありえない、とまではいわないが、
未提出があるにもかかわらずAを与えうる回答をそれまでにしたかどうかが気になるな
つまり、求められた回答と同じレベル(テストで言うと100点)の回答しか出していないなら、未提出がある時点でAはない。
実は本当は8つ提出してなくてぶっちゃけAとかどうでもよくて
単位が貰えるか不安だったけど安心した俺内野手
>>159 「単位をくれる」なのか「単位が貰える」なのか
つか前提ってすごいな。最近の大学はそんなもんなのか?
>>162 教授次第だけど1/3以上未提出なら普通はDになるんじゃないかな
むしろ全部提出してる奴は少ないからな。必修なら落とされないと思う。
そういや私の通ってた大学も(頭が)足りないやつは追加提出させられてた気がするな
必修ならほぼ落とすことは無いか
選択がないので1つでも落すとアボン。
落とされない大学なんぞに意味はないな。
情報系じゃなかったけど
レポート半期で12本初回抜き打ち試験中間試験定期試験とか当たり前のようにやって
全部提出出席しても試験でしくじって落とされるやつがちらほらいて地獄絵図だった
後輩にはうちの大学には絶対に来るなと忠告したよ
何の為に大学に行ってるの?
行かないと社会が人間扱いしてくれないからとりあえず
必修だから落とされないとか、そんな世の中なの?
関数func()内で
int data[177][23]が定義されており、データが関数内で入れられるとします。
この関数の外から、2次元配列のポインタのポインタを渡し、int data[177][23]のアドレスを引数で返したいのですが、
void func( @ ){
int data[177][23];
A = data;
}
void func2(void){
失礼しました。途中で送信してしまったようで・・・
改めまして
関数func()内で
int data[177][23]が定義されており、データが関数内で入れられるとします。
この関数の外から、2次元配列のポインタのポインタを渡し、int data[177][23]のアドレスを引数で返したいのですが、
void func1(@){
int data[177][23];
A = data;
}
void func2(void){
B // 2次元配列のポインタのポインタの宣言
func1(C);
}
@〜Cの記述は、どの様にしたらよろしいでしょうか?
175 :
174:2012/02/07(火) 19:03:24.76
int data[177][23]の実体はfunc1()が持ち、
他の関数からその中身を参照にしたいのです(グローバル変数使用不可)
宜しくお願い致します。
> 関数func()内で
mallocを使うか根本的なところから見直す
void func1( *(*pArray)[23]){
int data[177][23];
*pArray = data;
}
void func2(void){
int *pArray[177][23]; // 2次元配列のポインタのポインタの宣言
int ans;
func1(pArray);
ans = pArray[0][0] + pArray[176][22];
}
イメージとしてはこんな感じですが、もちろんこれでは上手く行きません・・・
179 :
174:2012/02/07(火) 19:17:27.61
int data[177][23]をグローバルに持って行ければ全然問題ないのですが、
事情があって、それが出来ないのです・・・
※私に与えられてる権限としては、func1の引数の変更、func2の製作
ゴミコード発生の瞬間である。
やりたい事がさっぱり分からん
エスパー待ち
その実装だと誤動作するよ。自動変数で調べてね。
以下のいずれかの修正をしてもらう必要がある。
@
void getData(*****) {
. static int data[N][M];
}
Aソースを分割して、
static int data[N][M];
void getData(*******);
B
malloc つかう。
183 :
174:2012/02/07(火) 19:29:37.65
>>182 おお!
すみません・・・static扱いでお願いします。
実際はstaticでした。懸案事案の抽象化に失敗してしまいました・・・
void func1(@){
static int data[177][23];
A = data;
}
void func2(void){
B // 2次元配列のポインタのポインタの宣言
func1(C);
}
>>181 知りたいのは、「2次元配列のポインタのポインタ」を引数に渡してアドレスを入れてもらう
やり方です
@int*** value
A*value
Bint** data
C&data
で、できると思うけど、何がやりたいのかは知らないし、あまりよくないコードな気がする。
やりたいこと書いて代案出してもらったほうがいいと思うけど、まあ、とりあえず。
ローカルstaic変数のアドレスを取るとかグローバルと大差ないわ
いや、グローバルはグローバルだって意識できるからまだいいけど
これじゃあソレもできないから最低最悪だな
静的なオブジェクト/動的なオブジェクト(free必要)
これ以上の情報を意識する必要はないし、意識しなけりゃならないのは最低最悪。
グローバル? 今時使わないよね。w
質問
関数って引数は何個までとか何バイトまでにした方が良いってのはある?
ある程度を超えるとメモリに積む作業が増えるので急激に遅くなる、とか。
大差無いのかな。
そんなことを気にするのはお前には早すぎるよ。
>>189 初心者は速度を気にしちゃいけないなんて決まりがあったのか。
知らなかったわ、すまん。
192 :
デフォルトの名無しさん:2012/02/07(火) 21:03:19.05
>>188 変数固めて構造体にして、ポインタで渡す
俺なら
>>188 パフォーマンスへの影響は環境によるので実測しないとなんとも言えないけど、
計算量的によほど厳しい条件下でなければはっきりわかるような差は出ないよ。
回数が多く呼ばれる関数ならちょっとした差が全体に多きく影響することもあるけど、
どこまで許容できるかは程度問題なのでスパッと基準を決められるものではないな。
問題になるまでほっときゃいい
腐りだしたら破棄して作りなおしゃいい
ダしゃいいタマがうずくなら
>>188 大雑把に1KB以下なら気にしなくていい
>>192 Windows API はそういう感じだね。
でも、その構造体だってどこかでメモリを消費するわけだし、
構造体に値を放り込むのだってゼロコストなわけじゃない。
同じデータをある程度何度も繰り返して渡すような状況ならいいが、
そうでないならパフォーマンスの差はほとんど出ないと思う。
バイナリ互換性を維持したまま構造体に要素を追加して拡張できる点で有利ではあるので、
長期的にインターフェイスを維持したいときには考慮に値する方法と言える。
こういうくだらん話しか出てこないから初心者は気にすることはないってこと。
1KBも引数あったら俺なら確実に間違える。
正しい順序、個数で記述するには丸以上1日かかる。自信がある。
回答ありがとうございました。
超特大構造体ならさすがにポインタ渡すけど、
十数バイトで気にする事はないんですね。
そんなことより正しい設計かどうかを気にするようにした方がいい。
>>200 10数バイトって…
int 4個で気にしてちゃ何もできんだろw
CreateFile()で引数7個、28バイトだぞ。
>>149 また楽しいコードかいてるねぇ
再帰使わないで書いたのはいいだろう
ただ、あえてfor文内にあえて詰め込まなくても。。
CreateWindowEx()で12個。
MyCreateWindowExは引数一つだよ
>>205 質問じゃないならヘボは出てこなくていいよ。
どこのヘボもいつも同じことしか言わないな。
なんでこう見下すやつが出てくるのかね
現実世界で認められてないの?
自覚のないヘボは甘やかすと大変なことになるんだよ。
他人を甘く見るやつはだいたい足元すくわれてるよね
214 :
デフォルトの名無しさん:2012/02/07(火) 23:46:41.93
ヘボなくせに他人を甘く見てるのは
>>205だろwww
/ \ /\ キリッ
. / (ー) (ー)\ <「再帰使わないで書いたのはいいだろう」
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー?、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー’´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一””””~~``’ー?、 -一”””’ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
別に甘く見てないよ
そんなに行数を少なくすることが重要なんだろうかというただの感想
そう思わないか?
「そう思わないか? 」 キリッ(AA略
1行プロコンじゃないんだから、わかりやすく書けばいいのにって思う
せっかくの高級言語なんだしさぁ。。
わかりやすく書いたら1行に収まるだろ
制御文増やすとわかりにくくなる
Cは低級言語だよ。
まったく、基礎知識のあるやつがほとんどいないのが原因だよな。
なんかWikiもものによってひどいよね。
せめて計算機の勉強した人が書けばいいのに。
お前がな。
>>227 基礎知識がない呼ばわりしてるくせして矛盾したこと言ってんじゃねぇぞ
>>152 全部出してやっと評価対象になるのに、3つも出さないのは評価対象外
しかし、
>>224の分け方だったらそもそも分ける必要ねーだろって感じだな。
逆にCを低級と思う理由は?
まともに使えるやつが少ないの見ればわかるだろJK
そういう定義なの?低級(低水準)ってw
関数型 > Web系・シェル、VM動的型付け
> VM静的型付け > C++ > C > asm > バイナリ
こんな感じか
またヘボがわけのわからんもの出してきたな…
低級高級なんて感覚的なもんにちゃんとした定義があると思ってるのか
ハードウェアよりであれば低級
Cが高級だったのは昔の話
Low-level programming languageのwikiには、一般には機械語かアセンブラ言語を指すって
書いてあるけどね。。
In computer science, a low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture. Generally this refers to either machine code or assembly language.
>>239 翻訳してるだけじゃねーか
しかもTalkで議論されてるw
243 :
デフォルトの名無しさん:2012/02/08(水) 00:56:59.15
激しく
ど う で も い い
>>242 いやいや、翻訳しただけだよもちろん、そう書いてあるよってだけだからw
>>243 乙
一般に低水準(低級)言語と言った場合は機械語かアセンブリ言語を指す
www
>>249 最適化オプションいれてみた?
-Osとか-O3とか
つまりOOP未満は低級だと言いたいやつが多いと言うことだな
だったらこんな古典言語スレに来なきゃいいのに
>>251 -Osや-O3とは何でしょうか?
特に最適化オプションは行っていません
>>255 簡単に行ってしまえば、多少下手な書き方しても、コンパイラが
その処理の意味を理解して、一番無駄のないマシン語に書き換えて
くれるようにするオプションです
>>249程度のソースなら、最適化オプションを入れれば、
ifやswitchなどほぼ関係なくなります
出たwww
もうインデントとかしないで、1行にズラーと並べちゃえよw
>249
まともなコンパイラーで最適化オプション指定すれば条件分岐は全く使われないから
読みやすいコードを書くことに専念するべき。
switch分を使いたいのは、その条件文でフラグビット立ててジャンプテーブルを自作するのだろうか
可読性が損なわれるので現在のコンパイラーではやるべきでは無い。
このスレは、簡単なCの宿題を、極力少ない行数で書いて
「おれってすげぇだろ」ってスレだったのかw
理解したwww
(このレスに対して返されるであろうレス)
この程度で凄いとか言ってるおまえは相当な低能だなwww
>>262 センスもくそも、そんなfor内につっこむソース書くほうがセンスなしw
>>249 重さうんぬんはプログラムを完成させてプロファイル取ってから考えればいい。
もちろん、あらかじめ何が問題になるか予想できる場合は対策はすべきだけどね。
>>261 わかりました
読みやすさを優先させた方が良いですね
有難う御座います
>>261 > まともなコンパイラーで最適化オプション指定すれば条件分岐は全く使われない
なんてありえるのか?
>>266 この程度が理解できないようじゃ話にならんだろw
そんなこと言うくらいだから高度な書き方だとでも
思ってるのか?もしかしてw
仕事ではやんなよ、読みにくいだけだからw
じゃぁファビョるなよ。
乙
わざわざ糞コードに書き直してる時点で性格悪いだろ
口だけ出すヘボよりマシなんじゃなイカ?
ん?わざわざprintf開いて三項演算で書いてる糞ソースのこと?
横からでアレだが、
>>275 お前もヘボいことばっか言ってないでちょっとは貢献したらどうだ?
>>257 少なくともこれは貢献でも何でもない
ただの自己満ソース
自分で書いて一人でニヤニヤしてればいいのに
わざわざ晒して恥ずかしい
だからそんなこと言うならお前が何か貢献しろよ。
日本語も読めないのか?
三項演算子のネストにカンマ演算子多用とか普通に糞コードですから、
そういうのは一人でLispとかでやっててください
>>257 こんな書き方もできるんだぁ
すごーい
勉強になるわぁ
これでいいかな。。
>269
index = w;
index << 3;
index &= z
index *= ofset-of-functions
jmp [base-address + index]
間違えた
×index &= z
○index |= z
そんなコンパイラはないだろ。
あるんだったらなんてのか教えてくれ。
こうだな
index = w;
index << 3;
index |= z
address = addres_table[index];
jmp address;
>>249 標準関数の呼び出しはコンパイラーの最適化オプションで一回の呼び出しにまとめられないので
出力文字列はバッファーに貯めて、最後に一度だけprintfを呼ぶべき
それによってコンパイラーが出来る最適化の範囲が大きくなる
速度にクリティカルなプログラムを書くなら、ifかswitchなどにこだわるより、
メモリーアライメントなどをよく勉強して効率のよいデーター構造は何かなどを
意識した方が良い。
printf()が問題になるようならそもそもの設計が間違ってるけどな。
>>249の無駄な判定には誰も突っ込まないところが凄いw
それはprintf()にくらべたら無視できる。
それにロジックは
>>257で解決してんじゃねーか?
じゃぁprintf()1回で模範回等頼んだ
>>290
printf("%d%s\n", i, m3 == 3 ? (m3 = 0, m5 == 5) ? m5 = 0, "FizzBuzz" : "Fizz" : m5 == 5 ? m5 = 0, "Buzz" : "");
ロジック以前に、無理矢理な三項演算とカンマつなぎをどうにかしろw
【韓国ブログ】台湾にあふれる日本文化…ここは一体どこの国?
【社会ニュース】 2012/02/07(火) 12:08
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0207&f=national_0207_100.shtml ワーキングホリデーで台湾に滞在する韓国人ブロガーの「JK」さんは、
現在生活している所が日本なのか台湾なのか分からなくなるほど、台湾には日本文化が浸透していると語った。
「ときどき台湾が日本なのか台湾なのか分からなくなる時がある。
なぜなら台湾には日本企業があふれているからだ」と述べ、台湾はどこに行っても日本のフランチャイズ店ばかりが目に入ると語った。
ブログには、台湾の繁華街に日本文化が浸透していること伝えるため、「和民」「ユニクロ」「三越」「ダイソー」など日本企業の看板が並ぶ台湾の街の写真を掲載した。
台湾が日本のように感じる要因として、多くの台湾人女性が日本のファッションや日本のヘアスタイルを取り入れていることや、
日本人観光客が多く日本語が飛び交っていること、漢字文化圏のため看板には漢字が使われていることなどを挙げた。
日本文化が定着するあまり、JKさんが日本人客に間違われるケースもあったという。「店員に英語で話しかけると、日本語で応対しようとしていた。
私がアジア人だから日本人だと錯覚したのだろう」とエピソードを紹介した。
台湾に進出する日本企業の中でも、JKさんが特に気に入っているのは必要なものがすべて揃う「ダイソー」だそうで、売られている多くの商品に日本語の説明書きがあるため、
やはり自分が日本にいるような錯覚に陥るのだと述べた。(編集担当:新川悠)
三項演算子とカンマ演算子に狂ったように固執してるやつが
初心者に糞ソースを常駐解答するスレです
日本は近い将来放射能と首都崩壊で消えてなくなるから
いまのうちにもっとたくさん台湾に日本の文化を継承してもらいたいね
#include <stdio.h>
int main(){
int i;
char *s = "Fizz¥0Buzz";
for (i = 1; i <= 100; i++) {
if (i % 3 == 0)
printf(s);
if (i % 5 == 0)
printf(s + 5);
if (i % 3 && i % 5)
printf("%d", i);
putchar(' ');
}
return 0;
}
速度を気にする時に%なんて使うもんじゃないよね。
%やめて速度を気にするのなら、条件判定についてもちゃんと考えるべきだよねw
>>299 printfに奇数アドレス指定すんなスットコドッコイ
>>302 printfにそんなしばりねーわ、このタコ。
お前1回休みな。
特殊な環境なのかね?
奇数アドレスの参照発生で例外投げるとか、ペナルティで遅くなるとか
奇数アドレスからのワードアクセスかなんかと勘違いしてるんだろ。
今時奇数アドレスって言うのもアレだけどな。
いやいや、速度の話してるんだから
関数に渡すポインターのアドレスはCPUのメモリーアクセスアライメントに合わせろよ(w
memcpyのasmソースよく見ろって
意味無し。
>>307 なんでmemcpyが出てくるんだよ。
どうせならprintf()のソースを見ろよ。
開始アドレスを整列させても、どうせ全部スキャンするんだから、
影響なんてあるわけがない。
アライメントとかそのへんの単語を最近覚えて使いたくてしょうがなかったんだろ
駆け出しの頃にはよくある病気だから暖かく見守ってやりなよ
memcpy は block move で済むからアドレッシングによる差が出るだろうけど
printf は format 文字列のパースや引数列の文字列化作業なんで
1文字ずつ逐次やる(=1バイト単位で捜査する)しかないんじゃないの?
その捜査の過程でペナルティ発生させるような気配がするけど
覚えたてのお経をとなえてみたのか。本当に
>>50はダメな奴だな。
>312
どう考えてもビットマスクするだろ
このスレは実務経験の無いアホばっかりだな
315 :
デフォルトの名無しさん:2012/02/08(水) 15:13:22.87
ビ ッ ト マ ス ク ? ? ?
>>314 で、printf()のソースは確認したのか?
>>314 SSE/MMX 使った画像処理とかで、境界とそれ以外に場合分けして処理するぐらいなら実装したことあるけど
printf の実装をしたことがないのでなんとも
極限まで好意的に考えてRISC系のみでx86でプログラミングしたことないのかな。
>>318 RISC系だって実際の作業効率考えたらコンパイラに最適化を任せた方がいい。
たぶんSC/MPレベルのコントローラチップを想定してるんだろう。
class A
{
private m(){}
private b(){}
}
これをC言語で似たようにして書く方法はありませんか?
1つのファイルに入れてstaticつければいい。
>>322 エラー行が赤くなってるんだから丹念に見ろよ
一つ目は18と21の間がカンマじゃなくてスペースになってるぞ
>>323 自分がアホすぎて悲しい
ありがとうございました
>320
typedef struct {
struct MyVtbl *vtbl;
} MyClass *pMyClass;
typedef struct MyClass MyClass;
struct MyVtbl{
void (*m)(pMyClass);
void (*b)(pMyClass);
};
static MyVtbl myVtbl;
pMyClass MyClassConstructor(){
myVtbl.m = func_m;
myVtbl.b = func_b;
MyClass *pClass = malloc(sizeof(MyClass));
pClass->vtbl = &myVtbl;
return pClass;
}
void m(pMyClass this){}
void b(pMyClass this){}
327 :
デフォルトの名無しさん:2012/02/08(水) 20:02:44.62
128ビット16進数の乱数をつくるにはどうすればいいですか?
>>327 32bit 乱数を出力してくれる系ならそれを 4つ組み合わせればよい。
それでだめな乱数もあるが、メルセンヌツイスタならほぼOKだ。
ggr メルセンヌツイスタ
ほぼだってw
最近ようやくメルセンヌツイスタって言葉を知ったので使いたくてしょうがなかったんだな
最近は、ハード的に物理乱数生成するマイコン(SoC)あるから
それ使えるならそれがベストだ
ベストじゃねーよカス
あ、しまったここPC板だったw
ついつい組み込みの考えでレスを。。
もう、ivy bridge専用でいいよ。
最近知ったんだねっていうと昔から知ってますっていうからやめといたほうがいい
お互い顔見えないからハゲとノノシるとフサフサですと言い返すみたいなもんだな
ハゲはだまってろ。
▼PC等
341 :
デフォルトの名無しさん:2012/02/09(木) 07:34:21.88
C 言語においてmain 関数が正常終了する際にexit(0); を実行し,異常終了する際にはexit(1);
を実行することがある
なぜかわかる方いますか?
>>341 スタートアップルーチンがそうなっているんだろ。お前のところではな。
構造体を動的メモリで確保したのですが、解放がうまくいきません。
#define NUM 20000
typedef struct{
..............
} KOZO;
int main()
{
int i;
KOZO **kozo;
for(j=0;j<100;j++) {
以下のコードをループさせる
kozo=(KOZO **)calloc(NUM,sizeof(KOZO *)) ;
for(i=0;i<NUM;i++){
kozo[i]=(KOZO *)malloc(sizeof(KOZO));
memset(kozo[i],0,sizeof(kozo[i]));
}
このように、NUM個の構造体をmallocで確保して
ポインタをkozo[]に入れています。
****** この間に構造体のメンバに対して処理を行うコード *****
解放は
for(i=0;i<NUM;i++) free(kozo[i]);
free(kozo);
} /*for(j=0;j<100;j++)*/
どうも free(kozo[i]) ですべての領域を解放していないようなのです。
for(j=0;,,)ループの一回目は問題なく終了するのですが
二回目は解放のところでエラーがでます。
もう、3日間つまづいています。
どなた様か、よろしくご教授ください。
345 :
デフォルトの名無しさん:2012/02/09(木) 08:33:35.19
日本語もまともに使えないヴァカには無理
C言語とか以前の問題
プログラムの前に日本語を5年ほど勉強してこいゴミ
>>344 問題が再現するコンパイル可能な最小のコードを示せ
>>344 free(kozo)はループに入れちゃいかんだろ。
つーか、sizeof(KOZO)とsizeof(kozo[i])が混在していてうざい。
calloc()とmalloc()+memset()が混在しているのもダメダメだな。
>>347 お前の答え方のほうがよっぽどうざいよ。
そういうおまえはもっとうざい。
352 :
347:2012/02/09(木) 08:47:58.17
>>350 おっと、確かに。
>>344 こりゃ失礼。そのコード断片ではあってそうに見える。なので、>346。
もっと回答者の身になって分かりやすい回答を心がけろ。
まだコードを直せるまともな回答が出てないぞ。
354 :
350:2012/02/09(木) 08:54:26.89
355 :
デフォルトの名無しさん:2012/02/09(木) 08:55:13.21
>>346 示してますよ?
何で答える人ってそうやって命令口調なんですか?
kozo=(KOZO **)calloc(100,sizeof(KOZO *)) ;
for(j=0;j<100;j++) {
以下のコードをループさせる
kozo[j]=(KOZO *)malloc(sizeof(KOZO) * 200);
memset(kozo+j, 0, sozeof(KOZO) * 200);
/*
for(i=0;i<200;i++){
memset(kozo[j] + i,0,sizeof(kozo[i]));
}
*/
}
360 :
344:2012/02/09(木) 09:10:55.59
みなさん、早速ありがとうございます。
「再現可能な最小コード」を用意しようとして
途中の構造体のメンバ処理などをザックリ切り取ってみましたが、
それではエラーの再現はありませんでした。
もしかすると構造体の動的メモリ確保が問題なのではなく、
途中のメンバ処理で、領域外書き込みかなにかやらかしているかもしれません。
構造体のサイズは1200Bほどで、これを25000個ぐらい用意するので
全体で27MBくらいになり、巨大すぎるのかな?とも思ったりします。
ちなみにOSはXPでメモリは1.5Gでやってますw。
完全にパーフェクトにお前のコードの問題。
362 :
344:2012/02/09(木) 09:24:03.85
>>357さん
確かに memset(kozo[i], 0, sozeof(KOZO));ですね。
sizeof(kozo[i]) では、KOZOポインタのサイズになってしまいますね。
ありがとうございます。
ちょっと進展しました。
363 :
デフォルトの名無しさん:2012/02/09(木) 09:28:15.80
コードというよりこいつの脳の問題
>>344頭悪すぎワラタw
よく恥ずかしくないなw
>>362 「確かに」じゃねーよゴミ
知っててできないのは入門者とか以前の問題
仕事でも知っててミスする奴は不要
社会の負担になるだけだから出てくんなよ
お前がな。
368 :
デフォルトの名無しさん:2012/02/09(木) 10:33:03.35
オマエモナー
基地害の方はお引き取りくださいm(__)m
引き取るのは息でも結構ですm(__)m
370 :
デフォルトの名無しさん:2012/02/09(木) 11:38:30.18
371 :
デフォルトの名無しさん:2012/02/09(木) 11:42:04.07
#include <stdlib.h>
void** new_array(size_t struct_size, size_t len) {
void** a = malloc(sizeof(*a) * len);
int i = len;
while(i-->0) {
a[i] = malloc(struct_size);
}
return a;
}
void free_array(void** a, size_t struct_size , size_t len) {
int i = len;
while(i-->0) {
free(a[i]);
}
free(a);
}
main(){
struct KOZO {char c[1200];};
struct KOZO** a;
a = new_array(sizeof(**a), 25000);
free_array(a, sizeof(**a), 25000);
}
372 :
デフォルトの名無しさん:2012/02/09(木) 12:20:51.36
スクリーンバッファー配列 u_int32 A[screen_width * screen_height] があるとします。
Aは各ピクセルを 0xRRGGBB として持ちます。(u_char* c = A[123] だとして c[0]=BB, c[1]=GG, c[2]=RR)
スクリーンバッファー配列 A に対して、
任意の形の三角形塗りつぶしを行う関数 fillTry(pa, pb, pc, color)を
最も高速なアルゴリズムで書いてください。
一番高速なアルゴリズムを描けた人が優勝です。
373 :
デフォルトの名無しさん:2012/02/09(木) 12:22:07.89
優勝とかしたくないけど、fillTryって名前はひどいな
アルゴリズムって言うか
常識的には一番上の点を探して、後は他の二点に向かって、一番下の点まで縦のドット毎に
水平ラインを塗りつぶしていくってやるだろうな。
求められる精度によるけど普通PCモニターで表示するだけなら整数の三角関数テーブルを
作るだろ。
こう言う書き方すると、ハード依存とか言われちゃうのかな?
小学校高学年レベルのCGロジックだけどな
小学校で三角関数は習わんだろ。
三角関数なんていらんけどな。
DDAでググレ。数十年前に終わってる話だ。
Bresenhamも知らないでよくCGロジックだなんて言えたもんだな。
378 :
デフォルトの名無しさん:2012/02/09(木) 14:42:32.73
ハムでも食ってろ
質問しようかと思いましたが
ゴミとかゆう罵声が日常的に飛び交ってて
空気がよくないので他所でききますね。
セシウム飛びまくりだから空気はよくないね。
セシウムさんもヤバイけどα核種が更にアウアウだよね
っていうかなんで三角形塗りつぶしの処理の話が
直線描画アルゴリズムの話にスケールダウンしてるの?
三角関数テーブルもDDAもBresenhamもやってることは同じだよ?
馬鹿は黙ってろ
386 :
デフォルトの名無しさん:2012/02/09(木) 15:10:17.35
【セシウム拳】
打撃と同時に相手の骨髄にセシウムを撃ち込む技。
打撃で572のダメージ、セシウムにより永続的に毎秒71のダメージを受ける。
骨に入るのはストロンさんだろ。
388 :
デフォルトの名無しさん:2012/02/09(木) 15:13:45.03
三角形なんか描画して楽しい?
やっぱりテクスチャーとかは最低でも挿入したいよな
セシウムは全身まわるよ
そして心臓にたまるよ
心筋細胞をズタボロに破壊して
心筋梗塞などを引き起こす
これはセシウム由来のガンよりも遙かに高い確率で起こるのだ
でも原因不明の突然死に分類されて放射能由来の病気を数えた統計には含まれない←重要!
まったくもっておそろしいのう
じゃぁセシウム拳最強ってことだな
>>389 マムコちチムポのテクスチャを挿入したい
393 :
357:2012/02/09(木) 15:40:13.62
私が書くなら
kozo=(KOZO *)malloc(NUM * sizeof(KOZO));
memset(kozo, 0, NUM * sizeof(KOZO));
free(kozo);
って書くけど。
calloc()使えばmemset()いらんだろ。
どうせ後でまた初期化すんだから0クリアとか無意味だろ
最初からコンストラクタ作ってそれで初期化しろよザコども
396 :
デフォルトの名無しさん:2012/02/09(木) 16:02:06.98
どうせ後から初期化とかお前の妄想だろw
誰か一言でも後から初期化するって言ったか?w
お前痛いよwwwww
calloc()も知らないやつがレスするな。
カロック
#include <stdio.h>
int main(int argc,char **argv)
{
printf("%d\n",argc);
printf("%s\n",argv[1]);
printf("%02x %02x %02x %02x",argv[1][0],argv[1][1],argv[1][2],argv[1][3]);
return 0;
}
GCC(MinGW)でコンパイルして実行すると
C:\lp>a 〜.txt
3
?.txt
3f 2e 74 78
何故かこうなる。
何処から0x3fが来たのか?
何故か引数の数が3に成っている。
単に端末がUNICODE使えないからじゃないの?
402 :
デフォルトの名無しさん:2012/02/09(木) 17:51:08.74
うるさい
文字コードも分かんないアホはC言語使うなクズ
いっしょう端末のウンコしてろ
404 :
デフォルトの名無しさん:2012/02/09(木) 17:55:48.72
日本語でおk。
>>401 unicodeを引数に出来ないだけか…。
dirをすると 〜.txt は表示されるのにな。
406 :
デフォルトの名無しさん:2012/02/09(木) 18:35:46.62
文字コードで躓く奴にプログラミングは向いてない。
俺は文字コードよりlocaleがよくわからない
なんなんだよこれ
408 :
344:2012/02/09(木) 19:34:41.95
自己解決しました。
メンバ処理のなかで、構造体ポインタを入れ替える処理があったのですが
不要になったポインタをNULLしてなかったのが原因のようです。
mallocした時点とfree()する時点では、ポインタ配列の構成が違ってました。
ありがとうございました。
建国記念の日特番「天皇とは何か?」東浩紀×猪瀬直樹
http://live.nicovideo.jp/watch/lv80888861 【会場のご案内】
2012/02/11(土) 開場:19:50 開演:20:00
「建国記念の日」とは、
建国をしのび、国を愛する心を養う「国民の祝日」。
この日はかつて、
『日本書紀』が伝える初代天皇である
神武天皇即位の日とされた「紀元節」という祝日でした。
戦後、紀元節は廃止されるも、
1966(昭和41)年には国民の祝日として復活しました。
憲法では、
日本国と日本国民統合の「象徴」と規定されている「天皇」。
その地位は、主権者たる日本国民の総意に基づき、
国政に関する権能を全く有さないはずの「象徴天皇制」。
しかし、天皇をめぐる状況は、
日本人のアイデンティティーの探求とも絡み合い、
常に政治、社会、文化的な争点であり続けています。
そこで、ニコニコ生放送では、この建国記念の日に
あらためて、天皇とは何かを考えます。
出演は、東京都副知事の猪瀬直樹氏と、
批評家・作家、『思想地図β』編集長の東浩紀氏。
司会進行は週刊朝日の山口一臣氏です。
410 :
デフォルトの名無しさん:2012/02/09(木) 20:43:36.42
面白そうと思ったけど
どうせ朝日だから見るのやめた
東浩紀って左向きの思想混ざってるしな
>>411 そう?もし左でも、実はアメリカさんが市ねといえばそれでも従う右よりはましじゃない?右がアメリカに逆らうことをみたことはない
414 :
372:2012/02/09(木) 21:42:52.77
簡単なことのように豪語してる割には、誰一人として実際に動くコードをあげてないのが
不思議でしょうがないです。
じつは口では簡単そうに振る舞ってるけど、本当は簡単ではないのでしょうか?ハッタリなのでしょうか?
>414
中学校のパソコンクラブの宿題は自分でやれよ
416 :
デフォルトの名無しさん:2012/02/09(木) 21:45:06.76
417 :
372:2012/02/09(木) 21:45:23.17
>>375 三角関数なんか何に使うんですか?理解できません。
あなたの頭の中のアルゴリズムに興味あります。どうやって三角関数を?どこに?
418 :
372:2012/02/09(木) 21:50:26.54
>>416 勘違いしてるのはそっちだと思います。
コードの実例を書けないあなたこそゴミでは?
>>418 まず自分のコードを上げたほうがよい展開を迎えるパターン
421 :
372:2012/02/09(木) 21:56:10.50
>>420 ここの人たちは簡単なことでもお手本が無いと分からないんですか?
>421
あなたの為だから
興味がありますという記述も一切ない。
さらには優勝とか言っちゃってる。
時間の無駄。
書いたとしてもお前は優勝を決めるだけで何も得ない。
>>372 相変わらずつまらんやっちゃな。
もう少しがんばりましょうwww
>>417 三角関数も理解してないのによく言えるな。
>>372 スクリーンバッファー配列 A に対して、
任意の形の三角形塗りつぶしを行う関数 fillTry(pa, pb, pc, color)を
最も高速なアルゴリズム
Aの各頂点にベイラーシュワルツの定理を適用するんだよ
それからフィリィンザコルワーの公式で一気に
pa, pb, pcで作るx, y座標を埋めてしまう
あとはいけるでしょ。がんば
30万くらい賞金だすならやってやるよ。
ポインタ変数はメモリ上に何バイト取られているのでしょうか。
これは処理系またはOSによって違うのでしょうか。
一語分と聞いたことがあるのですが、それ
は正しいのでしょうか。
430 :
デフォルトの名無しさん:2012/02/10(金) 00:02:01.39
何この池沼。
ここで赤の他人が「正しい」って言ったらそれ信じるわけ?
うわぁ・・・情弱。
>>429 環境によってことなりますが
概ね32bitマシンでは4byte、64bitマシンでは8byte
正確な値はsizeof(void *)で調べましょう
>>429 linuxだとkernelも関係してきたはず
>>431の言うとおりsizeof(void *)で調べて下さい
FM7やX68000、PC9800なんかでブイブイ云わせてたヤツラが
今はもう
家族にも相手にされず2chなんかでコミュニケーションを求める
痴呆老人世代なんだなと 372の寂しい踊りプリで改めて実感したわ
>>421 手本がほしいんじゃないし、そもそも手本を示せないでしょ。
あなたの精一杯のコードをあげたほうが話が進みやすいって書いたんだよ。
でもいまさら無理かもね。
>>433 正直、C言語より低級な世界で高速なコードがかけない人間としては、
昔の人の話は聞いてて面白い。
リアルでも。
ちょっとした職人芸だよね
x & (x - 1)
どう動作するでしょうか?
x ^ (x - 1) | x
>sizeof(void *)
DOSだとコンパイルオプションで変わっちゃうからなぁ。
今更DOSってどスカ?
お黙りDOS
SM-DOS
DOSといっても色々あるけど
MS-DOSしか頭にないんだろ
DOSぇいっちゅうんじゃーい
DOSとコンパイラは別だろ。
頭悪そうだな。
んなこと言ってDOSんの?
>>447 とは言え、メモリ管理の構造上、 near ポインタと far ポインタを区別せざるを得ない場合があったりと、
アーキテクチャに依存する部分は少なからずあるで。
例の256倍の本に書いてあったなそんなこと
なんですかそのnearポインタって
初めて聞きました
その例の本、
C言語を256倍使うための本
に載ってる
今となっちゃあもうどうでもいい話
知らなくて当然
簡単に言えばゲタはかせましょう……とからしい
変わるからsizeofで取れって話だろ。
ほんと、頭悪そうだな。
nearぽいんたーはDSセグメントレジスターが一致してないアド
nearポインターはDSレジスターが一致してるモジュール間でしか参照できないよ。
farポインターはセレクター情報があるのでグローバルに参照できるけど、
64kBを超えるメモリーブロックはhugeポインターで宣言してコンパイラーに
面倒見てもらうんんだよ
でも、hugeポインター宣言するとすごく処理が遅くなるから、
普通はfarポインターまでにしてメモリー割り当ては64Kで制限して
自分でデーター構造の設計を工夫するよ。
>>451 簡単に言うと昔はメモリがいくらかの塊の集合で扱われてたと思いねぇ。
塊の中では小さい情報量で位置を示せるけど、
別の塊を参照するにはどの塊の中のどの位置っていう情報が要るから
ちょっと大きい情報量になる。
なるほど
ページとオフセット指定する的なあれか
同じページならオフセットだけみたいな
hugeってふげじゃなくて、ひゅーじって読む?
ほげ野郎、どうだ?
Cなんて余裕とか思ってるやつほど、Cの多彩な表現を知らない
C#でソフトかけて、わかったような気になってる子は哀れ
Intel 8086 - Wikipedia
生産時期 1978年から 生産者 インテル CPU周波数 5 MHz から 10 MHz 命令セット x86 (16ビット)
アーキテクチャ8086は8080のアーキテクチャを16ビットに拡張し、乗除算などの命令を強化したCPUである。
開発にあたってIntelは、8080からの速やかな移行を最重点事項に置き、
8080のアセンブラソースコードに一切の手を加えることなく再アセンブルするだけで、8086用のバイナリを生成する事が出来た。
8086のアーキテクチャでは、プログラム内で通常表現されるアドレスの値は16ビット幅で64KBのメモリ空間である。
当時、64KBのメモリ空間は1つのプログラムにとっては十分に広大であり[3]、セグメント機構はマルチタスクのために用意された。
しかし、8086(あるいは互換品・後継品)がロングセラーになって使われ続けた結果、1つのプログラムにとってさえも64KBのメモリ空間は狭くなってしまい、
アプリケーションのプログラムが自力でセグメントレジスタを操作して64KB以上のメモリ空間にアクセスする手法が用いられるようになった。
C言語コンパイラの実装にあたっては、メモリモデルを限定してしまうか、ポインタをnear(セグメント未使用)、far(セグメント使用)の2種類にわけていた。
後者ではコンパイル時に、メモリモデルを以下のうちからどれか一つ選択するようになっていた。
コード効率やセグメントの扱いやすさから、MS-DOS環境のソフトウェアは、Smallモデルでコンパイルし、
必要に応じて最低限のセグメント操作をプログラマが指示する(適宜farまたはhugeポインタを使用し、
また動的なメモリ確保によって64KBの制限を超える)構造を取っていたものも多い。
成仏しろよおっさん
って言うか、Windows95がでるまでは、パソコンプログラムって16bitだったんだから
当時中学生位なら、今でもギリで20代じゃね?
>>460 天才でもなければ、人間の容量なんて上限あるし、
いろんな言語を高レベルに理解するなんて到底不可能。
特に職業でプログラム書いてるなら、困らない程度にかければ問題ない。
>>464 near、farポインタ以降の知識があれば話題にするはずが無い。
学習した最終地点がその辺りでそこから進歩してないと言うことだ。
467 :
デフォルトの名無しさん:2012/02/10(金) 04:22:57.83
本棚から「Cの解法と設計」って分厚いのを発掘した。
469 :
デフォルトの名無しさん:2012/02/10(金) 17:55:45.30
うん
【中国BBS】ドイツ車が良いと思っていたけど、日本車も良いね!
「前はドイツ車がいいと思っていたけど、日本車もいいね!」というスレッドが立てられた。スレ主のこの意見に対して様々な感想が寄せられている。
● スレ主:日月宗近
アメリカとオーストラリアでの販売額は日本車が1番みたいだし。
● satay醤
日本車はボディが薄い。だからぶつかるとすぐに変形する。でもその分軽くて燃費がいい。
● 老太太説相声
↑どんなに変形しても韓国よりはいい。
● CF歩槍狂人
そうだね。ドイツ車はエコじゃない。
● dr007haha9
ドイツ車はいいよ〜。日本車そのものは悪くはない。
● 強力檸檬鯊
車全体の安全性は、フレームと全体の構造にかかっている。外側の厚みは関係ない。
ドイツ車の外側は日本車よりも平均で1から 1.5ミリ厚いが、ユーロNCAPの衝突テストでは日本車の成績はドイツ車よりも常に上だ。
日本車の衝撃吸収力が勝っているということだ。でも中国で生産する日本車は質の悪い材料を使い手抜きしている可能性は排除しない。
● 戈登謝徳華
ドイツ車の方が日本車よりも良いというのは紛れもない事実。
● ◇只愛羅莉◇
日本製のものって好きだな。使い勝手がいいし。なんでボイコットしなきゃいけないのかね。エコならそれでいいじゃないか。
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0210&f=national_0210_110.shtml
471 :
デフォルトの名無しさん:2012/02/10(金) 18:46:41.44
ここのおっさん連中は全員口だけだな。一人もコード書けないとかマジつかえねえわwww(ググって単語書き写すだけのバカしかいねえwww)
ほらよ、お手本だぞ。高速にしてみろよスーパープログラマーさんよwww
int A[300*300],i,j;
void putPix(int x,int y,int color){A[x+y*300]=color;}
void fillTri(float* pa,float* pb,float* pc,int color) {
float c=1000;
float u0[2]={(pb[0]-pa[0])/c,(pb[1]-pa[1])/c};
float u1[2]={(pb[0]-pc[0])/c,(pb[1]-pc[1])/c};
for(j=0;j<c;j++){
float u[2]={((pc[0]+u1[0]*j)-(pa[0]+u0[0]*j))/c,((pc[1]+u1[1]*j)-(pa[1]+u0[1]*j))/c};
for(i=0;i<c;i++){
putPix((pa[0]+u0[0]*j)+u[0]*i,(pa[1]+u0[1]*j)+u[1]*i,color);
}
}
}
472 :
デフォルトの名無しさん:2012/02/10(金) 19:03:21.75
このゴミ何なの?
前スレ500近辺でも暴れてたヤツだな
どうしても書き込みしたいなら以後はコテ付けるようにしような
474 :
471:2012/02/10(金) 19:11:06.18
ちなみにこれ5分で書いたわw
構想5年 が抜けてるぞ
476 :
471:2012/02/10(金) 19:20:25.15
三角関数を使ってどうたら言ってたやつは、どんなアルゴリズムで描画するつもりだったのか気になるわ
だれか解るやついるか?
おまえら代わりに解説しろよ
>>455 huge ポインタは使いたくないなあ。バグありとのうわさもちらほら。
私なら自力で far ポインタを使ってマネージする。
>>456 そうそう。
>>462 >乗除算などの命令を強化
正直使えない。
>8080のアセンブラソースコードに一切の手を加えることなく
にわかには信じがたいのですが。
>適宜farまたはhugeポインタを使用し、また動的なメモリ確保によって64KBの制限を超える
far を使おうが何をしようが、64KB の壁は
超 え ら れ な い
64KB の壁なんていまはねえよ。
どんなPCつかってるんだ。
480 :
デフォルトの名無しさん:2012/02/10(金) 19:52:07.31
弥生時代のPCだろ
>>471 あれ、fillTryじゃなくなってるね
>>479 V30/i8087 on NEC PC-9801RA
マジレス
>>476 二点を結ぶ直線の傾きを求めるときに直線の縦横比に応じた
正数テーブルを予め作っておいて、任意の点が与えられた時に
インデックスから引っ張ってくるだけにしたいんじゃね?
これがタンジェントテーブルになるだろ。
具体的には0:255-255:255の範囲でタンジェントを計算しておけば
index = w << 8 / h
傾き= tan[index]
だけで済むだろ
三角形を一つだけ描画するだけならどうでも良いけどな
一万個描画するなら471とかのコードは顧客が発狂するだろ
>>478 越えられるだろ。バカ。宿題スレから出てくんな。
>>485 ほう?
i8086/MS-DOS 上と限定した上で(
>>462を前提としますね)、64KB の壁をどうやったら超えられるのでしょうか?
huge ポインタ?バグつきでもつかうのですか?
せっかく脳に脳細胞が詰まっているのならば少しは使ったほうがいいですよ。
C言語の授業で通し番号って言葉が出てきたけどどういう意味ですか?
配列の添え字的な事を言う用語ですか?
488 :
471:2012/02/10(金) 21:22:11.31
>>484 は?
だから三角関数をどう活用するつもりなのかを聞いてんだろうが!
バカかよマジでこいつら…orz会話が成立しねえ。疲れるわ
ここって、マジでアホしか居ないスレなのか?IQ低くね?
>>487 その教師に聞くのが一番早いだろ
おまえ何しに授業に出てんだ? アホか?
>>490 分かるまで聞け
教員室にまで押しかけて問答でもしろ
それを明日とか月曜やれ
>>490 教員側も、実は質問されるのはうれしいと思いますよ。レスポンスがあるということは少なくとも自分の話が聞き手に届いていることを確認できますからね。
「先生の今おっしゃったことは、これこれこういうことでしょうか?」
と自分の解釈を交えながら再確認を繰り返すことがコツだと思います。
わからないことをわからないというのは、全然失礼じゃないですよ。
493 :
デフォルトの名無しさん:2012/02/10(金) 21:37:54.23
>>490 教えるのが仕事の人間に聞いてわからないものが
ここで赤の他人に聞けばわかるとでも?
頭悪すぎじゃね?
まぁそんな池沼レヴェルの頭だからわからないんだろうけど
だから
>>490みたいなゴキブリ並の知能しかない香具師はスルーしろって。
>>486 リアルモードはセグメントレジスタの値は任意に設定できる。
16bit+16bitを別レジスタで管理しているに過ぎない。
楽勝で超えたね。
>>494 お前さんのほうがゴキブリに近いのでは?
なぜ意味もなく叩く?
うまく質問がすすまないのは単なるスキルの問題に過ぎないのだから、スキルの一片でもみせてやったらええんとちゃうか?
それができないのなら、それはお前さんのほうがゴキブリ。
死ね
>>495 それは 64KB の壁とはいわない。
char *p;
p += CONST;
にて、セグメントレジスタを自動的にバグなしに変えるコードを生成するコンパイラが存在するのか?
498 :
デフォルトの名無しさん:2012/02/10(金) 21:52:21.35
死ねは自殺教唆で前科になる。
一家から犯罪者が出たら家族はどういう気持ちだろうな。
>>490みたいな馬鹿を排除しないから荒れるんだろう
でも、死なないんでしょう?
>>498 ならない。「死ね」と書いて犯罪になるというのなら判例を示せ。
排除も何も
>>490はわざとだろ。
荒らしたくて荒らしてるんだから
どうしようもない。
嫌われ者はどこにいても嫌われ者なんだな
イヤホン当にわからないんです。
>>498 言われた本人が自殺しなければならないよ
自殺してなくても適用されるのは脅迫罪
脅迫罪での逮捕は報道されてないだけで未成年者でも結構されてる
ただし被害者自身が被害届を出す必要がある
親告罪か。なら被害届が出れば
>>496は終わりってことかw
507 :
デフォルトの名無しさん:2012/02/10(金) 22:05:32.73
ネットカキコの「死ね」で本当に脅迫罪になるんだなwww
リスク高すぎワラタwwww
>>506 >>496 は脅迫ではない。
「殺すぞ」と書けば脅迫だが「死ね」は話者の願望を表明しているだけで話者の行為を予告しているわけではないから「殺すぞ」とは違うと解釈する。
そもそも対象の個人を特定できないから脅迫事態が成り立たない
便所の壁に死ねと叫んでも何の罪もないのと同じ
510 :
471:2012/02/10(金) 22:13:31.27
おまえら三角形の塗りつぶしアルゴリズムすら書けないくせに
口から出任せの法律談義だと饒舌だなwww
「死ねばいいのに」はセーフ
「死ね」はアウト
逮捕者が実際いるしな
こういう掲示板では
アンカうってなかったらセーフ
アンカうってたらアウト
「死ねばいいのに」はセーフじゃないぞ。
可能性は低いけど傷害罪になることがある。
513 :
デフォルトの名無しさん:2012/02/10(金) 22:19:53.13
>>511 >「死ね」はアウト
>逮捕者が実際いるしな
ほう?kwsk。
ごちゃごちゃうるせえよ
裁判所でやれ
刑法を理解してない奴が混ざってるな。
まぁそいつが逮捕されても俺には関係ないからいいけどw
■「死ね」と言った場合
◇言われた人が自殺した場合 → 自殺教唆(確率高)
◇言われた人が被害届を出した場合 → 脅迫
◇言われた人が何もしない場合 → 傷害(確率低)
めんどくせえ展開だな
少しはプログラムの話でもしろよ
522 :
デフォルトの名無しさん:2012/02/10(金) 22:39:53.26
逮捕されてるぞ。
ネットは書き込みが証拠になるから立件は簡単だし。
>>497 バカめ。コンパイラがサポートしていなけりゃ自分でマネージするだけの話だ。
1Mのメモリ空間をアドレス可能なポインタが使えりゃ超えたと言っていいんだよ。
わかったかカス。宿題スレから出てくんな。
誰ひとりスレタイに沿った話してなくてワロタ
527 :
デフォルトの名無しさん:2012/02/10(金) 22:48:13.11
試してみればいいんじゃね?w
傷害も本当に成立するなら親告罪じゃないわけだしw
>>524 そんな簡単な話なら 「64KB の壁」 が Windows3.1 プロテクトモードの時代になっても恐れおののかれる事態にはならなかったと思うのですけど。
>自分でマネージするだけの話だ。
それは
>>477で述べられずみ。そして自分でマネージするのがしんどいから「壁」呼ばわりされて苦労の種だったとおもうんですけど。
>>509 個人を特定できないから成立しないってのは名誉毀損
530 :
デフォルトの名無しさん:2012/02/10(金) 22:54:34.82
警察はすぐに動かないよ
半年とか経ってから急に来る
>>471 たった1つの三角形を描くのに100万回もループするありえないほど遅いプログラム乙。
>>528 面倒だから敬遠された。でも必要ならば越えられる壁だった。
↓ほれ、訂正して、謝罪して、巣に帰れ。そして二度と出てくんな。クズ。
> far を使おうが何をしようが、64KB の壁は
>
> 超 え ら れ な い
別に大した壁じゃないよね。
大したものにしとかないとなんか困るんだろうね、コテに取っては。
で、お前らなんか楽しいんだっけ?
>>532 だ、か、ら、
超えられないから「壁」なんですってば。
DS!=SS 問題をご存知ない?DLL 書くときに苦労しませんでしたか?
別に。
What's your purpose?
バストダンジョンがどうのこうの
ぶっちゃけ◆QZaw55cn4cさんは場違いな小池里奈スレでプログラミング
教えてもらったこともあったから感謝している。
良い人であってほしい。
Unfortunately, a perfect man doesn't exist...
アンカーの先のレスが人が書き込んだものかBOTが書き込んだものか特定できないから逮捕は無理
BOTに向けて書いたものだといえば終わりだよ
BOTではなく自分が書いたものだと証明できないといけない
一つ言っていいか?
そもそも、そんなことを書かなきゃいいだけ
以上
>>539 お久しぶり :-)
いつでしたっけ。あとそのとき私はなんていってましたっけ。すっかり忘れてしまった。
かなり痴呆も進んでいる。
javaの用語むずすぎワロタwwww
スレッド=並列処理だったら
マルチスレッド=並列並列処理なんだろ?
ややこしいwwwwwwwwww
スレッドは糸だよ
マルチスレッドは糸がたくさんある状態
※糸:処理の流れ
>>545 スレッドは2ちゃんの用語だろ。
マルチスレッドはスレッドがいっぱいあるって事だよ。
Javaも2ちゃんも関係ないし。
プログラミングやるにつれて構造的なものを把握する感性って多様なんだなと
思ったわ。
構造何て把握するとき、ブレインストーミングみたいに単にキーワードかいて
囲って線で繋げていけばいいだけだと思ったが、そんな単純じゃないんだよな。
マルチン・ルターはルターがたくさんってこと
ンはあんまりないの?
スレッドやオブジェクト指向だって構造的な考えだよな。
Cには機能が少なすぎて構造もくそもない。
>>552 あらら。ここにもCを甘く見てるお方が。。
なぜくるんだろうねぇ。。
structの意味わかってますか?
構造もクソも機械語以上のことはできねーよ
高水準言語のおかげでそういうモンがあると錯覚してるだけだ
高級な言語はより完成品に近いキットで、
Cのような低級言語はプリミティブな部品しかないレゴみたいなもんだよ。
優れたレゴビルダーはプリミティブな部品から大規模な構造物を作れるんだよ。
うひょー!
コンピュータの時計と市販で売ってる高級時計じゃどっちが
時間精密に測れてるの?
>>557 PCに入ってる時計は精度かなり悪い。
だから定期的にネットで時間あわせとか必要。
560 :
デフォルトの名無しさん:2012/02/10(金) 23:43:28.46
>>539 他人に死ねという奴が良い奴なわけないだろ。
仲間内ならまだしも他人だよ。
それが良い奴とか頭沸いてんの?
>>557 ネットにつながるならNTPで合わせれば原子時計レベルw
コストダウンがひどいからつながないと1日1分狂うこともある。
だから犯罪になるってんなら警察に言えば済む話だろ
>>557 最近なら普通の時計は電波時計だね。
電波時計と言っても常に時間をあわせてるわけじゃないから精度は数秒だけどね。
>>563 誰に言ってるか知らんが俺は言ってみる予定
明日でいいだろ
普通に窓口で聞けばいいんだよね?
プログラミングによってコンピュータの時計の精度を限りなく小さくすることは
できないのかね?
クロック精度以上によくできるわけがなかろう、。。
thx
一番関数の種類が多い言語ってC++なのかな?
>>531 貶すなら、お前がいい例を示せば、自己満足が達成でき、俺らは勉強できるのにな。
>>567 数十万年に1秒以下ですが。
これが電波時計の謳い文句である。
574 :
デフォルトの名無しさん:2012/02/10(金) 23:55:21.26
>>570 標準搭載だけならJavaの方がかなり多い気がするけど。
0xでどれくらい増えたんだろ?
>>573 だったらアンカ打てよ。
そうだとしても同じだけどな。
通報して意味あるの?
NTP使えばいいだけ。
使えば100万年に1秒以下。
>>580 今、スタンドアロンでの話じゃねぇのかよw
>>579 傷害なら成立する場合があるし、
もし言われた本人が通報したらアウト。
さらにPC押収で調べられて余計なものが出てきたらそれも含めてやられる。
100万年に1秒以下ってのはどうやって計算したんだろ。
1:100万*365*24*3600=1:21億か。
億精度の測定器が存在する事になる。
>>579 傷害なら成立する場合があるし、
もし言われた本人が通報したらアウト。
さらにPC押収で調べられて余計なものが出てきたらそれも含めてやられる。
プログラミングで精度を上げられるかって話なのにアホだろ。
>>584 1000万年に1秒以下 の精度の時計があんだよ
言わせんなよ恥ずかしい
スタンドアロンでできるわけないだろ。
何か別にセンサになるものでもあれば少しはどうにかなるかも知れんがな。
スタンドアロンでできないから、
>>567になるんだろう。
まあ、NTP使って、原子時計精度にできたとしても、
原子時計のクロック精度以上にはできない
結局同じことだが
595 :
デフォルトの名無しさん:2012/02/11(土) 00:07:05.85
原 子 時 計 の ク ロ ッ ク 精 度www
まじかw
ちなみに、どんな可能性を考えたのか教えてくれw
開発して3000万年も足ってないのに何で精度がすげーって分かるんだろ
久々にのぞいたけど、なんかこのスレおもしろいな。
だれもスレタイに沿ってないのは置いとくとしてw
ソフト屋はどうしても仮想的な世界でものをかんがえちゃうからなぁ。。
と、ヘボが申しております。
時間なんて会議で適当に一秒ずらしたりしてるのに、精度なんて意味ねえよ
他言語スレと比べて活気がある
めっちゃ伸びてるなw
で、ゴキブリは
>>496だったとw
さらにマジレスすると、NTP使って定期的に時刻合わせしても、
時刻合わせから時刻合わせの間は、自前のクロック精度で刻んでるから
1日80スレ、20分に1回書き込みがある。
613 :
デフォルトの名無しさん:2012/02/11(土) 00:21:00.25
相対論語りだす気か?
うるせーハゲ。
わるいがハゲじゃない
頭頂部は見えないからな。
鏡を使え。。
実世界では原子より小さい誤差は存在しないのに
数学の世界では原子の何無量大数倍小さい精度の誤差も存在するってのが面白い
>>609
伸びてるのは>>494が原因、スルーしろと言いながらゴキブリと煽ってるのが問題
もう出ちゃってるから書くけど、
わざわざ言わなくても>>490がゴキブリなのは誰が見ても分かるわけで、
それをわざわざ書いて煽ったのが悪い
ゴキブリ=QZ
まぁいくらたたいても死なないのはそうだなw
スルーつっても相手する馬鹿が一人でいると住み着くことがあるからな
◆QZaw55cn4cみたいに自分の言いたいことだけ言う池沼がこのスレにもう1匹欲しい?
欲しいならいいけど、そうでないならゴミ(
>>490)は早急に追い出すべき
そんなつまらん話は聞きたくない。
多倍長演算でπを計算するソースを書いたときは楽しかったなぁ
632 :
デフォルトの名無しさん:2012/02/11(土) 00:55:11.18
ゴミとか以前に不思議で仕方がないのが
何で理解できるまで学校の教員に質問しないのかってこと
どこの学校しか知らんけどC言語を使える教員が1人しかいないわけでもなかろうし
不思議で仕方がない
ヒント:コミュ力
634 :
デフォルトの名無しさん:2012/02/11(土) 00:56:23.11
そんなつまらん話は聞きたくない。
連投乙
つまらんならこなくていいよ
お前がな。
はぁ?
>>632 何でか知りたい?
>>490がゴキブリだからだよw
その証拠にすぐゴキブリが擁護に入ったろww
まさに類友wwww
ゴキブリそんなに好きなの?
いや・・・ゴキブリって書いてあったから・・・
何で
>>490である俺が一番叩かれてるのww
ネットストーカー怖いっすw
>>632 つーか友達にきけば済むと思う。
難しい話でも何人かきけば一人くらい理解してる奴はいる。
>>642 おいおい、友達って
禁句だろここでは。。
644 :
デフォルトの名無しさん:2012/02/11(土) 01:04:02.19
大学に親しい人おらんしな
>632
実は学校の先生もよく知らなかったりするんじゃね。
お前ら、プログラミング以外だと生き生きしてるなw
>>629以降、プログラミングの話が出てないんだが。。
>>647 絶対にプログラミングとか関係なくてストーカーがいる
変な生命体が常駐しとる
プログラミングの話出したらヘボにヘボって言われるからじゃね?
653 :
デフォルトの名無しさん:2012/02/11(土) 01:10:08.10
>>535 バカめ。バカには超えられないだけで。普通は誰でも超えてる。
> DS!=SS 問題をご存知ない?DLL 書くときに苦労しませんでしたか?
全然苦労しない。
俺の場合は大学だけど、授業終わってすぐ、まず友達か友達のいない講義では周りの人にきいて、
誰も分からなかったら教授のところに聞きに行くよ。
「すいませーん、ちょっと何言ってるか意味分かんなかったんッスけどー、聞いてもいいッスかね?」
ってな感じで。
ちゃれーくそやろーには教えたくない
押忍!お忙しいところ申し訳ございません!
自分、少々質問致したい事があるのですが、お時間頂けないでしょうか!
みたいに聞け。
超えられない壁などない
なぜなら無限の高さの壁はないからである
>>657 >押忍!
>自分、
をカットすれば、まあ及第点
バカの壁は越えられない。
661 :
デフォルトの名無しさん:2012/02/11(土) 01:17:53.09
「何をしようが64kbの壁は超えられない」って何?
mallocで2MB確保してますが何か?とかそういう話ではなくて?
昔話だよ。
意味はない。
ふと本棚みたらマイクロソフトマクロアッセンブラーv6.0 PC-9800シリーズの
プログラマーズガイドとリファレンスが見つかったんだけど
これってヤフオク出したら高く売れるかな?
ここの奴らなら欲しい奴いるだろ?
最近のC++ライブラリィーのガイドとかに比べれば遙かに簡単に(短時間で)読破できるぞ
今ならあれだ、どうやって4GB以上のメモリを確保しますかって話だ。
昔話でここまで伸びた
free(buf);しないメモリリーカーがいるスレはここですか?
そう言えば64bitプログラムってどんなメモリーモデルになるの?
Win64はなんかまたセグメント復活みたいなのを聞いた気がするけど
俺の本棚にはM68000のユーザーズマニュアルがささってる。
>>667 あえて33分の1しちゃうなんてドSなんだから(はぁと
>>670 薄めの青枠でテカったやつだっけ?大学の講義で使ったな。
calloc使ってるやつはゆとり
昔は恐竜とかいてヤバかったよね、どうやって身を守る? とかそういう話?
ゆとりはCなんて使わんだろ。
ゆとり言語ってなに?
Javaだろ。
Javaが入るならC#も入るな
>>672 そうそう。CQ出版のやつ。
俺の脳内アーキテクチャはいまだにこれ。
もう昔すぎて覚えてないわw
68020って別だっけ?アドレッシングモードが多くてCそのままアセンブラ書ける
やんけって感動したのは覚えてるw
ん?インラインアセンブラのこと言ってる?
いや、アセンブラ。
Cで書くくらい簡単にかけた。
汎用のレジスタが沢山あるしメモリはリニアだし、
link/unlinkでスタックフレームつくったりとか高級言語っぽい。
なので86系とか難しすぎて無理。
まぁそれも死に行く運命だったのだよね。
まあ簡単に言えばマカだったんだよね俺、昔は。
あれ、すごく夜にいいよね。
インダイレクトアドレッシングを理解していれば、ポインター概念は既に理解済みと言える、くらいの昔話か。
ちょっと何が言いたいのかわからない。
ゆとーりがC使わないのはポインタが理解できないから?
大学の授業がJavaだから。
Javaってなんでゆとり言語なん?
>>438 2の乗数で一桁切り捨て
どんな場面で使うんだろう?
>>692 Cのポインターとメモリ管理に挫折したプログラマー(世界の殆ど)を救うべく設計された言語!!
.....のはずだった。
まぁ、Java見下してるやつは大概Java使いこなせてないけどな
すれち
>>557 市販の高級時計は、ずれない高級時計と、ずれる高級時計に分類されるわけだけど
701 :
デフォルトの名無しさん:2012/02/11(土) 04:16:03.08
ヘ ボ
>>661 MS-DOS の時代(16ビットコード)の昔話ね。今はまったく関係ない。
でも今でもわかっていない人がいるみたい。
>>653 >> DS!=SS 問題をご存知ない?DLL 書くときに苦労しませんでしたか?
> 全然苦労しない。
そう‥‥‥、やっぱりみんなあこぎなことしてたんんだ‥‥‥。
704 :
デフォルトの名無しさん:2012/02/11(土) 08:22:23.30
例
void minmax(float** min, float** max, float* a, float* b)
{
if(*a>=*b) {
*max = a;
*min = b;
} else {
*max = b;
*min = a;
}
}
問題
minmidmax(float** min, float** mid, float** max, float* a, float* b float* c)
を最高に高速な方法で書け
例の時点でバグってるが。
速度を気にする関数で引数をポインタにするのはヘボ。
と思ったらダブルポインタか。
なんだその仕様。
>>706 自分が勝手に誤解して、仕様に文句つけてる馬鹿にしか見えない。
連投自己分析乙
QZって無職なの?
>>707 いや、
>>705はそのままだが。
速度気にするところでポインタ使ってる時点でクソなのは決定だろ。
しかもfloat*。
どういう経緯でその仕様になったかも知らずに、決定とか言ってる奴は馬鹿。
じゃぁ経緯を言ってみろよ。
どうせ大馬鹿な話なんだろ?
713 :
704:2012/02/11(土) 09:22:45.40
おまえら相変わらずアスペルガーみたいな所にこだわるな。知障に説明してる気分だわ。
じゃあ704の例は忘れろ。悪かったな混乱させて。
例
float min(float a, float b) { if(a <= b) return a; else return b };
float max(float a, float b) { if(a >= b) return a; else return b };
問題
float min(float a, float b, flaot c)
float mid(float a, float b, flaot c)
float max(float a, float b, flaot c)
この3関数を連続して実行した場合と同様の結果を得られる方法を、最高に高速に書け。
問題の体をなしてないな。
>>713 最高に高速とか、池沼みたいなこと言うのやめればいいんじゃなイカ?
716 :
デフォルトの名無しさん:2012/02/11(土) 09:28:22.54
QZって無職なの?
なんで命令口調なの?
口の聞き方ってもんを知らないの?
坊やだからさ。
719 :
704:2012/02/11(土) 09:39:39.12
>>717 おまえらが高速なコードぽんぽん書ける連中なら敬語使ってやるよ。
いまのところおまえらは口先だけの使えないゴミって認定だからな。俺の中で。
と、ゴミ以下がほざいております。
>>719 よく分かってるじゃないか!
分かってるならうせろクズ
722 :
デフォルトの名無しさん:2012/02/11(土) 09:45:15.67
はい、自分の仕事は自分でしましょうね。
高速にしたいならSSE使えばいいのに。
今時SSE使えない環境なんか気にしないでしょ?
724 :
デフォルトの名無しさん:2012/02/11(土) 10:19:15.65
で、QZって無職なの?
725 :
デフォルトの名無しさん:2012/02/11(土) 10:33:53.54
>>703 まとめると、お前には超えられなかった壁という事だ。バカは引っ込んでろ。
>>712 >じゃぁ経緯を言ってみろよ。
想像通りな馬鹿反応。
727 :
デフォルトの名無しさん:2012/02/11(土) 10:48:42.16
などと意味不明な供述をしており
馬鹿には、意味不明なんだ… (w
かわいそうに、よっぽど馬鹿馬鹿言われてるんだろうな。
とても単純な質問なのですが、、下記のソースでポインタ変数pのアドレスを
他のポインタ変数ppで保持したいとき、**ppではなく*ppで受けることはできないのでしょうか?
<ダブルポインタを使う>
int *p;
int **pp;
pp = &p;
↓
<ポインタを使う>
int *p, *pp;
pp = &p;
>>730 キャストすれば代入はできる
でも型情報を捨てるメリットはほとんどない
>>731 キャストが必要ということは、ポインタ変数のアドレスを保持するためには
やはりダブルポインタでないといけないということでしょうか?
ポインタ変数とて、結局ただの変数なので、ポインタ変数のアドレスも、
通常の変数のアドレスと何ら変わらないはず。
だったら、一段(?)の*ppで*pのアドレス保持ができてよいのになと
思った次第です。
そんな時のためのvoid
void *pp = &p
>>733 void型ですか。。
いまいち、キャストすればいけるという意味がわかってないのですが、
ソースで書くと下記のようにしないといけないということでしょうか?
int *pp = (int *)&p;
int *とは違うものを入れてるんだから当然だろ。
voidで何の問題があるんだ。
>>737 int i;
int *p, *pp;
pp = &p;
というコードがあったとして、&iの&pの値は同じアドレスでも、
型は違うのでしょうか?
>>730 typedef int * pint;
int *p;
pint *pp;
pp = &p;
>>737 void型変数というものを初めて見たので戸惑ったのですが、
そう言う書き方もあるのですね。
>>730 エスパーしてみる
Cでは
void foo(int& *p) {...}
てのはできないから
void foo(int **pp) {
int *p = *pp;
}
とキャストしてやれば
呼び出し元と同じように扱える
>>739 (int *)型の*ppを作っているということですよね?
つまり、結局ダブルポインタにするしかないということでしょうか?
なぜそうなのか、いまいちなっとくできなく困っています。
型情報がいらないならBかアセンブリでも使えよ。
型情報の意義を理解していない初心者か?
Bなんて使ったこともないくせによく言うな。
>>725 誰がやっても超えられないですねえ。馬鹿はどっち?
>>741のレスを見て何となくわかってきたのですが、
>>738の質問の答えがわかれば、それが確信に変わる
気がします
>>746 int *p,*q,n=0;
p=q=&n;
としたとき
&p と &q はイコールじゃないから。
751 :
デフォルトの名無しさん:2012/02/11(土) 11:44:35.11
753 :
730:2012/02/11(土) 11:47:42.26
>>738の質問が、よく読んだら意味不明なので書き直しますw
int i;
int *p, *pp;
pp = &i; // こっちは問題なし
pp = &p; // こっちはダメ(だけど理由がわからない)
&iと&pは両方ともアドレス値(もちろん違う変数なのでアドレス値自体は違う)
であるから、通常のアドレス変数*ppで受けられるんじゃないの?と思ってしまう
でも実際にはダメ。
その理由は、&iと&pは同じアドレス値であっても、型が違うということでしょうか?
アドレスの型と言うものも、いまいちわからないポイントです。。
ダメなのは型が違うから。
アドレスの型というか、ポインタがさしてるものによって+1したときに
実際に進む大きさが違うのだよ。
つーか、普通は警告が出るだけでダメじゃないけどな。
757 :
730:2012/02/11(土) 11:53:36.34
>>755 うぉぉぉぉぉ、なるほど!確かにそうですね!!
つまり、
int i;
int *p, *pp;
// OKな場合
pp = &i;
pp++; // iがint型なので、int幅でアドレスがインクリメントされてちょうどいい
// NGな場合
pp = &p;
pp++; // *pはあくまで(int *)型であり、int型のアドレス幅ではないので、
// int幅でアドレスがインクリメントされちゃうと非常によろしくない
ってことですよね?
ダブルポインタにする意義が理解できました。
どうもありがとうございます!
何言ってるんだかよくわからんが、多分それは違う。
>>750 >>751 char *p; とかけばレジスタ一つに対応する普通の環境のもとで、64Kの壁を超えられるというのならば、じゃあどうやって超えるか示してください。
761 :
730:2012/02/11(土) 12:01:30.49
>>758 えっ?違うんです??
違うとするとまた迷宮入りなんですが(´;ω;`)
763 :
762:2012/02/11(土) 12:13:42.17
メ欄は無視してね。消すの忘れた
764 :
デフォルトの名無しさん:2012/02/11(土) 12:15:01.98
>>759 痴呆の症状がどんどん進んでいるな? レジスタ二つだろ。
> far を使おうが何をしようが、64KB の壁は
>
> 超 え ら れ な い
>>764 ここはCスレ。
char *p;
と書いたときに、対応するのはレジスタ一つ。
それとも char *p に対して賢くもレジスタ2つを操作してくれるコードが生成されるコンパイラが存在するのか?
そういえば base( ) とかいうキーワードがあったなあ‥‥‥。
そんな昔話をして意味もないだろうが、MS-Cでhuge modelでコンパイルすれば
いいだけじゃないのか?
hugeはポインタでコンパイルはラージモデルか。
何十年前の話だ。
>>766 うん。
でもたとえば古のニュースリーダ 'mnews' を huge モデルでコンパイルしてもうまくいかなかったんです。あー、BSDソケットとかはascii のライブラリにあわせたつもりです。
huge モデルは huge ポインタを使うと思っていたのですが、どうも huge ポインタは信頼できない。
本当は原因を追究しなければならないところでしょうけれども、道端に寝っ転がって駄々をこねたいほどめんどくさくって諦めました。
うん、だ?
ほんとに痴呆なんだな。
昔話は他所でやって欲しい
頭の悪い QZ 自体が信頼できない
>>769 ポインタ演算するたんびに正規化とやらのセグメント:オフセット調整ももれなくついてくるという無駄さに耐えられますか?huge ポインタは確かそういう仕様のはず。
>>770 じゃあやめます。
で、それは
>>765に対して答えじゃないというのか。
頭おかしいんじゃねーか?
774 :
デフォルトの名無しさん:2012/02/11(土) 12:52:37.83
775 :
730:2012/02/11(土) 12:57:09.36
>>762 とりあえず、
>>757の認識はあってそうとのことでよかったです。
ただ、あげてもらったソースの意味を解釈していて、わからないことが。。
・(void *)でキャストしてる意味はなんでしょうか?
→printf("c = %p, *c = %p, **c = %c¥n", c, *c, **c); としない理由は何でしょうか?
・printfで出力される各値の意味は、下記の認識でよろしいでしょうか?
c = は**c変数のアドレス値そのもの
*c = は**c変数のアドレス値を(char *)型のアドレス幅を1とした基準で見た場合のアドレス値
**c = は**c変数が保持しているポインタ変数*bの示すchar値
>>774 >みんな耐えてたんだよ
>だから PC の今がある
そうなんですか‥‥‥
にわかには信じがたいのですが。でも私の V30 じゃ、ついていけそうもないですね (++)
バグってんのはお前の頭だろ。
>>774 >それから char *p; がレジスタとかはこっちでやってくれ
言葉をはしょったので、結果そういう書き方になってしまい誤解を招いたようでごめんなさい。「ポインタ変数はレジスタに一対一だ」というつもりは毛頭ありません。
ほんと、バカの壁は越えられないんだなと痛感するよね。
>>775 >・(void *)でキャストしてる意味はなんでしょうか?
>→printf("c = %p, *c = %p, **c = %c¥n", c, *c, **c); としない理由は何でしょうか?
うちのコンパイラ gcc4.3.4/cygwin on Windows では (void *) キャストしろと警告をだしてくるからつけただけです。それだけですから、深い意味はありません。
>下記の認識でよろしいでしょうか
c はc変数の値そのもの
*c はc変数が指すメモリの内容。メモリサイズは、この環境では sizeof((char *)) = 4バイト32ビット
c変数は配列bの各要素を順々に指していく。配列b は char 配列 a の各要素を指している。
*c は配列bの内容。
**c は配列b の各要素が指すメモリ内容を、メモリサイズ sizeof(char) で「取ってきた」その値。
認識はだいたいあっていると思いますので、あとはいろいろ試してみてください。
782 :
730:2012/02/11(土) 13:19:02.87
>>781 ご丁寧な解説をいただきまして、どうもありがとうございます。
私の疑問は全て解決いたしました。
いろいろ試して理解を深めてみます。
>>730 int i;
int *p, *pp;
この表記は間違いやすいから、
今度からは、
int i;
int *p;
int **pp;
と書こう。
それか、
int i, *p, **pp;
と書こう。
書き方のせいで混乱している気がする。
int i = 0x8888888;
int *p, *ptr;
int **pp;
と書いた時に、
p = &i;
pp = &p;
ptr = p;
と書くのは大丈夫なんだ。
おい、QZ はバカかもしれんが、初心者の質問に対して的確なコードを示し、今日も初心者をひとり成仏させたぞ
脅迫罪とか64Kの壁(爆笑)とかどうでもいいから QZ を見習え
>>782 >>781が私には見えないので、コテの人だと思うけど、どうなんだろ。
int i;
int *p;
int **pp;
ぐらいでpointerの意義を理解できるとは思えない。
いい方が悪くて、申し訳ないけど、
理解した気になっているだけだと思う。
>>757 > int i;
> int *p, *pp;
>
> // OKな場合
> pp = &i;
> pp++; // iがint型なので、int幅でアドレスがインクリメントされてちょうどいい
>
> // NGな場合
> pp = &p;
> pp++; // *pはあくまで(int *)型であり、int型のアドレス幅ではないので、
> // int幅でアドレスがインクリメントされちゃうと非常によろしくない
>
> ってことですよね?
悪いけど、こういう書き方されても、
理解できてないとしか思えない。
まず、ppの定義を
int **pp;
として、
>>757をもう一度書いてみてよ。
ppが不適切であればpに書き換えるなどしてよ。
>>785 コテの人ですがあえてコテをはずしておきます。
>いい方が悪くて、申し訳ないけど、理解した気になっているだけだと思う。
確かに、ある意味ではそのとおりですね。
1) 理解したつもりになっている
2) やっぱりわからなくなった
3) そこで自力で納得する精神作業を適用し 1) にもどる
のスパイラルを繰り返しながら少しずつ前進していくのが本当のところだと実感します。
だから
>>781で「いろいろ試してみてください」と書いておきました。
ただ、
>いい方が悪くて、申し訳ないけど、理解した気になっているだけだと思う。
と言い放つのは容易ではあります。
>>786 自演認定今日もご苦労様です。
789 :
730:2012/02/11(土) 13:48:30.27
>>787 混乱させてしまいすみません。
>>757でのこちらの意図は、
int i;
int *p;
int *pp;
の意味で書いています。
int *p, *pp;
と書くと、
int *p;
int **p;
という意味になってしまい、不適切でした。
すみません。気をつけます。
**pp;
を使ってさっと書けるのはこんなもん。
int を使う場合に良い例は思いつかんかった。
私が **pp の必要性に迫られるのは、いつも文字列の時。
#include <stdio.h>
int main(void)
{
char *messages[] = {"good morning", "hello", "good bye", "see you", NULL};
char **pp;
int i;
for(i=0;messages[i] != NULL;i++){
fprintf(stderr, "messages[%d] = \"%s\"\n", i, messages[i]);
}
pp = messages;
for(i=0;pp[i] != NULL;i++){
fprintf(stderr, "pp[%d] = \"%s\"\n", i, pp[i]);
}
return 0;
}
>>790 >>762 に比べると物理的に長すぎる。
もっと要点をぱぱっと書けませんか?
ちなみにうちの会社では、「下位者に知識を伝達できること」をもって、はじめて職務上あるいは業務上の知識を取得したとみなされます。
つまり 昇進したいから教えてくれ っていう
ちがう 昇進したいから教わってくれ、だ
何いってんだ?
730はダブルポインタを教えるための教科書みたいなモンを教えてほしいんだろ?
それが昇進に繋がるならなおさらじゃん
デマ教えまくってクビ切りさせようぜ
795 :
デフォルトの名無しさん:2012/02/11(土) 14:12:02.71
で、QZって無職なの?
今回は
>>755 が重要なきっかけをがっしり押さえた後で、QZ がとんびのように手柄を横取りして、いい気になっている、というのが正確なところか。
797 :
730:2012/02/11(土) 14:13:37.39
>>790 私のような初心者にはこちらの方がわかりやすいかもしれません。
配列は結局先頭アドレスを保持したポインターなので、それを
受ける変数をイニシャライザーなしで定義するにはダブルポインター
にするしかないということですね。
ついでにstderrについて学べたのもよかったです。
また、何気なく使ってたprintfが、じつはfprintf(stdout, 〜);
だったこともわかりよかったです。
ありがとうございます。
799 :
デフォルトの名無しさん:2012/02/11(土) 14:18:57.77
結論: 64Kの壁とはバカには超えられない壁であった。
手柄ってなんだ?
802 :
730:2012/02/11(土) 14:21:46.79
>>800 すみません、ずれてるところが気になります。。
「ここがちげーだろ馬鹿野郎」とご指摘いただけますと幸いです。
配列はポインタじゃない。配列は配列。
804 :
730:2012/02/11(土) 14:26:50.01
>>803 そうなんですか。。やっぱりわかってないですね。
message[i]
pp[i]
のように、同じように書けるので実体は同じなのかと
思っていました。
配列の方は、アドレスを連続してメモリ確保し、定義時の
範囲外を指定するようなソースを書くと、コンパイルエラーを
出してくれるという違いでしょうか?
805 :
デフォルトの名無しさん:2012/02/11(土) 14:30:02.18
基地害はレスすんなって
QZは精神病んで仕事してないって話だったはず
>>798 固定ハンドルじゃありません、トリップと固定ハンドルとは異なる概念です、霧
808 :
デフォルトの名無しさん:2012/02/11(土) 14:37:22.23
>>807 ゴキブリを擁護してたゴミはレスすんなって
int i, *p;
とした時に、
p = &i;
ってする必要性に迫られることはまず無い。
ましてや、
p++;
なんてすること100%ない。
悪いけど、上の書き方で理解しようとしないで欲しい。
int ary_a[] = {0, 1, 2, 3, 4, 5, 6, 7};
int ary_b[] = {100, 101, 102, 103, 104, 105, 106, 107};
int *p;
int **pp = {ary_a, ary_b};
// OKな場合
p = ary_a;
pp = &p;
p++; // pの型が(int *)型なので、(int)幅でアドレスがインクリメントされる
pp++; // ppの型が(int **)型なので、(int *)幅でアドレスがインクリメントされる
// NGな場合
面倒くさくなったのでNGな場合は書きません。
ってことです。
>>809 > 面倒くさくなったのでNGな場合は書きません。
書けません の間違いだろ
アホはさっさと消えろ
codepadは流れる可能性があるので、
3回に分けて
>>810の内容を投稿。
1/3
#include <stdio.h>
#define ELEMENT_NUM 8
void dump(void *p, int n)
{
int i;
unsigned char *data = (unsigned char *)p;
fprintf(stdout, "dumped start = %p\n", p);
fprintf(stdout, "%*s", 11, "");
for (i=0;i<16;i++){
fprintf(stdout, "%02x ", (unsigned int )(data + i) & 0x0f);
}
fprintf(stdout, "\n");
for (i=0;i<n;i++) {
if (i % 16 == 0) {
fprintf(stdout, "%p ", data + i);
}
fprintf(stdout, "%02x ", data[i]);
if ((i + 1) % 16 == 0) {
fprintf(stdout, "\n");
}
}
}
2/3
int main(void)
{
int ary_a[] = {0x00010203, 0x04050607, 0x08090a0b, 0x0c0d0e0f,
0xbb04, 0xba05, 0xb906, 0xb807};
int ary_b[] = {0xf00, 0xe01, 0xd02, 0xc03, 0xb04, 0xa05, 0x906, 0x807};
int *p;
int *ary_a_b[] = {ary_a, ary_b};
int **pp;
int i, j;
fprintf(stdout, "ary_a = %p\n", ary_a);
for(i=0;i<ELEMENT_NUM;i++){
fprintf(stdout, "ary_a[%d] = 0x%08x\n", i, ary_a[i]);
}
fprintf(stdout, "\n");
fprintf(stdout, "ary_b = %p\n", ary_b);
for(i=0;i<ELEMENT_NUM;i++){
fprintf(stdout, "ary_b[%d] = 0x%08x\n", i, ary_b[i]);
}
fprintf(stdout, "\n");
fprintf(stdout, "ary_a_b = %p\n", ary_a_b);
for(j=0;j<2;j++){
fprintf(stdout, "ary_a_b[%d] = %p\n", j, ary_a_b[j]);
}
fprintf(stdout, "\n");
>>812-814 で完了。
3/3
pp = ary_a_b;
fprintf(stdout, "pp = %p\n", pp);
for(j=0;j<2;j++){
fprintf(stdout, "pp[%d] = %p\n", j, pp[j]);
for(i=0;i<ELEMENT_NUM;i++){
fprintf(stdout, "pp[%d][%d] = 0x%08x\n", j, i, pp[j][i]);
}
fprintf(stdout, "\n");
}
/* 128 は適当 */
dump(ary_a, 128);
return 0;
}
816 :
730:2012/02/11(土) 14:49:43.09
>>809 確かに、単変数iを定義しといて、そのアドレスを保持するポインタを
インクリメントすることはナンセンスですね。。例が悪かったです。
通常は、おっしゃる通り配列を受ける際にポインタを使用しますね。
>>810 参考例、読んでみます。
わからないことが出たらまた、聞きにきます。
貴重なお時間割いていただきどうもありがとうございます。
>>816 >>812の dump()だけ以下の内容で書き換えて。
こっちの方が理解しやすい。
void dump(void *p, int n)
{
int i;
unsigned char *data = (unsigned char *)p;
fprintf(stdout, "dumped start = %p\n", p);
fprintf(stdout, "%*s", 11, "");
for (i=0;i<16;i++){
fprintf(stdout, "%02x ", (unsigned int )(data + i) & 0x0f);
if ((i + 1) % 4 == 0) {
fprintf(stdout, "| ");
}
}
fprintf(stdout, "\n");
for (i=0;i<n;i++) {
if (i % 16 == 0) {
fprintf(stdout, "%p ", data + i);
}
fprintf(stdout, "%02x ", data[i]);
if ((i + 1) % 4 == 0) {
fprintf(stdout, "| ");
}
if ((i + 1) % 16 == 0) {
fprintf(stdout, "\n");
}
}
}
820 :
730:2012/02/11(土) 15:08:22.93
>>818 エンディアンについては知っていました。
wikiは読んで再確認しました。
ただ、それ以前に問題が、、
12: fprintf(stdout, "%*s", 11, "");
がわかりません。
"%*s"ってどういう意味でしょうか?
また、引数に11と""が入るのはなぜでしょうか。
ただでさえ掲示板でのやり取りじゃ伝わりにくいのに、頭の悪い奴に説明されるとかえって有害になるな
>>820について自己解決しました。
%*sとすると、フィールド幅を引数で指定することができる
つまり、
printf("%*s", 11, "");
とすると、11桁のフィールド幅で文字列を表示し、その文字列は空文字
になっている
結果として、11桁のスペースが出力される
また一つ勉強になりました。
>>815 短い例、短い例って馬鹿じゃないの?
>>730には短い例で説明するのは不可能だよ。
初心者さんで、自分から向上しようとする珍しい初心者さんだから、
頑張って
>>810,812-814を書いたんだ。
>>755は間違いじゃないけど、正確でも無い
アドレスに型はない。
単なる数値だよ。
アドレスの型といういい方はしない。
正確には、
何の型のポインタかによって、
+1したときに進む大きさが違う。
実際に進む大きさは、
sizeof(型)
で決められる。
実行例。
sizeof(char) = 1
sizeof(char *) = 4
sizeof(int) = 4
sizeof(int *) = 4
sizeof(void) = 1
sizeof(void *) = 4
str = 0x8048650, "abcdef"
p + 1 = 0x8048651
p_int + 1 = 0x8048654
p_void + 1 = 0x8048651
>>823の実行例を出力する。
#include <stdio.h>
int main(void)
{
char *str = "abcdef";
char *p;
int *p_int;
void *p_void;
p = str;
p_int = (int *)str;
p_void = (void *)str;
fprintf(stdout, "sizeof(char) = %d\n", sizeof(char));
fprintf(stdout, "sizeof(char *) = %d\n", sizeof(char *));
fprintf(stdout, "sizeof(int) = %d\n", sizeof(int));
fprintf(stdout, "sizeof(int *) = %d\n", sizeof(int *));
fprintf(stdout, "sizeof(void) = %d\n", sizeof(void));
fprintf(stdout, "sizeof(void *) = %d\n", sizeof(void *));
fprintf(stdout, "str = %p, \"%s\"\n", str, str);
fprintf(stdout, "p + 1 = %p\n", p + 1);
fprintf(stdout, "p_int + 1 = %p\n", p_int + 1);
fprintf(stdout, "p_void + 1 = %p\n", p_void + 1);
return 0;
}
825 :
730:2012/02/11(土) 15:31:34.77
俺は忘れちゃった。
分かるだろうけど、
>>824も俺。
827 :
730:2012/02/11(土) 15:38:37.96
>>823-824 ありがとうございます。
よくわかりました。
sizeof()で実際にコードを書いてみれば一目瞭然ですね。
環境によるかもしれませんが、この場合、ポインタは
(char *)でも、(int *)でも(void *)でも4バイトなんですね
828 :
730:2012/02/11(土) 15:41:37.43
それから、(void *)型は、インクリメントステップは1バイトなんですね
自分は結構Cを嗜んでいた方だと思っていましたが、まだまだ知らないことが
たくさんありますね
OOPでないレガシーなCも、やっぱり奥深い
829 :
730:2012/02/11(土) 15:47:52.54
ちなみに、私の環境でのダンプ結果は下記になりました。
行数長いので、一部省略してます
ary_a = 0x7fff5fbff5d0
(中略)
ary_b = 0x7fff5fbff5b0
(中略)
ary_a_b = 0x7fff5fbff590
(中略)
pp = 0x7fff5fbff590
pp[0] = 0x7fff5fbff5d0
(中略)
pp[1] = 0x7fff5fbff5b0
(中略)
dumped start = 0x7fff5fbff5d0
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
0x7fff5fbff5d0 03 02 01 00 07 06 05 04 0b 0a 09 08 0f 0e 0d 0c
0x7fff5fbff5e0 04 bb 00 00 05 ba 00 00 06 b9 00 00 07 b8 00 00
0x7fff5fbff5f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7fff5fbff600 18 f6 bf 5f ff 7f 00 00 74 08 00 00 01 00 00 00
0x7fff5fbff610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7fff5fbff620 01 00 00 00 00 00 00 00 58 f7 bf 5f ff 7f 00 00
0x7fff5fbff630 00 00 00 00 00 00 00 00 bc f7 bf 5f ff 7f 00 00
0x7fff5fbff640 cc f7 bf 5f ff 7f 00 00 06 f8 bf 5f ff 7f 00 00
アホv.s.バカの掛け合いである。
何の役にも立たない。
かえって有害。
結構Cを嗜んでいた
なんてどの口が言えるんだろう...
832 :
デフォルトの名無しさん:2012/02/11(土) 15:54:10.36
だからさっき基地害はレスするなって言ったんだよ。
本人に自覚がないからいつまでもしがみついてるのか、
それとも荒らし目的か。
うるさいゴミ
835 :
730:2012/02/11(土) 16:01:07.31
>>823 私の環境だと、ポインタは8バイトでした。
また、sizeofの戻り値がunsigned longだったので、%d→%luに変更して
コンパイル・実行しました。
sizeof(char) = 1
sizeof(char *) = 8
sizeof(int) = 4
sizeof(int *) = 8
sizeof(void) = 1
sizeof(void *) = 8
str = 0x100000e90, "abcdef"
p + 1 = 0x100000e91
p_int + 1 = 0x100000e94
p_void + 1 = 0x100000e91
提供いただいたdumpコードは動作がわかり、勉強になりました。
どうもありがとうございます。
迷惑になるので、とりあえずこの辺にしておきます。
スレ汚し失礼しました。
837 :
730:2012/02/11(土) 16:04:20.92
OSは?
64bitとか、使ったことないわw
839 :
730:2012/02/11(土) 16:13:43.40
>>838 ここでは叩かれちゃうかもしれませんが、、Mac OS X Snow Leopard 10.6.8です
(最新のMac OS X Lion(10.7)は、評判悪そうなのでまだ控えてます)
Windows 7もBoot campで入れてありますが、常用しているのは
Mac OS Xの方です。
おっしゃる通り64bitマシンです
>>827 > 環境によるかもしれませんが、この場合、ポインタは
> (char *)でも、(int *)でも(void *)でも4バイトなんですね
そうそう。
sizeof(void *)と同じ大きさだと思ってたから、
私もsizeof(void)について勉強になった。
1だとは思わなかったよ。
参考までに。
linuxだけど、私が知っているsizeof(int), sizeof(void *)が8になる環境は、
CPUが64bitなだけじゃ駄目で、kernelも64bit版のものでないと駄目。
windowsは知らん。
>>815 ◆QZaw55cn4cは、
初心者にきちんと話をできないんだったら黙ってろよ。
はっきり言いますが、
◆QZaw55cn4cは、有害でしかない。
今回は初心者の方に絡んでいるようだったので、
何を書いているか確認しましたが、やはり確認する必要のないものでした。
>>829は貴重な環境を持っているじゃないか。
>>824を試してみて。
多分、私と違う実行結果になるよ。
うーん、初心者の方じゃなかったのだろうか。
うーん。
>>839 いや、もちろんOSは64bitだけど、ポインタが64bitってのを使ったことがないのよ。
macだとgccデフォで64bitなんか。
>>835 >>814に以下を追加して。
細かいerrorが出るだろうけど、適時自分で修正して。
int dump_size;
dump_size = sizeof(int) * 19 + sizeof(int *) * 1 + sizeof(int **) * 2;
fprintf(stdout, "dump_size = %d, 0x%08x\n", dump_size, dump_size);
dump(ary_a, dump_size);
>>840 でたらめまき散らすの止めて引っ込んでろ。お前もQZと同程度の害虫だ。
え、コテはずしたQZじゃないの?
845 :
730:2012/02/11(土) 16:22:56.42
>>840 いろいろとお付き合いいただきどうもありがとうございます。
とても勉強になっています。
プログラミングは趣味で好きでやってますが、ご覧の通り、
私はまだまだ知らないことの多い初心者ですよ。。
作っていただいた
>>824を試した結果が、
>>829です
改行が多くて全てはのせきれませんでしたが。。
>参考までに。
>linuxだけど、私が知っているsizeof(int), sizeof(void *)が8になる環境は、
>CPUが64bitなだけじゃ駄目で、kernelも64bit版のものでないと駄目。
なるほど、そうなんですね。
Intel C2Dなので、もちろんCPUは64bitですが、kernelも今は64bitで動かしてます。
Snow Leopardは、32bit→64bit移行期の微妙なところのOSなので、実は、
一部32bitで動いているソフトもあったりします。
詳しいことはわかりませんが、そこは、結構柔軟にOSが対応しているようです。
846 :
デフォルトの名無しさん:2012/02/11(土) 16:31:21.68
847 :
730:2012/02/11(土) 16:32:02.69
>>842 もしかしたら、何かの参考になるかもしれないので、一応、結果あげますね
まだ、意味は理解してませんが、とりあえず実行結果です
オリジナルのdump(ary_a, 128);はコメントアウトしました。
(改行が多いと怒られてしまうので、最後のdump結果だけのせます)
dump_size = 100, 0x00000064
dumped start = 0x7fff5fbff5d0
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
0x7fff5fbff5d0 03 02 01 00 07 06 05 04 0b 0a 09 08 0f 0e 0d 0c
0x7fff5fbff5e0 04 bb 00 00 05 ba 00 00 06 b9 00 00 07 b8 00 00
0x7fff5fbff5f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7fff5fbff600 18 f6 bf 5f ff 7f 00 00 24 08 00 00 01 00 00 00
0x7fff5fbff610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7fff5fbff620 01 00 00 00 00 00 00 00 58 f7 bf 5f ff 7f 00 00
0x7fff5fbff630 00 00 00 00
>>823 >アドレスに型はない。
ポインタには型はある。
>正確には、
正確ではない。
>何の型のポインタかによって、+1したときに進む大きさが違う。
それだけではない。*p としたときの値を取り込む範囲が異なる。
アラインメントなど触れておきたいことは多々あるが、この点が抜けているようでは正確とはいえない。
>>762 はその点も押さえている。
ポインターのサイズはどのOSでコンパイルしてるかじゃなくて
何用のモジュールとしてコンパイルしてるかで決まるだろ。
コンパイラーオプションで選べるんじゃ無いの?
32ビット環境で64ビット用モジュールも書けるし
64ビット環境で32ビットプログラムも書けるだろ。
64ビットOSでも32ビットの仮想実行環境もあるし
32ビットOSでも仮想16ビット実行環境を用意してるのもある。
そういうOSなら、OSとは異なったビット幅のプログラムでも実行できる
>>845 >>812-814は、
>>842の修正を取り込んで実行してね。
>>842は%08xを%016xに修正する必要がありそうだけど。
dump()はsizeof(int)が8でも大丈夫なように修正。
void dump(void *p, int n)
{
int i;
unsigned char *data = (unsigned char *)p;
fprintf(stdout, "dumped start = %p\n", p);
fprintf(stdout, "%*s", 3 + sizeof(int) * 2, "");
for (i=0;i<16;i++){
fprintf(stdout, "%02x ", (unsigned int )(data + i) & 0x0f);
if ((i + 1) % sizeof(int) == 0) {
fprintf(stdout, "| ");
}
}
fprintf(stdout, "\n");
for (i=0;i<n;i++) {
if (i % 16 == 0) {
fprintf(stdout, "%p ", data + i);
}
fprintf(stdout, "%02x ", data[i]);
if ((i + 1) % sizeof(int) == 0) {
fprintf(stdout, "| ");
}
if ((i + 1) % 16 == 0) {
fprintf(stdout, "\n");
}
}
}
>>849 普通gccデフォじゃ64bitコンパイルできないよ。
>>847 dump_sizeが100なのは計算があわんと思ったけど、
>>835で
sizeof(int) = 4
って書いてたね。。。
ということで、、、
>>850のsizeof(int)と書いてる3箇所は sizeof(void *)に直して。。。
ごめんね。。。
853 :
730:2012/02/11(土) 16:46:31.98
>>849 なるほど、そういうことだったんですね
調べてみたら、コンパイラオプションを32bitに指定できるところがありました。
結果は、こうなりました。
sizeof(char) = 1
sizeof(char *) = 4
sizeof(int) = 4
sizeof(int *) = 4
sizeof(void) = 1
sizeof(void *) = 4
str = 0x1ee0, "abcdef"
p + 1 = 0x1ee1
p_int + 1 = 0x1ee4
p_void + 1 = 0x1ee1
>851
-m32 -m64 じゃないの?
うちのLinux64bitだとデフォで64bitみたいだけど
>>849 書けるをcompileできるにすれば話は通る。
856 :
730:2012/02/11(土) 17:03:17.88
>>852 あってるかな。。一応64bitでコンパイルし、dump結果は下記です。
もし必要であれば、最終ソースをcodepad等にあげていただければ、64bitでコンパイルして
結果をあげます。。
dump_size = 100, 0x00000064
dumped start = 0x7fff5fbff5d0
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0a | 0b | 0c | 0d | 0e | 0f |
0x7fff5fbff5d0 03 | 02 | 01 | 00 | 07 | 06 | 05 | 04 | 0b | 0a | 09 | 08 | 0f | 0e | 0d | 0c |
0x7fff5fbff5e0 04 | bb | 00 | 00 | 05 | ba | 00 | 00 | 06 | b9 | 00 | 00 | 07 | b8 | 00 | 00 |
0x7fff5fbff5f0 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
0x7fff5fbff600 18 | f6 | bf | 5f | ff | 7f | 00 | 00 | a4 | 07 | 00 | 00 | 01 | 00 | 00 | 00 |
0x7fff5fbff610 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
0x7fff5fbff620 01 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 58 | f7 | bf | 5f | ff | 7f | 00 | 00 |
0x7fff5fbff630 00 | 00 | 00 | 00 |
いい加減ゴミを書くのやめろ。
sizeof(char) = 1
sizeof(char *) = 4
sizeof(int) = 4
sizeof(int *) = 4
sizeof(void) = 1
sizeof(void *) = 4
str = 0x80485f0, "abcdef"
p + 1 = 0x80485f1
p_int + 1 = 0x80485f4
p_void + 1 = 0x80485f1
↑-m32をつけて32bit環境で実行。
32bit環境で-m64つけてcompileしようとしたら、
In file included from /usr/include/stdio.h:28:0,
from ary.c:1:
/usr/include/features.h:323:26: 致命的エラー:
bits/predefs.h: そのようなファイルやディレクトリはありません
コンパイルを停止しました。
って言われてもうた。
64bit環境で-m64つけてcompile後実行するとこんなんだった。
sizeof(char) = 1
sizeof(char *) = 8
sizeof(int) = 4
sizeof(int *) = 8
sizeof(void) = 1
sizeof(void *) = 8
str = 0x40075c, "abcdef"
p + 1 = 0x40075d
p_int + 1 = 0x400760
p_void + 1 = 0x40075d
intが64bitっていうのは嘘なの???
ちょっと混乱中。。。
そのためのlongだろ。
>>859 ありがとう。
ほんとだった。
long は64bit扱いされているようだった。
$ gcc -m32 ptr.c -o ptr32 && ./ptr32
sizeof(int) = 4
sizeof(int *) = 4
sizeof(long) = 4
sizeof(long *) = 4
sizeof(void) = 1
sizeof(void *) = 4
str = 0x8048650, "abcdef"
p + 1 = 0x8048651
p_int + 1 = 0x8048654
p_long + 1 = 0x80485bd
p_void + 1 = 0x8048651
$ gcc -m64 ptr.c -o ptr64 && ./ptr64
sizeof(int) = 4
sizeof(int *) = 8
sizeof(long) = 8
sizeof(long *) = 8
sizeof(void) = 1
sizeof(void *) = 8
str = 0x4007ac, "abcdef"
p + 1 = 0x4007ad
p_int + 1 = 0x4007b0
p_long + 1 = 0x7fffa6940f28
p_void + 1 = 0x4007ad
862 :
730:2012/02/11(土) 17:35:46.23
>>860 ソースのアップどうもありがとうございます。
問題なく実行できているようです。
結果は、64bit環境をお持ちのようですし、
>>857のこともあるので控えます。
863 :
デフォルトの名無しさん:2012/02/11(土) 18:03:47.55
>>848 > ポインタには型はある。
おまえさっき、char *p がレジスタとか言ってたろ
そーゆーのを五十歩百歩つーんだよ
>>862 了解。
ごめんだけど、dump_size以下は↓のように変更して。
64bit環境ではなんか32bit環境と違うaddressの取り方してるっぽい。
stackが逆に伸びていってた。
dump_size = sizeof(int) * 19 + sizeof(int *) * 2 + sizeof(int **) * 1;
fprintf(stdout, "dump_size = %d, 0x%08x\n", dump_size, dump_size);
fprintf(stdout, "ary_a\n");dump(ary_a, sizeof(ary_a));
fprintf(stdout, "ary_b\n");dump(ary_b, sizeof(ary_b));
fprintf(stdout, "ary_a_b\n");dump(ary_a_b, sizeof(ary_a_b));
fprintf(stdout, "pp\n");dump(pp, sizeof(pp));
>>863 >>848は逃げ口上を用意しているから後で逃げれると思ってるようだよ。
「燃料投下もそろそろ潮時か」なんて書いておいて、
逃げの体制を確保できていると思っているらしい。
今後、誰からも相手にされなくなるだけなのに、
なんで分かんないんだろ。
>>865 逃げるもなにも、感じたことを書いているだけですが。
>今後、誰からも相手にされなくなるだけなのに、
初学者のお相手が務まればそれで十分。身のある話に絞っているつもりです。
だいたい解説側が codepad も使わずにだらだら書いているセンスに疑問を持っていますね。
>>863 まあこれは私の舌足らずが問題ですかね。
> 今後、誰からも相手にされなくなるだけなのに、
今もこの板のほぼ全員からさげすまれている。
とっとと、訂正、謝罪を済ませて、電車に飛び込め。
> far を使おうが何をしようが、64KB の壁は
> 超 え ら れ な い
>>867 >とっとと、訂正、謝罪を済ませて、電車に飛び込め。
どこを訂正しろというんです?
869 :
デフォルトの名無しさん:2012/02/11(土) 18:57:45.46
>>857 さげすまれてるというより、かなりウザがられてると思う
そしてウザがられてるのにも関わらずいつまでもしつこくレスを繰り返す
人のいやがることをやり続けるとか
>>866はマジで精神異常じゃねぇの
何をいまさら
嫌がらせしかしない基地害はどこにでもいるもの。
あぼーんされてたらわざわざ鳥外してたしなw
ただの荒らしww
荒らすことしかできない池沼www
うるせーなー
そんなに確保せにゃならんて
設計に問題があるんだろ
低脳は引っ込んでよ
誤)低脳は引っ込んでよ
正)低脳は引っ込んでろよ
>>875 かわいいやつだなw
そこはいいだろ別にw
877 :
704:2012/02/11(土) 19:29:19.91
◆QZaw55cn4cとそれ以外の連中(865クズ連合なw)とで、どちらが高速なminmidmax()を書けるかで競え。
どっちが優秀かなんて一発で判定できるだろ。目に見えて明らかに判定できるだろ。
おれの予想だと◆QZaw55cn4cの圧勝だがな。
制限時間は深夜0時までの5時間やる。(こんなの5分で書けよwww)
◆QZaw55cn4c叩いてる奴の腕前にとくと期待してるわwww
878 :
704:2012/02/11(土) 19:31:04.97
逃げんなよ?www
>>874 メモリのサイズの話?
Janeとかで大量に画像開くとその辺の壁に、、、わりとすぐぶつかるよね
>>878 たぶん逃げられると思うけど、今のうちに自分が最速だと思うコードをcodepadとかに貼っておくといいよ。
後から貼っただろって言われなくてすむように。
>>877 自分の仕事は自分でね。
できないなら最初から言うように。
882 :
デフォルトの名無しさん:2012/02/11(土) 20:42:16.19
>>877 ←こいつ何なの? 何で競えとか言い出したの?
>>877 クズ連合はいいけど、お前らクズ以下の連中の寄せ集めは何て呼べばいいのかな。
アホみたいに遅いソースしか書けないクズが高速化とか、
なんの冗談だよw
◆QZなんとかが叩かれてるのはコミュ障のゴミだからってのもある
何か能力があっても人に不快感を与えるゴミは社会に不要
社会に出てくるだけで迷惑なんだよ
基地害「勝負だ、うへへ逃げるなよ」
一般人「ぎゃぁキチガイ」
基地害「逃げたなw俺の勝ちだw」
基地害=
>>877を含むクズ以下の寄せ集め
こういう構図だろ。
ほっとけよ。
なんとなく面白そうだからやってみなよ
(´ー`)y-~~
877ってマジキチ?
QZは自分のスレの速度勝負でボコボコにされてただろw
そもそも問題としてすら成り立ってないところがすごいな。
>>713 つーか、自分の仕事だろ?w
そもそも日本語としてすらなってないねw
893 :
デフォルトの名無しさん:2012/02/12(日) 01:22:49.65
最 高 に 高 速 に 書 けwww
こいつ最高にアホ↑AA略
>>893 大抵のコードは最適化されてしまうので、彼は打鍵速度の事を言っているのではないの?
打鍵速度が問題になる言語ってCOBOLくらいだろ…
if((!A&&B&&C)||(A&&!B&&!C)||(A&&!B&&C)||(A&&B&&!C)||(A&&B&&C))
これって短くならないの?
あるいはこれか。
if ((!A && !B) || (!A && !C))
おっと、
A || (B && C)
でいけるんじゃないか?
>>885 コミュ障のゴミでも能力があればそれなりに受け入れられる。
QZはコミュ障のゴミかつ無脳だから叩かれている。
できた
できた
ひとりで
>>885 >人に不快感を与えるゴミ
受け手側の問題もあるのでは?
>>902 >コミュ障のゴミかつ無脳だから
×無脳
○無能
叩きの文章で漢字を間違えていては叩きにならない。
そういえば、「アスペルガー」とか「AHDH」とか言われたことがありますね。
調べてみるとどっちにも当てはまる私は重度の発達障害らしいですな。
能力ないのは珍しいな。
向いてないんだろうね。
908 :
デフォルトの名無しさん:2012/02/12(日) 08:42:43.14
能無しを超えた脳無しだから、あえて「無脳」と書いているのに
>>907 天才と呼ばれている人たちの中にアスペ傾向が少なからずいるというだけで、
アスペが能力が高いという事ではないよ。
むしろ、QZのようなゴミカスの方が圧倒的に多い。
> 受け手側の問題もあるのでは?
よく堂々と言い放てたな
自分を客観的に見れないのか
アスペですから。
>>910 >自分を客観的に見れないのか
お互い様でしょう?
つ鏡
>>909 極まれに超天才がいて、その人達はアスペだが、
アスペだからと言って超天才であるわけではない
ってことですね。
914 :
デフォルトの名無しさん:2012/02/12(日) 09:26:59.80
>>912 お前のような脳無しがすこしでも他人の役に立てるのは宿題スレだけなんだから、
あそこから出てくんな。
ゴミ溜めで宿題丸投げのゴミクスを相手にしてろ。
2つの条件、超天才、アスペ、において
超天才→アスペが成り立つとき
アスペは超天才であるための必要条件
超天才はアスペであるための十分条件という
超天才⇔アスペが成り立つとき
超天才はアスペ(アスペは超天才)であるための
必要十分条件という
このとき超天才とアスペは同値であるという
>>914 宿題スレは能力を示す強者ぞろいだから、そこを QZ の場所といいきるのは本人のためにもよろしくない
命題、超天才→アスペに対し
アスペ→超天才を逆
超天才でない→アスペでないを裏
アスペでない→超天才でないを対偶という
命題の真偽とその対偶の真偽は一致する
超天才→アスペが成り立つとき
アスペでない→超天才でないが成り立つ
>>916 QZは改善の見込みのない障害者なんだから、本人のためとかどうでもいい。
宿題丸投げするようなゴミクズがQZの回答そのまま提出して不可になっても全然いい。むしろその方が社会のため。
そもそも宿題スレは宿題丸投げするゴミクズを隔離するためのスレなので、回答者はム板のゴミ処理ボランティアと割り切るべし。
ゴミ処理ボランティアなんだからゴミクズQZの相手もしろ。w
QZ って有能なんだ‥‥‥
NG 外してみようかな‥‥‥
おまえら延々としょーもない話してんなぁ。ガキか。。
>>921 トリップ外して、ご苦労。
宿題スレに引っ込んでろ。そこが唯一のお前の居場所だ。
>>922 来ると思ったぜ、自演乙系レス
ちがうからな言っとくけど。。IDが出ないのがかなしい
まあ、管理者ならIP見れるからわかるだろうけど
そのへんにしとけよくだらない話は
ほんと、もうID板にしたいですよね。
どうでもいいが
>>896とかはクソな問題で有名な
3−SATの亜種じゃね?
てか、ただの論理式の簡単化の話だろう。。
927 :
デフォルトの名無しさん:2012/02/12(日) 12:11:31.52
QZって嫌がらせに来てるだけのゴキブリなんだから何言っても無駄っしょ
周回遅れのバカは黙ってろ
>>928 >>900で一応出てはいるね
ソースは簡単化コード?入力はどうなってるの?
まあ、ソース読めって話なんだけどさ
>>930 遅かったか。これは失礼。
楽しんでいただいて光栄です。
>入力はどうなってるの?
475行目
static char *in[] = {"aBCD", "AbcD", "AbCD", "ABcD", "ABCD", NULL };
で指定します。今回は3入力なので、すべての項にDを附加しないと、このソースではうまく動作しません。
>>931 なるほど。4入力対応版なのか
ソースじっくり読んで、アルゴリズム確認してみます
ありがとう。
かるのーずっての描くと分かるらしい
QZ の勝利か
まっこのスレの連中は宿題スレの常連にはかなわないってことだな
勝利とかどうでもいいから、だからガキか?ってのw
本人だろ、スルーしろよ。
条件式の記述の場合は真偽どちらかに偏らせて考えるからアレあんまし関係ないんだよね
確かに本格派のクワイン・マクラスキー法では1, 0 の他、not care もありですね。
941 :
デフォルトの名無しさん:2012/02/13(月) 03:53:26.77
コンパイルしたときに
@でワーニングが出てしまう場合、どのような対処が必要でしょうか
Aのようにしてもdata2はint型なのでエラーになってしまいますよね・・・
ちょっとコンパイル環境がないので、試すことができないのですが・・・
data2の変数の型を変えるしか方法はないでしょうか
どなたかご教授ください
@ワーニングが出る場合
void foo(int data1){
int data2 = data1 * 100; // ワーニングがでます
}
Aワーニングは出ない?
void foo(int data1){
int data2 = ((long int)data1) * 100; // ワーニングにならない?
}
どんなワーニングなの?
張ってよ
× ワーニング
○ ウォーニング
× ワーニング
○ ウォーニング
◎ヲゥーヌィン
ウヴォーギン