探検
C言語なら俺たちに聞け パート0001
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2012/07/07(土) 17:15:26.10 なんでも聞きなよ
352デフォルトの名無しさん
2013/12/07(土) 00:57:54.98 >>335
必要な処理が書かれてそうなSoftware探してきてfind-grep
よほどバカでなければ2、3個のプロジェクト眺めたら何が必要かぐらい分かる
真面目にフローを追うのは知らない。
動的デバッグで処理をトレースする方法を知りたいけれど、あんまりネット上で情報を見ない。
必要な処理が書かれてそうなSoftware探してきてfind-grep
よほどバカでなければ2、3個のプロジェクト眺めたら何が必要かぐらい分かる
真面目にフローを追うのは知らない。
動的デバッグで処理をトレースする方法を知りたいけれど、あんまりネット上で情報を見ない。
353デフォルトの名無しさん
2014/01/10(金) 10:52:51.16 typedefみたいな型変換ってなんのために必要なの?
結局、中身は int とかじゃないんですか?
結局、中身は int とかじゃないんですか?
354デフォルトの名無しさん
2014/01/10(金) 11:53:19.05 >>353
typedefがないとstdio.hのFILEの代わりにコンパイラごとに異なった構造体を使う羽目になるよ。
例えば、FILEはこんな構造体の別名になっているかも知れない。
--
struct __sFILE {
unsigned char *_p; /* current position in (some) buffer */
int _r; /* read space left for getc() */
int _w; /* write space left for putc() */
short _flags; /* flags, below; this FILE is free if 0 */
short _file; /* fileno, if Unix descriptor, else -1 */
struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */
int _lbfsize; /* 0 or -_bf._size, for inline putc */
/* separate buffer for long sequences of ungetc() */
struct __sbuf _ub; /* ungetc buffer */
unsigned char *_up; /* saved _p when _p is doing ungetc data */
int _ur; /* saved _r when _r is counting ungetc data */
/* tricks to meet minimum requirements even when malloc() fails */
unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
unsigned char _nbuf[1]; /* guarantee a getc() buffer */
/* separate buffer for fgetline() when line crosses buffer boundary */
struct __sbuf _lb; /* buffer for fgetline() */
};
typedefがないとstdio.hのFILEの代わりにコンパイラごとに異なった構造体を使う羽目になるよ。
例えば、FILEはこんな構造体の別名になっているかも知れない。
--
struct __sFILE {
unsigned char *_p; /* current position in (some) buffer */
int _r; /* read space left for getc() */
int _w; /* write space left for putc() */
short _flags; /* flags, below; this FILE is free if 0 */
short _file; /* fileno, if Unix descriptor, else -1 */
struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */
int _lbfsize; /* 0 or -_bf._size, for inline putc */
/* separate buffer for long sequences of ungetc() */
struct __sbuf _ub; /* ungetc buffer */
unsigned char *_up; /* saved _p when _p is doing ungetc data */
int _ur; /* saved _r when _r is counting ungetc data */
/* tricks to meet minimum requirements even when malloc() fails */
unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
unsigned char _nbuf[1]; /* guarantee a getc() buffer */
/* separate buffer for fgetline() when line crosses buffer boundary */
struct __sbuf _lb; /* buffer for fgetline() */
};
355デフォルトの名無しさん
2014/01/10(金) 14:38:36.47 typedef struct { ...... } T_STRUCT;
T_STRUCT aaa,*ppp;
T_STRUCT aaa,*ppp;
356デフォルトの名無しさん
2014/01/10(金) 15:09:55.39 >>354
よくわかりません・・・orz
よくわかりません・・・orz
357デフォルトの名無しさん
2014/01/10(金) 15:33:58.56 主に構造体変数の記述が楽になる機能と思っとけばいい。
358デフォルトの名無しさん
2014/01/10(金) 16:19:12.00 楽になるって言うか、環境ごとの差異を吸収してくれると言えるね。
359デフォルトの名無しさん
2014/03/15(土) 21:28:11.30ID:9QOnV1hL >>356
なんにつけても、別名とか読み替え、すげ替え(怖‥)とか、最後の切り札として欲しいという場面があるのかもしれません
なんにつけても、別名とか読み替え、すげ替え(怖‥)とか、最後の切り札として欲しいという場面があるのかもしれません
360デフォルトの名無しさん
2014/04/27(日) 13:35:26.65ID:bd99OFN+ C99のforはfor (int i=0; i<10; i++){}こう書くとエラーになるそうなんですが
clang 3.0で試してみたらエラーになりません
clang 3.0ってC99に対応してますよね
何故エラーが出力されないのですか?
clang 3.0で試してみたらエラーになりません
clang 3.0ってC99に対応してますよね
何故エラーが出力されないのですか?
362デフォルトの名無しさん
2014/04/27(日) 15:11:54.85ID:6kmnG/6w あ、すいませんclangだと思ってたらgccでした
gccだとc99でコンパイルしないとエラーになるんですよ
gccだとc99でコンパイルしないとエラーになるんですよ
363デフォルトの名無しさん
2014/04/27(日) 15:14:09.23ID:6kmnG/6w オンラインでコンパイルできるところはほとんどそういうエラーがでますよ
http://ideone.com/YzhJfBとか
http://ideone.com/YzhJfBとか
364デフォルトの名無しさん
2014/04/27(日) 15:15:48.48ID:6kmnG/6w いったんclangの話は忘れてください
clangではエラーはでません。
gccでC99としてコンパイルしない場合にエラーがでるんですが
これ元からこういう仕様なんでしょうか?
わざわざ
int i;
for (i=0; i<10;i++)
みたいに書いてるの昔から見た記憶がないんですよ
clangではエラーはでません。
gccでC99としてコンパイルしない場合にエラーがでるんですが
これ元からこういう仕様なんでしょうか?
わざわざ
int i;
for (i=0; i<10;i++)
みたいに書いてるの昔から見た記憶がないんですよ
365はちみつ餃子 ◆8X2XSCHEME
2014/04/27(日) 17:13:57.90ID:xdZ6Vmhj366デフォルトの名無しさん
2014/04/27(日) 19:12:34.67ID:Pjc55Uh5 >>365
なるほど、勉強になりました
なるほど、勉強になりました
368デフォルトの名無しさん
2014/04/30(水) 22:30:29.65ID:5eizdNbo リンカスクリプトの話題はこのスレで聞いてもよいものだろうか?
369デフォルトの名無しさん
2014/04/30(水) 22:53:56.73ID:Ov1TiWMO それは的外れに過ぎるね。
370デフォルトの名無しさん
2014/04/30(水) 22:57:04.98ID:5eizdNbo >>369
サンクス 別スレで聞く
サンクス 別スレで聞く
371デフォルトの名無しさん
2014/11/06(木) 21:12:20.39ID:iaZsweTc なんでこんな重複スレみたいな糞スレ立てるんだよ。
372デフォルトの名無しさん
2014/11/10(月) 11:39:30.82ID:Gb+bzZuG すぐ荒れるから。
373デフォルトの名無しさん
2014/11/11(火) 09:21:14.54ID:6NYBFoc4 http://pastebin.com/sngpMHR7
printf("%sの%s\n", mark[draw_mark-1], digit[draw_mark-1]);
draw_mark-1 とdraw_mark-1は、どうして-1なんでしょうか?
printf("%sの%s\n", mark[draw_mark-1], digit[draw_mark-1]);
draw_mark-1 とdraw_mark-1は、どうして-1なんでしょうか?
374デフォルトの名無しさん
2014/11/11(火) 11:22:25.45ID:QByfxOoU >draw_mark = rand() % 4 + 1; //マークを決定する
1から4の乱数を0から始まる配列番号に当てはめるから。
1から4の乱数を0から始まる配列番号に当てはめるから。
375デフォルトの名無しさん
2014/11/11(火) 14:20:44.02ID:fzwLZ9n2 それは、わかるんだが
>draw_mark = rand() % 4 + 1
これって、変数に1〜4 までを適当に決めてるだけで
どうして、配列と関係があるんですか?
>draw_mark = rand() % 4 + 1
これって、変数に1〜4 までを適当に決めてるだけで
どうして、配列と関係があるんですか?
376デフォルトの名無しさん
2014/11/11(火) 14:36:12.21ID:CXWKhWIS >>373 中の mark[draw_mark-1] で
なんで -1 してるん? という質問からの派生
配列のインデックスは 0 から開始する(リンク先ソースでは mark[0] 〜 mark[3] まで)
変数 draw_mark は 1 から4まで
この draw_mark を使って 配列の要素を正しくアクセスするのに -1 して帳尻をあわせてる
なんで -1 してるん? という質問からの派生
配列のインデックスは 0 から開始する(リンク先ソースでは mark[0] 〜 mark[3] まで)
変数 draw_mark は 1 から4まで
この draw_mark を使って 配列の要素を正しくアクセスするのに -1 して帳尻をあわせてる
377デフォルトの名無しさん
2014/11/11(火) 17:55:38.32ID:iIdIPRdi >>376
ありがとうございます
ありがとうございます
378デフォルトの名無しさん
2014/11/12(水) 07:45:05.87ID:/ZcTzOPa typedef struct
{
int value;
} TEST;
TEST t = {1};
printf("%d\n",t);
環境:VC++2012 express
このコードで1が出力されるのは、C言語の仕様に合ってるんだっけ?
{
int value;
} TEST;
TEST t = {1};
printf("%d\n",t);
環境:VC++2012 express
このコードで1が出力されるのは、C言語の仕様に合ってるんだっけ?
379デフォルトの名無しさん
2014/11/12(水) 08:31:23.63ID:Kd9sZNKE 合ってるんじゃないの?
380デフォルトの名無しさん
2014/11/12(水) 10:12:31.16ID:6b20czbE 変換指定と実引数があってないから未定義じゃない?
381デフォルトの名無しさん
2014/11/12(水) 18:54:50.32ID:8RoZt+WE ポインタ渡してるのかと誤読した。
まぁ未定義で、常識的にやるべきじゃない記述だな。
まぁ未定義で、常識的にやるべきじゃない記述だな。
382デフォルトの名無しさん
2014/11/12(水) 23:00:08.69ID:8UdI52J6 だよな。ありがとう。
383デフォルトの名無しさん
2014/11/13(木) 14:12:51.43ID:fbX2c55U メンバー変数がint型一つしかない構造体をつくる理由が思いつかん。
384デフォルトの名無しさん
2014/11/13(木) 18:21:52.27ID:KUU70nma385デフォルトの名無しさん
2014/11/13(木) 23:22:17.48ID:RTKAZJeS 型保証したくてね。
typedefだと間違って引数に渡した時にコンパイルエラーにならないから。
で、普通のプリミティブ型でやってたのを構造体に置き換える作業中に
なぜかprintfで正しく出力されたんで、面倒臭いアクセス関数使わなくてもいいのかも
と思って聞いてみた。
Cで擬似オブジェクト指向やってると面倒臭すぎる。演算子のオーバーロードが欲しい。
改めてC++の偉大さ(謎)が分かったかもww
typedefだと間違って引数に渡した時にコンパイルエラーにならないから。
で、普通のプリミティブ型でやってたのを構造体に置き換える作業中に
なぜかprintfで正しく出力されたんで、面倒臭いアクセス関数使わなくてもいいのかも
と思って聞いてみた。
Cで擬似オブジェクト指向やってると面倒臭すぎる。演算子のオーバーロードが欲しい。
改めてC++の偉大さ(謎)が分かったかもww
386デフォルトの名無しさん
2014/11/13(木) 23:42:19.83ID:NUKISzLu printfで型保証とな?
387デフォルトの名無しさん
2014/11/14(金) 02:23:00.78ID:ZKHgRmzB printfは可変長引数の関数だから第2引数以降の型を確認しないのでエラーが出ないでしょ。
sprintf、fprintf、scanf、、、など。
その引数をどう扱うかは関数によって様々
sprintf、fprintf、scanf、、、など。
その引数をどう扱うかは関数によって様々
388デフォルトの名無しさん
2014/11/14(金) 07:03:46.18ID:TIi0CXWz 固定長引数での関数の話。
printfとかは、もちろん値を取り出して渡すつもりだったんで、あれ?と思っただけ。
printfとかは、もちろん値を取り出して渡すつもりだったんで、あれ?と思っただけ。
389デフォルトの名無しさん
2014/11/14(金) 09:55:14.56ID:LHxJpsmN 引数のスタックへの積まれる方向と構造体のメンバーの並ぶ順番は一致するのかと考え…ることも無く「やるな!」の一択。
390デフォルトの名無しさん
2014/11/14(金) 10:15:46.48ID:NoejJarl printfの本体(vprintfだったかな)のソース眺めてみれば、答えが
391デフォルトの名無しさん
2014/11/14(金) 11:51:06.29ID:ZKHgRmzB #include <stdio.h>
typedef struct { int value; } TEST;
void pr(int data) { printf("%d\n", data); }
int main()
{
TEST t = {1};
pr(t); // ← コンパイルエラーになる
return 0;
}
をコンパイルすれば分かると思うけど型が指定されている関数だとエラーになる。
>>378は構造体TESTのデータ(つまりvalue==1のみ)がprintfに渡されたまたま表示されているだけ。
以下のコードが "111, 333" ではなく "111, 222" と表示される理由を考えると分かるかな?
#include <stdio.h>
typedef struct { int v1; int v2; } TEST;
int main()
{
TEST t = {111, 222}; int d = 333;
printf("%d, %d\n", t, d);
return 0;
}
typedef struct { int value; } TEST;
void pr(int data) { printf("%d\n", data); }
int main()
{
TEST t = {1};
pr(t); // ← コンパイルエラーになる
return 0;
}
をコンパイルすれば分かると思うけど型が指定されている関数だとエラーになる。
>>378は構造体TESTのデータ(つまりvalue==1のみ)がprintfに渡されたまたま表示されているだけ。
以下のコードが "111, 333" ではなく "111, 222" と表示される理由を考えると分かるかな?
#include <stdio.h>
typedef struct { int v1; int v2; } TEST;
int main()
{
TEST t = {111, 222}; int d = 333;
printf("%d, %d\n", t, d);
return 0;
}
392デフォルトの名無しさん
2014/11/14(金) 12:01:18.41ID:ZKHgRmzB そして、111, 222 と表示されるとしても
「たまたま」そう表示されているだけで
環境によっては変な表示になるかエラー
「たまたま」そう表示されているだけで
環境によっては変な表示になるかエラー
393デフォルトの名無しさん
2014/11/14(金) 12:58:22.70ID:qPlOgKHi それは未定義で終わり。ぐだぐだ書く必要はない
394デフォルトの名無しさん
2014/11/15(土) 12:45:04.51ID:TpdAhqvC >>393
賛成。
賛成。
395デフォルトの名無しさん
2015/02/07(土) 03:31:09.68ID:ldaWMMkn 初めまして、
8〜12個のxy座標で囲まれた地域(歪な多角形)があり、調査対象の座標がその中にあるか、を判定する関数を作りたいのですが
どうすれば良いかが見当もつかず困っています。
判る方がおりましたらご教授下さい。
OSはLinuxです。
宜しくお願いします。
8〜12個のxy座標で囲まれた地域(歪な多角形)があり、調査対象の座標がその中にあるか、を判定する関数を作りたいのですが
どうすれば良いかが見当もつかず困っています。
判る方がおりましたらご教授下さい。
OSはLinuxです。
宜しくお願いします。
396デフォルトの名無しさん
2015/02/07(土) 03:47:05.12ID:Y8QeCJm/ >>395
思いつきだけど
1. 囲まれた地域(歪な多角形)を囲み多角形に接しない(余白を大きめに取った)四角形をまず求める
2. 調査対象の座標から色を塗りつぶす
3. 囲まれた地域の外である、1.で求めた四角形のところを塗ろうとするなら、調査対象の座標は多角形の外側である
4. 1.で求めた四角形のところを塗らずに処理完了したら、調査対象の座標は多角形の内側である
でいかがでしょう。
思いつきだけど
1. 囲まれた地域(歪な多角形)を囲み多角形に接しない(余白を大きめに取った)四角形をまず求める
2. 調査対象の座標から色を塗りつぶす
3. 囲まれた地域の外である、1.で求めた四角形のところを塗ろうとするなら、調査対象の座標は多角形の外側である
4. 1.で求めた四角形のところを塗らずに処理完了したら、調査対象の座標は多角形の内側である
でいかがでしょう。
397デフォルトの名無しさん
2015/02/07(土) 04:38:10.19ID:G4SX7WFX 調査点と 範囲を決める頂点列 P(Xi, Yi) とのなす角(符号付)の総和が
360度ならば内包点 そうでないならば外の点
360度ならば内包点 そうでないならば外の点
398デフォルトの名無しさん
2015/02/08(日) 00:12:37.99ID:jDoVco3x ダブルポインタが理解できない。
int **pp;
int *p;
int n[] = {0, 1, 2};
pp = &p;
p = n;
p++;
printf("**pp : %d", **pp);
これでなんで0じゃなくて1が出るの。だれかわかりやすく解説してくれ。
もしくは参考書教えて。たのむます。
int **pp;
int *p;
int n[] = {0, 1, 2};
pp = &p;
p = n;
p++;
printf("**pp : %d", **pp);
これでなんで0じゃなくて1が出るの。だれかわかりやすく解説してくれ。
もしくは参考書教えて。たのむます。
399デフォルトの名無しさん
2015/02/08(日) 01:36:05.41ID:HJEgExkV 始めにpは0のアドレスを指している。
p++でpは1のアドレスを指す。
*ppはpのアドレス、**ppはpの指す値。
p++でpは1のアドレスを指す。
*ppはpのアドレス、**ppはpの指す値。
400Office & Gamers ◆G144Hzgh2.0e
2015/02/08(日) 01:56:25.70ID:EWNvntIT BASICならPOKE/PEEK()/VARPTR()で分かる筈だけど、Cは変数とメモリを混ぜてるから分かりにくいよなw
BASICでプログラムを書いてると分かるけど、メモリを直接いじるプログラムは通常書かないから、Cの異常性が分かりやすいw
BASICでプログラムを書いてると分かるけど、メモリを直接いじるプログラムは通常書かないから、Cの異常性が分かりやすいw
401デフォルトの名無しさん
2015/02/08(日) 02:02:24.66ID:LUl61OMZ402デフォルトの名無しさん
2015/02/08(日) 02:03:14.00ID:LUl61OMZ と思ったら、問題ありませんね。失礼しました
403Office & Gamers ◆G144Hzgh2.0e
2015/02/08(日) 02:08:51.18ID:EWNvntIT だいたいBASICよりアトに出てるのに、どうして構文解析がBASIC未満なんだろうな?w
404デフォルトの名無しさん
2015/02/08(日) 05:36:09.99ID:1pvsOI5Y ダブルポインタなんて言葉無いのに
ポインタ知らない奴に限ってなぜかよく使う・・・・なぜだろう
ポインタ知らない奴に限ってなぜかよく使う・・・・なぜだろう
405Office & Gamers ◆G144Hzgh2.0e
2015/02/08(日) 05:41:46.72ID:EWNvntIT [EXEファイル可] JavaScript統合開発環境 DX Studio [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1423340731/l50
http://peace.2ch.net/test/read.cgi/tech/1423340731/l50
406デフォルトの名無しさん
2015/02/08(日) 06:33:01.72ID:JKy44BG4 ポインタ自体わかってない。pp→p→n => pp→p→n+1
リンクやショートカットだってば。
リンクやショートカットだってば。
407デフォルトの名無しさん
2015/02/08(日) 08:18:59.68ID:aMsy6Zj7 トリプルポインタって使うことある?
***pとかw
***pとかw
408デフォルトの名無しさん
2015/02/08(日) 09:17:17.46ID:HJEgExkV なんかで使ったけど忘れたw
たぶん二次元配列を動的に確保したとかだと思う。
たぶん二次元配列を動的に確保したとかだと思う。
409デフォルトの名無しさん
2015/02/08(日) 11:13:47.14ID:LUl61OMZ 3次元配列はなにも不思議じゃないと思うけど
410デフォルトの名無しさん
2015/02/08(日) 11:24:11.39ID:b/2xM+wa ポインタって良く考えると難しい概念だよな
アドレスに関連付けられた値をさらにアドレスに使えてしまうっていうのが
なんかメタ的っていうか、ラッセルのパラドックスみたいなのが導けそうっていうか
アドレスに関連付けられた値をさらにアドレスに使えてしまうっていうのが
なんかメタ的っていうか、ラッセルのパラドックスみたいなのが導けそうっていうか
411デフォルトの名無しさん
2015/02/08(日) 11:34:02.67ID:HJEgExkV 言葉だけで理解しようとすると少し難しいと思うんだよね。空間的というか。
412デフォルトの名無しさん
2015/02/08(日) 12:36:31.90ID:jgXa3G6y413Office & Gamers ◆G144Hzgh2.0e
2015/02/08(日) 12:50:40.02ID:EWNvntIT VARPTR(VARPTR(VARPTR(VARPTR(プッ
414デフォルトの名無しさん
2015/02/08(日) 19:49:14.84ID:aMsy6Zj7 既にポインタのポインタになっている変数のアドレスを
さらに関数へ渡してとなるとポインタマネギ化するのか。
さらに関数へ渡してとなるとポインタマネギ化するのか。
415デフォルトの名無しさん
2015/02/08(日) 21:58:46.51ID:IGJ2gQC3 ポインタで躓くなら、学部生向けのコンパイラの教科書でも読めばいいよ
416デフォルトの名無しさん
2015/02/08(日) 23:39:37.22ID:b/2xM+wa417Office & Gamers ◆G144Hzgh2.0e
2015/02/09(月) 01:57:19.52ID:8ymQbzzq418デフォルトの名無しさん
2015/02/09(月) 10:19:57.45ID:3ys1NOC1 EOFって、異常終了ですか?
それとも、\0を見つけると終了ですか?
それとも、\0を見つけると終了ですか?
419デフォルトの名無しさん
2015/02/09(月) 11:29:20.95ID:ra7crE5d End Of File
ファイルの終わりです。異常ではない。
\0のないファイルもあるから、\0と関係ないきがする。
実際は、\0がきてたりする。よくしらべないと…
ファイルの終わりです。異常ではない。
\0のないファイルもあるから、\0と関係ないきがする。
実際は、\0がきてたりする。よくしらべないと…
420デフォルトの名無しさん
2015/02/09(月) 11:31:32.68ID:ra7crE5d よんだぶんがファイルの長さになったらEOFだ
421デフォルトの名無しさん
2015/02/09(月) 11:48:42.43ID:3ys1NOC1 ありがとうございます
422デフォルトの名無しさん
2015/02/10(火) 22:26:06.33ID:4T1+8uzu スクラッチと言うソフトで作ったゲームをc言語に変換できますか?
423デフォルトの名無しさん
2015/02/10(火) 23:08:36.76ID:MwNGRsKL 無理
424デフォルトの名無しさん
2015/02/18(水) 10:50:01.57ID:fCZqCpe/ int i;
char str[] = "123";
i = atoi(str)+1
これ実行すると、124 になるけど何で?
char str[] = "123";
i = atoi(str)+1
これ実行すると、124 になるけど何で?
425デフォルトの名無しさん
2015/02/18(水) 11:28:39.01ID:Qnb1PJ0H >424
ttp://hitorilife.com/atoi.php
>int atoi( const char *str );
>文字列で表現された数値をint型の数値に変換する。
>■戻り値:
>int型に変換した数値。変換不能文字は0を返す。
ttp://hitorilife.com/atoi.php
>int atoi( const char *str );
>文字列で表現された数値をint型の数値に変換する。
>■戻り値:
>int型に変換した数値。変換不能文字は0を返す。
426デフォルトの名無しさん
2015/02/19(木) 10:32:04.25ID:uIx5aNyO 構造体の入れ子って、何のためにあるの?
427デフォルトの名無しさん
2015/02/19(木) 11:48:13.04ID:RKbGb38x プログラマーの美学のため。
428デフォルトの名無しさん
2015/02/19(木) 11:58:25.94ID:w9sqbTXr 大抵こういう質問するやつは解ってて聞いているただの釣り。
429デフォルトの名無しさん
2015/02/28(土) 17:34:04.33ID:ww/ZmHX+ 解ってて聞いているただの釣りとか言論封殺すんな
お前の書き込みより釣りの方がまし
お前の書き込みより釣りの方がまし
430デフォルトの名無しさん
2015/03/02(月) 11:24:54.39ID:xHwYTsX+ x=(r=v)は
r=v;x=r;なの?
r=v;x=v;なの?
r=v;x=r;なの?
r=v;x=v;なの?
431デフォルトの名無しさん
2015/03/02(月) 13:08:11.11ID:VMX5RoB1 x=(r=v)は
t = v;
r = t;
x = t;
という感じ
t = v;
r = t;
x = t;
という感じ
432デフォルトの名無しさん
2015/03/05(木) 13:59:25.35ID:QH4sjdfE for(i = 0; i < 100; i++)
if(i % 2)
printf("%d ",i);
超初心者ですけど、この逆ってどうすればいい?
2 4 6 8・・・ ってやりたいんですけど
if(i % 2)
printf("%d ",i);
超初心者ですけど、この逆ってどうすればいい?
2 4 6 8・・・ ってやりたいんですけど
433デフォルトの名無しさん
2015/03/05(木) 14:08:13.95ID:0g2YeNLY その1
if(i % 2) → if(!(i % 2))
その2
if(i % 2)
;
else
printf("%d", i);
if(i % 2) → if(!(i % 2))
その2
if(i % 2)
;
else
printf("%d", i);
434デフォルトの名無しさん
2015/03/05(木) 18:11:29.80ID:QH4sjdfE ありがとうございます
435デフォルトの名無しさん
2015/03/20(金) 10:27:58.80ID:C4XIy6Zr void mystrcpy(char *to, char *from);
int main(void)
{
char str[80];
mystrcpy(str, "これはテストです");
printf(str);
return 0;
}
void mystrcpy(char *to, char *from)
{
while (*from)
*to++ = *from++;
*to = '\0'; /* ヌルで文字列が終わる */
}
「 ヌルで文字列が終わる」 ヌル文字って、なんで必要なんですか?
int main(void)
{
char str[80];
mystrcpy(str, "これはテストです");
printf(str);
return 0;
}
void mystrcpy(char *to, char *from)
{
while (*from)
*to++ = *from++;
*to = '\0'; /* ヌルで文字列が終わる */
}
「 ヌルで文字列が終わる」 ヌル文字って、なんで必要なんですか?
436デフォルトの名無しさん
2015/03/20(金) 12:09:15.02ID:lqHpR73F 終わりを示すマークがくるまではずっと続きますよ
という約束なのが文字列の約束
何故必要か? 文字列であるためには、そういう約束だから
という約束なのが文字列の約束
何故必要か? 文字列であるためには、そういう約束だから
437デフォルトの名無しさん
2015/03/20(金) 15:59:48.11ID:0fslPpGI BASICでは先頭に文字数でその後に文字列が続いてたっけ。
438はちみつ餃子 ◆8X2XSCHEME
2015/03/20(金) 17:30:48.90ID:zxNcWGv0 MS-DOS の文字列表示ルーチンは $ が終端。
439デフォルトの名無しさん
2015/04/07(火) 14:41:52.97ID:s4QIRInr int main()
{
max(100);
max(70);
max(50);
return 0;
}
void max(int d)
{
static int max = 0;
if(d > max)
max = d;
printf("max = %d\n", max);
}
全部0になるはずなのに、ならないのはなんで?
{
max(100);
max(70);
max(50);
return 0;
}
void max(int d)
{
static int max = 0;
if(d > max)
max = d;
printf("max = %d\n", max);
}
全部0になるはずなのに、ならないのはなんで?
440デフォルトの名無しさん
2015/04/07(火) 15:03:24.16ID:NM1cRlIv maxはコンパイル時に0で初期化
その後dを代入してるのでmax == d
その後dを代入してるのでmax == d
441デフォルトの名無しさん
2015/04/07(火) 16:18:30.41ID:F8K01pe/ 変数名と同じ関数名はかんべんして 目がすべる
442デフォルトの名無しさん
2015/04/07(火) 18:27:32.55ID:s4QIRInr なんで代入できるの?
443デフォルトの名無しさん
2015/04/07(火) 18:34:58.75ID:zRL0y0Ru 静的変数でググレ。
444デフォルトの名無しさん
2015/04/07(火) 19:47:29.06ID:NM1cRlIv static int max = 0;
この行はプログラム実行時の最初の一回だけ実行される。
max()を呼んだ時は既に初期化済みで、その行は通らない。
この行はプログラム実行時の最初の一回だけ実行される。
max()を呼んだ時は既に初期化済みで、その行は通らない。
445デフォルトの名無しさん
2015/04/07(火) 19:52:56.64ID:/U9ZAOiy >>444
実装としては現実的には実行されるとはいいがたい
実装としては現実的には実行されるとはいいがたい
446デフォルトの名無しさん
2015/04/07(火) 19:57:58.88ID:NM1cRlIv 実行…とは言わないか。
447片山博文MZ ◆T6xkBnTXz7B0
2015/04/07(火) 20:03:03.06ID:2bTHzj+B static変数の定義を含む関数が利用(参照)されない場合、そのstatic変数は確保されない。
448デフォルトの名無しさん
2015/04/07(火) 22:14:13.33ID:+jnVw/lV ほんとけ?
449デフォルトの名無しさん
2015/04/07(火) 22:53:39.52ID:Jv2W+PKW 初期化されない、じゃないかなぁ。
450片山博文MZ ◆T6xkBnTXz7B0
2015/04/07(火) 23:06:35.68ID:2bTHzj+B これでファイルサイズを試せ
int f(int i) {
static int a[10000000];
a[i]++;
return a[i];
}
int f(int i) {
static int a[10000000];
a[i]++;
return a[i];
}
451片山博文MZ ◆T6xkBnTXz7B0
2015/04/07(火) 23:11:56.93ID:2bTHzj+B こうしないとダメか
int f(int i) {
static int a[10000000] = {1};
a[i]++;
return a[i];
}
int f(int i) {
static int a[10000000] = {1};
a[i]++;
return a[i];
}
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 焼き芋を輪切りにして天ぷらにすると美味しいよ
- あまり名前を呼ばない方がいい例のあの人が復活したらしいぞ
- プロレスラーってロープに振ると走って戻ってくるけど
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- 前駐中国大使・垂秀夫『高市首相が台湾有事答弁を国会でしてしまったのは高市首相のなかに戦略的思考が無いから。安倍晋三を見習え』 [718678614]
- 個人事業主来てくれ
