C言語なら俺に聞け! Part 88
レス数が1000を超えています。これ以上書き込みはできません。
0001main(void)
NGNG質問する前には最低限検索を。
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
各種リンク、関連スレは>>2-13あたり
C言語なら俺に聞け! Part 87
http://pc5.2ch.net/test/read.cgi/tech/1090654469
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0002デフォルトの名無しさん
NGNG初めてのCってなんですか?
0003デフォルトの名無しさん
NGNGCの解説書だよ。
0004デフォルトの名無しさん
NGNG赤裸々な体験を綴った往年の名著
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGえーと、憂き目を得るだっけ?
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNGと ) | |
Y /ノ 人
/ ) < >__∧∩
_/し' //. V`Д´)/
(_フ彡 / ←>>11
0013デフォルトの名無しさん
NGNG{
int c, i, j;
for (i = 0, j = strlen(s) - 1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
void itoa(int n, char *s)
{
int i, sign;
if ((sign = n) < 0)
n = -n;
i = 0;
do {
s[i++] = n % 10 + '0';
} while (( n /= 10 ) > 0);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG誤爆?
0016デフォルトの名無しさん
NGNGプ
0017デフォルトの名無しさん
NGNGhttp://www.kumei.ne.jp/c_lang/intro/no_24.htm
long motokin;
if (motokin <= 0L)
の 「0L」 は一体どういう意味があるのでしょうか?
(motokin <= 0) でも良いと思うのですが。よくわかりません
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGあぁ、なるほど、早いレスありがとうございます。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGただし、この場合不要、付けない方が良いから真似しないように。
0022デフォルトの名無しさん
NGNGつけなくても良いじゃないのか
0023デフォルトの名無しさん
NGNG( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__∧∩
_/し' //. V`Д´)/
(_フ彡 / ←>>14
0024デフォルトの名無しさん
NGNG教えてください。
・数値を一つ入力してそれを表示する。書式は"n=数字\n"
・数値以外のものが入力された場合
・"quit"が入力されたら終了する。
・それ以外の文字列の場合はエラーとその文字列を表示する。
・終了しなかった場合は最初に戻る。
0027デフォルトの名無しさん
NGNGもしかして誰も応えられないとかw
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGprintfの戻り値は捨てるのが普通。scanfはそれ以前に使わないのが普通。
あと、printfもscanfも戻り値はポインタ型じゃないから * は付けない。
0031デフォルトの名無しさん
NGNGprintf だと使わないけど、sprintf だと結構使う罠
0032デフォルトの名無しさん
NGNGその*はポインタの意味として使ってるんじゃないべ
0033デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGって書くのもめんどいでしょう
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG(*printf)("Hello, Warld.");
0041デフォルトの名無しさん
NGNGって書けやぼけ
0042デフォルトの名無しさん
NGNGint i;
じゃなくて、
auto int i;
と書く人ですか?
0043デフォルトの名無しさん
NGNGだな
0044デフォルトの名無しさん
NGNGfgets(str, sizeof str, stdin);
if (str[0]) printf("%s", str);
これでstrに0だけを入れてもprintfが実行されてしまいます。
str[0]が0だったら偽だと思うんですけど。
str[0]!=0としてみましたがやはりprintfが実行されてしまいました。
なぜなんですか?
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNGいや、 str[0] != 0 とかやっても変わんないから
0048デフォルトの名無しさん
NGNG君はC使うのにむいてないから
早く他のツールつかった方がいいよ
0049デフォルトの名無しさん
NGNGがんばれ。
0050デフォルトの名無しさん
NGNGfgets で 0 をキー入力した場合、(UNIX系なら)
str[0] = '0' (= 0x30)
str[1] = '\n' (= 0x0A)
str[2] = '\0' (= 0)
0051ビル・ジョブス
NGNGNUMLOCKしてなかったとか特殊なオチは勘弁してくれよな。
ところで、printf()の結果も書いてくれよ。
0052デフォルトの名無しさん
NGNGNUMLOCK しててもだめだろ?
str[0] != 0 なんだから。
>>44
if (str[2]) printf("%s", str);
にしる。
0053デフォルトの名無しさん
NGNG(というか、計算途中の事が知りたい)
例えば、
a= (b+1)%100;
b=ULONG_MAXでunsigned long型とすると
1. b+1を計算して0になる
2. b+1を計算してULONG_MAX+1の値になる
で、試してみたら1番の結果になりました。
計算途中は処理系限界最大値を超えてるけど、左辺に代入する時は
左辺の型の最大値を下回ってるっていう時、皆さんはどうします?
0054デフォルトの名無しさん
NGNGJavaの様にまではいかないまでも長さチェックなどの機能ぐらいはほしいです。
0055デフォルトの名無しさん
NGNGそれ以上を求めるならC++に行くしかないね。
0056デフォルトの名無しさん
NGNG探せば幾らでもあるし、自分で作ってもいいし、
それらすら出来ないようなら、>>55 のように
すればいい。
0057デフォルトの名無しさん
NGNG例えば?
0058デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=%E6%96%87%E5%AD%97%E5%88%97%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&ie=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
http://www.google.com/search?hl=en&ie=UTF-8&q=String+Library&btnG=Google+Search
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNGそれは探したとは言わん。単に検索結果を表示しただけ。
そのくらいなら誰にでもできる。
本当に、幾らでもあったのか?
実は調べてないだろ。
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNGa = b % 100 + 1;
0063デフォルトの名無しさん
NGNGhttp://www.google.com/search?hl=en&ie=UTF-8&q=String+Library&btnG=Google+Search
のトップ: http://bstring.sourceforge.net/
2番目: http://www.and.org/vstr/comparison.html
・・・これ以上、何をしろと?
0064デフォルトの名無しさん
NGNGオペランドのうち大きな方の型。
0065デフォルトの名無しさん
NGNG自分で使ってもいないものを他人に勧めるなよ。アホか
0066デフォルトの名無しさん
NGNGhttp://www.and.org/vstr/comparison.html
"String library comparison" って、
なんて書いてあるか、読める?
0067デフォルトの名無しさん
NGNGお前が何も知らないのは分かったからもう失せろよ。ボケが
0068デフォルトの名無しさん
NGNG>>66
お前が何も知らないのは分かったからもう失せろよ。ボケが
↑面白いw
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNGa= (unsigned long)((longlong)b+(longlong)1)%(longlong)100;
0072デフォルトの名無しさん
NGNGa= (unsigned long)(((longlong)b+(longlong)1)%(longlong)100);
0073デフォルトの名無しさん
NGNGそれをしたいなら厳密にはこうするべき。
a = (b % 100 + 1) % 100;
0074デフォルトの名無しさん
NGNG配列同士の乗算っていうと内積とか外積の計算をするってことか?
0075デフォルトの名無しさん
NGNGオーバーフローしたら結果はsignedなら不定。unsignedなら不定ではないが
正しい結果にはならない。
上回らないように計算するか、doubleを使う。素人はfloat使うな。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG↑フロート
0078デフォルトの名無しさん
NGNG回答するな
議論するな
0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGgcc
http://gcc.gnu.org/
【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
Visual C++ Developer Center: Microsoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/
【ライセンスや機能などに問題あり】
Microsoft C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG-----
char *buf;
buf = (char *)malloc(sizeof(char) * BUFSIZE);
-----
っていうコーディングは異常? (sizeof(char)あたり)
仕事で書いてるものじゃないから、好きにやればいいのだろうけど、
一般的にはどうなのかな、と。
例えば、これがintだと
-----
int *intarray;
intarray = (int *)malloc(sizeof(int) * ARRAY_SIZE);
-----
って書くのは普通だと思うんだけど、charの時だけsizeofを省略するのが
嫌だなと思うんだよね。
0086デフォルトの名無しさん
NGNGだからってどうしろという規則は無いんだから、勝手にすれ
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNGそういうことで迷わないよう、次からはtchar.hを組み込んで、
_TCHAR buf;
buf = malloc(sizeof (_TCHAR) * ARRAY_SIZE);
ただし非標準という罠。
0089デフォルトの名無しさん
NGNG↑
これはどういった宣言なんですか?
double *hage[10];
とは違いますか?
0090デフォルトの名無しさん
NGNG↑:『double 型の要素数 10 の配列』へのポインタ
↓:『double 型のポインタ』を 10 こ格納する配列
0091デフォルトの名無しさん
NGNGdouble *(hoge[10]);
009289
NGNGとは、具体的にどう使うのでしょうか?
double c[10];
double (*hage)[10];
hage = c;
だと3行目でエラーが出ます・・・
0093デフォルトの名無しさん
NGNGエラーが出ますだけじゃなく、エラーメッセージくらい書け
009589
NGNG確かにコンパイル通りました。
&cって一体何を示しているのですか?
アドレスのアドレスって事ですか?
009789
NGNG最後に教えてください。
『double 型の要素数 10 の配列』へのポインタ の要素数2の配列
の使用例はこんな感じで合ってますか?
double a[10], b[10];
double (*hage[2])[10];
hage[0] = &a;
hage[1] = &b;
(*hage[0])[9] = 4.2;
0098デフォルトの名無しさん
NGNGgcc で確かめた
こんなかんじであってます
0099デフォルトの名無しさん
NGNGこれもできる。
double a[10], b[10];
double *hage[2];
hage[0] = a;
hage[1] = b;
0100100
NGNG0101デフォルトの名無しさん
NGNG010289
NGNG0103デフォルトの名無しさん
NGNGない
0104ガンバル初心者! ボクにも出来た!
NGNG#include <string.h>
int main(void){
int roop;
char ask[50];
roop = 0 ;
while ( roop == 0 ){
puts("Yes or No ?");
gets( ask );
if ( strcmp( ask, "yes\0") == 0 ){roop++ ;
}else if ( strcmp( ask, "YES\0") == 0 ){roop++ ;
}else if ( strcmp( ask, "Yes\0") == 0 ){roop++ ;
}else if ( strcmp( ask, "no\0") == 0 ){roop-- ;
}else if ( strcmp( ask, "NO\0") == 0 ){roop-- ;
}else if ( strcmp( ask, "No\0") == 0 ){roop-- ;
}else{}
}
switch( roop ){
case 1: puts("Yesの箱舟"); break;
case -1: puts("Noストラダムス"); break;
default: puts("ありえな〜い"); break;
}
return(0);}
0105ガンバル初心者! ボクにも出来た!
NGNGgetsとstrcmpを教えてもらったらら、やりたかったことができたよ。
嬉しかったから、ご報告。これ以上、スレ汚ししないように、
これからは自力でやるようにガンバリますです。んじゃ!
0106デフォルトの名無しさん
NGNG管理人が殺したらいいよ
0107デフォルトの名無しさん
NGNG非ANSIだけどstrcmpの大文字・小文字を区別しない_stricmpとかそういう名前の関数を探してみな。
0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG_mbsicmp
0111デフォルトの名無しさん
NGNGint f(int a, int b, int c, int d)
if (b == 0)
return a;
if (c == 0) {
return a+b;
} else if (d == 0) {
return f(a, f(a, b-1, c, 0), c-1, 0);
} else {
return f(a, b, f(a, b, c-1, d), d-1);
}
return 0;
}
int main(int argc, char** argv)
{
printf("%d\n", f(3, 3, 65, 2));
return 0;
}
このプログラムがうまく動かないのですが、どうすればよろしいでしょうか?
ただ数値を出力するだけなんですけど・・・。
0112デフォルトの名無しさん
NGNG関数 f の開始括弧が無い
……あとは再帰関数の停止可能性を考えるだけか
0113デフォルトの名無しさん
NGNG#include <stdio.h>
int f(int a, int b, int c, int d)
{
if (b == 0)
return a;
if (c == 0) {
return a+b;
} else if (d == 0) {
return f(a, f(a, b-1, c, 0), c-1, 0);
} else {
return f(a, b, f(a, b, c-1, d), d-1);
}
return 0;
}
int main(int argc, char** argv)
{
printf("%d\n", f(3, 3, 65, 2));
return 0;
}
間違いがなければ必ず有限時間で停止するはずなのですが・・・・・・。
0114112
NGNGちょっと確認できそうに無い
でも、こっちで試したら無理だった
有限時間で停止するけど、その間に関数が再帰する個数が
システムで用意されたスタック数を超えているような気がする
多分そっちも何も出力されずに終了したんだと思うけど、
それは多分スタックオーバーフローが起きているせい
遅延評価をサポートすれば平気かもしんない
0115デフォルトの名無しさん
NGNG再帰関数を用いないような構造にするとか・・・。
0116デフォルトの名無しさん
NGNG/* _Bool volatile Switch; */
...
puts("しばらく止めますんで、変数Switchにtrue/falseを念写してください。");
for(;;);
...
0117デフォルトの名無しさん
NGNGいたる return の前の行に
printf("[%d %d %d %d]",a,b,c,d);
でも入れてみなさい。
0118デフォルトの名無しさん
NGNGそれなら
int f...
{
/* ここ */
に1個だけで十分だと思うが
0119117
NGNG(・・;)soune
0120デフォルトの名無しさん
NGNG例えスタックが足りても,intじゃすぐに桁溢れしそうな気分。
0121デフォルトの名無しさん
NGNG漢字ぐらいちゃんと書け ぼけ
0122デフォルトの名無しさん
NGNGintであふれるのは「桁」じゃねーよ ぼけ
BCDじゃああるまいし ぼけ
0123デフォルトの名無しさん
NGNG昔と今では戻り値が違ってしまっている関数の典型!
0124デフォルトの名無しさん
NGNG> (*printf)("Hello, Warld.");
ぼけ。英単語くらいちゃんとかけよ
0125デフォルトの名無しさん
NGNGもっと早くつっこめ ぼけ
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNGじゅうぶんぬれてから
0128デフォルトの名無しさん
NGNG再帰関数を使わないプログラムにする必要がある。
最悪の場合、goto を使うしかないのか・・・。
0129デフォルトの名無しさん
NGNGアルゴリズムどうにかする方が先だろ。
else { //d>0
return f(a, b, f(a, b, c-1, d), d-1);
}
ここ,aやbが変化しないから,まじめに再帰させる必要がない。
a+bの値だけチェックして,処理省略しろ。
0130デフォルトの名無しさん
NGNG世界は戦争(war)に満ち溢れているんだよ。
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG○ ○ ワー
○ ● ○ ワー
○ ○
○○
0134デフォルトの名無しさん
NGNGこんな所でジーコの対中国選の秘策をばらすなよ
0135デフォルトの名無しさん
NGNG×ワーニング
○ウォーニング
0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNG>>121
>漢字ぐらいちゃんと書け
描いてあると思うぞ
>>122
>intであふれるのは「桁」じゃねーよ
溢れるのは2進数の1“桁”
十進数だけが世の中を支配していると思ってはいけませぬ
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNG'\0' なる
0143デフォルトの名無しさん
NGNG最後を「グ」って表記した時点で君の負け。
0144デフォルトの名無しさん
NGNG具体的には?
再帰関数を使わずに再帰的な計算をするためには、
かなりの工夫が必要だと思うけど・・・。
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGThe world is a mine.
0147デフォルトの名無しさん
NGNG>>144
末尾再帰でぐぐりなさい
具体的には、関数 f の一番初めにラベル START を作って、
f(a, f(a, b-1, c, 0), c-1, 0)
の呼び出しなら
b = f(a, b-1, c, 0);
c--;
d = 0;
goto START;
に変換
こうすれば呼び出しネスト数が稼げる
……稼げてないような気もしないでもない
これ以外の方法だと、スタックをヒープか2次記憶上に作る方法
0148デフォルトの名無しさん
NGNGそれだと、行きは出来ても帰りが出来ないような・・・。
しかも goto が出てくるし。
0149デフォルトの名無しさん
NGNGその次の行に return があるから、戻ってくる必要ないのよ
goto でとんだ先で return すれば、元の文の return を行ったのと同じになる
ちなみに末尾再帰は遅延処理と同じ、再帰関数を高速化する手法
かなりシステムに易しいけど……C では goto を使わないと出来ない
0150129
NGNGアホっぽく書くと
数列 A(n)=A(n-1)+1 を計算するのに,再帰を使うのはあらゆる資源の無駄。
そういう話。<アルゴリズム
最適化を言葉尻に付けないと伝わらない?
else{
if( a+b == 0 ){ return 0;
}else{ f(?????); }
}
さて ????? に入るのは?
0151デフォルトの名無しさん
NGNGいや、そのコードだと値を返さないコードパスが出てくるやん
0152デフォルトの名無しさん
NGNGelse{
if( (a+b)==0 ){ return 0; }
else{ return f(?????); }
}
まぁ,最終的にはcとd書き換えて,ループ回すかgotoで飛ぶかになると思うけど。
0153151
NGNGreturn f(a, b, f(a, b, c - 1, d), d - 1);
のコードがそれと等価なら、a + b == 0 の時に 0 が返る理由がまずわからないOTL
0154デフォルトの名無しさん
NGNGごめん思いっきり訂正
ちゃんと返るわ
0155151
NGNGa, b, a + b, d - 1
でFA
0157151
NGNGa, b, a + b, 0
と言ってみる
0158デフォルトの名無しさん
NGNG漢字くらいちゃんと書け。
ついでに言えば、「たとえ」と「たとえば」くらい区別しろ。
0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG「例え」……この場合は「仮令」が正解か
間違っても「例えば」じゃないぞ
0161デフォルトの名無しさん
NGNG桁数だけでも分かる方法はないのかな。
0162デフォルトの名無しさん
NGNGたらいまわししているだけで、あまり大きな値にはならないような気がする
0163デフォルトの名無しさん
NGNGスタックサイズに30000000バイト用意してもおわんねえ('A`)
0164デフォルトの名無しさん
NGNG今使ってるパソコンコンパイラ無くて
#include<stdio.h>
int f(int a, int b, int c, int d){
START:
if (b == 0)return a;
if (c == 0)return a + b;
if (d == 0) {
b = f(a, b - 1, c, 0); c = c - 1;
goto START;
}
if (a + b == 0)return 0;
c = a + b; d = 0;
goto START;
}
int main(int argc,char **argv){
printf("%d\n", f(3, 3, 65, 2));
return 0;
}
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGf(b,c) [a=3,d=0] が
f(f(f(f(f(f(f(f(f(f(f(0,1),1),1),2),2),3),3),4),4),5),5)
=f(f(f(f(f(f(f(f(a^3+a^2+a=39,2),2),3),3),4),4),5),5)
=f(f(f(f(f(f(蚤^x(x=1→{蚤^x(x=1→39)}+1),3),3),4),4),5),5)
=f(f(f(f(f(f(蚤^x(x=1→"10進数19桁ぐらい"),3),3),4),4),5),5)
f(f(f(f(f(f("10進数5803181603368462434桁ぐらい"),3),3),4),4),5),5)
ぬるぽ!!
0167デフォルトの名無しさん
NGNG0168164
NGNGすまない、164 は忘れてくれ
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGみんな当然のようにがんばってるから、もしかしてあの関数の意味が
分からないのって俺だけかと思ってたよ。
安心。
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG式の中で*(*(**Hoge)())()と書けばint型の値が得られる。
って具合のCの宣言の構文からは大きくはずれているんだな。
0178174
NGNG0179デフォルトの名無しさん
NGNGワケワカラン(AA略
0180デフォルトの名無しさん
NGNGお前はVBでも使ってろよ。
0181デフォルトの名無しさん
NGNGそもそも
int *a; じゃなくて
int* a; って書くのが標準の
キモ言語だから仕方ない。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG何回同じ質問すれば気が済むんだ。
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG#include <stdio.h>
int a
int g(int b, int c)
{
if (b == 0) return a;
if (c == 0) return a + b;
return g(g(b-1, c), c-1);
}
int f(int para_a, int b, int c, int d)
{
a = para_a;
if (d != 0) c = a + b;
return g(b, c);
}
/* main()は >>113 と同じ。 */
>>111,113 は、計算できないのを知ってて訊いてるような気がするな。
なにか、解答の用意があるなら教えて。
それともレポートか何か?
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNGスタックサイズを大きくするか、再帰関数を使わないプログラムに書き換えない限り無理みたいです。
普通の方法だと容量おヴぇrしてしまうから。
0189デフォルトの名無しさん
NGNG10000回の再帰でも、100段の再帰*100回(+ある程度のコスト)に帰着させられる場合も多いし。
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG「Cなら俺に訊け」
の方がよかった。
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNGC++言語
C#言語
Pascal言語
0195デフォルトの名無しさん
NGNGC・C++と言えよぼけ、とも思うがどうでもいい。
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGこれを展開して行くと判るが、
g( 0, 1 ) = a; g(1,1) = a+a; g(2, 1) =a+a+a... g( t, 1 ) = (t+1)*a;
g(t,1)を g1(t) とおく。 ( g1(t) = (t+1)*aということ. )
g( 1, 2 ) = g(a, 1); g(2,2) = g1(g1(a) ) ...
g( t, 2 ) = Σ(j=1; j<=t; a^j ) = a^(t+1) + a^t + a^(t-1) + .... + a
これを、g2(t)とおく。
g( t, 3 ) = g2( g2( g2(....g2(a)...) ))) となる。
これで明らかだが、もはや手に負えない爆発ぶりで、そもそもintの
範囲を超えるので、答えは「未定義」。
0198デフォルトの名無しさん
NGNGscanf 直後に rewind(stdin) をいれてるんですが、
これ以外の予防方法とかってありますか?
ベテランさんのウンチク待ってます。
0199デフォルトの名無しさん
NGNG最大の予防方法:scanf自体を使わない。
0200デフォルトの名無しさん
NGNGただし。rewind(stdin);もfflush(stdin);も、処理系によっては動かないこともあるので注意。
0201デフォルトの名無しさん
NGNGprivateだったりreadonlyだったりコロコロ変わるのが許せません。
こんなおかしな言語体系は初めて見ました。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNGfgets()とか?
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGつかわねえよ
0207デフォルトの名無しさん
NGNGあるそうですがどういうことが起こり得るんでしょうか?
0208デフォルトの名無しさん
NGNG> privateだったりreadonlyだったりコロコロ変わるのが許せません。
readonlyの意味なんかどこにもありません
0209デフォルトの名無しさん
NGNG> つかわねえよ
こいつ、いみわかってないでしったかぶり君
0210デフォルトの名無しさん
NGNG> 「Cなら俺に訊け」
> の方がよかった。
じゃあ次はおまえが作れ!
ぜったいタイミングのがすなよ!
のがしたら100たたき!
0211デフォルトの名無しさん
NGNGC++のstaticなクラスメソッドはメンバを書き換えられないという意味。
とか無理やり解釈してみる。
0212デフォルトの名無しさん
NGNGunsigned int mask;
mask = ((data & 0xFF000000) ? 0 : 0xFF000000)
| ((data & 0x00FF0000) ? 0 : 0x00FF0000)
| ((data & 0x0000FF00) ? 0 : 0x0000FF00)
| ((data & 0x000000FF) ? 0 : 0x000000FF);
sizeof(unsigned int) が4バイトです。
dataの特定のバイトブロックが0xFFなら0に、0なら0xFFに変えて
mask に格納したいのですが、これをもっと高速に実現する
方法はありますか?皆さんのお知恵をお貸しください
0213デフォルトの名無しさん
NGNG0でもFFでもないブロックはどうなるべきだ?
0214デフォルトの名無しさん
NGNG答え 「使うな」(おしまい)
FAQ 1. 「あのー、同じ変数がポインターだったり配列だったりするのは」
答え 「それは配列なわけではない、ポインターの指す場所の内容を得る書き方に、
配列にそっくりな[ ]を使う書き方があるだけ」
0215デフォルトの名無しさん
NGNGbit field使えよ ぼけ
0216212
NGNGあー、すまそです。0以外のブロックを0xFFに、でした。
>>215
ビットフィールドを使うと出来るんですね!?
不要と思って勉強を飛ばしてた箇所でした。これを機会に
勉強してみます。どうもです。
0217デフォルトの名無しさん
NGNGunsigned intをunsigned char[4]にキャストしてバイト単位でアクセスするとエンディアンの影響受けるけど
ビットフィールドだとどうなの?
0218デフォルトの名無しさん
NGNGあれ、readってシステムコールの1つじゃなかったっけ?
0219デフォルトの名無しさん
NGNGインラインアセンブラが使えるコンパイラならインラインアセンブラで書くのが最も高速かと。
0220212
NGNG(誤) 0以外のブロックを0xFFに
(正) 0以外のブロックを0に
0222デフォルトの名無しさん
NGNGunsigned int data = xxxxx;
unsigned int mask;
mask &= ((data & 0xFF000000) ? 0x00FFFFFF : 0xFFFFFFFF)
& ((data & 0x00FF0000) ? 0xFF00FFFF : 0xFFFFFFFF)
& ((data & 0x0000FF00) ? 0xFFFF00FF : 0xFFFFFFFF)
& ((data & 0x000000FF) ? 0xFFFFFF00 : 0xFFFFFFFF);
0223デフォルトの名無しさん
NGNGアセンブラ出力をみると、結局if-elseと変わらなかったり。
(まあ、両方定数だからjmpなしのコードに最適化されるかもしれないけど)
普通にifを使って(elseをなくす)書いた方が良い時も多々。
で、まあ、俺なら条件(0/1)に対応したテーブルを使うかな。
cmov使わないコンパイラでも、setccは使うからね。
メモリ参照になるけど、キャッシュに入っていれば分岐よりずっとマシだし。
こんな感じで。
#define maskshift(n) (((1<<8)-1) << (n))
static unsinged t24[] = { 0, maskshift(24), };
static unsinged t16[] = { 0, maskshift(16), };
static unsinged t08[] = { 0, maskshift(8), };
static unsinged t00[] = { 0, maskshift(0), };
mask = 0;
mask |= t24[(data & maskshift(24)) != 0];
mask |= t16[(data & maskshift(16)) != 0];
mask |= t08[(data & maskshift(8)) != 0];
mask |= t00[(data & maskshift(0)) != 0];
0224223
NGNGコメント必須だよ。
0225デフォルトの名無しさん
NGNGunsigned char *m = (char*)&mask;
m[0] = d[0] ? 0 : 0xff;
m[1] = d[1] ? 0 : 0xff;
m[2] = d[2] ? 0 : 0xff;
m[3] = d[3] ? 0 : 0xff;
//実はこれでも分岐は無し
0226デフォルトの名無しさん
NGNGパーシャルレジスタストールが発生しそうで。
メモリ上だと大丈夫なのかな。
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNGメモリ参照になってしまっている以上、
定数利用による最適化の恩恵を受けなくなる。
普通にifで
unsigned int data = xxxxx;
unsigned int mask = 0;
if(!(data & 0xFF000000))
mask |= 0xFF000000;
if(!(data & 0x00FF0000))
mask |= 0x00FF0000;
if(!(data & 0x0000FF00))
mask |= 0x0000FF00;
if(!(data & 0x000000FF))
mask |= 0x000000FF;
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNGこ
と
(゜д゜)サァ?
0236デフォルトの名無しさん
NGNG比較演算の結果ってコンパイラによって真値が異なるから
人に勧められるソースじゃないと思う。
>>229
なんでだ?
(a ? b : c)
より
if (a) b;
の方が処理が軽いぞ?
0237デフォルトの名無しさん
NGNG>人に勧められるソースじゃないと思う。
もう一度、入門書を読んで勉強し直しましょうね。
0238デフォルトの名無しさん
NGNGhttp://www.kouno.jp/home/c_faq/c9.html#2
0239デフォルトの名無しさん
NGNG処理が軽いか重いかなんぞ、標準Cには関係無い。
信じられるのは実測のみ。
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG実測結果とそれらの考察をレポートしてくれるでしょ。
まさか妄想であんな偉そうなことを書くなんて
恥ずかしいことはしてないはずだから。
0243デフォルトの名無しさん
NGNGif(!(data & 0x000000FF)) mask |= 0x000000FF;
であれば直接イミディエイト値とのORですむものを、
m[(data & 0x000000FF)];
ってすると、わざわざ「&の式を評価」したあと(ifのときの手間と同じ)
「1」をレジスタに代入してからメモリ参照に行くんだよね。
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG>(おしまい)
ということにしたいのですね
0246デフォルトの名無しさん
NGNG>FAQ 1. 「あのー、同じ変数がポインターだったり配列だったりするのは」
>答え 「それは配列なわけではない、ポインターの指す場所の内容を得る書き方に、
>配列にそっくりな[ ]を使う書き方があるだけ」
どっちの解釈をしても吐き出されるコードにはそれほどの違いはないのだが?
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG配列でポインタの代用は出来ません。
0249デフォルトの名無しさん
NGNGint foo;
&(&(foo))なんてことは出来ませんし
0250デフォルトの名無しさん
NGNGはじめて意味を持つだろ?
0251デフォルトの名無しさん
NGNGint n;
int *p = &n;
int **pp = &p;
しかできないぞ。何をしたいのか知らないけど。
0252デフォルトの名無しさん
NGNGchar *argv[];
のことを言ってるんじゃないか?
0253デフォルトの名無しさん
NGNG「実体」のポインタはありますが、「実体」のポインタのポインタはありません。
「「実体のポインタ」という実体」があるなら、「「実体のポインタ」という実体」のポインタを得ることができますが。
0254デフォルトの名無しさん
NGNGfoo にポインタのポインタがはいっているって事?
だとしたら単にキャストすれば済むんだが、違うよね。
0255デフォルトの名無しさん
NGNGだったら、&はつけないと思われ
0256デフォルトの名無しさん
NGNG254は釣りっぽ
0257デフォルトの名無しさん
NGNGauto char sine[] = "nurupo";
auto char *afo = "galtu";
extern char wara[];
char *wara;
0258デフォルトの名無しさん
NGNGint a;
char *p;
p = &a;
とした場合、aは配列である、ともいえる。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNGキャストしろ ぼけ
0261デフォルトの名無しさん
NGNG実際には違うじゃん
0262デフォルトの名無しさん
NGNGを見てたんですが、仕様に
> �B 移動係数を 倍にして,�A へ戻る。
とあるにも関わらずソースでは
> mvrate /= 2.0;
となっています。これは動作目的からして仕様の間違いだと思うんですが、どうなんでしょうか?
0263デフォルトの名無しさん
NGNGとした場合でも、「a」が配列なのではなくて、そこから始まるメモリのセットが配列なんだよ。
0264249
NGNGむしろ、このようになっていないと予めプロセス空間内にポインタへのポインタへのポインタへの・・・と
無限のポインタリファレンスが存在しなければならない事になりかねませんし。
0265デフォルトの名無しさん
NGNGメモリブロックの扱いのことなんだよ。
だから、スタック域だろうがヒープ域だろうがテキスト域だろうが、
特定の型が複数並んでいるという認識で使う場合、
それは配列なんだよ。
0266デフォルトの名無しさん
NGNGだからそれが配列なんだよ。
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGchar a[100];
として、
&a[0]
&a
は別物だが?
0269デフォルトの名無しさん
NGNG100回おきに移動係数を倍にしていけば誤差が酷くなる一方で、
いつまでたっても収束しないから仕様書側が間違ってるな。
問題を書き写した時のtypoじゃないかと推測するが…。
IPAがそんなにアホとも思えないし。
0270デフォルトの名無しさん
NGNG同じですが
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNGバカハケーン
0273デフォルトの名無しさん
NGNGアフォですか?
0274デフォルトの名無しさん
NGNG&a[0] は char*
&a は char**
なんだが
0275デフォルトの名無しさん
NGNG#include <stdio.h>
int main() {
char a[100];
printf("&a[0]: %d\n&a: %d\n", (int)(&a[0]), (int)(&a));
return 0;
}
>gcc tes.c
>a
&a[0]: 2293528
&a: 2293528
0276デフォルトの名無しさん
NGNGバカハケーン
0277デフォルトの名無しさん
NGNGじゃ、これやってみろ
char **kuzu;
kuzu = &a;
0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGじゃ、これやってみろ
gets(a);
gets(&a);
0280デフォルトの名無しさん
NGNGint a[10], b, *p;
p = &a;
p = &b;
みたいに配列と変数を統一的にアドレスが取れるメリットがあるんだな。
ようやくこの変態仕様の謎が解けたような気がする。
0281デフォルトの名無しさん
NGNGキャストしろ ぼけ
0282デフォルトの名無しさん
NGNGワラタ
0283デフォルトの名無しさん
NGNG本気ならオモシロすぎるぞ
0284デフォルトの名無しさん
NGNGバカハケーン
0285デフォルトの名無しさん
NGNG>> gets(&a);
tes.c:6: warning: passing arg 1 of `gets' from incompatible pointer type
あたりめぇだろ。この場合aはcharへのポインタと同義、&aはcharへのポインタへのポインタ
gets(&a[0])とすりゃ当然通るがな
0286デフォルトの名無しさん
NGNGおまいが赤面してるのは分かったから荒らすな
0287デフォルトの名無しさん
NGNGそういうときは
p = a;
だろ。
0288デフォルトの名無しさん
NGNG関数ポインタとかキャストとか。
0289デフォルトの名無しさん
NGNG字面を統一的に書けなくもないって話だよ。実際に書くかどうかはともかく。
>>ALL
C FAQ 6章 配列とポインター
6.12:
配列を参照することはポインターに成り下がることを考えれば、arr という配列があったとしてarrと&arrの違いは。
A:
データ型。
ANSI/ISO Cの元では&は「Tの配列へのポインター」を産み出す。これ は配列全体を指す。
(ANCI Cが誕生する前は、arrの前に&を付けるこ とは、たいてい警告を招き、たいてい無視された。)
すべてのCコン パイラで配列への(キャストのない)参照はポインターを産み出す。
こ のポインターはTへのポインターで配列の最初の要素を指す((質問 6.3, 6.13, 6.18も参照のこと)
0290デフォルトの名無しさん
NGNG>>280
はキャストしてないとコンパイルエラーですが何か?
0291デフォルトの名無しさん
NGNGwarning C4047: '=' : 間接参照のレベルが 'int *' と 'int (*__w64 )[10]' で異なっています。
# Visual C++@/W3
0292デフォルトの名無しさん
NGNG使われる対象の名前なんだってばよ。
0293デフォルトの名無しさん
NGNG分かってたら型の違う物を無キャストで代入したりしないよな。
(>>280=>>289という仮定のもとに、だが)
あ、仮定が違ってる気がする
0294デフォルトの名無しさん
NGNGメモリ位置の話の流れを汲んで読むと、>>268は&a[0]と&aのアドレスが別と言ってるように読み取れる。
>>274あたりもそう考えた上でのサンプルだろうし。
0295デフォルトの名無しさん
NGNG↑ここなんだが、
拡張子 .c ならwarningでとりあえずコンパイルは通る。
拡張子 .cpp ならエラーでコンパイルは通らない。
そして、ここは「C言語なら俺に聞け!」スレ。
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG>>274あたりも→>>275あたりも
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNGchar a[100];
として、
char (*p1)[100];
char *p2;
を定義して、
p1 = &a; (warning 出ない)
p2 = &a; (warning 出ても無視)
と代入して、
p1++;
p2++;
の意味の違いについてどうよ?
0300デフォルトの名無しさん
NGNGコンパイルできないのが問題なんじゃなかったのか?w
それに実際の開発で&aなんて書く奴はいないから警告なんて発生しないだろ。
0301デフォルトの名無しさん
NGNGあるソフトの開発を引き継いだんだが、
ビルドしようとしたとき、warningが100個ぐらい出て泣きたくなった。
0302デフォルトの名無しさん
NGNG基本的に-Wall -Werrorだけど、未使用変数の警告だけはUNREFERENCED_PARAMETER()で殺してる。
ところで、ちょっとスレ違いっぽいがこのマクロはWin32専用なんだけどUNIX系ではどうやって警告殺すものなの?
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG意味って言うか挙動は代わらないんじゃないの。
高度なバグ検出ツールならp1の範囲チェックをしてくれるかもしれないけど。
0305デフォルトの名無しさん
NGNGGTK+やXでプログラム組んでると渡されても使わない変数ってのが出てくるものじゃないの?
ひょっとすると
int foobar(int int1, int int2) {
/* int2が不要 */
printf("%d", int1);
/* 警告対策 */
int2 = 0;
return 0;
}
こうやって逃げるとか?
0306デフォルトの名無しさん
NGNGp1++ は p1 = p1 + sizeof(char) * 100;
になる
0307デフォルトの名無しさん
NGNGホントに100個なら、楽勝。
なぜかコンパイルすら通らないソースが回ってきたことはあったが。。。
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG変数は定数の代わりをすることができます、
程度のセリフにすぎないな
0310デフォルトの名無しさん
NGNGいいえ、ノーエラーで通ります。
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGいや、拡張子 .c ならwarningでとりあえずコンパイルは通る。
0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNG警告もエラーもでません
0315デフォルトの名無しさん
NGNGポインター定数でしょ?
0316デフォルトの名無しさん
NGNGコンパイラがぼけなんでしょう
0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNG警告レベルは
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNGこんな定義は面倒だからあまり使わないな…。
それが厳密なんだろうけど。
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNGchar a[100];
p1 = &a;
ノーエラー、ノー警告
警告でるコンパイラーにおめにかかりたい
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGそもそも出るようなコードかかないので平気
0325デフォルトの名無しさん
NGNG#define UNREFERENCED_PARAMETER(P) { (P) = (P); }
なんてdefineされてるだけだな。
lint用にもなってるし、
(void)(P);なんてのが書けない頃からあるのかな。
なんか、骨董品て漢字だね。
0326デフォルトの名無しさん
NGNGprintf("%s", p);
0327デフォルトの名無しさん
NGNG厳密か厳密じゃないかということではなくて、
char (*p1)[100];
char *p2;
これらはそもそも意味が違う。
charのsizeを1とするなら、
p1++ が p1 += 100;
p2++ が p2 += 1;
で、
p2の意味で使いたいなら、
p2 = a; または p2 = &a[0];
と書くだろ?
p2 = &a;
はおかしいって話。(そう書くヤシがいるかいないかは別問題。)
0328デフォルトの名無しさん
NGNGおい、おおぼけ。いつの間に話の対象コードをすりかえてんだよ。
>>280がCで警告出るという話だったんだろうが。勝手に>>299と混ぜるなよ。
0329デフォルトの名無しさん
NGNG>>280 がCで警告が出るかどうかは環境依存らしい。
>>289
ANSI/ISO Cの元では&は「Tの配列へのポインター」を産み出す。これ は配列全体を指す。
(ANCI Cが誕生する前は、arrの前に&を付けるこ とは、たいてい警告を招き、たいてい無視された。)
すべてのCコン パイラで配列への(キャストのない)参照はポインターを産み出す。
こ のポインターはTへのポインターで配列の最初の要素を指す((質問 6.3, 6.13, 6.18も参照のこと)
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNGみなさん適当に実行してください。
#include <stdio.h>
int main(void)
{
char a[100];
char *p;
char (*pp)[100];
char *p2;
p = &a[0];
pp = &a;
p2 = &a; /* warning */
printf("p = %08X, pp = %08X\n", p, pp);
p++;
pp++;
printf("p = %08X, pp = %08X\n", p, pp);
return 0;
}
0335デフォルトの名無しさん
NGNG直張りする
C:\DOCUME~1\Owner\デスク~1\未整理>gcc --version
gcc (GCC) 3.3.1 (mingw special 20030804-1)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
C:\DOCUME~1\Owner\デスク~1\未整理>gcc test.c
test.c: In function `main':
test.c:12: warning: assignment from incompatible pointer type
C:\DOCUME~1\Owner\デスク~1\未整理>gcc test.c -Wall
test.c: In function `main':
test.c:12: warning: assignment from incompatible pointer type
test.c:14: warning: unsigned int format, pointer arg (arg 2)
test.c:14: warning: unsigned int format, pointer arg (arg 3)
test.c:17: warning: unsigned int format, pointer arg (arg 2)
test.c:17: warning: unsigned int format, pointer arg (arg 3)
C:\DOCUME~1\Owner\デスク~1\未整理>a
p = 0022FF18, pp = 0022FF18
p = 0022FF19, pp = 0022FF7C
0336デフォルトの名無しさん
NGNG(14): warning C4313: 'printf' : 書式文字列内の '%X' が '<不明>' 型の引数 2027955116 と競合しています。
(12): warning C4047: '=' : 間接参照のレベルが 'char *' と 'char (*__w64 )[100]' で異なっています。
(17): warning C4313: 'printf' : 書式文字列内の '%X' が '<不明>' 型の引数 2027955116 と競合しています。
(14): warning C4313: 'printf' : 書式文字列内の '%X' が '<不明>' 型の引数 2027957036 と競合しています。
(17): warning C4313: 'printf' : 書式文字列内の '%X' が '<不明>' 型の引数 2027957036 と競合しています。
実行結果
p = 0212FE6C, pp = 0212FE6C
p = 0212FE6D, pp = 0212FED0
Press any key to continue
Visual C++
0337デフォルトの名無しさん
NGNG/W3
0338デフォルトの名無しさん
NGNGっていうか、違う話してたのはおまえのほうだろうが
0339デフォルトの名無しさん
NGNG%xか%08xとかだろ?
もしくは %p
0340デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNGふつう -W3
(わたしは-W4か-Wxだが)
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNGにしといた方が良いって聞いたことあるんですけど・・・
0344デフォルトの名無しさん
NGNG通は-W0で完璧なコードを書く
0345デフォルトの名無しさん
NGNGふつうそうだね。
っていうか、それ以前にVCなど使うやつはぼけ
0346デフォルトの名無しさん
NGNG世間一般そんなに甘くない
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGふつうひょいひょいかえねーよ ぼけ
かえないからこそVCだめなわけ。わかる?
0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNG全然わかんねー(プ
おめーヴァカ?
「だめ」の理由言ってみな
0352デフォルトの名無しさん
NGNG>>348には複雑すぎて使えないんだろ ぼけ
0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG「//」が使えるかのようにかいてあるが、
また、改行をLFだけにしてもうごくようにみえるが、
実はその両方を同時にだと混乱してエラーでまくりになる。ぼけすぎ > VC6
0355デフォルトの名無しさん
NGNGIDEからの利用を想定してるだろう・・・
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNG標準じゃないかな?(´・ω・`)
0358デフォルトの名無しさん
NGNG98なら出来るよ。
0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNGMEじゃ無理?
できるならやり方ググッてきて分からなかったら質問します。
0361デフォルトの名無しさん
NGNG>仮に真のとき「1」であることが保証されるとして
「仮に」じゃなく、「どんなコンパイラでも」「常に」であると指摘されているのに
理解できないのですね。
>if(!(data & 0x000000FF)) mask |= 0x000000FF;
>
>であれば直接イミディエイト値とのORですむものを、
「分岐予測ミス」とか「パイプらインストール」という言葉を聞いたことが無いのですね。
メモリ参照と分岐予測ミスのどちらを避けるかというだけの話でしょ。
一般には、頻繁に参照されるメモリへのアクセスのほうが、
ある程度予測をミスする可能性のある分岐よりは、速くなるけどね。
でも、私はあなたと違って、実測しないとどちらが速いかは断定できませんが。
0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNG初めてC言語をやってみようと思ってパソコンにダウンロードしてやってみました。
プログラムを作ってみてコンパイルしてみたら
インクルードファイル 'stdio.h' をオープンできないって言われました。
これはどういうことですか?インクルードファイルってものがないのでしょうか。
0364デフォルトの名無しさん
NGNG・パスがきちんと設定されていない
・インストールミス
0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNGLIB=C:\BORLAND\BCC55\LIB
INCLUDE=C:\BORLAND\BCC55\INCLUDE
と設定して、INCLUDE、BIN、LIBっていうディレクトリもそこにちゃんとあるのですが
。
ならインストールミスになるんですかね
0367デフォルトの名無しさん
NGNGそれと、続きはこっち
http://pc5.2ch.net/test/read.cgi/tech/1091264964/l10
ちゃんとスレ内だけでもCTRL+Fしてからな。
0368デフォルトの名無しさん
NGNG98ってのは、Windows98のことじゃなくて、
PC-98シリーズのってことね。
98版ウィンドウズでも対応してたはず。
0369デフォルトの名無しさん
NGNGやりたくないけど。
0370デフォルトの名無しさん
NGNGありがと。
けどやっぱし出来ないです。才能ねぇなぁ。こっち方面には向いてないのかな…
0371デフォルトの名無しさん
NGNGさんくす
0372デフォルトの名無しさん
NGNGこれって分岐含まないのですか?
0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNG含みます
0375デフォルトの名無しさん
NGNG制御文とは違う。
0376デフォルトの名無しさん
NGNGそもそも「分岐含む」の意味自体不明なのに、何を根拠にそう言えるのですか?
0377デフォルトの名無しさん
NGNG馬鹿から根拠の無い自信を奪ったら廃人が残るだけですよ。少しは察しなさい。
0378デフォルトの名無しさん
NGNG0379374
NGNGただ単にコードを見た途端に、脳内でアセンブラに変換されただけ
確かにそれは C では条件分岐じゃない
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG逝ってきますねOTL
0382デフォルトの名無しさん
NGNGaが静的に分かれば消える。そうでないなら分岐する。
まぁ条件付きmoveとかあればそれになるかも知れないが。
0383デフォルトの名無しさん
NGNGアセンブラの出力見れば一発なのに
なんでこんな何十レスも引っ張ってるんだ。
0384デフォルトの名無しさん
NGNG一応突っ込んどくと
最適化で分岐命令をなくすために
定数であることが望まれるのは、bとcな。
で、変数であっても、条件付きmoveで分岐をなくせる場合がある、と。
0385デフォルトの名無しさん
NGNG真性?
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNGx = (a ? b : c);
の場合だろ?
何かおかしいか?
あ、おまえの頭か。すまんすまん。
0388デフォルトの名無しさん
NGNG>>212 あたりからだから、170レス超えてる
0389デフォルトの名無しさん
NGNGま、レベル的には同じようなものかも。
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNGここいらでもうだめすぎ
0392デフォルトの名無しさん
NGNGmalloc関数や、realloc関数類などのメモリ確保関数で確保したメモリ領域もexit関数を実行
すると解放されるのでしょうか?
それともexit関数で終了する時もfree関数は必要ですか?
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGただ、exitで終了しないときに、
色々トラブルの元になるのでfreeはしろ。
0395デフォルトの名無しさん
NGNGありがとうございます。
ちゃんと解放されるみたいですね。
0396デフォルトの名無しさん
NGNG嘘を教えないように。
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNGHOGE=100; で宣言したんですけどほんとにHOGEに代入されていないの?
HOGE += HOGE * i でインクリメントしています。
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNG規格にあるわけじゃないので、全部が解放してくれるわけじゃないが。
0401デフォルトの名無しさん
NGNGopenとclose, mallocとfree, ちんことまんこ。
この対象性を無視すると人類は絶滅する。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNG漢字ぐらいちゃんとかけよ ぼけ
0405デフォルトの名無しさん
NGNGこいつしったかぶりのぼけ。
0406デフォルトの名無しさん
NGNGこいつもしったかぶり
規格で規定されています。
0407デフォルトの名無しさん
NGNGANSI-Cから?C89,C99から?
見た所では規定されてないような書き方だったんだが…
0408デフォルトの名無しさん
NGNG規格で規定 規格で規定 規格で規定 規格で規定 規格で規定
規格で規定 規格で規定 規格で規定 規格で規定 規格で規定
規格で規定 規格で規定 規格で規定 規格で規定 規格で規定
規格で規定 規格で規定 規格で規定 規格で規定 規格で規定
0409デフォルトの名無しさん
NGNGなーんてまぬけなことを言っているやつが (どう違うのかわかってるのだろうか?)
> 見た所では規定されてないような
なんてかいても「読んでもいない」ことがばればれ
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGまともなOSであれば開放するので書かないというのが大多数
そして、freeしろという人は明確な理由を書けない
0412デフォルトの名無しさん
NGNG規格を読んだんじゃなくて、どっかのページだ。
規格は読んでない。
0413デフォルトの名無しさん
NGNGっていうか、おまえがまずまともに日本語書けよ ぼけ
0414デフォルトの名無しさん
NGNGしません
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG内容以前に、ANSI-Cと、C-89とかいてあるが、どうちがうのか知ってるのか? ぼけ
0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNGはい、すいません。
0419デフォルトの名無しさん
NGNGbike: vi, vt ゲッ[ウェッ]とやる, 吐く, げっぷをする.
n 嘔吐, げっぷ.
Bo・ker /buk(r)/
n. ボーカー George Henry Boker (1823-90) 《米国の詩人・劇作家・外交官;
400 点のソネットと, 南北戦争以前の最高の悲劇 Francesca da Rimini (1855) で認められた;
南北戦争で, 北部のために情宣活動をし, 戦後, トルコ (1871-75), ロシア (1875-78) 駐在の大使をつとめた》.
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNGいやちがうはず
0426デフォルトの名無しさん
NGNGっていうか、ここ80スレほどこういうの続いているじゃん。
いまさらその伝統を壊す気?
0427デフォルトの名無しさん
NGNGC99はISOだけじゃなかったか
0428デフォルトの名無しさん
NGNGC89のときと逆!
0429デフォルトの名無しさん
NGNGお前が伝統を重んじるとは、失笑を禁じえない。
0430デフォルトの名無しさん
NGNGでも、
1 :main(void) :04/08/02 22:12
と、さりげなく書いてある。
0431デフォルトの名無しさん
NGNG1回も改訂や追補がなかったと思ってるのか? このぼけは
0432デフォルトの名無しさん
NGNGなわけない。
そもそも
> Cプログラマ必読 ・プログラミング言語C(通称 K&R)
この「K」の前の文字は、voidならぜったい書かない。
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG全角スペースか?
0435デフォルトの名無しさん
NGNGこの文の空白も彼ならあり得ないな。分かち書き嫌いみたいだし
0436デフォルトの名無しさん
NGNGすくなくとも2回はあるぞ ぼけ
0437デフォルトの名無しさん
NGNGおまえら、細かいところばかり見るなあ...。
それ以前に考えて見ろよ。スレッドのタイトルは1が決めるんだろ?
voidやその手下(? 信者?)が、
> C言語なら俺に聞け! Part 88
などと書くわけねーじゃん。
細かいところ見るまでもない。
0438デフォルトの名無しさん
NGNGじゃあ、次に89を作るときには、おれが「言語」を抜いたのにしてやろう。
(ちなみに、いままで88回中、6回は俺が1だった)
0439デフォルトの名無しさん
NGNG> この「K」の前の文字は、voidならぜったい書かない。
そうだな。それに、その場合の括弧の前には空白空きそう。
0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNG俺は3回ぐらいだなぁ
0442デフォルトの名無しさん
NGNG細かいな...。
おまえらvoid研究家か?
ある意味voidファン?
0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNGAM1, TCOR1/2のことか?
0445デフォルトの名無しさん
NGNGvoid信奉者とまちがえられてふくろだたきにあう...かもな。
「聞け」がちょっといやだなあ。変えたい。
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG少しは自分の頭で考えろ!
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG規格票読め!
0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNGTaste of Honey, A
0452デフォルトの名無しさん
NGNGならCじゃん
0453デフォルトの名無しさん
NGNG>> まあ、自動で解放するとしても、可能な限り free しておくのが吉ってことだ
>
>こいつしったかぶりのぼけ。
こいつら気に入らない。
0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNG解放されるかどうかはOSや処理系依存。
あとはOSや処理系依存のコードを書くか。
依存しないコードを書くか好きにしろ。
0456デフォルトの名無しさん
NGNGCでは決まっている。
0457デフォルトの名無しさん
NGNGmallocはfreeしないってことでOKですね。
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGあれなんかopenさえしないじゃん
0460デフォルトの名無しさん
NGNGこのレビューは参考になりましたか?
◎はい ○いいえ
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNG確保したものは開放しろ。
これ常識。
0463デフォルトの名無しさん
NGNGデバイスコンテキストもGDIオブジェクトも、
確保したままプログラムを終了すべき。
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNG自分でopenしないものは自分でcloseしない。
自分でopenしたものは自分でcloseする。
自分で確保したものは自分で解放する。
常識です。
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNG「メモ帳」というWindowsアプリケーションでもいいです。
0471デフォルトの名無しさん
NGNGえ?
0472デフォルトの名無しさん
NGNG開放するコードを書く奴はいるのか?
462とか465はそんな馬鹿な事をやっているんだろうな
0473デフォルトの名無しさん
NGNG漢字ぐらいちゃんと書いてからえらそうなこと言えよぼけ
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG反論できないからって・・・情けない。
0476デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG馬鹿ですね。
0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNGatexitには関数のポインタしか渡せないけど、どうやって解放対象を指定するの?
0481デフォルトの名無しさん
NGNGちょっとまて
お前は何の話をしているのかわかっているのか?
メモリリークは関係無いぞ
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNGマジで言ってるのか釣りなのか
0484デフォルトの名無しさん
NGNG終了時にそれがまるごと捨てられるんであれば、
実行中に取得したメモリは自分で解放する必要ない罠
0485デフォルトの名無しさん
NGNG馬鹿ですね。
0486デフォルトの名無しさん
NGNG異常終了はしゃーないが、せめて正常終了するときくらいは書いとけよ
プログラムなんてどこで落ちるか分かんないんだから、全ての場合を考えるのは“無理・無駄”
0487デフォルトの名無しさん
NGNG書いて何かメリットあるの?
0488デフォルトの名無しさん
NGNGヒープごと解放する手間と、確保したメモリブロック単位で解放する手間を考えると
後者はかなりの無駄と思えるが。
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG誰かfreeしない人たちを納得させる説明できませんか
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNGメモリ上にゴミが増えすぎて最終的に破綻するから
0495デフォルトの名無しさん
NGNG単純に流れ作業実行したら終了、みたいなのだとfreeしなくてもいいけど、
ずっと無限ループして基本的に終了しないプログラムならfreeすべきだろ。
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNG468「後片付けのできないガキどもめ 」
491「だから後片付けはママがしてくれるんだってば 」
w
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGそれはあなたの想像での話ですか?実際にあった話ですか?
0502デフォルトの名無しさん
NGNGどんなプログラムか、という前提を抜きには語れないってことだ。
0503デフォルトの名無しさん
NGNG・趣味的プログラミング
・小規模開発
・個人使用のプログラム
・一人で開発
・メガネでぶ or がり
・引き篭もり
・オタ
0504デフォルトの名無しさん
NGNG俺全部に当てはまるがちゃんと free してるぜ
0505デフォルトの名無しさん
NGNG◎はい ○いいえ
0506デフォルトの名無しさん
NGNGそんなもんは実際にありますよ。
もっとも、最近はそういう分野ではCを使うことは減ってますが。
0507デフォルトの名無しさん
NGNGfreeするプログラムとしないプログラム、違いはありましたか?
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNGfreeしないことによるメモリリークで落ちる確率より高い罠
0510デフォルトの名無しさん
NGNG0511462=465
NGNGvoid *ptrtbl[32];
int ptrtblnum;
#define DeclAtExitProc(n) void _USERENTRY AtExitProc ## n(void){free(ptrtbl[n]);}
DeclAtExitProc(0) DeclAtExitProc(1) DeclAtExitProc(2) DeclAtExitProc(3) DeclAtExitProc(4)
DeclAtExitProc(5) DeclAtExitProc(6) DeclAtExitProc(7) DeclAtExitProc(8) DeclAtExitProc(9)
DeclAtExitProc(10) DeclAtExitProc(11) DeclAtExitProc(12) DeclAtExitProc(13) DeclAtExitProc(14)
DeclAtExitProc(15) DeclAtExitProc(16) DeclAtExitProc(17) DeclAtExitProc(18) DeclAtExitProc(19)
DeclAtExitProc(20) DeclAtExitProc(21) DeclAtExitProc(22) DeclAtExitProc(23) DeclAtExitProc(24)
DeclAtExitProc(25) DeclAtExitProc(26) DeclAtExitProc(27) DeclAtExitProc(28) DeclAtExitProc(29)
DeclAtExitProc(30) DeclAtExitProc(31)
void (* _USERENTRY atexitproctbl[32])(void) = {
AtExitProc0, AtExitProc1, AtExitProc2, AtExitProc3, AtExitProc4,
AtExitProc5, AtExitProc6, AtExitProc7, AtExitProc8, AtExitProc9,
AtExitProc10, AtExitProc11, AtExitProc12, AtExitProc13, AtExitProc14,
AtExitProc15, AtExitProc16, AtExitProc17, AtExitProc18, AtExitProc19,
AtExitProc20, AtExitProc21, AtExitProc22, AtExitProc23, AtExitProc24,
AtExitProc25, AtExitProc26, AtExitProc27, AtExitProc28, AtExitProc29,
AtExitProc30, AtExitProc31, };
void *MyMAlloc(int z)
{
void *p;
if (p = malloc(z)) ptrtbl[ptrtblnum] = p, atexit(atexitproctbl[ptrtbl]), ptrtbl++;
return p;
}
0512デフォルトの名無しさん
NGNGプログラムが終了してもメモリが確保されたまんま?!
0513デフォルトの名無しさん
NGNGというような処理系があるかもしれない。
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNGだから、終了しないプログラムの話をしてるんだろうが。
0517デフォルトの名無しさん
NGNGexitの前のfreeが必要かどうかの話なのに何故・・・
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNGそれだけではありません。
0521デフォルトの名無しさん
NGNG「極端にレベルが高い奴」と、
「極端にレベルが低い奴」の
2通りいるし、
free する派は、
「凡庸な奴」か、
「先生にそう言われたから無批判でやっている」か、
「ただの偏執狂」かの
何れかだからな。
こんな奴らが集まって議論しても
話がかみ合わないのは当たり前だな。
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGなんか前提が混乱しとるな
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNGそれなりに面白いネタだからな。
こんな素敵なネタを発見してくれた太田先生に乾杯。
また何か面白いネタを見つけれくれないかなぁ。
0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNG/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴∴,(・)(・)∴|
|∵∵/ ○ \|
|∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄
|∵ | __|__ | < うるせー馬鹿!
\| \_/ / \_____
\____/
0530デフォルトの名無しさん
NGNG型が複数の場合とか。
if ((ary1 = malloc(Type1Max*sizeof(Type1))) == NULL) { exit(0);}
if ((ary2 = malloc(Type2Max*sizeof(Type2))) == NULL) { free(ary1); exit(0);}
・・・・・・
if ((aryn = malloc(TypenMax*sizeof(Typen))) == NULL) { free(ary1); ・・・, free(aryn_1); exit(0);}
みたいな場合です。
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNGそれでもいいし、こんなのもある
arr1=arr2=arr3==NULL;
if((arr1 = malloc(1))==NULL) goto error;
if((arr2 = malloc(2))==NULL) goto error;
if((arr3 = malloc(3))==NULL) goto error;
return; // succ
error:
free(arr1);
free(arr2);
free(arr3);
やり過ぎたければ
if((arr1 = malloc(1))==NULL) goto error1;
if((arr2 = malloc(2))==NULL) goto error2;
if((arr3 = malloc(3))==NULL) goto error3;
return; // succ
error3: free(arr2);
error2: free(arr1);
error1:
0533デフォルトの名無しさん
NGNGWinであったような…。
巨大なファイルを作ったまま削除されないとか、そんなやつ。
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGfree(0)は問題なし。
532の上は ==NULL を =NULL にすれば問題なし。
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNGfree(NULL)は問題を起こさないんですね。ありがとうございます。
0539デフォルトの名無しさん
NGNGなんやねんこれ。
0540デフォルトの名無しさん
NGNGvolatile は「なんやねんこれ」等と
言っている奴が使うものじゃないから
安心しな。
忘れてかまわんぞ。
0541デフォルトの名無しさん
NGNG知らないなら無駄だから反応しなくていいです
0542デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNG≡ ( ┐ノ
:。; /
0546デフォルトの名無しさん
NGNGvolatile は
「意味不明のことしか書いてありませんでした」
と
「全く説明がなされていない」
が "同じ" と考える奴が使うものじゃないから
安心しな。
忘れてかまわんぞ。
0547デフォルトの名無しさん
NGNGではあなたは、あの説明でvolatileの意味が説明されていると、そう謂われるわけですね?
0548デフォルトの名無しさん
NGNGvolatile は
>>546 の前提から >>547 の結論を
導き出せる奴が使うものじゃないから
安心しな。
忘れてかまわんぞ。
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNGつってもK&Rは全く予備知識が要らないわけじゃないから
分からないこともあるかもしれないが。
0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGchar usragent[STATUS_LEN];
char refere[STATUS_LEN];
}PROFILE;
↑file1.h
PROFILE loadprofile(void)
{
PROFILE pfile;
/* いろいろな処理 */
return pfile;
}
↑file2.c
int main(void)
{
PROFILE pfile;
pfile = loadprofile();
return 0;
}
↑file3.c
0554デフォルトの名無しさん
NGNG代入する変数の型が違うというエラーが出て
コンパイルできません。
何故?
0555デフォルトの名無しさん
NGNG漏れの環境だと通るけど。
変なオプションとか設定してない?
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNG環境はcygwin,gcc3.3.1でオプションは何も指定してないです。
0559デフォルトの名無しさん
NGNGfile1.hをincludeしても、loadprofileは宣言されてていない。
プロトタイプ宣言が問題とされている。
0560デフォルトの名無しさん
NGNGそう思って(PROFILE)とキャストしてみたんですけど
そういうキャストは出来ないとコンパイラに言われました。
0561デフォルトの名無しさん
NGNGを file1.h に書けばいい希ガス
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG>>559の言うとおりプロトタイプ宣言忘れてました。
無事コンパイルできました。
ありがとうございました。
0565デフォルトの名無しさん
NGNGmallocしたものは当然freeするよな。
OS非依存とか言うわりには、無意識のうちになんらかのOSを
前提としているんだろうな。
0566デフォルトの名無しさん
NGNG>>392
0567デフォルトの名無しさん
NGNGBSDではたまたま問題ないが、SystemV系ではcore dumpする。
(ってちょっと古いか)
0568デフォルトの名無しさん
NGNGカーニハンもよくわかっていないのでしょう ;-)
0569デフォルトの名無しさん
NGNGで、それなに?
どうでもいいようなマイナーなものを出せばごまかせるとでも?
0570デフォルトの名無しさん
NGNGおめーそれぜんぜんまいなーじゃねぇよ
0571デフォルトの名無しさん
NGNG充分メジャー。
おまえが知らんだけだ。
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGし
0575デフォルトの名無しさん
NGNGいいえ同じです
0576デフォルトの名無しさん
NGNGkill したら task 終了だけど exit ?
教えてえらい人
0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNG何を言ってるのかさっぱりだが
スレ違いなのは確かなようだ。
0580デフォルトの名無しさん
NGNGcoreなら吐きます
0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNG一体どういう訳なのだろうか。
やっぱり未だに「需要がある」ということなのか?
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG高くないんだったら、真空管・トランジスタ・磁気コア・リレーとかの記憶媒体が欲しい。
中途半端に古い媒体は要らない。
0589デフォルトの名無しさん
NGNGttp://www.fsinet.or.jp/~mad/relay.htm
ttp://www.protom.org/mad/relaycal.mpg
ttp://www.protom.org/mad/zentai.mpg
0590デフォルトの名無しさん
NGNGtime_t型の値を使ってtime();で秒数を代入しました。
time()の戻り値が整数のため
difftimeで差を求めると、ほとんどが「0秒」になってしまいます
プログラムの実行速度を求める方法で
良い方法はないでしょうか?
0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNG環境と、今のソース貼ってみろ。な。
戻り値が整数なのは理由にならんよ。
0593590
NGNGFreeBSD5.2上です。
ご迷惑をおかけします。
$gcc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.3.3 [FreeBSD] 20031106
0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG0596590
NGNG「gettimeofday」をキーワードにググったら
下記のサイトを見つけ、大変参考になりました
http://www.super-computing.org/sr8000/timer.html
皆様ありがとうございました。
0597デフォルトの名無しさん
NGNGいいえ、coreをダウンしたファイルはcoreです
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNGうちでは大根おろし器にしてます > こあめもり
0600デフォルトの名無しさん
NGNGqsort((void **) lineptr, 0, nlines-1,
(int (*)(void *,void *))(numeric ? numcmp : strcmp));
という文がありますが、この二行目は何をしているのでしょうか。
型キャスト?
0601デフォルトの名無しさん
NGNG三項演算子でqsortに渡す関数を選択してる
わかりにくッ
0602デフォルトの名無しさん
NGNGfp = numeric ? numcmp : strcmp;
のfpを使ってるだけ。これだと分かる?
0603600
NGNG理解できました。ありがとうございました。
0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNG下北沢の駅や明大前の駅に、
よく落ちてます > core
find . -name core -delete
0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNG>>586
0608デフォルトの名無しさん
NGNGプログラム中で定義した構造体や変数との具体的な関係を説明せよ
という課題があるんですが、講義メモや教科書を読んでも良く分かりません
教えてもらえないでしょうか?
0609デフォルトの名無しさん
NGNGエスパーを探しているのか? そうか・・・
夏だな
0610デフォルトの名無しさん
NGNGこっちから課題を出そう。話はそれからだ。
レスの抽象的な質問について、
講義メモや教科書を読んで分からない点を具体的に説明せよ。
0611デフォルトの名無しさん
NGNG0612C超初心者
NGNGcalloc関数で確保したメモリをfree関数で開放したのですが
その確認をしたい場合どうすればいいのでしょうか
0613デフォルトの名無しさん
NGNGかなり難しいと思う。
逆に解放していないことを確認する方が簡単。
0614デフォルトの名無しさん
NGNGレスの質問について、
プログラムを見ないで、中で定義された構造体や変数などの関係を知る方法を具体的に説明せよ。
紙に書かれた10桁の数字を、紙を見ずに当てる方法でも構わない。
0615デフォルトの名無しさん
NGNGお前、超初心者とか言っておきながら、
実はベテランの釣り師だろ?
0616C超初心者
NGNG>>開放していない事を確認するほうが簡単。
とは、printf関数等で、%pにて表示すれば良いと言う事ですか?
0617デフォルトの名無しさん
NGNG簡単に言うとmalloc(calloc)した回数とfreeした回数を数えて
プログラム終了時にそれらの回数が一致していなかったら
freeし忘れたということが分かるとかそういう話。
質問の意味が、確実にfreeを実行したけど
解放されないことがあり得るかという意味なら通常はありえない。
0618デフォルトの名無しさん
NGNGNULLだったら解放済み。
ぐらいしか対処方法なくない?
0619デフォルトの名無しさん
NGNGお前等、親切な回答者のふりをしているが、
実は撒き餌だろ?
0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNG何を言ってるのか分かりかねます;-(
0622C超初心者
NGNGえ〜っと、 calloc関数で確保した領域があるわけじゃないですか。
その領域を開放するのがfree関数と自分は認識しているのですが、
その確保されている領域がfree関数を実行した後に、利用出来ると
思うのですが、領域が取られていない事を確認したいのですが
それは可能でしょうか?可能な場合、どのようなプログラムを
組んでいくと視認することが出来るでしょうか?
0623デフォルトの名無しさん
NGNGこれは、「freeした後の領域をそのまま使える」ということか?
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNG出来ません。利用できなくするのが free です。
他者が利用できるっていう話ならそう書いてください。
>領域が取られていない事を確認したい
文脈から「領域が取られる」の意味が読み取れません。
他者に取られるっていう話ならそう書いてください。
ちなみに他者に取られるかどうかは他者がいるかどうかですが
free したんならそんなこと気にしなさんなや。
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNGもう俺は騙されないぞ!
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNGヒープの利用状況を視認する機能を持ったヒープマネージャを作って、
calloc/free の代わりにそっちを使えばおけ。
0630デフォルトの名無しさん
NGNG>C超初心者
初心から始めるわけだから、超えたということは既に初心者ではないのだろうよ。
0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNG話が見えてこないな
0634C超初心者
NGNGあらかじデータの件数を取得し、その分だけmalloc関数
(またはcalloc関数)を用いてメモリを確保してから入力し、
それぞれ出力しなさい。また、入力において名前が空であった場合は、
そこで入力、及び出力を終了するようにしなさい。
終了時にメモリを開放していることを確認しなさい。
と、言う課題をしています。今、試しているのが下記のソースなんですが、
struct meibo {
char name[21];
char address[129];
char birth[11];
char phone[17];
}list;
int main( int argc , char *argv[] )
{
/* 変数宣言 */
struct meibo *pt;
/* メモリ領域確保 */
pt = ( struct meibo * )malloc( sizeof( struct meibo ) );
/* デバック用(解放前) */
printf( "Before!\nsize : [%d] address : [%p]\n\n" , sizeof( *p ) , p );
/* メモリ領域開放 */
free( pt );
/* デバック用(解放後) */
printf( "After!!\nsize : [%d] address : [%p]\n\n" , sizeof( *p ) , p );
}
開放の前後で同じ表示がされてしまいます。
0635C超初心者
NGNGすいません printfで呼んでいる p 及び *p は ptの間違えです
0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNGあと、list使ってないじゃん
0638デフォルトの名無しさん
NGNG当たり前だろ。ローカルに取ってある値なんだから。
>終了時にメモリを開放していることを確認しなさい。
きちんとメモリを解放する処理を入れたかどうか
ソースを良く見て確認してから提出しなさいちう意味にも読めるな
0639デフォルトの名無しさん
NGNG0640C超初心者
NGNG皆さんありがとうございました。
この問題に関して無事解決致しました。
分かりやすい回答ありがとうございます
0641デフォルトの名無しさん
NGNG先入観?
0642デフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNGむずかしいと言った奴に訊いてくれ
0644デフォルトの名無しさん
NGNG「ポインタが解らん!」と言う人が多い。
しかし、そーゆー人はポインタ以外も解ってなかったりするので
実際のところは >>640。
0645デフォルトの名無しさん
NGNGんで
javascript での「わーいマウス持ってったら画像が変わったー簡単だね」みたいなのと比べてるから
0646デフォルトの名無しさん
NGNGC ってのは、アセンブラ使えることが前提だから。
0647デフォルトの名無しさん
NGNG失敗しないのが前提なんでしょうけど、もし失敗しやがったら
そのプログラム上からは成す術無しなんですか?
0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNGでも、仮に exit() に「失敗しますた(^_^;)」って
言ってこられても対処に困るだろ?
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNGstrlenなら例えばこんな実装だろうけどヌル終端の正しい文字列を引数に渡す限り、
どこかで問題がおきることはないと思うけどもしエラーが起きるとしたらどこだ?
size_t strlen(char *s)
{
size_t i = 0;
while (s[i] != '\0')
i++;
return i;
}
0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNG色々あると思うが・・・
i = 0; <-初期化に失敗する
while (s[i] != '\0') <-比較を間違える
i++; <- インクリメントを忘れる
return i; <- i と間違えて s を返す
0654デフォルトの名無しさん
NGNGそういうのはバグとして修正できるだろ。
0655デフォルトの名無しさん
NGNG初期化失敗はまだしも、あとはちょっとテストするだけで分かるはず。
0656デフォルトの名無しさん
NGNGいや、たまには実行時にプロセッサが
間違うこともあるだろ?
0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG毎回ぬるぽチェックをするのはどうかな。
例えば、fclose(NULL)は成功して欲しいし
free(NULL)は無事に戻って来ないといけないんだけどさ。
で、strlenがぬるぽチェックしてないと
NULLを渡したときに失敗する(=戻ってこない)環境が殆どだと思うけど
それはそれでかまわないと俺は思うんだけど。
0660デフォルトの名無しさん
NGNGfoo = (HOGE *)NULL; みたいに
(2) ヌルポインターの代わりに0って書いてもいいんですか?
0661デフォルトの名無しさん
NGNG漢字ぐらいちゃんと書けよ ぼけ
0662デフォルトの名無しさん
NGNGヌルじゃなくてナルだろぼけ
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNG夜、口笛をふくとどろうぼうが来ますよ! と同じレベルか?
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNGまた、ニハは古代朝鮮語で「門・口・出口」等の意味があり、
ナニハは「日ノ出・日の門」となり日の出る聖なる場所を意味することとなる。
新羅第17代奈勿(ナル)は太陽王の意味である。
また、ナニハのナは古代朝鮮語で「生成」の意味を持つ。
(この名残が大阪市西成区・東成区として今に残る)
これらのことから大和岩雄氏はナニハの地名を
“太陽の光の降り注ぐ水辺の生成の土地”と解釈した。
つまり迎日祭祀の場所で、日庭であると説く。
大和氏は三国遺事の迎日祭祀の場所が都祈野と書かれていることと
難波の都祈野(ときの)との関連に注目する。
http://www003.upp.so-net.ne.jp/kodaisi/right-kusaka.htm
0668デフォルトの名無しさん
NGNGみたいな関連だな。
ごめん。苦しすぎた。
0669デフォルトの名無しさん
NGNGしかも、そこは、ひのもと(日下)の国(日の出ずるところの意味)であるから、
他の草香と区別するため、「日下(ひのもと)の草香(くさか)」と呼ばれていた。
現在でも「日下」と書いて「くさか」と読むのは、
「春日(はるのひ)のかすが」や「とぶとりのあすか」と同様である。
日本という呼び名は、弥生時代に平和に過ごしていた今の大阪あたりの人たちの国名(ひのもと)だったのを蘇我馬子により、蘇我氏が建国した国は、
真に倭人の国という意味で「日本(日本語読みでニホン、中国語読みでジベン)」と提案され対中国に対して使ったが、蘇我氏の滅亡とともに使われなくなった。
100年を経て、持統天皇・文武天皇のときに、改めて倭国を「日本(ニホン)」と呼ぶように決めた
http://www.eonet.ne.jp/〜ombudsman/kusakabeke04-kojiki.htm
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNGvoid
a. 1 役に立たない; 【法】 無効の; 無効にできる.
2 空(から)の、空(くう)な、中空の、空虚な; (家・土地など)空いている; 無い、欠けた;
n 無いこと、欠如; [the 〜] 虚空、真空、宇(宙); 隙間、空所、空隙; 空虚な感じ;
vt 空にする; 放出する,無効にする、取り消す;
null
a. 1 無効な、拘束力のない; 無益な; 価値のない、無意味な; 特徴[個性]のない.
2 存在しない; 【数】 ゼロの、零の、 《計器の》零位法の; 零位調整の.
n. 零、ゼロ; 《計器などの》零の目盛り、零度; 【通信】 《受信機の》零位;
vt. ゼロにする.
明白な関連だろ ;-)
0673デフォルトの名無しさん
NGNG> 新羅第17代奈勿(ナル)は太陽王の意味である。
そういえば、日本の皇太子も「ナルちゃん」だよね? いま
0674デフォルトの名無しさん
NGNGナル==void==朝鮮人==西成区==天皇家に近い==日下部 ってこと?
0675デフォルトの名無しさん
NGNG(void *)型をキャストすんなっつってんだろ ぼけ
0676デフォルトの名無しさん
NGNG語調があまりにいつも同じなので同一人物ってすぐわかるなw
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNG漢字ぐらいちゃんと書けよ ぼけ
というようにこのキャラは複数人が演じてる
0680679
NGNG0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNGアメリカ人ですか? それとも他の国の人ですか?
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNGみたいな書き方ってRECTの定義の変更にめちゃくちゃ弱くないですか?
0685デフォルトの名無しさん
NGNGメンバを後ろに追加していけば、とりあえず問題はおきない。
0686デフォルトの名無しさん
NGNGRECT rc = { .left = 0, .top = 0, .right = 1, .bottom = 1 };
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNGそもそもそういう初期化を多用するのがヤバい。
0689デフォルトの名無しさん
NGNGじゃ、どうやって初期化すんの?
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNGと
const char *p;
の違いについて教えて下さいまし
0693デフォルトの名無しさん
NGNG使い分けろ、アドレスとしての0と単なる数値の0
0694デフォルトの名無しさん
NGNG0695デフォルトの名無しさん
NGNGハァ?
0696デフォルトの名無しさん
NGNGない
0697デフォルトの名無しさん
NGNGnulと小文字にするか、カタカナでナルと書け。
0698デフォルトの名無しさん
NGNG↑p は変更できるが *p は変更できない
↓*p は変更できるが p は変更できない
0699デフォルトの名無しさん
NGNG逆じゃないか?
0700デフォルトの名無しさん
NGNGそれは、
char const *p;
char * const p;
の場合じゃない?
0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNGchar *const と勘違いしてないか?
0703デフォルトの名無しさん
NGNGうん、見間違えてたスマン
ほんとの事言うと、知識が足りなかったスマソ
0704デフォルトの名無しさん
NGNGtypedef int* IPもtypedef int *IPと書く方ですか?
0705デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNGstruct{} とかの定義だと顕著かな?
WinAPI のヘッダ覗くと大体 int *IP のほうを使ってる
0708デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/prog/1086146814/
0709デフォルトの名無しさん
NGNGforはインクリメントがどうのこうのとかで微妙に遅くなるとかならないとか
聞いたんですが分かる人おりますか?
0710デフォルトの名無しさん
NGNG都市伝説
0711デフォルトの名無しさん
NGNGgotoがまじですごいらしいよ
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG誰から?
0714デフォルトの名無しさん
NGNGどっちも大差ない
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG「差」(w
0717デフォルトの名無しさん
NGNG実はdo while(1);が最速
0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNG正確には、ドラフト案が出た段階で
関数プロトタイプやvoidなどと共に導入が提案されていたはず。
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG/*** ここから ***/
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[]){
char *str = (char *)malloc(100);
char *argstr = (char *)malloc(100);
if (str == NULL || argstr == NULL) {
sprintf(stderr,"Memory Allocation Error!\n");
exit (1);
}
if (argv[1]==NULL){
printf("str>");
scanf("%s",argstr);
}else strcpy(argstr,argv[1]);
str = getenv(argstr);
printf("STR:%s\n",str);
free (str);free(argstr);
exit (0);
}
/*** ここまで ***/
(続く
0724デフォルトの名無しさん
NGNG$ hoge=a ./a.out hoge
STR:a
$ hoge=a ./a.out
str>hoge
STR:a
ここまではいいんですが
$ a=a ./a.out a
STR:a
free(): invalid pointer 0xfefb45be!
$ a=a ./a.out
str>a
STR:a
セグメンテーション違反です
なにがわるいんでしょうか
変数にaaaaを使うとaを使った場合と同じになります。abcdを使うとhogeの場合と同じになり、bbbbだと、これもhogeの場合と同じになります。
分っている範囲でおかしくなる条件
・a=a
・aaaa=a
正しく実行される条件
・hoge=a
・abcd=a
・bbbb=a
よろしくです
0725723-724
NGNG0726デフォルトの名無しさん
NGNGfree (str);free(argstr); // 何解放してんだ
0728デフォルトの名無しさん
NGNGそもそもstrはgetenvの戻り値を入れるだけだからmallocする必要も無い。
となるとprintfで出力するときしか使っていないから、直接printf("STR:%s\n", getenv(argstr));と書けばいい。
つまり変数str自体要らない。
0729デフォルトの名無しさん
NGNGprintf("STR:%s\n",str);
free (str);free(argstr);
exit (0);
}
strに確保した領域使ってないじゃん。
char *str; /* mallocは消す */
free (argstr); /* free(str);は消す */
0730デフォルトの名無しさん
NGNG> なにがわるいんでしょうか
scanf使っているから
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNGvoid (*signal(int sig, void (*func)(int)))(int);
となっているんですが、どうしてもこれが理解できません・・・
お力をお貸し下さい。
0734デフォルトの名無しさん
NGNGところで、
typedef long LONG;
unsigned LONG var;
みたいな使い方って合法?
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNGいいえ
0737デフォルトの名無しさん
NGNG「どうしても」ってことは、おれが説明してもってことだ。
だから説明しても無駄なので、しないぞ。
「どうしても」ってのは、ほんとうにすべてのかぎりを尽くしたとにだけ言えよぼけ
0738デフォルトの名無しさん
NGNG0739733
NGNG0740デフォルトの名無しさん
NGNGあとは何も聞くことは無いはず
0741デフォルトの名無しさん
NGNG答)「かんどうしてもよいです」
0743デフォルトの名無しさん
NGNGUndoしてもとにもどらない!
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG・・・・・・・・・・・・・・・
0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG0750初心者
NGNGchar型の配列について、
配列の数を大きくすると宣言できなくなってしまいます。
char a[1000]ならプログラムが動くのに、
char a[500000]にすると動きません。
メモリの関係で大きな数の配列は無理なのでしょうか。
解決法があれば教えてくれると助かります。
0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNGtypedef void *PFUNC(int);
PFUNC signal(int sig, PFUNC func);
これと同じ。関数へのポインタを2つ目の引数に取って戻り値の型も関数へのポインタ。
0754デフォルトの名無しさん
NGNGtypedef void (*PFUNC)(int); ではないだろうか。
0755デフォルトの名無しさん
NGNG若者たちよ、こいつらは悪い手本だぞ
0756デフォルトの名無しさん
NGNG一応マジレスしとくと、malloc() 使いなさい。
0757デフォルトの名無しさん
NGNG「宣言できない」だからスタック上ほげほげの問題じゃあないだろう。
intが16bitな処理系でa[500000]は無理なのはあたりまえだろぼけ
0758デフォルトの名無しさん
NGNGやっぱり750はぼけ厨か。
0759デフォルトの名無しさん
NGNGひとつ言っておく
extern int a[]; /* これは宣言 */
int a[1000]; /* これは定義 */
0760デフォルトの名無しさん
NGNG勝手に思い込んで決め付けるタイプだな。
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNG上位と下位を加えるのに+ではなく|を使ってるのって
不要な繰り上がり計算をさせないためだったんだ。
今初めて気がついた。
0764デフォルトの名無しさん
NGNG違う
0765デフォルトの名無しさん
NGNG> char a[1000]ならプログラムが動くのに、
8bitではないらしい
0766デフォルトの名無しさん
NGNGでは何故?
0767デフォルトの名無しさん
NGNG違う。
unsigned にキャストするより短いから。
0768デフォルトの名無しさん
NGNG何が短いのでしょうか。
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNGビット演算は論理演算が基本ってことで納得しとけ
0771デフォルトの名無しさん
NGNG|を使うとunsignedにキャストするよりコードが長くなる?
+を使うとunsignedにキャストしなくてはいけない??
もちろん>763では
定数以外で「+」を使うと、キャリーの加算が別途必要だから
「|」よりコードが長くなる(可能性がある)という意図で書いたんだけどさ。
16bit環境で32bit値を生成、あるいは32bit環境で64bit値を生成するときの話ね。
32bit環境で32bit値を合成するなら+も|も一緒だから。
MAKELONGLONGを自分で書こうとしてふと思っただけ。
多くの人は昔から気づいていただろうし。
0772デフォルトの名無しさん
NGNG{
/* 略 */
}
関数の引数を2次元配列にする時だけ1番目の要素を省略できるのは何故ですか?
それと、2番目はどうして省略できないのでしょうか?
また1番目は省略しておくと要素数が変わっても対応できますか?
通常は省略するものなのでしょうか?
質問多くてすいませんがどなたか教えてくださいm(_ _)m
0773デフォルトの名無しさん
NGNGvoid aaa(int hoge[][10])
の場合、hoge[2][5]は*(hoge + 10 * 2 + 5)と書き換えられる。この中の10というのはもちろん2番目のの要素数。
2番目以降の要素数を省略できることにするとこの10と言う2番目の要素数も引数として受け取らなければならなくなるから。
(C99ではそこんところを明示的に引数にしてvoid aaa(unsigned num, int [][num]);のような記述が可能)
そして要素数の1番目は省略するのが普通。
0774デフォルトの名無しさん
NGNGどうもありがとうございます。m(_ _)m
参考にさせていただきます。
0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG今、strcpyの機能をmain関数内でやろうとしてみたんですが全く下のプログラムじゃ
結果ぬるになります。
26からのプログラミングは前途多難ですね。お願いします。
void main(){
char a[64],b[64];
char *c;
printf("つなげられる文字列入力-->");
scanf("%s",&a);
printf("\nつなげる文字列入力-->");
scanf("%s",&b);
int i;
for(i=0;a[i] == '\0';i++)
(*c)+=a[i];
for(i=0;b[i] == '\0';i++)
(*c)+=b[i];
printf("結果表示\n%s\n%s\n%s\n",a,b,*c);
}
0777デフォルトの名無しさん
NGNGいろいろ突っ込みどころはあるが、
とりあえず、
お前は scanf を使うのをやめた方がいい。
0778776
NGNGまだそこまで勉強進んでないんです。
っつーか、つっこみどころいっぱいあるんだったら
一からやり直してみます
すみませんでした
0779デフォルトの名無しさん
NGNGchar a[64],b[64];
char *c; // これポインタ
printf("つなげられる文字列入力-->");
scanf("%s",&a); // ここでは無駄につっこまれるので、fgets(a, sizeof(a), stdin);で
printf("\nつなげる文字列入力-->");
scanf("%s",&b); // aと同じ
int i;
for(i=0;a[i] == '\0';i++)
(*c)+=a[i]; // cはポインタでどこを指してる?−不定値です。
for(i=0;b[i] == '\0';i++)
(*c)+=b[i];
printf("結果表示\n%s\n%s\n%s\n",a,b,*c);
}
0780デフォルトの名無しさん
NGNG一応できるだけ君のコードを尊重した上でマジレスすると、
c に値入ってないのに (*c) とは何事?
せめて、
char d[128];
char *c = d;
くらいにしとけ。
さらに (*c) に += し続けても文字列の結合にはならない。
それに、
printf("結果表示\n%s\n%s\n%s\n",a,b,*c);
じゃなくて
printf("結果表示\n%s\n%s\n%s\n",a,b,c);
あと、
scanf("%s",&a);
じゃなくて
scanf("%63s",a);
0781776
NGNGかなりはずかしいコードを晒したんですね。
しかし勉強になります。
周りにプログラミングやってる人いないので。
さらに質問なんですけど>>779さんのfgets(a,sizeof(a),stdin);はググって解ったんですけど
>>780さんの
scanf("%63s",a);
の %63s ってどういうことですか?
0782デフォルトの名無しさん
NGNGあー、scanf使うなって言われてるんだから、fgetsでいいんじゃない?
なぜscanfが駄目なのかは自分で調べて味噌
0783776
NGNGまだまだ俺のレベルじゃstrcpyの真似はできないと悟りました。
基本情報技術者受けようと思ってたけどやめときます
0784デフォルトの名無しさん
NGNGa[64]ってあるから
aに入る最大の文字数を63としてる。
0785デフォルトの名無しさん
NGNG入力してみ。
0786デフォルトの名無しさん
NGNG調べるのはいいが、はじめから「だめ」って先入観は捨ててドライに論考しろ
それが科学者とごっこの境だ
0787デフォルトの名無しさん
NGNG猫でもわかるとか読んでないで本買え。
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNGメリハリなく、だらだら書かれてるだけって感じ。
コードもかなり下手だし。
0791デフォルトの名無しさん
NGNGほら、脊椎動物亜門 哺乳綱 ネコ目 ネコ科の動物である必要はない!
0792776
NGNG言いたいことが解りました。
でもfgetsとscanfの順番を逆にしたら入力がscanfだけしか受け付けなくなってしまいました。
どういうことでしょうか?
#include <stdio.h>
main(){
char a[64],b[64];
printf("文字だ、文字を入れろ-->");
fgets(a, sizeof(a), stdin);
printf("もう一回文字だ、文字を入れろ-->");
scanf("%63s",&b);
printf("\n\n1:%s",a);
printf("\n2:%s",b);
return 0;
}
ちなみに、オーム社のCの本買ったけど今、構造体のネストでつまずいております。
0793デフォルトの名無しさん
NGNG分からないところは飛ばして進めば?
0794デフォルトの名無しさん
NGNG小学校の授業に積分が出てこないのをレベル低いって言ってるようなものだなw
0795デフォルトの名無しさん
NGNG初心者向けだからダメだと言ってるわけじゃない。
0796デフォルトの名無しさん
NGNG>小学校の授業に積分が出てこないのをレベル低いって言ってるようなものだなw
そう言ってるようには見えないが。
0797デフォルトの名無しさん
NGNGこちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0798デフォルトの名無しさん
NGNGところだけど、最近2chでも「猫でもわかるをみろ」みたいなカキコが目に付く
ようになってきたな。
0799デフォルトの名無しさん
NGNG初心者向けのスレしか見ないようになったのでは?
0800デフォルトの名無しさん
NGNG激しく的外れだなw
0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNGあのサイトを1から順にこなしていけば、
ざっくりとした雰囲気はつかめるっしょ。
そういうサイトが他にはないと思うんだな。
0803デフォルトの名無しさん
NGNG最初に、scanf関数ってのは書き込む変数に対してのポインタを渡すもの
scanf("%63s",&b); のbは本来配列名だけど、インデックスを省くとその配列の先頭へのポインタを示すことになるから'&'は付けなくていいよ。
それはさておき、*gets関数はバッファに改行(\n)が現れるまで文字を読み込む。だから途中に何があろうが無視して変数へ格納していく。
それに対し*scanf関数は何もしなければバッファにホワイトスペース(スペースやタブのこと)が現れた時点で読み込むのを止めちゃう。
今回の例でいうと、最初のscanf()でスペース入りの文字列を入力したからAAAまでがaに格納される。
次のfgets()の時はバッファ(stdin)に先ほど読み込まれなかったBBB CCC\nが残っているので、それをユーザの入力よりも先にbに格納する。
というような流れで動くんだよね。こんな説明でわかってもらえた?
0804デフォルトの名無しさん
NGNG"C/C++"に関しては、他にもサイト/書籍が豊富だから傑出しているわけでは無いが、俺達よりはレベル高いな。
0805デフォルトの名無しさん
NGNG少なくともおまへはレベル低い
0806デフォルトの名無しさん
NGNGまたは、記号を具ぐる方法教えてください。
それと、小さい方を返す演算子ってありますか?
副作用についても教えてください。
簡単にでいいです。
キーワードわかれば具繰りmass。
よろ。
0807デフォルトの名無しさん
NGNGこれと
int a,b;
if(a<0) b=-1;
else b=1;
これが
int a,b;
b=(a<0 ? -1:1);
等価。
0808デフォルトの名無しさん
NGNGそのあと「三項演算子」でgoogle検索。
0809デフォルトの名無しさん
NGNGmin = a<b ? a : b ;
副作用は無い。
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNGお前らすごいですね。
すげーたすかります。
サンクスコ!
0812デフォルトの名無しさん
NGNG逆だろ。
0813デフォルトの名無しさん
NGNG{
LESS=-1,
EQUAL,
MORE,
};
int a,b,c;
a=5;b=1;
c=a<=b ? a<b ? MORE:EQUAL:LESS;
0814デフォルトの名無しさん
NGNG「副作用」って用語がどういう意味かわかって使っているか?
0815デフォルトの魚釣りさん
NGNG薬の副作用とは違うんですか?
0816デフォルトの名無しさん
NGNG「副作用」って用語がどういう意味かわかって使っているか?
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNGint _tmain(int argc, _TCHAR* argv[])
{
printf ( "%s", A );
return 0;
}
このプログラムでコンソールに文字列としてAAAAを表示させるにはどうすれば良いですか?
どうしても良い方法が思いつきません。
(#define A "AAAA"はなし)
0819デフォルトの名無しさん
NGNG/* 各部屋の寸法から、家屋の床面積を計算するプログラム */
#include <stdio.h>
int main(void)
{
int num, i, length, width, space;
printf("部屋の数はいくつですか : ");
scanf("d%", &num);
space = 0;
for(i=1; i!=num; i++)
{
printf("%d番目の部屋の寸法を入力してください\n", i);
printf("縦 : ");
scanf("%d", &length);
printf("横 : ");
scanf("%d", &width);
space = length * width;
}
printf("家屋の総床面積は%dです", space);
return 0;
}
0821デフォルトの名無しさん
NGNGi!=num
0822デフォルトの名無しさん
NGNG日本人ってヲタだったんだ。
0823822
NGNG誤爆した。
0824デフォルトの名無しさん
NGNG勝手にフォローすんなよ。
まぢで気がついたし。
0825819
NGNG修正しました。ありがとうございます。
しかしまだ問題が…
部屋数が多くてもspaceが加算されていかない…
それと、条件判定部がいまいち理解できないのですが、
i=1からi==numまでi++するとなると
for(i=1; i!=num; i++)じゃなぜまずいのでしょうか?
例えば2!=2は偽なのでforループから抜け出るはずなのですが、抜けでないです…
i<num+1では問題ないのですが、納得できない…。
0826デフォルトの名無しさん
NGNG<=を知っているか?
0827818
NGNGどうしようもないんですか・・・・
本当の本当に不可能なんでしょうか?
何か名案はないでしょうか?
#define A AAAA
でAAAAを文字列として表示したいだけなのですが・・・
0828デフォルトの名無しさん
NGNG0830デフォルトの名無しさん
NGNGそれをすることにどんな意味がある?
"AAAA"では駄目な理由は何なのか?
0831デフォルトの名無しさん
NGNG無理。
文字列にするための#はマクロの引数にしか使えないし。
0832デフォルトの名無しさん
NGNGC言語はお前等の母親ではない(利根川
不合理なことをなんでもかんでもサポートするほど甘くは無い
0833818
NGNGただ単にですね
AAAAは関数名なんですよ。#defineで切り替えて呼び出す関数を変える。
デバッグのためにその関数名を表示したいんですが無理なんですかねぇ・・・
0834819
NGNGあ、
space = space + length * width;
ですね。
とりあえず、問題なく動作するようになりました!ありがとうございます。
あとは、i!=numじゃなぜまずいのか、納得のいけば良いのですが…。
0835デフォルトの名無しさん
NGNG>for(i=1; i!=num; i++)じゃなぜまずいのでしょうか?
num=0の場合を考えてみよう
0836819
NGNGが、他の数字の場合でも、ループから抜け出さないプログラムになってしまうんです。
それはなぜなんでしょう?
あと、書くとすればi!=num+1ですね。
0837819
NGNGi!=num+1
でも、これなら問題ないですね。ありがとうございました…。
0838デフォルトの名無しさん
NGNG0839819
NGNG/* 各部屋の寸法から、家屋の床面積を計算するプログラム */
#include <stdio.h>
int main(void)
{
int num, i, length, width, space;
printf("部屋の数はいくつですか : ");
scanf("%d", &num);
space = 0;
for(i=1; i!=num+1; i++)
{
printf("%d番目の部屋の寸法を入力してください\n", i);
printf("縦 : ");
scanf("%d", &length);
printf("横 : ");
scanf("%d", &width);
space = space + length * width;
}
printf("家屋の総床面積は%dです\n", space);
return 0;
}
0840デフォルトの名無しさん
NGNGまぁ、がんがれや。
0841819
NGNGCは始めたばかりですが、頑張ります(`・ω・´)
0842デフォルトの名無しさん
NGNGprintf("%s", __FUNCTION__);
でいいでしょう。
あとは、
#define AAAA
#define A_STR(v) #v
printf("%s", A_STR(A));
とかね。
0843デフォルトの名無しさん
NGNG手打ちしてコメントにしておけば済むだろ。
//#define A AAAA
//#define AS "AAAA"
#define A BBBB
#define AS "BBBB"
//#define A CCCC
//#define AS "CCCC"
コメントを消したり付けたりするのすら面倒だというなら#ifつかえ。
0844デフォルトの名無しさん
NGNG>>843 暇人
>>833 無知
0845デフォルトの名無しさん
NGNGそれは"A"になる。もちろん#define A AAAAにしても。
0846845
NGNG0847デフォルトの名無しさん
NGNG#define _STR_(x) # x
printf("%s", _STR_(A));
0848デフォルトの名無しさん
NGNGcpp のソース持ってきてちょこっと書き換えればできるだろ。
それくらい自分でやったらどうだ?
0849デフォルトの名無しさん
NGNGだからそれじゃ"AAAA"ではなく"A"になるってば。
0850デフォルトの名無しさん
NGNG識別子の先頭に '_' 付けるな! ヴォケ
#define REP(x) x x x x
#define STR(x) REP(#x)
printf("%s", STR(A));
0851818
NGNGあきらめます。
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNG質問するときの例が悪いだけ。つか悪すぎるだけ。最悪なだけ。
0855デフォルトの名無しさん
NGNG850はネタじゃないの?
0856デフォルトの名無しさん
NGNGこれでいんじゃね?
#define A AAAA
#define TO_STR(x) #x
#define XTO_STR(x) TO_STR(x)
#define A_STR XTO_STR(A)
printf("%s¥n", A_STR);
だまされたと思ってやってみ
0857デフォルトの名無しさん
NGNGvoid printFUNCname(void (*f)(void))
{
if(f == AAAA) print "AAAA";
if(f == BBBB) print "BBBB";
if(f == CCCC) print "CCCC";
}
プログラム中で
printFUNCname(A);
を実行
0858デフォルトの名無しさん
NGNG何処が?
0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNG意図は分かってくれ。
っていうか、結局 >>818 が >>833 で自白しているように、
最初から関数ポインタ使っとけっていう場面。
0861デフォルトの名無しさん
NGNGぼけ
int i; // これが宣言
i = 0; // これが定義
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNGいいえ。1時限配列にするときも3時限配列にするときも「1番目の要素数」を省略できますよ。
0864デフォルトの名無しさん
NGNG水戸のご隠居の別名
0865デフォルトの名無しさん
NGNGscanf使っているところ。
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNGint i; //定義宣言
extern i; //宣言
もしiについてのextern宣言が他にあったなら
int i; //定義
0868867
NGNG0869デフォルトの名無しさん
NGNGそんなもなーないぞ
0870867
NGNGint i;
なんか定義と宣言を同時に行っているだろ?
あまり使われないみたいだけど定義宣言という言葉はある
ってか調べおしたら変数で一般的に定義といわれているものは正しくは定義宣言、
externで変数名を導入することは参照宣言というらしい。
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNGいいえ。
> あまり使われないみたいだけど定義宣言という言葉はある
いいえ。まったくありません。
0873デフォルトの名無しさん
NGNGそれウソ。いいかげんなこと言うな。
どこが「正しく」だよ ぼけ。
0874デフォルトの名無しさん
NGNG0875デフォルトの名無しさん
NGNGちょっと調べただけの情報を広めるスレですか?
0876デフォルトの名無しさん
NGNGぼ けと書く人はスルーで。
0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNG0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNGこんなことがしたいのか?
#define E(x) char x[] = #x;
E(A)
E(AAAA)
#undef
0884デフォルトの名無しさん
NGNG揚げ足厨がtypoしてるぜ(プ
0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNGvoid func(void) // 関数の定義宣言
{
int var; // 変数の定義宣言
}
テストに出るらしいぞ。
0887デフォルトの名無しさん
NGNG1つ聞くが、おまえさんは国内での用語の基準は何だと思っている? もちろんCに関して
どーせふざけて誤魔化すだけだろうが(プ
0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNGCはgrammarだけを見れば、外部定義の中に関数定義と宣言があるだけだな。
file : external_definition | file external_definition ;
external_definition : function_definition | declaration ;
だが、Cは宣言の中で定義もできるという無茶な仕様の言語と言われることもあったと思う。
grammarを全部みれば俺もわかると思うんが、たとえば、
int i;
int i;
int i;
このように、「int i;」は宣言だから複数宣言しても昔はOKだったが、今は変更されたんか?
定義宣言という言葉はしらんが、「int i;」は宣言であり、最後の宣言だけが有効になる、と聞いたと思ったんだが…
0891デフォルトの名無しさん
NGNG宣言は declaration。
定義は definition。
定義宣言なんて知らん。
0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGそうでないものは宣言。
こう考えればおけ。
0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNGいいや。昔のUnixのCの時代だらそれはエラーだった。
0897デフォルトの名無しさん
NGNGint i;
extern int i;
static int i;
0898デフォルトの名無しさん
NGNGint i;と書いてあっても、
その変数を1回もつかっていないと、その分スタックをオフセットしないので
「実体は作られていない」ですよね?
0899デフォルトの名無しさん
NGNG(ry
ちなみに試験に出るらしいぞ。
0900デフォルトの名無しさん
NGNG>ってか調べおしたら変数で一般的に定義といわれているものは正しくは定義宣言、
引用してみてよ。気になる。
0901デフォルトの名無しさん
NGNG下手な釣りだな
0902デフォルトの名無しさん
NGNGfoo()
{
i;
for (i = 0; i < 10; i++)
...
もOKだったのですが、5年ほど前からでてきているC99準拠の処理系だとだめ。
0903デフォルトの名無しさん
NGNGstruct s { int x; int y; };
みたいのは定義。
変数の定義とは違うにょ。
struct s;
みたいのは宣言。
>>895,898
最適化をまったくしないとすれば、実体はできるでしょう。
0904デフォルトの名無しさん
NGNG何か主張したいならすべて引用元を明示しろ。
脳内はかんべんな。
0905デフォルトの名無しさん
NGNG定義。
スコープは書かれる場所による。
> extern int i;
宣言。
なので実体が作られないので、
定義が別になければリンクエラーになる。
> static int i;
定義。
スコープは書かれる場所による。
0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNG>struct s { int x; int y; };
これは宣言
>struct s;
これは不完全型の宣言
>int i;
おまえさんは、リンカがしている「ある仕事」を知らないようだな
autoとか突然言い出した898はぼけ
0908デフォルトの名無しさん
NGNGお前らはすべきじゃない>引用なしの主張
0909デフォルトの名無しさん
NGNGお前こそ引用元を明示しろ
0910デフォルトの名無しさん
NGNGstruct s { int x; int y; }; が構造体の定義で、
struct s S;が構造体変数の定義じゃないの?
0911デフォルトの名無しさん
NGNG失礼なやつだな
人の言うことを頭から剽窃行為と決め付けてやがる
0912デフォルトの名無しさん
NGNGしかも失敗してんじゃねーか!!
0913デフォルトの名無しさん
NGNG剽窃だからじゃない
不正確だからちゃんとソースを確認して正確に引用しろといってるだけ
0914912
NGNG0915デフォルトの名無しさん
NGNG× struct s { int x; int y; }; が構造体の定義で、
○ struct s S;が構造体変数の定義じゃないの?
0916デフォルトの名無しさん
NGNG0917デフォルトの名無しさん
NGNG0918燃料投下(^^!
NGNG>これは宣言
型の定義(^^!
>>struct s;
>これは不完全型の宣言
型の宣言(^^!
0919デフォルトの名無しさん
NGNG不発
思考停止したアフォは放置
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNGstatic int j; /* これは定義 */
0922デフォルトの名無しさん
NGNGウィルス○○ファイル /* これは定義 */
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNG京都負けちゃったね
0926867
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/477410843X/249-1598953-0831507
あとぉ、ネット検索しても本当に少しだけだけど触れているページだってあるぞぉぉ!w
0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNGこの本を正規購入して読め、「本当に少し」の理由がわかるはず
http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=JIS+X+3010%3A2003&dantaiCd=JIS&status=1&pageNo=0
0929867
NGNGほい、みてみまつ。
0930デフォルトの名無しさん
NGNG今時 struct をそのまま使う香具師の気が知れない。
使うなら、
typedef struct mytype_ {/* mytype_ は自分の構造体の中で mytype へのポインタが
出てくる場合のみ */
・・・・・
} mytype;
という「熟語」を使うのが常套手段。
0931デフォルトの名無しさん
NGNG構造体かどうかの区別がつきにくくなるだろ!
0932デフォルトの名無しさん
NGNG俺も>>931に同意だけど、好きな方使えばいいんでない?
だから素直にstruct ***とやっている人を馬鹿にしてはいけない
なんてカッコつけて言ってみたw
0933デフォルトの名無しさん
NGNGp.293 19.3.3 宣言と定義のセクションより引用
>変数宣言は, 宣言であり, かつ定義でもある.
>(中略, 定義と宣言についての説明がある)
>変数宣言のように宣言と定義が同時に行われるのを定義宣言という.
強調されて書かれてるしw → 定義宣言
0934デフォルトの名無しさん
NGNG変数の意味も分からずに使うことはまず無いので無問題。
変数の宣言・定義の度に struct を打つのは無駄。
関数だったら、何も分からなくても
sometype myfunc(mytype a, mytype2* b, ・・・)
{
・・・
}
とかで済むし、必要があれば a.member, b->member2 とすれば良いし、
構造体でない型の変数でドットやアローを付けてしまっても syntax error になるだけだから、
一切問題は起こらない。
では、問題になるケースというのは?
0935デフォルトの名無しさん
NGNGどちらも間違いではないけど、既製のヘッダファイルを見ればほぼ例外なく
typedef struct と書いてある。
0936デフォルトの名無しさん
NGNG焚書推奨
0937デフォルトの名無しさん
NGNGヽ|/
/ ̄ ̄ ̄`ヽ、
/ ヽ
/ \,, ,,/ |
| (●) (●)||| |
| / ̄⌒ ̄ヽ U.| え? なんだって?
| | .l~ ̄~ヽ | |
|U ヽ  ̄~ ̄ ノ |
|  ̄ ̄ ̄ |
0938デフォルトの名無しさん
NGNGSemantics
1 If the declaration of an identifier for an object has file scope and an initializer, the
declaration is an external definition for the identifier.
2 A declaration of an identifier for an object that has file scope without an initializer, and
without a storage-class specifier or with the storage-class specifier static, constitutes a
tentative definition. If a translation unit contains one or more tentative definitions for an
identifier, and the translation unit contains no external definition for that identifier, then
the behavior is exactly as if the translation unit contains a file scope declaration of that
identifier, with the composite type as of the end of the translation unit, with an initializer
equal to 0.
3 If the declaration of an identifier for an object is a tentative definition and has internal
linkage, the declared type shall not be an incomplete type.
4 EXAMPLE 1
int i1 = 1; // definition, external linkage
static int i2 = 2; // definition, internal linkage
extern int i3 = 3; // definition, external linkage
int i4; // tentative definition, external linkage
static int i5; // tentative definition, internal linkage
int i1; // valid tentative definition, refers to pre vious
int i2; // 6.2.2 renders undefined, linkage disagreement
int i3; // valid tentative definition, refers to pre vious
int i4; // valid tentative definition, refers to pre vious
int i5; // 6.2.2 renders undefined, linkage disagreement
extern int i1; // refers to pre vious, whose linkage is external
extern int i2; // refers to pre vious, whose linkage is internal
extern int i3; // refers to pre vious, whose linkage is external
extern int i4; // refers to pre vious, whose linkage is external
extern int i5; // refers to pre vious, whose linkage is internal
0939デフォルトの名無しさん
NGNG自分が使いやすいと思ったほうを
使うのが一番だと思われ。
そんなムキになるようなことじゃない。
0940デフォルトの名無しさん
NGNGムキになることじゃない、この点はよい
ただし理由がおかしいよ
0941デフォルトの名無しさん
NGNGえ?
何かおかしい?
別に普通の理由だと思うが?
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG最初にWSAData構造体に何が格納されているかを表示させるプログラムを
書いたのですがいきなり躓きました。
以下のようなコードを書いたのですが
wVersion=257
wHighVersion=514
という結果が出ました。
自分の環境だとwVersion=1.1,wHighVersion=2.2になると思ってたのですが
何故こんな結果になってしまったのでしょうか?
#include <winsock.h>
//以下main文
WSADATA wsadata; //WSADATA型変数宣言
if(WSAStartup(MAKEWORD(1,1),&wsadata)){
printf("WSAStartup関数失敗です\n");
return -1;
}
printf("wVersion=%u\n",wsadata.wVersion);
printf("wHighVersion=%u\n",wsadata.wHighversion);
printf("szDescription=%s\n",wsadata.szDescription);
0944デフォルトの名無しさん
NGNG%uで小数が表示されるわけないだろ
0945デフォルトの名無しさん
NGNGはう、お盆なので親戚が来てかなり酒が入ってる状態です
お許しください
俺が書きたかったのは下のコードでした
printf("wVersion=%d.%d",LOBYTE(wsadata.wVersion),HIBYTE(wsadata.wVersion));
じゃあ、
printf("wVersion=%u\n",wsadata.wVersion);
printf("wHighVersion=%u\n",wsadata.wHighversion);
の
wVersion=257
wHighVersion=514
は何なんでしょうか?
0946デフォルトの名無しさん
NGNGとっとと,お帰り下さい。
wVersion=MAKEWORD(1,1)
wHighVersion=MAKEWORD(2,2)
0947デフォルトの名無しさん
NGNG%hsにしる。
# そもそもスレ違い
0948デフォルトの名無しさん
NGNG鬱
0949デフォルトの名無しさん
NGNGその点での誤動作は絶対にしないんだな。
intサイズ以下の整数を可変引数をとる関数(の可変引数部)に渡すと
必ずint型に格上げされるからね。
0950デフォルトの名無しさん
NGNG痛いな。俺。
wVersion == 0x0101
だから257
0951デフォルトの名無しさん
NGNG有名な「ダメ本」じゃん。
0952デフォルトの名無しさん
NGNGこういうウソを平気で書いている本を買うなよなあ。
0953デフォルトの名無しさん
NGNGあと2週間も先だろ > お盆
0954デフォルトの名無しさん
NGNGお前はどこの国の人間だ?
0955デフォルトの名無しさん
NGNG毎年、七月十五日を中心に、十三日を迎え盆、十六日を送り盆といい、
十三日から十六日までの四日間を、お盆の期間とします。ただし、
旧暦の七月十五日や、月遅れの八月十五日を中心にお盆をつとめるところもあります。
本来は、仏教の行事だったお盆ですが、働く人は盆休みをこの時期にとり、
故郷のある人は帰り、盆踊りをして楽しみ、生きている私たちの生活のなかに、
しっかりと根ざしている、夏の季節の節目となっています。
0956デフォルトの名無しさん
NGNGもともと仏教なんかよりはるか以前からある行事でしょ
それを否定するわけにはいかないので、仏教でもそれをoverloadしただけ。
(お盆っていう言い方もそのとき以来のもの)
キリスト教でも「そうそう! イエス様は12月24日生まれだったんですよ!」ってことに
して、古くからある冬至のイヴェントをoverloadしたように(本当は4月上旬生まれらしい)。
0957デフォルトの名無しさん
NGNG7月15日の行事を肯定するためのにせもののお経をでっち上げて、
(中国語じゃなくてサンスクリット語で!)そうまでしてoverloadする必要が、
中国南部と北部ではあったわけだ (中央部では民族に違いによりなかった)。
でも、そんなお経よりはるか以前から、日本の島々では、7月15日に先祖の霊を
うやまうための行事がずっと行われていた。
0958デフォルトの名無しさん
NGNGそれは日本や沖縄も客家の人たちと同じ祖先の血をひいているから。
インドよりももっと西方、いまのイランやイラクあたりから来た人たちだから。
そもそも「お盆」というネイミングも、イラン語系の古い言葉で精霊を意味するurvan -> サンスクリット語のullanbana -> 盂蘭盆 -> お盆
となったもの。
0959デフォルトの名無しさん
NGNG日付をずらすのはナンセンス。
お正月と七月の行事は日付の変更はあり得ない。
5月の行事は生きているひとのほうの都合である程度の変更は許されている。
0960デフォルトの名無しさん
NGNG>イランやイラクあたりから来た
>日付をずらすのはナンセンス
と言うなら、日本の太陽太陰暦(いわゆる旧暦)で日付を決めるのは変でない?
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNG0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNGメソポタミアはもともと太陰暦です。
0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNG0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNGおめーいわゆる太陽太陰暦と太陰暦の差をしらんのか!
中国の太陰暦と日本のは何千年に1回の確率で1日ずれるか知ってる?
(それでも正月とお盆はずれない)
0970デフォルトの名無しさん
NGNGttp://neo-luna.cside.ne.jp/moon/ml06.htm
ttp://neo-luna.cside.ne.jp/moon/ml06s.htm
ttp://homepage3.nifty.com/such/shumi/shumi1/calendar4.html
ttp://www.edp.eng.tamagawa.ac.jp/~sumioka/history/orient/orient01.html
ttp://www.eva.hi-ho.ne.jp/suruga/sekaikokogakunext.htm
ttp://www.sqr.or.jp/usr/akito-y/kodai/15-orient1.html
ttp://astro.ysc.go.jp/izumo/shogatu.html
0971デフォルトの名無しさん
NGNGhttp://neo-luna.cside.ne.jp/moon/ml06.htm
http://neo-luna.cside.ne.jp/moon/ml06s.htm
http://homepage3.nifty.com/such/shumi/shumi1/calendar4.html
http://www.edp.eng.tamagawa.ac.jp/~sumioka/history/orient/orient01.html
http://www.eva.hi-ho.ne.jp/suruga/sekaikokogakunext.htm
http://www.sqr.or.jp/usr/akito-y/kodai/15-orient1.html
http://astro.ysc.go.jp/izumo/shogatu.html
0972デフォルトの名無しさん
NGNG日本の太陽太陰暦と古代メソポタミアの太陰暦は同じだったらしい。
現在のイスラム暦は西暦622年に制定された。
0973デフォルトの名無しさん
NGNGなどで文字配列に10文字以内の文字列を入れさせたはいいんですけど、
10文字以上の入力あったら10文字以降はstdinに残ったままで
その後の標準入力に関する操作がうまく働くなくて困っています。
stdinに残ってしまったバッファをクリアするにはどうすればよいのでしょうか?
while(!foef(stdin)) ch = fgetc(stdin);
などやってみましがうまくいきませんでした。
0974デフォルトの名無しさん
NGNGfflushを試し
0975973
NGNGstdinなんですけど。
0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNG>while(!foef(stdin)) ch = fgetc(stdin);
オールスキップしてどうするよ
次の改行まで読み捨てれ
0978973
NGNG回答ありがとうございます。fflush()は前も試しましたが効果はありませんでした。
それと、>>975は私ではないです。
>>977
では
fgets(tmp, INT_MAX, stdin);
みたいなことをすればいいですか?
0979デフォルトの魚釣りさん
NGNG#include <string.h>
int main()
{
char s[8];
fgets(s, sizeof(s), stdin);
if(sizeof(s) - strlen(s) == 1 && s[sizeof(s)] != '\n')
while(fgetc(stdin) != '\n');
fgets(s, sizeof(s), stdin);
return 0;
}
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNGrewind(stdin)
はい、おしまい。
0983デフォルトの名無しさん
NGNG普通にgetcharとかで1文字づつ処理したほうが、素直じゃね?
0984973
NGNG返事おくれてすみません、自分でその処理を追っていました。
大体はそれで問題は解決できますね!ありがとうございます。
ただ一回目のfgets()の時にちょうど8文字(改行除く)を入力した時にgetc()の部分も実行されて計3回入力しなければいけなくなるようです。
あと、s[sizeof(s)]ってs[8]ということになりますよね?
これは存在しない要素を指すことにはならないのですか?
0985デフォルトの名無しさん
NGNGうまく動かない(スレッド関数が実行すれない)。
つか、CreateThread関数、スレッド関数が<windows.h>にインクルードされてるって
書いてあるけど見つからんけど何故ですか?
VC++ 6.0 使っています
0986973
NGNGありがとうございました。
>>983
getchar()でもためしてみようと思います!
0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989973
NGNGやはり一回目の入力が(sizeof(s) - 2)文字の時に3回入力が求められてしまいます。
いろいろ試してみてるのですがこれはどういう具合でしょうか?
0990デフォルトの名無しさん
NGNG新スレ
0991973
NGNGなんか一人で騒いじゃって申し訳ありません。
ありがとうございました。
0992デフォルトの名無しさん
NGNGどうやって解決したか書けよ馬鹿
0993973
NGNGすみません。(sizeof(s) - 2)文字の時にgetc()も実行されてしまう問題は
if(sizeof(s) - strlen(s) == 1 && s[sizeof(s) - 2] != '\n')
↑ここ
とすることで解決できました。
0994デフォルトの名無しさん
NGNGfgets(buf, BUFSIZE, stdin);
if (strchr(buf, '\n') == NULL)
while (fgetc(stdin) != '\n');
fgets(buf, BUFSIZE, stdin);
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNGプ
0998デフォルトの名無しさん
NGNG>>ププ
0999デフォルトの名無しさん
NGNGクックック…
1000973
NGNGこの方がシンプルですね。
まだ標準ライブラリ関数についてあまり知らないからこういうときに不便を感じますね〜
もっと勉強します。
>>995
たしかにchar s[1]の時にかえってくるかもしれませんけど、、、
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。