C言語なら俺に聞け
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2014/08/22(金) 21:06:21.98ID:PYD8lyoNC言語なら俺に聞け
http://peace.2ch.net/test/read.cgi/tech/1393965167/
0002デフォルトの名無しさん
2014/08/22(金) 21:08:38.11ID:mvEiVivf0003デフォルトの名無しさん
2014/08/22(金) 21:34:09.84ID:F4hwkY2i0004デフォルトの名無しさん
2014/08/22(金) 22:23:45.63ID:OuVncztg0005デフォルトの名無しさん
2014/08/22(金) 22:40:09.42ID:BtBgkxO20006デフォルトの名無しさん
2014/08/22(金) 22:59:59.14ID:Bcjh1IOT23100 #include <stdio.h>
23110
23120 int main(argc, argv)
23122 int argc;
23124 char **argv;
23125 {
23130 printf("now is the time\n");
23140 printf("for all good men\n");
23150 printf("to come to aid our party.\n");
23160 }
0007デフォルトの名無しさん
2014/08/23(土) 01:02:30.47ID:oyGZMUpk俺様用栞
0008デフォルトの名無しさん
2014/08/23(土) 02:07:30.78ID:DFqma1HT>>前スレ http://peace.2ch.net/test/read.cgi/tech/1393965167/989,991
構文処理というかインタプリタ作るって話なら、「次はここを処理する」ってカーソルを後ろに戻せ。
何処に戻るべきかについては、戻ってくる可能性のある場所を通る度にスタックに詰むのが楽だと思う。
ループの入れ子数だけ持っておいて、戻るとき逆順にコードを読んで「for (条件)」が来たらそれを処理、
「for (条件)」がループ終了であれば更に戻り、最上位のループ条件が終了なら前に抜けるでも良いが、
逆順の構文解析では//*/などが対処不能(ブロックコメントか行コメントか判別するまで戻る必要がある)だから、
無駄を覚悟で解析を何度もやり直すとか、解析結果を保持しておくとか、そもそも文法を制限してしまう必要がある。
0009デフォルトの名無しさん
2014/08/23(土) 08:16:47.68ID:0xokXgrY8bitCPU用アセンブラでBASICのコメント行にソースコード書いてアセンブルするって仕様のがあったから
C言語でもありそうだけど。
10 'ORG 0C000H
20 '
30 'START:
40 'DI
...
0010デフォルトの名無しさん
2014/08/23(土) 08:30:24.55ID:QEh+7879それは言語仕様とは関係なくね?
0011デフォルトの名無しさん
2014/08/23(土) 08:34:42.75ID:3fjA/9I40012デフォルトの名無しさん
2014/08/23(土) 22:03:17.44ID:++Jtu7HWどの途、Cには関係ない話だね。
0013デフォルトの名無しさん
2014/08/23(土) 23:24:12.55ID:DFqma1HTシャープのPC-G850とか、ポケコンでは普通にみかける実装だな。
テキストエディタ自体が行ベースだから行番号なしでコード書けない。
コイツのCは規格への準拠も結構怪しい代物だし、
別に行番号使ったgotoが有るわけでもないけど、
実行時エラーなんかはキッチリ行番号拾ってくる。
0014デフォルトの名無しさん
2014/08/23(土) 23:33:47.55ID:2b+VjRfl> 実行時エラーなんかはキッチリ行番号拾ってくる。
Debugビルドだったんじゃない?
0015デフォルトの名無しさん
2014/08/24(日) 03:50:16.87ID:DmrlVEVoポケコンのCはインタプリタだろう。
>>13
行番号出るのは良いことだ
0016デフォルトの名無しさん
2014/08/24(日) 04:34:58.39ID:xqGwHcS8なるほどねー
0017デフォルトの名無しさん
2014/08/24(日) 12:08:52.68ID:EYMdVqe7片対数グラフで直線だから既に指数関数的増加だった
2014年に、西アフリカでアウトブレイクした潜伏期間延長型エボラの死者は、2014年8月半ばで1000人。←今ココ
2014年12月上旬で1万人。
この時点で世界規模で空路シャットダウン開始、世界経済大混乱
2015年5月で10万人。
2015年9月で100万人。
この時点で、第二次世界大恐慌発生
2015年大晦日で1000万人。
ちなみに
http://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%81%AE%E8%A5%BF%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB%E3%82%A8%E3%83%9C%E3%83%A9%E5%A4%A7%E6%B5%81%E8%A1%8C
:カナダ保健省のサイトでは体内に数個のエボラウィルスエアロゾルが侵入しただけでも発症するとしている
:ハマダラカが、吸血したての人の新鮮血を媒介しているという学説が浮上している
エボラ出血熱は蚊やアブに刺されただけで感染する。
:「この地域には内戦、政府による搾取、テロが長い間続いており、それによって生まれた恐怖、貧困、猜疑心などがある。エボラは耐え難い騒音に付け加えられた一つのざわめきに過ぎない」
現地では
や る 気 は 皆 無
0018デフォルトの名無しさん
2014/08/24(日) 21:08:01.33ID:XBQdtjov中間コードへのコンパイル付きだがインタプリタ。
標準のBASICより圧倒的に速いけどインタプリタ。
行番号も出るしデバッガもあるしそこそこ速いし、なかなか侮れない。
けど未だにZ80系でSRAMストレージってのはどーなんだ・・・・・・
0019デフォルトの名無しさん
2014/08/26(火) 08:52:41.46ID:JCv2qQRX0020デフォルトの名無しさん
2014/08/26(火) 09:43:36.48ID:fTVolz/L0021デフォルトの名無しさん
2014/08/29(金) 02:09:15.11ID:NR1ZEKqi0022デフォルトの名無しさん
2014/08/29(金) 11:20:34.46ID:AEpwYDBa0023デフォルトの名無しさん
2014/08/30(土) 13:35:42.48ID:wIFffQPlBASI-C
0024デフォルトの名無しさん
2014/09/06(土) 03:51:37.10ID:/nlSSeJZ0025デフォルトの名無しさん
2014/09/06(土) 15:58:18.28ID:z/gbJJfC0026デフォルトの名無しさん
2014/09/09(火) 04:19:30.90ID:6jtdzn18派遣先の若手社員にアゴで使われ、
日本各地をさまよい続ける生活にうんざりしたので退職しました。
もし、あなたが入社する前にこの文章...
0027デフォルトの名無しさん
2014/09/09(火) 18:24:49.98ID:LoSP30oF0028デフォルトの名無しさん
2014/09/09(火) 21:49:25.66ID:TKb+1e5Qdbxでassignで代入できないことあるのですがなぜでしょうか
んで以下のメッセージが出て
操作不能になってプロセスkillするしかないという…
macro definition has to be followed by (, space or EOF
0029デフォルトの名無しさん
2014/09/10(水) 06:58:17.15ID:YXyHPeZi0030デフォルトの名無しさん
2014/09/11(木) 13:04:04.32ID:u7D02IfaCのマクロ定数や式の展開はデバッガで扱えないのが常識
0031デフォルトの名無しさん
2014/09/16(火) 23:54:05.20ID:nf/RaC+Shttp://homepage3.nifty.com/mmgames/c_guide/q_filesize.html
printf("%s %d byte\n","test.c", GetFileSize("test.c"));
printf("%d byte%s\n", GetFileSize("test.c"),"test.c");
を実行すると、
test.c 636 byte
636 byte(null)
となります。(test.cは636バイト)
なぜ2行目の書き方だと"test.c"がnullになるのでしょうか?
(int)GetFileSize("test.c")としたら正しく表示されましたが、
理由がよくわからず、、、。
0032デフォルトの名無しさん
2014/09/16(火) 23:59:12.16ID:mr9hFzih0033デフォルトの名無しさん
2014/09/17(水) 00:05:52.61ID:s7LkWnAU0034デフォルトの名無しさん
2014/09/17(水) 00:09:11.88ID:0GY9a1ZF0035デフォルトの名無しさん
2014/09/17(水) 00:12:23.62ID:s7LkWnAUバイト数が合っていないとなぜ>>31のような動作になるのでしょうか?
0036デフォルトの名無しさん
2014/09/17(水) 00:14:51.39ID:0GY9a1ZF0037デフォルトの名無しさん
2014/09/17(水) 00:33:59.48ID:AN2z60uT4バイト分、次の引数をゼロで埋めたからヌルになったというイメージでしょうか?
マイナスの値や大きな値だったりするとヌル以外になり得るんですかね。
明日試してみます。
0038デフォルトの名無しさん
2014/09/17(水) 04:29:10.83ID:TcWodmwf0039デフォルトの名無しさん
2014/09/17(水) 08:27:58.95ID:f/TEMlG2それより先に、cdeclの仕様というべきかと
>>37
printfの可変長部分は4バイト等の単位で切り上げてからスタックに積まれる(引数の後ろから順に積む)
printfは書式指定に当たる毎に書式に沿うサイズでスタックを読んでいく(スタックの上から順に読む)
printf("%d%d",1,2);なら、4バイトの2が積まれ、次に1が積まれた状態で、%d毎に4バイト読んでいく
printf("%d",1,2);だと、4バイトが2つ積まれ、%dで上に置かれた1を読むが、残りの4バイト(2)は放置される
printf("%d%d",(fpos_t)1,2);だと、4バイトの次に8バイト積まれて、%dは4バイトずつ読むから4バイト(2)が残る
fpos_tのうち、スタックで下になった部分(リトルエンディアンだと上位4バイト)が2つ目の%dで読まれた事になる
printfで8バイトの整数を%dで出力する方法は、環境依存もあるけど%lldとか%zdとか%I64dとか%qdとか%Zdとかの指定
0040デフォルトの名無しさん
2014/09/17(水) 12:37:28.58ID:gkW3ZjuN2GB超のファイルなんてそうそう扱わないだろw
0041デフォルトの名無しさん
2014/09/17(水) 14:22:42.94ID:c1ogrgKwと、昔は思ってたけど動画ファイルだと 4G 越えも普通にあるからなぁ
0042デフォルトの名無しさん
2014/09/17(水) 14:41:23.34ID:gkW3ZjuNそんときゃバイト単位なんて気にしないだろうから、(int) (GetFileSize(...) / 1024)でいいんじゃね?w
0043デフォルトの名無しさん
2014/09/17(水) 15:12:35.47ID:pzZaxrRpそりゃダメだろ...
バイト云々じゃなく
0044デフォルトの名無しさん
2014/09/17(水) 18:25:50.32ID:gkW3ZjuN何がダメ?
0045デフォルトの名無しさん
2014/09/17(水) 19:10:12.43ID:DzFfqY+Xfpos_tは除算出来なかったり、intにキャストできない可能性がある
0046デフォルトの名無しさん
2014/09/17(水) 19:14:11.87ID:gkW3ZjuNそれならそもそもprintf()で出力できる保証もないからどうでもいいや。
0047デフォルトの名無しさん
2014/09/17(水) 19:20:04.92ID:pzZaxrRpGetFileSize( ) の第2引数
0048デフォルトの名無しさん
2014/09/17(水) 19:21:49.99ID:tAFeaJze言語能力疑われますよ
0049デフォルトの名無しさん
2014/09/17(水) 19:22:57.94ID:gkW3ZjuN0050片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/09/17(水) 19:25:48.42ID:0GY9a1ZF0051デフォルトの名無しさん
2014/09/17(水) 19:47:29.12ID:tAFeaJze0052デフォルトの名無しさん
2014/09/17(水) 19:49:21.06ID:f/TEMlG2>>31の話してんだからWin32APIは関係ないし、
Win32APIのGetFileSizeは戻り値DWORDなんだが…
0053デフォルトの名無しさん
2014/09/17(水) 20:09:39.59ID:pzZaxrRpすまん、素で勘違いしてたわ
0054デフォルトの名無しさん
2014/10/06(月) 09:06:22.56ID:oUfLU6hbを使っているのですが音飛びが多々有ります。
どうしてもこの関数を使いたい時、皆さんはどうしていますか?
0055デフォルトの名無しさん
2014/10/06(月) 21:37:07.95ID:oUfLU6hbここでも時々ブツッと言う音がします。wavファイルの作り方が悪いのでしょうか?
それともwaveOutを素直に使ってみるべきなんでしょうか
0056デフォルトの名無しさん
2014/10/06(月) 21:55:47.04ID:oUfLU6hb上手くいきました。
0057デフォルトの名無しさん
2014/11/03(月) 10:41:02.33ID:ygU/AgBb0058デフォルトの名無しさん
2014/12/04(木) 00:29:47.56ID:44/e6+B9int* a;
と
int *a;
と
int * a;
の3パターンあると思いますが、皆さんはどれを使っていますか?
個人的には、*は変数の直前につける2番目の書き方がいろんなケースで
よいと思っています。
0059デフォルトの名無しさん
2014/12/04(木) 00:48:01.85ID:d1LBD9cS0060デフォルトの名無しさん
2014/12/04(木) 00:53:16.29ID:5qgiX9+F型宣言の意味から int* a が好きではある。でも int* a, b とか書くと int *a; int b; と解釈されたような。。。
0061デフォルトの名無しさん
2014/12/04(木) 01:37:51.11ID:YQXHeRa/これ最高
ワイのポインタちゃん可愛いね
0062デフォルトの名無しさん
2014/12/04(木) 05:41:02.47ID:oJkFYkSJchar**って何ですかというレベルです
0063デフォルトの名無しさん
2014/12/04(木) 07:28:29.88ID:ce/wf1gachar** → (char*)* → A* のことで、
A型のアドレスを保持する型(参照型)
A型とは、char型のアドレスを保持する型(参照型)
0064デフォルトの名無しさん
2014/12/04(木) 07:58:13.26ID:44/e6+B9>>60
>>61
ご見解の提示、ありがとうございます。
int型のポインタと考えるか、int* 型の変数と考えるかの違いですかね。。
0065デフォルトの名無しさん
2014/12/04(木) 08:58:02.77ID:i8WWsgkD「されたような」じゃなくて「される」。
どうしてもというならtypedefとかしとかないと…
0066デフォルトの名無しさん
2014/12/04(木) 09:36:36.09ID:IxW6Yc9r初心者には "int *"という型があるとみなすと分かりやすいけど
正確ではないので、初心者のうちだけにしておきたい。
変数宣言は教科書通り2番目がいい
0067デフォルトの名無しさん
2014/12/06(土) 14:30:53.32ID:EShMBgwpデバッガでマシン語見ろよ、としか言えないな
0068デフォルトの名無しさん
2014/12/06(土) 22:15:08.25ID:cLOHAQT2とか言ってみる。
0069デフォルトの名無しさん
2014/12/06(土) 23:58:07.47ID:Iv1q4dyj汎用のデバッガならソースとマップ情報がない場合逆アセンブル表示するしかない。
逆アセンブル表示の場合機械語を表示するカラムも付いてる場合が結構ある。
0070デフォルトの名無しさん
2014/12/07(日) 00:31:53.76ID:3OlOjTxN0071デフォルトの名無しさん
2014/12/07(日) 00:37:54.91ID:T0oVgQBw見れるってことじゃないんかいw
0072デフォルトの名無しさん
2014/12/07(日) 00:39:38.88ID:T0oVgQBwになってんだろうから、おまえら、一度組み込み系マイコンでもいじってみろ
0073デフォルトの名無しさん
2014/12/07(日) 00:47:53.01ID:3OlOjTxN0074デフォルトの名無しさん
2014/12/07(日) 17:06:01.59ID:dloxDQ5y0075デフォルトの名無しさん
2014/12/07(日) 18:44:19.68ID:hNd25+GQメモリーの内容を見れないネイティブコード用のデバッガなんて見たことないけどな
>>74
Visual Studio の逆アセンブル表示
0076デフォルトの名無しさん
2014/12/07(日) 22:24:54.18ID:3OlOjTxNでも元の人によると、バイナリエディタ「で」見れるそうですよ。発言元の詳しい方のご説明によると。
・・・ってことなんだけど。まあいいか。。
0077デフォルトの名無しさん
2014/12/08(月) 01:08:10.73ID:2PF0peyDVSに逆アセンブル表示なんてあったのか
知らなかった、今度使ってみよう
0078デフォルトの名無しさん
2014/12/08(月) 07:01:28.62ID:LYySIAAO> マジレスされても。
マジレスって >>70 みたいなレスのことだろ w
つまらない返しとも言うけど
> でも元の人によると、バイナリエディタ「で」見れるそうですよ。
ロード時にリロケーションする処理系もあるから、見れないこともあるだろ
0079デフォルトの名無しさん
2014/12/08(月) 10:53:57.23ID:5WlbKN0+VSでもコンテキストメニューの「コードバイトの表示」をONにすれば表示されるけど…
0080デフォルトの名無しさん
2014/12/08(月) 12:31:35.00ID:fTOrgTla>>74 が表示を見たことないって書いてるから、例としてあげただけ
そう言う機能があるのは知ってる
0081デフォルトの名無しさん
2014/12/08(月) 14:01:36.12ID:5WlbKN0+0082デフォルトの名無しさん
2014/12/08(月) 16:56:33.70ID:fTOrgTlaなぜ例になってないと思うの?
0083デフォルトの名無しさん
2014/12/13(土) 10:03:17.64ID:t4ewlkfOstruct tagFoo { int x; }
typedef tagFoo Foo;
void bar(Foo* p_x); // Foo*型を含む関数のプロトタイプ宣言
でもstruct tagFooの定義が現れないうちに行う次のコードの方は
C89とかC99の規格上合法?
struct tagFoo;
typedef tagFoo Foo;
void bar(Foo* p_x); // Foo*型を含む関数のプロトタイプ宣言
一応VS2010のやつだとコンパイルできる…
0084名無しさん@そうだ選挙に行こう
2014/12/13(土) 12:54:17.14ID:t4ewlkfO誤: typedef tagFoo Foo;
正: typedef struct tagFoo Foo;
0085名無しさん@そうだ選挙に行こう
2014/12/13(土) 16:01:45.36ID:swRuJNUSp.12: If the function declarator is not part of a definition of that function,
parameters may have incomplete type and may use the [*] notation in their
sequences of declarator specifiers to specify variable length array types.
C89は知らんなあ C89のコードなんて書かないし
0086デフォルトの名無しさん
2014/12/14(日) 00:03:10.31ID:okNneqDfでないと、中身を隠す実装ができない。
0087デフォルトの名無しさん
2014/12/14(日) 00:36:11.56ID:GxH7VwwNレス�dクス、
関数のプロトタイプ宣言(the function declarator is not part of a definition of that function)
のparametersがincomplete typeであっても良いというのはそうなのだと思いますが、
typedef <incomplete-type> <typename-alias>;
みたいなのも移植性的に大丈夫なんでしょうか…
0088名無しさん@そうだ選挙に行こう
2014/12/14(日) 07:03:15.85ID:An0uQXKd規格書は typedef 宣言時の不完全型について言及していないけど
逆に言うと不完全型であってはならないという記述もないよ。
型の類義語を定義するとだけ書いてる。
それに K&R の typedef の解説ですでに以下の使い方をしていて
typedef に対して不完全型が使えないと K&R のソースコードさえ
通らないことになってしまう。
typedef struct tnode *Treeptr;
typedef struct tnode {
char *word;
int count;
Treeptr left;
Treeptr right;
} Treenode;
0089名無しさん@そうだ選挙に行こう
2014/12/14(日) 13:10:54.13ID:arCCpU9qありゃK&Rにtyedef <incomplete-type>の例がありましたか納得
木構造の例は記憶にあったのですが、
構造体の中でstruct tnode* left;とか、構造体タグを直接使ってたのだと記憶違いしてました;
ありがとうございます。
0090デフォルトの名無しさん
2014/12/14(日) 20:27:00.00ID:GQuvsumZ糞過ぎて使い物にならないと思うが
0091デフォルトの名無しさん
2014/12/14(日) 22:38:48.71ID:DVcU1Dgz値が何を示してるのかよくわからんが、命令コードやオペランドのコードなんて普通見ないと思うが
0092デフォルトの名無しさん
2014/12/14(日) 22:44:25.52ID:GQuvsumZデバッガでマシン語見れない開発環境とかあり得ないのよ
0093デフォルトの名無しさん
2014/12/14(日) 22:54:31.85ID:DVcU1Dgz> オブジェクトファイルしかないライブラリをバイナリエディタで書き換えて使ったり
お遊びでやったことはあるけど、それこそ仕事だとあり得んやろ
ライセンスなにそれ? のブラック企業かよ w
0094デフォルトの名無しさん
2014/12/15(月) 00:25:11.64ID:FvIQQyzB>90は本当に分かってるのか疑問符
0095デフォルトの名無しさん
2014/12/15(月) 01:14:52.04ID:aJM9Vaxxこの業界ブラック過ぎ
0096デフォルトの名無しさん
2014/12/15(月) 01:43:18.65ID:/RjxNv/g0097デフォルトの名無しさん
2014/12/15(月) 02:27:24.15ID:mI1D61eZデバッグなんだからそんなお行儀のいい出力は期待できんわ
0098デフォルトの名無しさん
2014/12/15(月) 02:37:05.92ID:UPDZozWH誰か教えてください。
0099デフォルトの名無しさん
2014/12/15(月) 04:02:05.34ID:GJ+wxPK4http://ja.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B
[製品名] C Compiler 1.0
[リリース] 1983年
[備考] Latice Cを元にした MS-DOS用コンパイラ。K&R未対応。
だろうか。
これより古いのがあるかどうかは知らない
0100デフォルトの名無しさん
2014/12/15(月) 04:54:00.22ID:/RjxNv/g011B5628: 8D 8D DC FC FF FF: lea ecx,[ebp-324h]
8D 8D DC FC FF FF を見て何してるんだ?
コンパイラのデバッグか? w
0101デフォルトの名無しさん
2014/12/15(月) 05:33:47.97ID:0zemH3Hd>typedef struct tnode *Treeptr;
が許されてもその場所で
>typedef struct tnode Treeptr;
は許されない
ポインタ型は不完全型とはいい難い
0102デフォルトの名無しさん
2014/12/15(月) 08:02:56.00ID:U2IM0CY/コードかデータかの判断
0103デフォルトの名無しさん
2014/12/15(月) 12:39:15.81ID:1niTm30eなんのために?
0104デフォルトの名無しさん
2014/12/15(月) 15:20:12.79ID:OqstVb4Wできるけど?
0105デフォルトの名無しさん
2014/12/15(月) 16:22:15.71ID:wfUC2aeTint max(int *vc, int no)
これって、どっちも同じなの?
0106デフォルトの名無しさん
2014/12/15(月) 16:44:06.65ID:3s9eDA200107デフォルトの名無しさん
2014/12/15(月) 17:29:35.06ID:TN/bTmUZ0108デフォルトの名無しさん
2014/12/15(月) 17:30:48.85ID:iBoaUlSY0109デフォルトの名無しさん
2014/12/16(火) 18:39:51.36ID:jmn4Eb45というかもう時期を逃してUIに近い部分にはマッタク適さない言語に落ちぶれてしまった
0110デフォルトの名無しさん
2014/12/16(火) 19:00:39.03ID:e7BH2hjc0111デフォルトの名無しさん
2014/12/16(火) 21:39:09.51ID:rJ4g6hQdC# なり LL に行けよ
0112デフォルトの名無しさん
2014/12/16(火) 21:45:43.66ID:cZGPJzjRポインタ片手に
ひたすら構造化プログラミングに打ち込む
これだけでOSも別言語も作っちゃうんよ
0113デフォルトの名無しさん
2014/12/17(水) 00:56:19.89ID:dUhWutNjコードとデータを混在させてるときに
データを無理に逆アセしてないか確認できるだろ
0114デフォルトの名無しさん
2014/12/17(水) 05:56:26.10ID:OmIW45Ki組み込みなら有るが、Windowsアプリでそれは無いだろ。
定数テーブルとかは、別領域にとられるはず。
0115デフォルトの名無しさん
2014/12/17(水) 06:19:08.03ID:eQacyYSGPlaySound("sound", NULL, SND_FILENAME | SND_ASYNC);
PlaySound("sound2", NULL, SND_FILENAME | SND_ASYNC | SND_NOSTOP);
上記のように記述すると"sound"は流れず、"sound2"しか流れません。どうしてでしょう?
あと、soundは流れている間は、sound2は流さないようにしたいのですが、どなたか方法を教えてください。
Visual Studio 2010を使用しています。
0116デフォルトの名無しさん
2014/12/17(水) 06:40:44.37ID:kXeYX2vAそうすると再生中GUIスレッドハングアップするので別スレッドで実行する
0117デフォルトの名無しさん
2014/12/17(水) 06:47:51.86ID:eQacyYSGありがとうございます!ちなみに変更するのは1行目か2行目かそれとも両方ですか?
0118デフォルトの名無しさん
2014/12/17(水) 08:56:35.85ID:pxRALis4Windowsアプリだどスタックに格納されたリターンアドレスをぶち壊さないと申すか
0119デフォルトの名無しさん
2014/12/17(水) 12:16:36.06ID:ev+qw7pl一行目だけでも二行目は鳴るだろうけど、即時復帰するとスレッドが死ぬタイミングが掴めないぞ。
0120デフォルトの名無しさん
2014/12/17(水) 18:47:37.17ID:OTUB5d1O1行目に SND_ASYNC を指定しているから、"sound"が流れる前に 2行目が実行されて
"sound2" だけが流れるんじゃないの?
きちんと "sound" も流れて欲しければ 1行目に SND_ASYNC じゃなくて SND_SYNC を
指定すれば良いんじゃないの?
[参考]
http://msdn.microsoft.com/ja-jp/library/cc428768.aspx
0121デフォルトの名無しさん
2014/12/17(水) 18:50:55.27ID:OTUB5d1O0122デフォルトの名無しさん
2014/12/17(水) 18:52:09.65ID:OTUB5d1O0123デフォルトの名無しさん
2014/12/18(木) 22:20:49.46ID:j55hapsbhttp://www.dotup.org/uploda/www.dotup.org60150.c.html
print_tree(pp)やptree(p,h)って関数名なんでしょうか?
関数なら
(返却型) (関数名) (仮引数)
{
〜
}
って感じで書くものだと思っていたのですが・・・・
0124デフォルトの名無しさん
2014/12/18(木) 22:30:12.81ID:on3AHD1cそれは古い書き方で、プロトタイプ宣言にするとこうなる。
--
int print_tree(struct node *pp);
--
つーか、今時そんな古い資料なんか見なさんな。
0125デフォルトの名無しさん
2014/12/18(木) 22:43:44.14ID:j55hapsb古い書き方だったのですか・・・ありがとうございます
あと、print_treeの中でptreeがありますが、
どうしてプロトタイプ宣言してないのに動くのでしょうか?
0126デフォルトの名無しさん
2014/12/19(金) 03:58:13.57ID:srwp/ertどうしてもこうしても、それが古いCだからとしか言いようがない。
だから、そんなコードじゃ今時勉強にならないってば。
0127デフォルトの名無しさん
2014/12/19(金) 04:09:01.62ID:IN4kTmtP0128デフォルトの名無しさん
2015/01/21(水) 11:33:51.74ID:OFD7hqp50129デフォルトの名無しさん
2015/01/21(水) 13:51:06.23ID:n0BLIxbN0130デフォルトの名無しさん
2015/01/21(水) 19:41:13.83ID:CWpKRL6H0131デフォルトの名無しさん
2015/01/21(水) 19:41:56.77ID:5iEsyppn:::::::: | static関数がやられたようだな… │
::::: ┌───└───────────v───┬┘
::::: |フフフ…奴はアクセス制御の中でも最弱 … |
┌──└────────v──┬───────┘
|ポインタにアクセスされるとは |
| カプセル化の面汚しよwww. │
└────v─────────┘
|ミ, / `ヽ /! ,.──、
|彡/二Oニニ|ノ /三三三!, |!
`,' \、、_,|/-ャ ト `=j r=レ /ミ !彡 ●
T 爪| / / ̄|/´__,ャ |`三三‐/ |`=、|,='| _(_
/人 ヽ ミ='/|`:::::::/イ__ ト`ー く__,-, 、 _!_ / ( ゚ω゚ )
/ `ー─'" |_,.イ、 | |/、 Y /| | | j / ミ`┴'彡\ ' `
黒柳徹子 野々村真 草野仁 矢島正明
0132デフォルトの名無しさん
2015/01/22(木) 08:24:03.78ID:LOQzAGtsヒープはなくても動くけどスタックがないと動かないからね
0133デフォルトの名無しさん
2015/01/22(木) 08:30:11.33ID:LOQzAGts0134デフォルトの名無しさん
2015/01/22(木) 09:58:09.98ID:fa37PsqD0135デフォルトの名無しさん
2015/01/22(木) 11:04:05.78ID:QOe1Cpix同じ機能のソースを新規に作る
方が手っ取り早くないか?
0136デフォルトの名無しさん
2015/01/22(木) 11:58:37.84ID:qr7r7nY5char型の以下の3種類あります。
char a[100]
char b[200]
char c[300]
これを使用する時たとえば、a[100],b[200],c[300]といちいちと変数名を指定しないで
配列として使用する方法ってありますか?
ちょっと説明が下手ですみません。
どうしたいと言えば、x[3]という配列を用意して、
x[0] が a[100]
x[1] が b[200]
x[2] が c[300]
というように、x[任意の値]みたいな感じで使用したいです。
よろしくお願い致します。
0137デフォルトの名無しさん
2015/01/22(木) 12:05:48.55ID:DCqYwtoachar b[200];
char c[300];
char *x[3];
x[0]=a;
x[1]=b;
x[2]=c;
int xx=*(x[0]+1); /* xx=a[1] 相当*/
0138デフォルトの名無しさん
2015/01/22(木) 12:06:05.78ID:pAtVVLrPchar b[200];
char c[300];
char* x[] = { a, b, c }
x[0][0] .. x[0][99] まで (実は a を指してる
x[1][0] .. x[1][199] まで (実は b を指してる
x[2][0] .. x[2][299] まで (実は c を指してる
0139デフォルトの名無しさん
2015/01/22(木) 12:11:47.35ID:qr7r7nY5ありがとうございます。
ポインタとかまだまだよくわからないのですが、
その方法だと、メモリ的にはx[3]という配列も、a[100],b[200],c[200]の合計、
500バイト分消費してしまうのでしょうか?
0140139
2015/01/22(木) 12:15:48.32ID:qr7r7nY50141デフォルトの名無しさん
2015/01/22(木) 12:18:33.63ID:ox+o4fhU0142デフォルトの名無しさん
2015/01/22(木) 12:24:53.88ID:pAtVVLrPこんな感じ
逆に100+200+300 を消費するような x は書けない
0143デフォルトの名無しさん
2015/01/22(木) 12:27:34.50ID:pAtVVLrPx[0][0] 〜 x[0][99]、x[1][0] 〜 x[1][199]、x[2][0] 〜 x[2][299]
と利用するけれども、
xに必要なメモリ空間を 100+200+300 にするような書き方ができない
0144139
2015/01/22(木) 12:33:07.15ID:qr7r7nY5ありがとうございます。
http://ideone.com/Oaf5Lf
↑こちらを見た限り、xは600バイト消費しないってことで安心しました。
どうもありがとうございました。
0145デフォルトの名無しさん
2015/01/22(木) 15:37:22.56ID:HcRqz3u40〜50の乱数を発生させそれを当てるゲームを
作成したいです
また入力した数字が正解より大きいか
小さいかも表示しなければいけません
お手数ですがよろしくお願いします
0146デフォルトの名無しさん
2015/01/22(木) 15:59:01.08ID:a8JA+dBZ0147デフォルトの名無しさん
2015/01/22(木) 16:00:39.29ID:aykmNMaCC/C++の宿題片付けます 168代目
http://peace.2ch.net/test/read.cgi/tech/1408962564/
でもそれぐらい自分で書けよ。わからないところは聞いていいから。
0148デフォルトの名無しさん
2015/01/30(金) 15:26:12.36ID:hLjQtDl/fgets(str, 10, stdin);
i = strlen(str) -1
これって\0を削除しているんですか?
0149デフォルトの名無しさん
2015/01/30(金) 16:16:45.84ID:ohEKYuMM改行文字も含めてカウントしたからそれを除いた文字列の長さを求めただけ。
ただし最後の文字が改行かどうか確認していないので条件によっては間違い。
0150デフォルトの名無しさん
2015/01/30(金) 16:50:26.35ID:hLjQtDl/改行だったら、削除してるの?
0151デフォルトの名無しさん
2015/01/30(金) 17:01:03.54ID:S7lOnqCzhttp://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/getc.3.html
0152デフォルトの名無しさん
2015/02/02(月) 14:58:48.85ID:8AyVYO21p = (char*)malloc(80)
if(!p)
このif(!p)を日本語にしてくれませんか?
0153デフォルトの名無しさん
2015/02/02(月) 15:03:13.77ID:An/kZWGD0154デフォルトの名無しさん
2015/02/02(月) 15:05:34.33ID:8AyVYO21molloc使った場合は?
0155デフォルトの名無しさん
2015/02/02(月) 18:30:16.71ID:1XujXD7Vこれなら読めるの?
0156デフォルトの名無しさん
2015/02/02(月) 18:31:40.18ID:1XujXD7Vif((char*)malloc(80)!=NULL)
0157デフォルトの名無しさん
2015/02/02(月) 18:35:24.64ID:3RnazUVL> molloc <
 ̄Y^Y^Y^Y^Y^ ̄
0158デフォルトの名無しさん
2015/02/02(月) 18:50:53.15ID:2aaoC/Ewお前にいいたいことが二つある
まず、NULL は使うな
次に malloc() でとってきたポインタをどこにも保存せずに捨て去ってどうしようというのか?
0159デフォルトの名無しさん
2015/02/02(月) 19:00:17.15ID:StjX3QvU> まず、NULL は使うな
なんで?
0160デフォルトの名無しさん
2015/02/02(月) 21:14:49.91ID:v53ekLSVバロス
0161デフォルトの名無しさん
2015/02/02(月) 21:44:18.89ID:2aaoC/EwCはな、0 と書いてもヌルポインタと解釈するための賢い解析器でいっぱいなんだ
0162デフォルトの名無しさん
2015/02/02(月) 22:10:49.04ID:fVtqApcs答えになってない
0163デフォルトの名無しさん
2015/02/02(月) 22:20:21.18ID:80Peq6gS0164デフォルトの名無しさん
2015/02/02(月) 23:17:07.07ID:TrpaPNXw0165デフォルトの名無しさん
2015/02/02(月) 23:17:47.71ID:TrpaPNXwx == 0だな
0166デフォルトの名無しさん
2015/02/03(火) 00:10:07.74ID:DMsIYAF40167デフォルトの名無しさん
2015/02/03(火) 00:19:01.85ID:sWg3nV6Hそうだよ。だからこそ「>>158 NULL は使うな」の意味が不明。
0168デフォルトの名無しさん
2015/02/03(火) 05:02:47.56ID:yGwE0+2u恥ずかしいなあ、おまえ、あっちいけ
http://www.kouno.jp/home/c_faq/c5.html#2
C言語の定義によれば、ポインターを書くべきところに現れた定数0は、 コンパイル時にヌルポインターに変換される。
すなわち初期化・代入・ 比較をするときに左辺/右辺のどちらかにポインター型の変数か式が 現れたときは、
コンパイラはもう一方の側の定数0がヌルポインター を要求していることを理解し、
適切なデータ型のヌルポインターの値 を産み出す
http://www.kouno.jp/home/c_faq/c5.html#9
Cプログラマーは、ポインターが必要な 状況ではNULLと0は交換可能で、キャストされていない0を使うことは ぜんぜん問題ないことを理解しなければならない。
http://www.kouno.jp/home/c_faq/c5.html#10
C言 語は、ソースコード上の0が(ポインターを使う場面では)ヌルポイン ターを作り出すことを保証している。
0169デフォルトの名無しさん
2015/02/03(火) 07:17:08.50ID:Ak6uoSi3> ポインターが必要な 状況
その状況とやらをコンパイラーさんが認識できないケースがあるからなぁ
0170デフォルトの名無しさん
2015/02/03(火) 07:43:14.50ID:9S3xfl3n0171デフォルトの名無しさん
2015/02/03(火) 07:54:19.20ID:Gq0aN2ws0172デフォルトの名無しさん
2015/02/03(火) 08:28:34.37ID:Ak6uoSi3昔は far ポインタとかあったので一概にはそうとは言えない
0173デフォルトの名無しさん
2015/02/03(火) 09:06:55.44ID:6tRfWx8h早く「NULL は使うな」の根拠を出してくれよw
0174デフォルトの名無しさん
2015/02/03(火) 10:19:40.04ID:Gq0aN2wsunsigned char far *fp;
fp = (unsigned char far *)0xaaaa0000; // fp = aaaa:0000
実装依存らしいが。
0175デフォルトの名無しさん
2015/02/03(火) 11:48:37.89ID:u2KW1gca0176デフォルトの名無しさん
2015/02/03(火) 12:49:15.33ID:9S3xfl3n0177デフォルトの名無しさん
2015/02/03(火) 18:28:45.10ID:DOiws90O#define NULL ((void*)0)
#endif
俺の使ってる処理系にNULLの定義はなかった
0178デフォルトの名無しさん
2015/02/03(火) 19:16:27.86ID:yGwE0+2u我々がしているのはヌルポインタの話だ。ただ 0 とかけばいいだけのものに誰がタイプする時間をつぎ込む?まして#define で構えて運用するようなものじゃない。マクロ NULL が存在する事自体なにかの間違いなのだ。
http://www.kouno.jp/home/c_faq/c5.html#12
こんなマクロを使っていると、 作者のヌルポインターの知識が怪しげであることをプログラムを読む 人に暗示し、
読む人はこのマクロの定義されているところ、使われて いるところ、どんな形でもポインターの使われているところをすべて 注意深くチェックしなければいけなくなる。
0179デフォルトの名無しさん
2015/02/03(火) 19:34:05.56ID:9S3xfl3n我々がしているのはナル「ポインタ」の話だ。たかがNULLと書けばいいものに誰がわざとGCCに怒られようとする?ましてC99からはstddef.hに定義されている。マクロNULLが存在する事自体皆が正しいことを示しているのだ。
規格で定義されているNULLを使うと、作者がポインタであることを理解していることをプログラムを読む人に暗示し、
読む人はこのマクロの定義されているところ、使われているところ、どんな形でもポインターの使われているところが、全て同じ仕様になっていることを意識することができる。
// 結構頑張ったよ。これ。
0180デフォルトの名無しさん
2015/02/03(火) 21:01:36.28ID:csz98ZS5まさか可変長引数でバグるとは思わなかったんです。
gccが赦してくださることは分かっています。
0182デフォルトの名無しさん
2015/02/03(火) 23:08:31.73ID:9S3xfl3nオプションによっては怒られないが、こういう風に怒る。GCCが言っているようにキャストすればいいんだけど、それって要するにNULLだよね。
>warning: foobar makes�pointer from integer without a cast
0183デフォルトの名無しさん
2015/02/03(火) 23:52:23.99ID:yGwE0+2uだめだ、ヌルをいれてみてもわからん
http://ideone.com/bhFUM3
0184デフォルトの名無しさん
2015/02/04(水) 00:50:33.09ID:71Bn7Bec他のプログラマーから注意されないソースは書けません。
0185デフォルトの名無しさん
2015/02/04(水) 07:15:05.52ID:84LVbvsUだからオプションによると(ry
0186デフォルトの名無しさん
2015/02/04(水) 08:10:31.04ID:PGYlb/p8だめだ、-Wall をつけてもわからん
0187デフォルトの名無しさん
2015/02/04(水) 09:02:55.76ID:POKxKTaZどんなオプション?
0188デフォルトの名無しさん
2015/02/04(水) 20:35:57.21ID:0m6SlMzZ0189デフォルトの名無しさん
2015/02/05(木) 09:26:28.38ID:1fblRZ3x0190デフォルトの名無しさん
2015/02/05(木) 16:12:01.79ID:DRERuoEjscanf("%s",num);
「&」を付けなくていいのは、どうしてですか?
0191デフォルトの名無しさん
2015/02/05(木) 16:23:49.43ID:st/HMd4eint b[1];
scanf("%d", &a);
scanf("%d", &(b[0])); ⇒ scanf("%d", b);
0192デフォルトの名無しさん
2015/02/05(木) 19:15:39.87ID:rqA9TM+jnumと&num[0]がほぼ等価。
C++だと意味が変わってくる。
0193192
2015/02/05(木) 19:16:40.29ID:rqA9TM+j× >109
○ >190
0194デフォルトの名無しさん
2015/02/05(木) 21:09:35.93ID:osIltw0C>C++だと意味が変わってくる。
どういう事ですか?
同じじゃないんですか?
0195デフォルトの名無しさん
2015/02/06(金) 07:54:18.70ID:WgeZDeZCcodepadだと何も言ってこないけど
VC++だと
char num[50];
char *p=num;
とやると型違うからキャストしろーとか言ってくる…と思う。
0196デフォルトの名無しさん
2015/02/06(金) 12:22:10.17ID:MAhYjxKA0197デフォルトの名無しさん
2015/02/06(金) 12:28:16.30ID:odMqvogb0198デフォルトの名無しさん
2015/02/06(金) 12:43:14.55ID:b3gwE4qm0200デフォルトの名無しさん
2015/02/06(金) 18:50:54.91ID:b3gwE4qm地の言葉を使いたまえ、君にあわせよう
0201デフォルトの名無しさん
2015/02/06(金) 19:05:05.13ID:JzdRSKiTまず何が不足しているのかを把握し応答に幅を持たせることから始まる
0202デフォルトの名無しさん
2015/02/09(月) 13:49:52.54ID:3ys1NOC1%hd %ld %lu %Lf こういうの、どうやって使い分けるの?
0203デフォルトの名無しさん
2015/02/09(月) 18:24:08.98ID:FAf8Hiv4ttp://www.aso.ecei.tohoku.ac.jp/~yoshi/C/double.html
ttp://www.k-cube.co.jp/wakaba/server/format.html
ググれ!そして試せ!!
それが嫌なら諦めろ!!!
0204デフォルトの名無しさん
2015/02/18(水) 00:21:13.19ID:BIe8ociq0205デフォルトの名無しさん
2015/02/18(水) 10:49:04.73ID:39nSjaAZ0206デフォルトの名無しさん
2015/02/18(水) 11:18:13.90ID:BIe8ociqstruct hoge hage, *uge=&hage;
return uge;
}
0207デフォルトの名無しさん
2015/02/18(水) 11:26:02.99ID:Qnb1PJ0Hstatic付けるならともかく。
0208デフォルトの名無しさん
2015/02/18(水) 11:34:10.12ID:BIe8ociq0209デフォルトの名無しさん
2015/02/18(水) 12:33:38.76ID:/R9PZMCF0210デフォルトの名無しさん
2015/02/18(水) 13:12:23.15ID:bozVaD5n0211デフォルトの名無しさん
2015/02/18(水) 13:18:42.42ID:7wpmedCRローカルにおかれた領域のポインタを返すのが悪
malloc とかヒープで確保した領域のポインタをかえしてるんならセーフ
0212デフォルトの名無しさん
2015/02/18(水) 13:21:44.82ID:BIe8ociq/* Return the `struct tm' representation of *T in local time,
using *TP to store the result. */
0213デフォルトの名無しさん
2015/02/18(水) 14:22:34.62ID:/R9PZMCF0214デフォルトの名無しさん
2015/02/18(水) 14:38:32.13ID:Lm/UpLLWまあ普通は *_r( ) みたいな奴が用意されてるだろうけど
0215デフォルトの名無しさん
2015/02/18(水) 15:18:20.31ID:EUcxkELYそれ多分 localtime 関数の戻り値のコメントだと思うけど、ここでの local は変換後のローカル時間のことであって
変数のスコープの local とは関係ないと思うけど…
標準ライブラリの関数でも C言語の仕様を超えた機能を作ることは無理だと思う。
0216デフォルトの名無しさん
2015/02/18(水) 18:33:51.02ID:EODtkX7j/* Return the `struct tm' representation of *T in local time,
using *TP to store the result. */
struct tm *
__localtime_r (t, tp)
const time_t *t;
struct tm *tp; <--------- (コレ)
{
return __tz_convert (t, 1, tp);
}
ローカルなポインタうんぬんっていうのは
たぶん(コレ)の意味を勘違いしてる
0217デフォルトの名無しさん
2015/02/18(水) 19:47:53.86ID:/R9PZMCF0218デフォルトの名無しさん
2015/02/18(水) 20:01:30.97ID:P85Z9ZNT0219デフォルトの名無しさん
2015/02/18(水) 20:08:33.87ID:Lm/UpLLWエラーチェックのために変数に入れるから、それをそのまま使えるようにじゃね?
X x;
X* p = f(&x);
if(p == NULL){
error(...);
}
p->xxx = ...
0220デフォルトの名無しさん
2015/02/18(水) 22:53:01.91ID:39nSjaAZ返り値
0か正数:正常終了
負数:エラー
で統一していてくれたら…。
0221デフォルトの名無しさん
2015/02/19(木) 18:54:26.90ID:x3p0g+OHそれ別にポインタで返さなくてもいいよね
エラーかどうかは整数でいいし、使うときはx使えばいいし
0222デフォルトの名無しさん
2015/02/19(木) 23:17:25.22ID:X0ttxJwqキチガイ Java 辺りから逆行してるけど
0223デフォルトの名無しさん
2015/02/20(金) 00:22:00.34ID:ac1ZYgYFこの場合、vの値がxに入る事は保障されていますか?
(rが読出しが常に0となるようなレジスタとかだったら処理系依存?)
0224デフォルトの名無しさん
2015/02/20(金) 01:05:16.78ID:0cYtUSh9#include <stdio.h>
int main(void) {
int r;
double x, v;
v = 5.5;
x = (r = v);
printf( "x:%f r:%d v:%f\n", x, r, v );
return 0;
}
結果
x:5.000000 r:5 v:5.500000
0225デフォルトの名無しさん
2015/02/20(金) 06:40:03.25ID:mqB10MT30226デフォルトの名無しさん
2015/02/20(金) 08:11:47.05ID:LZUT8iK+0227デフォルトの名無しさん
2015/02/20(金) 08:24:24.16ID:KI6wAlAdrが何であろうと関係ない。
0228デフォルトの名無しさん
2015/02/20(金) 09:00:20.83ID:M6RwPuPwアセンブラレベルでwrite専用レジスタを直接叩いているのとは違う。
例え、レジスタのread値が0や不定であっても、書き込んだデータの内容の扱いは変わらない。
代入文によってwrite動作を行なった後でread動作によって値を上書きすることはない。
逆にレジスタをreadする場合は、代入文の一番右側の右辺値としないとレジスタの値は保証されない。
0229デフォルトの名無しさん
2015/02/20(金) 10:19:54.09ID:mqB10MT30230デフォルトの名無しさん
2015/02/20(金) 10:30:07.14ID:AgNGosBz何にでも噛み付くのはみっともないぞ。
0231デフォルトの名無しさん
2015/02/20(金) 10:47:52.94ID:Tybi27hYそもそも元の>>223の書き込みがレジスタの存在を示唆しているのに、
最初にデータ型の変換の話に持っていった時点で議論の方向性が迷子になってた。
>>227-228が正解。
0232デフォルトの名無しさん
2015/02/20(金) 11:26:03.51ID:LZUT8iK+恥の上塗り乙
0233デフォルトの名無しさん
2015/02/20(金) 11:56:08.90ID:mqB10MT3a = b = c = d = 1 のaが何を代入されるかとか知ってなさそうだけどw
0234デフォルトの名無しさん
2015/02/20(金) 14:46:02.31ID:F0YknxCrmov r, v
mov x, v
0235デフォルトの名無しさん
2015/02/20(金) 18:25:20.35ID:mqB10MT3x = (r = v()); だったときにv()が何度も呼ばれないだろってことで
r = の右辺の値がレジスタに乗ったままx =へも使われる感じ。
0236デフォルトの名無しさん
2015/02/20(金) 18:57:00.43ID:Sp8uh5A0そして、代入文そのものがその結果で評価される。
右辺値が 定数であろうが、関数の戻り値であろうが関係ない。
また、代入文は右から左の順で評価される。
結果として一番右側にある式の評価結果が順に左の項へと代入される。
0237デフォルトの名無しさん
2015/02/20(金) 20:18:43.16ID:Z8tL2aqo細かいことだが、その文脈だと代入文ではなくて代入式が正しいな。
代入文とすると、複数の代入演算子を含む式全体を示すことになる。
0238223
2015/02/21(土) 00:12:24.83ID:qwGLb9dD>>224の結果と>>227-228の話からすると、
(r = v)の評価結果は、型がrで値がvという事ですかね
0239デフォルトの名無しさん
2015/02/21(土) 00:22:14.89ID:4U2Jdz4k0240デフォルトの名無しさん
2015/02/21(土) 02:31:13.39ID:SLdiXOoX2chで質問して回答をそのまま信用、みたいなことばかりしてたらいつまでたっても底辺PGのままだぞ
0241デフォルトの名無しさん
2015/02/21(土) 05:11:15.89ID:MGlH6d106.5.16 Assignment operators
Semantics
3 An assignment operator stores a value in the object designated by the left operand. An
assignment expression has the value of the left operand after the assignment, but is not an
lvalue. The type of an assignment expression is the type of the left operand unless the
left operand has qualified type, in which case it is the unqualified version of the type of
the left operand. The side effect of updating the stored value of the left operand shall
occur between the previous and the next sequence point.
JISX3010 同パラグラフ
代入演算子は、左オペランドで指し示されるオブジェクトに値を格納する。代入式は、代入後の
左オペランドの値をもつが、左辺値ではない。(以下略)
"An assignment expression has the value of the left operand after the assignment, but is not an lvalue."
・代入式は、"代入後の"左オペランドの値をもつ。代入後 (after the assignment) であって、代入前ではない
0242デフォルトの名無しさん
2015/02/21(土) 06:41:42.07ID:sewBQTuxC言語はvが代入されたrの値を返すという意味をコンパイラに入力するが、
コンパイラはrとまったく等しい同じ型のvがeaxに載ってるのだから
そのeaxをそのままxにも代入してしまえばいいだろwwという
アセンブリリアントパークを出力してくるということだよなw
0243デフォルトの名無しさん
2015/02/21(土) 07:12:26.16ID:s8VfnH0M意味不明。
eaxは汎用レジスタのひとつに過ぎない。
別レジスタ経由の可能性もあるし、アドレスをスタック経由で扱う可能性もある。
double型などでeaxのレジスタ長に収まらない場合はどうするんだ?
他人を叩くつもりで無理に発言すると、自分の無知を晒すだけだぞ。
0244デフォルトの名無しさん
2015/02/21(土) 07:53:08.14ID:sewBQTuxどうも何もeaxを使うこともdoubleだったら変換してmmxのレジスタを使っちゃったりするのも
コンパイラの中の人が対象CPUに合わせて勝手にやることであって、C言語の仕様は
>>241の通りにrを右辺値として返すだけだろう。
他人を叩くつもりで無理に発言すると、自分の無知を晒すだけだぞ。
0245デフォルトの名無しさん
2015/02/21(土) 08:36:18.41ID:jMEJtOTB>コンパイラの中の人が対象CPUに合わせて勝手にやることであって、
自分でコンパイラの実装の話を振っておきながら、最後はコンパイラの中の人が勝手にやることにして
広げた風呂敷を畳んだな。
何がやりたかったんだw
0246デフォルトの名無しさん
2015/02/21(土) 09:05:24.01ID:sewBQTuxそりゃ風呂敷をたたむしか無いわなw
0247デフォルトの名無しさん
2015/02/21(土) 09:14:12.30ID:jMEJtOTB昨日のスレの流れで、あんな感想持っていたのは殆どいないと思うがな。
0248デフォルトの名無しさん
2015/02/21(土) 09:28:43.14ID:9ifGG6wD無知を晒しながらも、思い込みが激しく他人を叩く発言を続ける面倒な性格
スルー推奨
0249デフォルトの名無しさん
2015/02/21(土) 09:36:16.42ID:sewBQTux無知どころか他人を叩くことしかできない
面倒なスルー推奨な奴か。
0250デフォルトの名無しさん
2015/02/21(土) 11:12:47.39ID:0DxoAiRe> rが読出しが常に0となるようなレジスタとか
と言ってるんだから、質問の意図は明白
volatileに言及していない奴が皆無なので全員素人
>>223
> この場合、vの値がxに入る事は保障されていますか?
保証されていない。VCに-O2つけてコンパイルした結果
> mov eax, DWORD PTR _v$[esp-4]
> mov DWORD PTR _r, eax
> mov DWORD PTR _x, eax
保証したいなら、rをvolatileにすべし。同じ最適化オプションでコンパイル。
> mov eax, DWORD PTR _v$[esp-4]
> mov DWORD PTR _r, eax
> mov eax, DWORD PTR _r
> mov DWORD PTR _x, eax
rからきちんと読みだしている。
ド素人レベルを採点してやる
>>224 文法は理解しているが、質問の意味を理解できずに混乱の元を作った戦犯
>>225 文法は理解しているが、質問の意味が分かっていない
>>226 質問の意味を理解できずに煽ったバカ
>>227-228,231 論外、文法を理解していない
>>229 イミフ
>>239 文法は理解している。この中で一番レベルが高い素人。
>>244 規格書示されたのに読めないバカ。論外の論外。
0251デフォルトの名無しさん
2015/02/21(土) 11:20:27.11ID:0DxoAiRe正 volatileに言及してる奴が皆無なので全員素人
0252デフォルトの名無しさん
2015/02/21(土) 12:02:22.94ID:faAJ+kgU組み込みでのレジスタの意味は、普通のCPUの汎用レジスタのことではない。
周辺ペリフェラルの特殊レジスタのことを意味する。
x = (r = v);
と記述されていれば、制御変数vを特殊レジスタrに代入し、ワーク変数xに状態を保存する、と考える。
rの読み出しが常に0というのは、write専用レジスタか、read/writeで別動作を行うレジスタだからだ。
入力ポートの制御レジスタなどでよく見られる。
write動作はポートのデジタル/アナログ入力の切替えや内蔵プルアップ抵抗の接続などを制御し
read動作はポートの状態を返す。
write値とread値は一致しない。
一旦writeしてしまうと後からその値を知る手段はない。
そのために、制御変数vとワーク変数xを別に管理する必要があるのだ。
volatileなど何の意味もない。
回答の中だと状況を理解していたのは>>228だけだな。
0253デフォルトの名無しさん
2015/02/21(土) 12:08:05.06ID:0DxoAiRe>>223への回答としては、保証されていないし、保証する事は出来ない。
0254デフォルトの名無しさん
2015/02/21(土) 12:16:29.01ID:sewBQTuxそういう機能がコンパイラに足されていて、それを使っていない場合
r = x = v; としないと警告が出たり失敗したりしそうな気もするが、
値は書けるが読むと0という情報だけでは謎。
0255デフォルトの名無しさん
2015/02/21(土) 13:10:19.55ID:0DxoAiRe「論外の論外」と言うキミの評価には変わりはないから、引っ込んでて良いよ。
0256デフォルトの名無しさん
2015/02/21(土) 20:13:12.79ID:TZOTJCBR厳密に解釈すれば>>253さんの言う通りなんだろうけど、普通は (r = v) の評価結果は v(=rのwrite値) になると思うよ。
そして x への代入時に 改めて評価結果を r の read値で上書きすることはまず行なわれない。
今まで組み込みプログラム開発を行なってきたけれど、
x = (r = v);
の記述で問題になったことは一度もない。
むしろ>>250のように r を volatile宣言した場合、再読み込みが行なわれる可能性があることに驚いている。
メモリ上に展開される変数はともかく、特殊レジスタそのものをvolatile宣言するという発想はなかったけれど
今後は注意が必要だな。
まあ特殊レジスタの設定周りは特に念入りに実機デバッグを
行なう部分だから問題ないとは思うが。
0258デフォルトの名無しさん
2015/02/21(土) 22:56:46.44ID:0DxoAiReふつー
http://ds.arm.com/ja/developer-resources/tutorials/using-c-variables-to-access-memory-mapped-peripherals/
0259デフォルトの名無しさん
2015/02/21(土) 23:13:11.81ID:7T53oReE相変わらず全く本質を理解していないな。
レジスタに関連付けた制御変数のメモリマッピングの話と、レジスタそのものの挙動の区別くらいしろ、アホ。
0260デフォルトの名無しさん
2015/02/21(土) 23:15:37.59ID:s76k4WVRx=(r=v) を x=v; r=v; って書かないのはなんか利点があったっけ?
デバッガ見るのも後者のが楽じゃない?
0261デフォルトの名無しさん
2015/02/21(土) 23:25:06.51ID:0DxoAiReお前はついてこれないのだから、無理するな。
0262デフォルトの名無しさん
2015/02/21(土) 23:33:47.65ID:7T53oReE今までの議論のような曖昧さをなくす意味では後者の方が適切な場合もある。
ただし代入文を2つに分けた場合、途中で外部割り込み処理が発生した時に、
不適切な処理を行うと v が書き換えられて挙動が変わるリスクもある。
どちらにも長短はある。
0263デフォルトの名無しさん
2015/02/21(土) 23:39:24.23ID:0DxoAiReお前はついてこれないのだから、無理するな。
> ただし代入文を2つに分けた場合、途中で外部割り込み処理が発生した時に、
> 不適切な処理を行うと v が書き換えられて挙動が変わるリスクもある。
コーヒー噴いた
0264デフォルトの名無しさん
2015/02/21(土) 23:41:35.03ID:qCqW+14K0265デフォルトの名無しさん
2015/02/21(土) 23:46:42.47ID:7T53oReE0266デフォルトの名無しさん
2015/02/21(土) 23:50:59.25ID:4PqmzAg9vのunused variableの警告は潰せるね
キャストに置ける問題は同じだし気にすること無いんじゃないかな
どうせテスト通らないんだしさ
0267デフォルトの名無しさん
2015/02/21(土) 23:51:20.70ID:SLdiXOoX全く的外れなこと言ってるよキミ
取り敢えずマイコンのことなんも知らなそうだけど皆が話してるレジスタってSFRのことだからね
0268デフォルトの名無しさん
2015/02/21(土) 23:51:35.13ID:0DxoAiReお前はついてこれないのだから、無理するな。
痛々しすぎる。
0269デフォルトの名無しさん
2015/02/21(土) 23:55:34.89ID:7T53oReE分かってるよ、その上で発言してる。
何かおかしいか?
0270デフォルトの名無しさん
2015/02/22(日) 00:00:30.06ID:3QMfkeP2もしかして新人さんなのかな
取り敢えずいろいろ勘違いしてるようだから基礎からしっかり勉強した方がいいと思うよ
0271デフォルトの名無しさん
2015/02/22(日) 00:02:48.37ID:TRUNFqhM揮発領域を扱うのならいったん不揮発領域へコピーする(ことによって取得タイミングを明確にする)とか、
その揮発領域を扱う前後にクリティカルセクション等のガードを置くとか‥あ、これは至れり尽くせり OS 上での話だけれども
なんだかどうでもいいくらいに難しい話だ‥
0272デフォルトの名無しさん
2015/02/22(日) 00:02:54.13ID:xxw4z/3i> x=(r=v) を x=v; r=v; って書かないのはなんか利点があったっけ?
前者と後者は等価ではない
x=(r=v)はr=v; x=r;
0273デフォルトの名無しさん
2015/02/22(日) 00:06:14.64ID:DVQv7PP4コンパイラ依存としか言い様がない気が
0274デフォルトの名無しさん
2015/02/22(日) 00:06:57.24ID:3QMfkeP2クリティカルセクションのガードとか意味ないよ
レジスタの値を変えるのはCPUじゃないんだから
その為のvolatileでしょ
0275デフォルトの名無しさん
2015/02/22(日) 00:08:42.00ID:TO8vYIN7外部入力割り込みとかは、ノイズフィルタを通過してくるような想定外の外部ノイズに対しては
意図しないレベルの多重割り込みを発生させて深刻な問題を引き起こす可能性がある。
ハード設計の不具合まで想定できなかった。
その時の例を挙げただけだ。
0276デフォルトの名無しさん
2015/02/22(日) 00:10:14.80ID:3QMfkeP2え?
多重割り込みで問題とかそれソフトが糞なだけでしょ
ハードのせいにしないでよね
0277デフォルトの名無しさん
2015/02/22(日) 00:10:51.97ID:xxw4z/3i> 不適切な処理を行うと v が書き換えられて挙動が変わるリスクもある。
0278デフォルトの名無しさん
2015/02/22(日) 00:13:34.30ID:xxw4z/3iと書くと、ハード設計の不具合まで考慮してくれるのか、そりゃすげー。
0279デフォルトの名無しさん
2015/02/22(日) 00:15:45.43ID:3QMfkeP2割り込み禁止にすることすら知らないのね
例えC言語の仕様を完璧に理解していてもマイコンのこと知らなかったら組み込みでは使い物にならないというよい例だね
0280デフォルトの名無しさん
2015/02/22(日) 00:16:05.01ID:TRUNFqhMん、身近なマルチスレッドしかみえてなかったね。
ポインタ先ではなく、ふつうの変数そのものを、特定のメモリに置いたり(メモリマップドな)レジスタに割り付けたり‥か‥
そんなにほいほい不揮発な領域を触りまくるのもどうかと思うけれども‥
a = b = c = 0; で(十分な世界で)満足しよう‥
0281デフォルトの名無しさん
2015/02/22(日) 00:17:16.01ID:TO8vYIN7まあ配慮が足りなかったといえばそれまでだが、あらかじめ設計目標としていた処理時間は、ハード、ソフト設計部門で共有していたんだがな。
0282デフォルトの名無しさん
2015/02/22(日) 00:18:09.66ID:xxw4z/3iと書くと割り込み禁止にしてくれる、至れり尽くせりのコンパイラがあるのか。
そりゃーすげー。
で、どこ製のコンパイラ?
0283デフォルトの名無しさん
2015/02/22(日) 00:20:07.79ID:xxw4z/3i0284デフォルトの名無しさん
2015/02/22(日) 00:22:37.60ID:xxw4z/3i不揮発はnon volatileな
0285デフォルトの名無しさん
2015/02/22(日) 00:24:28.58ID:TO8vYIN7特別な事情があって割り込み禁止には出来なかった。
参照箇所を限定することでCPU内のレジスタで完結させることが出来れば、割り込み時にはvの値をスタックに退避できる。
0286デフォルトの名無しさん
2015/02/22(日) 01:14:10.26ID:xxw4z/3i> 取り敢えずマイコンのことなんも知らなそうだけど皆が話してるレジスタってSFRのことだからね
0287デフォルトの名無しさん
2015/02/22(日) 01:22:30.21ID:f0SsoUfz0288デフォルトの名無しさん
2015/02/22(日) 01:50:20.08ID:TO8vYIN7>>286
vの取扱いについては内部レジスタの話、rはSFRの話な。
>>287
使用していたマイコン、というかボード設計の制約で、外部入力割り込みを禁止するとタイマ割り込みまで禁止されてしまって
処理が回らなくなるのでどうにもならなかったんだよ。
とりあえずもう寝る。おやすみ。
0289デフォルトの名無しさん
2015/02/22(日) 01:52:23.25ID:TO8vYIN7まあいいや、それでは失礼
0290デフォルトの名無しさん
2015/02/22(日) 08:04:10.86ID:CyC+ZTer0291デフォルトの名無しさん
2015/02/22(日) 11:34:55.70ID:XKkbsrmMvolatile とか割り込みの前に規格に言及する奴がいないのが(俺も含めて)ここのスレの限界を表してるな...
0292デフォルトの名無しさん
2015/02/22(日) 12:30:50.41ID:OSQlo3xO規格だの仕様だのばかり覚えて、頭でっかちになっても実務では何の役にも立たん。
学校の英語のテストやTOEICで点数ばかりいくら高くても、海外でコミュニケーションすら
まともにとれない役立たずと同じだ。
0293デフォルトの名無しさん
2015/02/22(日) 12:34:27.00ID:TRUNFqhM0294デフォルトの名無しさん
2015/02/22(日) 12:56:00.60ID:CaryxoIPえ?
なにズレたこと言ってるの?
レジスタ叩いてハードを制御してなんぼの組み込みの話してるのにvolatileな領域さわるなって…
0295デフォルトの名無しさん
2015/02/22(日) 12:58:47.58ID:TRUNFqhMそんなメモリマップドな領域に対して x = y = z; みたいな書き方をするなってことだよ
0296デフォルトの名無しさん
2015/02/22(日) 13:02:47.11ID:CaryxoIPそれなら同意する
0297デフォルトの名無しさん
2015/02/22(日) 13:24:58.87ID:xxw4z/3i>>288
> vの取扱いについては内部レジスタの話、rはSFRの話な。
するとrにvolatileは必須となり、↓と矛盾。
> ただし代入文を2つに分けた場合、途中で外部割り込み処理が発生した時に、
> 不適切な処理を行うと v が書き換えられて挙動が変わるリスクもある。
論外の論外は正しい評価だったな。
0298デフォルトの名無しさん
2015/02/22(日) 13:34:07.01ID:xxw4z/3i> "An assignment expression has the value of the left operand after the assignment, but is not an lvalue."
>・代入式は、"代入後の"左オペランドの値をもつ。代入後 (after the assignment) であって、代入前ではない
この意味が分からないから説明してくれと言っているのか?
>>292
> 保証は出来ない、しかし実用上は問題ない、でいいだろ。
アマチュアならそれで良いけど、まさかお前職業PGじゃないよな。
>>295
キミは↓の世界に閉じこもっていなさい。
> a = b = c = 0; で(十分な世界で)満足しよう‥
0299デフォルトの名無しさん
2015/02/22(日) 14:56:18.70ID:TRUNFqhM近年みられない大漁、まことに慶賀の至りだ
0300デフォルトの名無しさん
2015/02/22(日) 15:04:48.38ID:D9wAj7DDC++クラスならメンバー変数に置くようなやつ。
0301デフォルトの名無しさん
2015/02/22(日) 15:18:52.26ID:YCoQmSjPstruct fooとかくのがめんどくさい場合
typedef struct foo foo;
struct foo
{
int number;
char [BUFFER_SIZE];
};
foo a;
foo *p = &a;
C++のclassは、privateであって、途中でpublicを指定するが、
C++のstructは、なにもしなかったらpublic
0302デフォルトの名無しさん
2015/02/22(日) 15:23:59.89ID:D9wAj7DD0303デフォルトの名無しさん
2015/02/22(日) 15:24:10.32ID:Ajpfsgmt0304デフォルトの名無しさん
2015/02/22(日) 15:24:55.23ID:YCoQmSjP#include <stdio.h>
#include <string.h>
typedef struct foo foo;
struct foo
{
int number;
char c[BUFFER_SIZE];
};
int main(void) {
foo a, b;
foo *p = &a;
foo *q = &b;
a.number = 2;
strcpy(a.c, "two");
b = a;
printf("%d: %s\n", q->number, q->c);
return 0;
}
0305デフォルトの名無しさん
2015/02/22(日) 15:26:07.23ID:wHKlPZGJstatic つけて内部リンケージにするくらいかな?
foo.c
static int foo;
void f() {foo = 1;} // OK
void g() {foo = 2;} // OK
bar.c
void h() {foo = 3} // できない
0306デフォルトの名無しさん
2015/02/22(日) 15:30:52.09ID:YCoQmSjPint main(void)
{
int a = 2;
{
int a = 13;
printf("a = %d inside the block\n", a);
}
printf("a = %d outside the block\n", a);
return 0;
}
0307デフォルトの名無しさん
2015/02/22(日) 16:37:30.55ID:D9wAj7DD------------------------
日時 エラーコード エラーメッセージ [newline]
15/02/01 10 メッセージ [newline]
------------------------
みたいな形式のファイルを読み出すのを想定しています。
これに指定範囲の日付を取り出すとかあれこれやりたい。
http://codepad.org/stKpIesW
0308デフォルトの名無しさん
2015/02/22(日) 16:42:15.29ID:D9wAj7DDグローバル結構つかうもの?
・グローバル
・ヒープ
・関数内のローカル変数が消えるまえに再帰呼出し
・main内
これくらいかしら。
void f(int* p){ ... }
みたいなに
int* x; <- 未初期化
f(x);
こういうのも大きくなってくるとやりそうなんだけど(´・ω・`)
0309デフォルトの名無しさん
2015/02/22(日) 19:26:59.27ID:E6WmvJSBを構造体にしてグローバル変数にしてた
0310デフォルトの名無しさん
2015/02/22(日) 19:30:48.38ID:D9wAj7DDあれこれ試行錯誤してみるよ。
0311デフォルトの名無しさん
2015/02/23(月) 14:56:27.73ID:Z2ABtNFV0312デフォルトの名無しさん
2015/02/23(月) 15:14:25.58ID:6IRoEuznグローバル変数の話をすると、また例の
extern は要らない子ぉ!
が現れるぞ。
0313デフォルトの名無しさん
2015/02/23(月) 21:29:54.76ID:JzyWrWVgおう,芸人冥利につけるお言葉 thx
でもこのネタで 3 年はつらい,そろそろ新しいのを見つけないと
「this に null は正義」 http://peace.2ch.net/test/read.cgi/tech/1313183984/793
「ヌルを手繰って無問題」 http://ideone.com/oJGfP8
を考えてるが,イマイチ,そもそもC++だし
一見厨二病っぽく,よくよく考えるといろいろあり,でも結局厨二病だった,みたいなナイスなネタはないものか‥
0314デフォルトの名無しさん
2015/02/23(月) 21:38:29.89ID:NUHfcvo6何度みても大爆笑だわ
http://ideone.com/Digq4t
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("hello, world!\n %s", argv[0]);
system("ls -l ./prog");
return 0;
}
/* end */
0315デフォルトの名無しさん
2015/02/23(月) 22:42:46.72ID:5823dt6Rしかしあのまとめ記事作ったやつも相当いらない子だろうと思った
0316デフォルトの名無しさん
2015/02/25(水) 19:53:16.34ID:TR6BrE7Uaaa
aaa
bbb
bbb
としたときに
a.txtに
aaa
aaa
b.txtに
bbb
bbb
となるようにしたいです
いまは新しくc.txtにaaa, aaaを入れてからa.txtにコピーするようにしてます
一時的にファイルをつくらないですむ方法ってありますか?
0317デフォルトの名無しさん
2015/02/25(水) 19:59:27.60ID:Yt0Ck2Kc俺の頭が悪いのかな
0318デフォルトの名無しさん
2015/02/25(水) 20:21:39.22ID:rorXnPjFa.txtはリードライトでオープンする。
a.txtを読んで、bbbの位置を記憶しておく。
b.txtを書き終わったら、a.txtをさっき記憶した位置にtruncate(chsize)する。
>>317
>俺の頭が悪いのかな
そうだね。
0319デフォルトの名無しさん
2015/02/25(水) 21:22:01.67ID:2gIIOhx5読んだテキストの先頭一文字に ".txt" を追加してファイル名とする。
そのファイルを追記で開いて最初に読んだ行をそのまま出力してクローズする。
EOF になるまで最初から繰り返す。
ってんじゃダメなん? このままじゃ効率めちゃくちゃ悪いけど。
0320デフォルトの名無しさん
2015/02/25(水) 21:30:05.24ID:Wk2wN7sa0321デフォルトの名無しさん
2015/02/25(水) 22:01:42.11ID:2gIIOhx50322デフォルトの名無しさん
2015/02/25(水) 22:09:09.61ID:TR6BrE7Uありがとうございます
思ってたとおりの動作ができました
0323デフォルトの名無しさん
2015/03/06(金) 09:51:52.47ID:RF7Pz6sfx==yであれば0
x>yであれば1
をていうのやりたいけど、「&&」 か「|| 」を使って
どうやればいい?
0324デフォルトの名無しさん
2015/03/06(金) 09:58:34.42ID:uUtd6mTH論理演算の結果である 0 か 非0
使うものの選択が間違っている
多分 3項演算子が答え
(x < y) ? -1 : ((x > y) ? 1 : 0))
0325デフォルトの名無しさん
2015/03/06(金) 10:10:06.22ID:RF7Pz6sf0326デフォルトの名無しさん
2015/03/06(金) 14:05:51.32ID:dsDP5DeS> 論理演算の結合 && || で得られるものは
> 論理演算の結果である 0 か 非0
ウソ教えんな。&&, ||で得られるものは0か1
>>323
&&,||は使わない
(x > y) * 2 + (x == y) - 1;
ただし、世の中は>>324のような間違った知識でドヤ顔しているのが多く、
このような技法は誤解を招くので推奨されない。
0327デフォルトの名無しさん
2015/03/06(金) 14:27:46.20ID:ffY3VuPR0328デフォルトの名無しさん
2015/03/06(金) 15:16:31.43ID:uUtd6mTH論理演算結果の値を生で使うなんてことしていなかったら
0329デフォルトの名無しさん
2015/03/06(金) 22:03:23.05ID:qwFgbeNs三項演算子の方法で間違ってない(というか素直な)んだから
推奨されない方法だというなら教えるなよw
0330デフォルトの名無しさん
2015/03/06(金) 22:11:08.65ID:CVmG+FMNきもいことには変わりないが。
0332デフォルトの名無しさん
2015/03/06(金) 22:16:40.60ID:qIso92hc推奨されない方法には目をつぶる。これが通用するのは幼稚園児まで。
0333デフォルトの名無しさん
2015/03/07(土) 07:47:21.38ID:jW+ek3hJ0334デフォルトの名無しさん
2015/03/07(土) 08:12:14.52ID:ywfVPbBH0335デフォルトの名無しさん
2015/03/07(土) 09:02:07.20ID:QPvGFmZEK$=INKEY$:XX=(K$="4")-(K$="6"):YY=(K$="8")-(K$="2")
とか。
0336デフォルトの名無しさん
2015/03/07(土) 09:55:41.11ID:HzC+Q997素直にif文で書けばいいと思う
0337デフォルトの名無しさん
2015/03/07(土) 10:07:29.74ID:ywfVPbBHそんなの条件式にアホな処理書くからだろ
0338デフォルトの名無しさん
2015/03/07(土) 10:14:02.03ID:ouMiK/F/IFルーチンの処理だからそういう場合もあるんじゃない?
単純にX1と88のBASICは88の方が重いとかあるし。
0339デフォルトの名無しさん
2015/03/07(土) 10:18:07.68ID:1nTuk0pV0340デフォルトの名無しさん
2015/03/07(土) 10:20:58.39ID:3KyZhNX/0341デフォルトの名無しさん
2015/03/07(土) 11:00:11.19ID:qj41oK6s0342デフォルトの名無しさん
2015/03/07(土) 21:57:40.74ID:+PVcswQ00343デフォルトの名無しさん
2015/03/08(日) 09:44:07.92ID:fPJc3hpF0344デフォルトの名無しさん
2015/03/08(日) 10:34:31.89ID:8XDi/JEm0345デフォルトの名無しさん
2015/03/08(日) 10:49:08.72ID:fPJc3hpF0346デフォルトの名無しさん
2015/03/09(月) 07:53:39.18ID:NrwX//vi0347デフォルトの名無しさん
2015/05/22(金) 21:15:44.48ID:VsqBX1IM0348デフォルトの名無しさん
2016/01/06(水) 13:27:14.62ID:ucN+MzTI0349デフォルトの名無しさん
2016/01/06(水) 14:03:26.94ID:scdkds6z0350デフォルトの名無しさん
2016/01/06(水) 15:21:42.32ID:/2nsH7hB0351デフォルトの名無しさん
2016/01/06(水) 20:42:58.97ID:gw5qUYkoあけてくれますか?
|
/| |
/ / | |
/ / .| |
| / | |
| | .| / ̄
| | .| /
| | .| /
| |0 | /
| | .|/
| | /
| | ./
|/|/
/
../
0352デフォルトの名無しさん
2016/01/06(水) 21:00:13.19ID:D+fLh+9w`\::::::|
‖:::::|
ガ‖:∧_∧
チ ‖( ・ω・ )
ャ |o つ
\‖しーJ
゙゙゙゙゙゙゙゙゙゙゙゙
0353デフォルトの名無しさん
2016/02/28(日) 22:45:14.42ID:dibshBZkcatコマンドの変形で、\t \nの場合だけ、それを表示するような
プログラムです。
http://lifeloveregret.googlecode.com/svn/trunk/c/answer/LinuxProgramming-samples/cat4.c
argc -= optind;
argv += optind;
上の2つの行と、forループの関係がわかりません。forの中のiは
1からではなく0から始める理由がわかりません。どなたか簡単に
説明してくださりませんか?
0354デフォルトの名無しさん
2016/02/29(月) 00:11:38.17ID:m6AX33Gj1〜argc
0355デフォルトの名無しさん
2016/02/29(月) 00:13:10.09ID:xccoBVx1取らない場合は特定の値を設定するようにしたいのですが、
どうしたら良いでしょうか?
例えば
(1) hoge -a (-a に対する変数に 1 を設定)
(2) hoge -a 10 (-a に対する変数に指定値、この場合 10 を設定)
のようにしたいのですが、 getopt を使うと "a"(1 のケース) か "a:"(2 のケース)
のどちらかしか設定出来ません。 (1) にも (2) にも同じオプションで対応したいです。
0356デフォルトの名無しさん
2016/02/29(月) 00:35:00.19ID:m6AX33Gj/* 値を取る引数に値がなかった場合:を返す. */
0357デフォルトの名無しさん
2016/02/29(月) 00:45:31.08ID:/Kpy2WEaoptstring は受け付けるオプション文字からなる文字列である。
文字のあとにコロン (:) が置かれている場合は、 オプションには引き数が必要であることを示す。
このとき getopt() は、現在注目している argv 要素で、オプション文字に引き続くテキストへのポインターか、
あるいは次の argv 要素のテキストへのポインターを optarg に代入する。
2 個連続してコロンが置かれている場合は、 そのオプションは引き数をとってもとらなくてもよい。
0358デフォルトの名無しさん
2016/02/29(月) 01:30:18.41ID:xccoBVx1>>356-357
マニュアルの読みが足りませんでした、ありがとうございました。
0359デフォルトの名無しさん
2016/02/29(月) 19:28:55.86ID:rGiNUpBIバッファリングって意味ありますか?
切ったほうが良いですか?
0360デフォルトの名無しさん
2016/02/29(月) 20:01:56.43ID:m6AX33Gjサイズがでかいなら OSさんに任せたほうが
といってみるテスト
0361片山博文MZ ◆T6xkBnTXz7B0
2016/03/01(火) 11:53:41.08ID:mTo6F5rghttps://github.com/katahiromz/TypicalCLibrary
0362デフォルトの名無しさん
2016/03/01(火) 12:26:05.28ID:MZ600p44先読みとバッファリングはイコールじゃない
普通はバッファリング止める必要ないけど、実際に計って性能が落ちるようなら
やめれないい
0363デフォルトの名無しさん
2016/03/01(火) 22:14:15.19ID:GJq7m7DNprintf("%+d\n", x);
と
printf("% d\n", x);
って何が違うの?
0364デフォルトの名無しさん
2016/03/02(水) 00:20:06.14ID:Xr3FdDeB例えば、文字列を一部変えるみたいな処理があるとして、引数に参照で値を渡すと、内部で値を変えて、変えれたかどうかの結果が戻り値みたいな。
戻り値で文字を返してくれた方がスラスラ読めるのにと思ったので。
0365デフォルトの名無しさん
2016/03/02(水) 01:02:47.02ID:qVYlxOWhエラー通知が必要な場合は仕方ないんじゃね?
ごく稀に、関数の引数でエラーステータスを返す関数も見かける事はあるけど使いにくい。
多分、関数をそのままifの条件に書けるから、特に理由が無い限り、関数の戻りで判断をさせるようにしてるんじゃないかな?
0366デフォルトの名無しさん
2016/03/02(水) 06:27:59.81ID:rGQYeS/e#include <stdio.h>
int main(void)
{
int val = 42;
printf("printf() with %%d: %d\n", val);
printf("printf() with %%+d: %+d\n", val);
return 0;
}
+フラグをつけると正の値のときに+符号が表示される。
0367366
2016/03/02(水) 06:39:59.11ID:rGQYeS/e空白フラグは正の値のときに符号の代わりに' '(空白)を表示する。
負の値と正の値とで、数字部分を同じ表示位置にしたいとき使う。
ちなみに+フラグと空白フラグを同時に指定すると
空白フラグが無視され、+フラグだけが有効になるのがANSI規格。
#include <stdio.h>
int main(void)
{
int val = 42;
printf("printf() with %%d: %d\n", val);
printf("printf() with %%+d: %+d\n", val);
printf("printf() with %% d: % d\n", val);
printf("printf() with %% +d: % +d\n", val);
printf("printf() with %%+ d: %+ d\n", val);
return 0;
}
0368デフォルトの名無しさん
2016/03/02(水) 07:37:26.46ID:TE5CDYRj文字で返すってどういうこと?'a'とか'b'とか返ってほしいの?
0かそれ以外なら何でも良いケースが多いからそれでもいいよ
Cは式も値を持つし、比較もその値を使って行うから、
if(strcpy(a,b)) {
みたいな書き方ができる
0369デフォルトの名無しさん
2016/03/02(水) 07:53:48.31ID:OtsHWMs4正常終了 : 戻り値=処理データ
異常終了 : 戻り値=NULL エラー内容はグロバル変数ERROR(もしくはエラー結果取得共通関数)で判断
って仕様もあったけど、正常終了の結果がNULLって場合もあるからエラー検査が二度手間になって面倒だった。
0370デフォルトの名無しさん
2016/03/02(水) 08:25:19.39ID:Z+9Irg1R> 例えば、文字列を一部変えるみたいな処理
変更後の文字列領域を関数内で確保して返すという流儀もあり得るがCだと大抵余計面倒になるだけ
0371デフォルトの名無しさん
2016/03/02(水) 08:28:42.27ID:YPa1u3Lv20-30年前の"常識"
その後に作られた新しい言語では読みやすさ等を重視して
オブジェクトに格納して必要なときにgetterで取れるとか
失敗を例外スローで返すようにした
そもそもC言語に高級言語並みの読みやすさを求めるのは間違い
0372デフォルトの名無しさん
2016/03/02(水) 08:32:37.47ID:diU0WJ5/> 異常終了 : 戻り値=NULL
> 正常終了の結果がNULLって場合もあるから
仕様決めた奴が狂ってるとしか思えん
0373デフォルトの名無しさん
2016/03/02(水) 09:01:13.29ID:ZcGPkBdQ>正常終了の結果がNULL
の具体例を有名どころでよろ
0374デフォルトの名無しさん
2016/03/02(水) 09:29:26.25ID:OtsHWMs40375デフォルトの名無しさん
2016/03/02(水) 10:04:23.67ID:DkuYT6t3> 正常終了の結果がNULLって場合もあるから
アナタが言ってたのは0ではなくNULL
0376デフォルトの名無しさん
2016/03/02(水) 10:06:32.96ID:OtsHWMs4そういう仕様を推奨してる訳でもないからな。
0377デフォルトの名無しさん
2016/03/02(水) 10:11:14.10ID:OtsHWMs4何を返すかはその関数次第だから限定しないよ。
その関数が読み込んだデーター分メモリ確保し返す仕様かもしれないし。
なんにせよ、376で言ってるように俺がそういう仕様で作ってるわけでもない、俺に文句言われても知らんわ。
0378デフォルトの名無しさん
2016/03/02(水) 10:14:40.38ID:Bi9ZhcNY返り値が (内部staticな? グローバルで唯一な?)
文字列のポインタでエラーを返すような感じか?
0379デフォルトの名無しさん
2016/03/02(水) 10:41:13.00ID:c7vTSeEd取得前に割り込み入って内容変わったりしないのかと。
0380デフォルトの名無しさん
2016/03/02(水) 12:07:30.72ID:YPa1u3Lv数十年経って全く時代にそぐわなってるのに
いまだに第一線で使われることを墓の下で呆れたり嘆いたりしてるよ
0381デフォルトの名無しさん
2016/03/02(水) 12:38:51.46ID:iCefEI9sオープンソースの多くのものが,私が寄与したコードに基づいていることです」
「その仕事に合った道具を選びなさい(中略)
ある仕事のために新しい特殊なツールを作成する方法について考えるべきときもあります」
Dennis M. Ritchie
偉大なるプログラマからのメッセージ|Cマガジン1999年10月号31,32ページ
http://echo.2ch.net/test/read.cgi/tech/1318481715/23 訃報: C 言語の開発者、デニス・リッチー氏が死去
0382デフォルトの名無しさん
2016/03/02(水) 14:19:38.97ID:7x0zrPSYスレッドローカルなメモリに実体があるならだいたいおk
VCのマルチスレッドランタイムのerrnoとか、
0383デフォルトの名無しさん
2016/03/02(水) 14:35:29.22ID:YPa1u3Lv現代のコンパイラは
マルチスレッド用とシングルスレッド用にランタイムが分かれていて
プロジェクト設定あたりで適切なものを選べば問題ない
割込みならハンドラ側が環境壊さないようにすべき
0384デフォルトの名無しさん
2016/03/02(水) 14:53:51.02ID:Bi9ZhcNY0385デフォルトの名無しさん
2016/03/02(水) 15:54:05.47ID:UChdnPQl使わなきゃいいだけでしょ
0386デフォルトの名無しさん
2016/03/02(水) 16:45:40.85ID:YPa1u3Lvとかいまだにぬかす老害が早く滅びますように
0387デフォルトの名無しさん
2016/03/02(水) 16:54:00.35ID:VauVagFG別に、Cの達人になれと言っているわけじゃなくて、さわりだけ覚えとけって話でしょ
大体の言語はC風の文法だし、基礎としては良いんじゃね
0388デフォルトの名無しさん
2016/03/02(水) 17:54:50.76ID:iKlMBL5gあるファイルの
タブ文字を"\t" 改行を"$"
で表現するプログラムを写経しました。
ところが改行は上手く表現できるのですが、タブは上手く表現
できません。どこがおかしいのでしょうか?よろしくお願いします。
http://ideone.com/nhIQKN
コンパイルエラーが上のサイトでは出ていますが、自分の環境では
上手くコンパイルできています。
0389デフォルトの名無しさん
2016/03/02(水) 18:05:01.85ID:UChdnPQl0391片山博文MZ ◆T6xkBnTXz7B0
2016/03/02(水) 18:33:46.36ID:v5tMoIR70392デフォルトの名無しさん
2016/03/02(水) 18:39:52.79ID:U8gNKAYqFreeBSD10もCentOS7もunistd.hをincludeすれば使える
ideoneがタコなだけだ
http://ideone.com/ocUb58
0393デフォルトの名無しさん
2016/03/02(水) 18:44:09.16ID:U8gNKAYq>>389の指摘どおりだと思う
0394388
2016/03/02(水) 21:24:47.01ID:iKlMBL5gみなさん、ありがとうごいました。
プログラムは正常なのですね。
TABコードってVimのインサートモードでTABキー押せば
それはTABコードが入力されてることにならないのでしょうか?
0395デフォルトの名無しさん
2016/03/02(水) 21:36:53.88ID:U8gNKAYq設定しだいじゃね?
od -c で確認してみな
0396デフォルトの名無しさん
2016/03/02(水) 21:48:01.36ID:TOqHeSTnメリットってあるんでしょうか?
配列ならインデックスからも一発だし
キャッシュ値一回求めるだけでインデックスも求まりますよね
何故一からたどっていかなければいけないポインタリストが重宝されているのでしょうか?
0397デフォルトの名無しさん
2016/03/02(水) 21:49:25.03ID:TOqHeSTnポインタを利用したリスト構造だけは何のメリットがあるのか
全く分からない…
0398デフォルトの名無しさん
2016/03/02(水) 21:57:17.40ID:xQdRf4qH0399デフォルトの名無しさん
2016/03/02(水) 22:32:15.95ID:U8gNKAYq位置が特定できるなら挿入削除(延長も)が一定コスト
0400デフォルトの名無しさん
2016/03/02(水) 22:35:18.56ID:TE5CDYRjサイズが自由
0401デフォルトの名無しさん
2016/03/02(水) 22:35:43.03ID:TE5CDYRj0402デフォルトの名無しさん
2016/03/02(水) 22:36:15.97ID:TOqHeSTnいや例えば10万番目にあるデータは1から辿らないとダメなんじゃないですか?
そんな事現実的ですかね?少なくともデータベースではリスト構造なんて使われて
ないでしょう?リスト構造はポインタのトリッキーな使い方の一例だと自分的には
解釈してるんですが間違いでしょうか
0403デフォルトの名無しさん
2016/03/02(水) 22:38:56.58ID:D52dJXQ8要件次第
10万件必要なら違うデータ構造を使うよそりゃ
0404デフォルトの名無しさん
2016/03/02(水) 22:40:55.72ID:VauVagFG全くその通りだよ
ポインタを使って頑張って線形リストにしても、バグを混入する危険性が増えるだけでメリット無いよ
しかもランダムアクセスが出来ないから、使用出来るアルゴリズムも限られてくるし、良いことなし
極一部の人が挿入などが定数時間で終わることをメリットにあげることが有るけど
今のCPUはメインメモリに対して25GB/sとかの凄まじい帯域が有るから
配列の要素をずらすのにmemmoveしたり、再確保時のmemcpyしたりは何ら問題ない
0405デフォルトの名無しさん
2016/03/02(水) 22:41:29.31ID:xQdRf4qH0406デフォルトの名無しさん
2016/03/02(水) 22:43:12.78ID:VauVagFG10万件あるならリスト使わずに他のデータ構造を使う・・・なるほど
でもね、逆に、10万程度なら配列で何の問題ないわけだよね
10万以上ではリストとは別のデータ構造使って
10万未満では配列で十分だとしたら
リストの出番は?
0407デフォルトの名無しさん
2016/03/02(水) 22:44:45.29ID:qVYlxOWh間違いないよ
リストなんて使わなくていいよ
0408デフォルトの名無しさん
2016/03/02(水) 22:52:17.09ID:VauVagFG仮に10万個のポインタを突っ込んだ配列を作成すると、サイズは約400KB弱
これのmemmoveに一体どれぐらいの時間がかかるというのだろうね
今のコンピュータは余裕でハイビジョンの動画をリアルタイムで再生できるというのにね
配列を使えばランダムアクセスが出来るからアルゴリズムの幅も広がるし
プログラムもシンプルになるので色々楽だよね
プログラムというのは大体は書き換えよりも読み込みの頻度の方が高いから
挿入時のコストの心配はしなくても大丈夫じゃないんですかね
0409デフォルトの名無しさん
2016/03/02(水) 23:02:02.75ID:TOqHeSTn配列の要素ずらすって単にずれ値変数用意すればいいだけでは?
0410デフォルトの名無しさん
2016/03/02(水) 23:02:47.68ID:xQdRf4qH0411デフォルトの名無しさん
2016/03/02(水) 23:05:27.60ID:D52dJXQ8こんぴーたのリソースが貴重だったときの考え方だから、こんなデータ構造もあるって知っとくだけで良いと思うよ
0412デフォルトの名無しさん
2016/03/02(水) 23:13:26.86ID:XkCEJmpkどっちかというと件数そのものより、「10万番目」にアクセスするという要件がランダムアクセスを
前提にしているものだから。
これが「内容がXのものを見つける」なら両者の差は少なくなるし、さらに「見つかったらその位置に
新しい要素を挿入するする」ならリストの方が有利になる。
0413デフォルトの名無しさん
2016/03/02(水) 23:13:38.43ID:VauVagFG配列に要素を挿入するためには、それ以降を後ろにずらさないといけないだろ
だからmemmoveするわけだけど、どうせ一瞬で終わるから気にしなくてよいよねって話
余程の特殊な状況じゃない限り配列を使っとけばよいよ
特殊な状況というのがどういうのかと言われても困るわけだが
典型的な教科書通りの線形リストの出番はほぼ無いと思っていてよいんじゃないかな
0414デフォルトの名無しさん
2016/03/02(水) 23:18:27.67ID:TOqHeSTn今まで配列ずらすのは時間がかかるとおもって
新しい配列用意してたんですが無駄でしたか
0415デフォルトの名無しさん
2016/03/02(水) 23:24:10.68ID:xQdRf4qH0416デフォルトの名無しさん
2016/03/02(水) 23:29:11.88ID:VauVagFGメモリ上のあちこちに点在したリンクリストをたどっていくより
連続メモリでキャッシュに乗っている配列をmemmoveでずらす方が早いのでした
0417デフォルトの名無しさん
2016/03/02(水) 23:31:50.07ID:VauVagFG0418デフォルトの名無しさん
2016/03/03(木) 07:22:21.53ID:94sJe93wそもそもC言語なんて覚える必要あったのだろうか?
というところにたどり着ける
頑張れ
0419デフォルトの名無しさん
2016/03/03(木) 07:53:13.94ID:AmuwmWIjニュースで自分に関係ない内容流す、見るのは無駄か?
トリビアの泉で一生使わないネタを見るのは無駄だったのか?
0420デフォルトの名無しさん
2016/03/03(木) 07:56:29.34ID:GEvX7rOJそのさらに後に、やはり知ってて良かったと思いにたどり着く
0421デフォルトの名無しさん
2016/03/03(木) 08:02:11.86ID:JQNyTLCY外部に定義があると言っているようなもので間違ってますよね。
0422デフォルトの名無しさん
2016/03/03(木) 08:17:12.46ID:JufYzE1v別に。
0423デフォルトの名無しさん
2016/03/03(木) 08:41:33.10ID:6AJzUe4cfile: sub.h
extern int subfunc(int arg);
file: sub.c
#include "sub.h"
void user(int arg)
{
printf("subfunc() returned %d\n", subfunc(arg));
}
int subfunc(int arg)
{
return arg;
}
subfunc() の定義部分より前に subfunc() を呼ぶ関数があるから、
user()の前か、user()の内側にプロトタイプ宣言が必要。
extern int subfunc(int arg); と書く代わりに、
その部分を sub.h に書いて #include してると考えれば
別におかしいことはない。
…というか、こう書けないと不便だよね。
ヘッダファイルのプロトタイプ宣言と、関数定義との一致を確実にするために、
関数定義してるソースでも外部宣言のヘッダを#includeするのが普通だろう。
0424デフォルトの名無しさん
2016/03/03(木) 08:43:34.44ID:+JeDUCvS昔のソースのヘッダーでexternを#ifdefで切り替えてるの見た事あるわ C89以前の流儀
extern int c;
int c;
は矛盾しなくなってる
複数の宣言が出現した場合の解釈は規格書に事細かに書かれてる
0425デフォルトの名無しさん
2016/03/03(木) 10:07:40.82ID:AmuwmWIjC++のコンパイル後のバイナリー見たら関数名に任意の番号付いた文字列が並んでたから
「ああ、.cppファイル毎に同じ名前の関数が使えるのはこういうふうに名前いじってるからで、
externつけるといじらない(アンダーバーは付けるけど)から各cppから呼び出せるのか」
って考えたんだけど。
0426デフォルトの名無しさん
2016/03/03(木) 10:27:54.16ID:ITJHme3g0427デフォルトの名無しさん
2016/03/03(木) 10:31:40.80ID:JufYzE1vあってない
0428デフォルトの名無しさん
2016/03/03(木) 10:43:57.77ID:ITJHme3gそれと勘違いしてる?
0429デフォルトの名無しさん
2016/03/03(木) 10:57:00.20ID:EkQOBIMuバイナリー上でどう表現するか?までは規定してない
0430デフォルトの名無しさん
2016/03/03(木) 13:33:56.07ID:lbf025Ye1.234
も
123.4×10^(-2)も
小数点の位置に関わらず左から8番目?(適当)までの数値は信頼
できますよね?
調べたら凄い説明があったんですけど
そんなに深い分野なんですか?
0431デフォルトの名無しさん
2016/03/03(木) 14:14:05.72ID:VGVPmQmt1πを10進数の小数で表すとき、何桁まで信用できますか?
0432デフォルトの名無しさん
2016/03/03(木) 18:28:56.93ID:fYhl3Eak0433デフォルトの名無しさん
2016/03/03(木) 19:00:07.27ID:94sJe93w深くはないけど何も知らずに使うと信じられないような罠を踏むので
一切使わないくらいの方がいい
0434デフォルトの名無しさん
2016/03/03(木) 21:53:28.41ID:1PM7WcBh0435デフォルトの名無しさん
2016/03/04(金) 01:18:26.87ID:65DoB2uJそんなことよりも極めて似た2数の差による桁落ち
が恐ろしい(符号付の和でも起きる
0436デフォルトの名無しさん
2016/03/04(金) 07:59:48.20ID:zWNcVE50char *strcpy(char *s1, const char *s2);
結果的に戻り値とs1が同じになるので用途がわからないです
0437デフォルトの名無しさん
2016/03/04(金) 08:40:21.47ID:/J2AWB0A一行にまとめてゴチャゴチャと詰め込む書き方が好きな一部のプログラマ
現代的な作法ではほとんど使われない
0438デフォルトの名無しさん
2016/03/04(金) 08:51:41.68ID:pEnisYEU他のstr〜関数の引数に使う
0439デフォルトの名無しさん
2016/03/04(金) 08:51:50.20ID:BsWMug3Pstrcpy(t, strcat(strcpy(s, "friend"), "ship"));
/* s[] と t[] とに "friendship" が格納される */
ライブラリ設計者が、こんな感じに使えると便利だと考えたのだろう。
もちろん >>437 の通り、この書き方は読みやすくないけど。
似た形式の文字列操作関数が、統一して同じ返り値を返す仕様の方が
全体としてライブラリの使い勝手が良くなる。
「この関数の場合の返り値はどうだっけ?」が減るからね。
となると、返り値としては、第1引数をそのまま返すのが順当。
個人的には「格納された文字列終端の'\0'へのポインタを返す」って
仕様もアリだったかな、と思ったり。
0440デフォルトの名無しさん
2016/03/04(金) 09:06:03.94ID:TYlQwhRh0441436
2016/03/04(金) 10:06:21.85ID:zWNcVE50スッキリしました
0442デフォルトの名無しさん
2016/03/04(金) 15:43:12.45ID:BsWMug3Pここか。
文脈に乗った状態で見るとちゃんと意味の分かる投稿だったね。
0443デフォルトの名無しさん
2016/03/05(土) 00:16:48.17ID:s8oatnuBすべてがfになる!
ていうかa=f
0444デフォルトの名無しさん
2016/03/05(土) 00:30:10.75ID:dMmkuYpx0445デフォルトの名無しさん
2016/03/05(土) 00:31:13.57ID:Nu5W2p/6ちょっと語弊が無いか?
aの内容「のみ」fと同じになるんじゃ…
0446デフォルトの名無しさん
2016/03/05(土) 10:05:55.48ID:jMWeenKu> strcpy(strcpy(strcpy(strcpy(a, b),
c,),
d), e), f);
コンパイルエラーだろ
0447デフォルトの名無しさん
2016/03/05(土) 19:05:38.01ID:we7bVWIMいいアイデアありますか?というのも紙の上でコードを解読したいんですが
そのまま印刷したら20枚以上になって管理が大変だなと…
おかしな質問だと思いますが紙の上でコードを見たい場合の何かいい方法というか
ありますか?PCで見たらいいジャン以外の解答お願いsます。
0448デフォルトの名無しさん
2016/03/05(土) 19:06:27.21ID:we7bVWIM0449デフォルトの名無しさん
2016/03/05(土) 19:06:59.55ID:AFManh/H0450デフォルトの名無しさん
2016/03/05(土) 19:09:14.46ID:e8RWR+IRこう言うプリンタを買う
0451デフォルトの名無しさん
2016/03/05(土) 19:38:02.28ID:TtOs9IsN0452デフォルトの名無しさん
2016/03/05(土) 19:49:09.91ID:AycCigCB紙に印刷した状態でソースファイルを見たい(画面ではダメ)、
ということの理由が分からないと的確なアドバイスをしにくいのよ。
せいぜい「袋とじ印刷」とかで枚数を半分にできるよ、程度。
0453デフォルトの名無しさん
2016/03/05(土) 19:59:16.68ID:W0S52lG40454デフォルトの名無しさん
2016/03/05(土) 20:04:24.57ID:e8RWR+IRよく見たまえ。
それらのプリンターは連続用紙に出力出来るのだ。
バラけない。つながっている。これ超重要。
0455デフォルトの名無しさん
2016/03/06(日) 10:48:15.27ID:jhZLS0bI寝転がって赤鉛筆で線をひきたい
むかしのひとはそうしてた
0456デフォルトの名無しさん
2016/03/06(日) 10:53:29.38ID:KcqVY3vA可能ですか?
・プログラム
char* hoge(void)
{
c[3] = {‘a’, ‘b’, ‘c’};
return c;
}
int main()
{
printf(“c=%c%c%c¥n”, hoge()[0], hoge()[1], hoge[2]);
}
・期待する出力
c=abc
0457デフォルトの名無しさん
2016/03/06(日) 10:54:01.50ID:KcqVY3vAchar* hoge(void)
{
c[3] = {‘a’, ‘b’, ‘c’};
return c;
}
int main()
{
printf(“c=%c%c%c¥n”, hoge()[0], hoge()[1], hoge()[2]);
}
・期待する出力
c=abc
0458デフォルトの名無しさん
2016/03/06(日) 11:02:34.19ID:XOL8ZJCs0459デフォルトの名無しさん
2016/03/06(日) 11:16:30.07ID:8wRYX6K4スコープ気をつけてな
0460デフォルトの名無しさん
2016/03/06(日) 11:27:07.14ID:E+dKwvyv0461デフォルトの名無しさん
2016/03/06(日) 11:28:01.59ID:E+dKwvyv0462デフォルトの名無しさん
2016/03/06(日) 11:52:07.79ID:Cas8cP9a他にはstatic char c[3]で残しておくとか
構造体で包んでコピーしてもらうとか
0463デフォルトの名無しさん
2016/03/06(日) 12:03:37.09ID:covgZswb>>456
構文レベルでは可能
ただし、使い方によっては見えない罠を踏むので
なるべく避けるのをオススメ
他人が書いたソースでこういうことしてたら「大丈夫か?」と疑うくらいでいい
関数に対する値の受け渡しを隅々まで理解してからまた考えるべき
0464デフォルトの名無しさん
2016/03/06(日) 12:38:09.56ID:ChxbUFgQ0465デフォルトの名無しさん
2016/03/06(日) 12:46:29.22ID:srxyPbvOいやハッキリ良くない方法だって伝えようよ
0466デフォルトの名無しさん
2016/03/06(日) 13:31:38.96ID:FS9V5eXL0467デフォルトの名無しさん
2016/03/06(日) 13:43:37.89ID:XOL8ZJCs0468デフォルトの名無しさん
2016/03/06(日) 13:48:25.44ID:E+dKwvyvconst char* string = "test"; は文字列リテラルで、静的記憶域期間になるじゃん。
char string[] = "test"; ってやるとstring配列に文字が入るだけで、stringは書き換えられる。
このときの"test"の部分で、stringとは別に文字列リテラルの領域って確保されるの?
string[]の領域が確保されるだけ?
規格の文字列リテラルのところ見てもはっきり書いてなくて良く分からないんだよね。
0469デフォルトの名無しさん
2016/03/06(日) 13:48:31.46ID:KcqVY3vAhoge()内のcはご推察のとおり char c[3]=…が正しいです。
一応構文的にはありですか。
実はそういう書き方がされているソースを某所でちらっと見かけて、
できるんだっけと思ったのが発端です。
普通に考えれば、>>458さんだと思うのですが(自分もたぶんそうします)
hoge()[x]で要素指定するような書き方を見たことなかったもので。。
ありがとうございました。
0470デフォルトの名無しさん
2016/03/06(日) 13:48:40.34ID:c4OrExdmコンパイル通るようにちょっと書き換えて実行してみた。
ちゃんと動作したよ。
#include <stdio.h>
char* hoge(void)
{
char c[3] = {'a','b','c'};
return c;
}
int main()
{
printf("c=%c%c%c\n",hoge()[0],hoge()[1],hoge()[2]);
}
>>465
難読化できるいい技術だと思うよ。
こういう書き方する人あまりいないから、解読されにくい利点が。
0471デフォルトの名無しさん
2016/03/06(日) 13:50:22.55ID:c4OrExdmまず、自分でコンパイルしてから書き込もうよ。
他人にコンパイルさせるほど君は偉いのかよ。
0472デフォルトの名無しさん
2016/03/06(日) 13:56:25.70ID:KcqVY3vAすみません、出先からスマホなもので…
>>470
コンパイルしての検証ありがとうございます。
やはりその書き方でも動作はするのですね!
わざわざどうもありがとうございます。
0473デフォルトの名無しさん
2016/03/06(日) 13:57:01.32ID:9mzH85Ox文字列定数は、文字列の先頭のアドレスを持つポインタ。
ポインタ値を保存しておけば使い回せる。
0474デフォルトの名無しさん
2016/03/06(日) 14:00:31.63ID:ChxbUFgQローカル変数cはスコープが外れた(この場合は関数が終了)したときに寿命が尽きる
hogeからリターンした後にcを使ってはいけない
0475デフォルトの名無しさん
2016/03/06(日) 14:04:08.14ID:ChxbUFgQ規格上は決まっていない
コンパイラは一文字づつ整数リテラルで代入して行くコードを生成しても良い
0476デフォルトの名無しさん
2016/03/06(日) 14:04:33.30ID:8wRYX6K4処理系によるんじゃないかなあ
アセンブルで出して見てみるといいかも
gccで試したら確保されてなかったね
0477デフォルトの名無しさん
2016/03/06(日) 14:05:39.10ID:E+dKwvyvだよね。
何も書いてないから未定義なんかなぁ
0478デフォルトの名無しさん
2016/03/06(日) 14:07:25.98ID:FS9V5eXLその変数がどの場所に確保されるかとは別の話じゃないの?
0479デフォルトの名無しさん
2016/03/06(日) 14:12:00.03ID:6nX+hqbcそれが気になるなら、static charで宣言すればいいだけだろ。
0480デフォルトの名無しさん
2016/03/06(日) 14:16:36.69ID:OtPRM7G0素朴な疑問
0481デフォルトの名無しさん
2016/03/06(日) 14:16:49.46ID:FS9V5eXLまだグローバル変数を使う方がマシだと思う。
望ましいのはその値を使うであろう呼び出し側で用意するやり方。
0482デフォルトの名無しさん
2016/03/06(日) 14:20:54.01ID:ChxbUFgQ「気になる」じゃなくて、気にしなきゃいけないんだよ
こう言うコード納品してきた外注には次の発注は無いぞ
教育がまるっきり出来てない証拠だからな
0483デフォルトの名無しさん
2016/03/06(日) 14:22:43.62ID:ChxbUFgQstrerrorとか知らないのか?
0484デフォルトの名無しさん
2016/03/06(日) 14:23:39.28ID:XOL8ZJCs0485デフォルトの名無しさん
2016/03/06(日) 14:24:54.52ID:FS9V5eXL0486デフォルトの名無しさん
2016/03/06(日) 14:41:02.46ID:tTnKJmeM>>481
>>482
http://www.c-lang.org/static.html
staticはこの場合不正解っぽいけど、そういう意味では>>481さんが正しい?
0487デフォルトの名無しさん
2016/03/06(日) 14:46:16.29ID:E+dKwvyvstatic変数をローカルにするかグローバルにするかという話なら、
圧倒的にローカル変数だよ。
無駄にスコープ広げるのバグの温床。
まず、ローカルにして不都合があるならグローバルにする。
0488デフォルトの名無しさん
2016/03/06(日) 15:00:57.34ID:tTnKJmeMどうなのかなとおもって
0489デフォルトの名無しさん
2016/03/06(日) 15:05:33.60ID:uNrtakxt0490デフォルトの名無しさん
2016/03/06(日) 15:07:08.29ID:tTnKJmeM戻り値としてアドレスをもらってれば別に使えるってわけね
難しく考えすぎてた
0491デフォルトの名無しさん
2016/03/06(日) 15:07:37.95ID:ChxbUFgQCのオブジェクト(変数)は寿命が決められてて、その寿命が尽きた後はアクセスしてはいけない
関数内でstatic無しに定義されたオブジェクトは関数から抜けたときに寿命が尽きる
従って、static無しに定義した変数のアドレスを返す事は、大抵の場合バグ
0492デフォルトの名無しさん
2016/03/06(日) 15:08:32.37ID:r0r1JwnR{
static char ary[] = {'a', 'b', 'c'};
return ary;
}
・この関数unique_array3()を使わない限り決してアクセスできず
・プログラム全体で必ず一意
という特性が得られるから、関数内static宣言は悪くないと思うよ。
でも俺は気が弱いので、
読み出し用に const char * を返す関数
変更用にインデクスと変更値を渡す関数
の2本立てにすることが多い。
結局、関数外ファイルスコープのstaticで配列を作ることになる。
0493デフォルトの名無しさん
2016/03/06(日) 15:52:04.24ID:PLwZCCubchar c[3];
};
struct foo hoge()
{
struct foo ret = { { 'a', 'b', 'c' } };
}
0494デフォルトの名無しさん
2016/03/06(日) 15:52:56.42ID:PLwZCCubstruct で包んで structごと値戻し
0495デフォルトの名無しさん
2016/03/06(日) 16:04:19.36ID:E+dKwvyv#include <stdio.h>
typedef struct SBase {
char data[3];
} SBase;
SBase Get(void) {
return (SBase){ 'a', 'b', 'c' };
}
int main(void) {
SBase base = Get();
printf("%c %c %c\n", base.data[0], base.data[1], base.data[2]);
}
0496デフォルトの名無しさん
2016/03/06(日) 16:09:47.86ID:VjAgo9Ed過去の遺物
0497デフォルトの名無しさん
2016/03/06(日) 16:11:31.08ID:ChxbUFgQダメだよ。お前のところ発注停止。
0498デフォルトの名無しさん
2016/03/06(日) 16:12:51.33ID:E+dKwvyvなんで?
0499デフォルトの名無しさん
2016/03/06(日) 16:12:52.41ID:tTnKJmeMダメだというのなら、その理由も書いた方がいいと思う
0500デフォルトの名無しさん
2016/03/06(日) 16:15:05.27ID:FS9V5eXL0501デフォルトの名無しさん
2016/03/06(日) 16:17:29.06ID:E+dKwvyvまあ{}もうひとつつけて
return (SBase){ {'a', 'b', 'c'} } としたほうが理解しやすいかもだけど。
C99から導入された複合リテラルで構造体と配列のリテラルをかける。
だからreturnで構造体のリテラルがコピーで渡される。
0502デフォルトの名無しさん
2016/03/06(日) 16:17:48.46ID:r0r1JwnR>>483 に対して「過去の遺物」というのは、
現在では strerror() を使わないってことかしら。
もしそうなら errno の値を文字列表現に直すのに、今風にはどうやるの?
0503デフォルトの名無しさん
2016/03/06(日) 16:30:36.62ID:ChxbUFgQサプオブジェクトの{}が省略出来るのは知らなかったわ
なんとエラーにならない どう言うルールで初期化されていくんだろう
規格書見てみるか
0504デフォルトの名無しさん
2016/03/06(日) 16:31:40.91ID:PLwZCCub使わなくなったら free してねと紳士協定
0505デフォルトの名無しさん
2016/03/06(日) 16:33:02.92ID:OtPRM7G0errnoはスレッドセーフ化してるのもありまっせ
0506デフォルトの名無しさん
2016/03/06(日) 16:41:28.41ID:VjAgo9Edstrerror_r( )
0507デフォルトの名無しさん
2016/03/06(日) 16:44:26.18ID:VjAgo9Edマルチスレッドをサポートしてて errno がスレッド毎に独立してない環境なんてあるのか?
0508502
2016/03/06(日) 17:03:55.23ID:r0r1JwnRstrerror_r() は「自前で文字列バッファを用意しとけ」関数だね。
説明を読むと strerror() の返り値が指す内容は変化してもいいのだから、
文字列コピーの形で入手する方が安全確実か。
この手の関数は適切なバッファサイズを決めるのに迷うので敬遠しがち。
規格で STRERROR_MAX みたいな値が定義されてると使いやすいんだけど。
0509デフォルトの名無しさん
2016/03/06(日) 19:03:40.73ID:OtPRM7G0errno(参照)ってスレッドとかない時代のもんですよ
0510デフォルトの名無しさん
2016/03/06(日) 19:28:46.19ID:VjAgo9Ed0511デフォルトの名無しさん
2016/03/06(日) 21:02:20.66ID:XbdPepQXそうじゃないプラットフォームもあるのかな?
0512デフォルトの名無しさん
2016/03/06(日) 21:18:41.24ID:OtPRM7G00513デフォルトの名無しさん
2016/03/06(日) 21:33:36.49ID:Plc89Ewoソースコードというのはないなあ…
0514デフォルトの名無しさん
2016/03/06(日) 21:36:28.51ID:Plc89Ewo>>383
0515デフォルトの名無しさん
2016/03/07(月) 16:05:11.80ID:4mLJRURf他の言語なら return で抜けると思うんですが。
void foo(void) {
if (1) {
}
0516デフォルトの名無しさん
2016/03/07(月) 16:09:57.55ID:bsch7N8T0517デフォルトの名無しさん
2016/03/07(月) 16:10:11.06ID:UrYl+g+Pもしかして returnに () が必須だと思ってる?
0518デフォルトの名無しさん
2016/03/07(月) 17:02:06.21ID:4mLJRURfありがとうございます。
0519デフォルトの名無しさん
2016/03/07(月) 19:17:45.95ID:LVGGCeesキーワードに色をつけてくれるエディタを使ってるのに間違える。
0520デフォルトの名無しさん
2016/03/07(月) 21:33:28.72ID:ITU3NQEE0521デフォルトの名無しさん
2016/03/07(月) 22:28:41.79ID:/GlzC9GE文盲かよ
0522デフォルトの名無しさん
2016/03/08(火) 08:53:03.00ID:s5rIDaChなんらかの深い寓意があるのだろう。
エラーメッセージを読んで意味を考えてみるのは基本だわな。
まるっきり見当違いの指摘がされてることもあるけど、それはそれとして。
0523デフォルトの名無しさん
2016/03/08(火) 09:31:14.35ID:O7LDACGrまわりも流石にそれで悩んでると思っていないし
0524デフォルトの名無しさん
2016/03/08(火) 09:40:25.35ID:XWLmUzV30525デフォルトの名無しさん
2016/03/08(火) 13:49:24.25ID:SiXffVURというのに噛みつかれた時は生命すら危うい
0526デフォルトの名無しさん
2016/03/08(火) 13:57:48.82ID:OcbuJ3vjけど統合環境のエディタの支援で大体解決しちゃってるしなぁ…
0527デフォルトの名無しさん
2016/03/09(水) 01:00:49.23ID:K3h75xfwその後で、確認せずに「 ところでさっきのって return; で返せるんだっけ?」と気軽に書き込んでしまった。
プログラマではないしC言語さわって数日ですしIDEとか高級なもん使ってないし
確認しなかったことは私の落ち度ですお許し下さい。
ところで、外部ライブラリは
./cofigure
make
make install
すればいいんですか?
0528デフォルトの名無しさん
2016/03/09(水) 06:41:25.94ID:duKMqVsEvoid は returnを省略出来るだけで、本来は、return で関数から抜ける。
途中で戻るのが嫌なら、gotoで、末尾まで飛べば良い。
0529デフォルトの名無しさん
2016/03/09(水) 07:01:08.83ID:MwWsmmvsその方式はLinuxとかのUNIX風の環境だね。
「ものによる」としか言いようがない。
configure スクリプトのあるディレクトリに INSTALL や INSTALL.configure て
名前のテキストファイルにインストール方法が書かれてるのが普通だけど…。
0530デフォルトの名無しさん
2016/03/09(水) 07:17:17.49ID:9Q4Jrqffこれって長いと思います?この2週間にどういう意味があるかわからない
勿論得意な人なら1日で終わると思うんですが甘いと思いますか?
0531デフォルトの名無しさん
2016/03/09(水) 07:35:39.42ID:ErbGwW1B長いかどうかは内容によるんじゃね
まあ大学のプログラム実習なんてそんなもんじゃないのかな
0532デフォルトの名無しさん
2016/03/09(水) 07:39:01.35ID:9Q4Jrqffそれが会社となるととてもじゃないけど遅いレベルですか?
0533デフォルトの名無しさん
2016/03/09(水) 07:49:49.34ID:CDqFudEs0534デフォルトの名無しさん
2016/03/09(水) 08:04:49.13ID:K3h75xfwわかりました。ありがとうございます。
>>529
パッケージ管理するやつとかあるのかと思いまして。
インストール方法を読んでやってみます。
ありがとうございました。
0535デフォルトの名無しさん
2016/03/09(水) 09:22:43.41ID:d3Fu6zEXOSとライブラリによるとしか言えん
0536デフォルトの名無しさん
2016/03/09(水) 09:35:09.49ID:JD1GGcwK0537デフォルトの名無しさん
2016/03/09(水) 10:48:44.03ID:9Q4Jrqffなるほどパソコン持ってない人もいますもんね
>>536
それは思わなかったですwやはり教授陣もプライドがあるんでしょうね
すいません話変わるんですが
作ったCファイルが他のフォルダにも勝手にできていて怖いんですが
原因分かりますか?
C\つまりCドライブ直下にCファイル(.cppファイル)を作成するようにしてるんですが
program files以下にも同じファイルが複製されています。
単に保存しただけなのにこういうことが起きるのは何故でしょう?
0538デフォルトの名無しさん
2016/03/09(水) 11:51:58.40ID:SwyqFb3jどうせVirtual Storeが有効なんだろ
0539デフォルトの名無しさん
2016/03/09(水) 12:42:31.91ID:3jrP1VBbそれが一番怖いわ
デスクトップ直置きなら馬鹿だね〜で済ませるけど
0540デフォルトの名無しさん
2016/03/09(水) 12:46:38.55ID:9Q4JrqffAdministratorでもprogram files以下だとアクセスできないんで
Cドライブ直下においてます。
0541デフォルトの名無しさん
2016/03/09(水) 14:14:09.68ID:PrCMlypj0542デフォルトの名無しさん
2016/03/10(木) 08:20:40.22ID:qI8v2Ic2pow(2.0,3)じゃないとダメなんですか?
何故int型だとエラーがでるのか分かりません
0543デフォルトの名無しさん
2016/03/10(木) 08:23:36.98ID:H4qLTvmHって宣言されてるから、
最初の引数にintが来るpowって識別子がなんなのかコンパイラに判断がつけられない
0544デフォルトの名無しさん
2016/03/10(木) 08:34:52.13ID:/KMYK0BP0545デフォルトの名無しさん
2016/03/10(木) 09:06:45.38ID:1sAKxE/Uttp://codepad.org/YnCisfbG
俺の使ったcodepadと >>542 のcodepadが違うのかな。
(codepadが複数あるか知らないが)
0546デフォルトの名無しさん
2016/03/10(木) 21:25:51.21ID:o/Qe45D50547デフォルトの名無しさん
2016/03/11(金) 00:52:33.94ID:ZLj/v9UAintはdoubleに暗黙変換できるから、
暗黙変換が悪いかどうかはおいといて、問題ないと思っていたが
0548デフォルトの名無しさん
2016/03/11(金) 01:19:34.50ID:d6vlWuqBコンパイラがこの関数に出くわしたときにはそのような情報を貰えてない。
分からないときはintと仮定してコンパイルする。
0549デフォルトの名無しさん
2016/03/11(金) 01:20:06.83ID:H0VzbVqvどうやって引数や戻り値の型を判断するか知ってる?
判断できれば勝手に変換してくれるし、判断できなければ変換しない
0550デフォルトの名無しさん
2016/03/11(金) 06:23:10.43ID:3C5JniC+オナニー範囲拡大かよ
0551デフォルトの名無しさん
2016/03/11(金) 08:37:30.81ID:RA7SR1beわからないとか言ってるのか謎すぎて困る
0552デフォルトの名無しさん
2016/03/11(金) 08:42:06.86ID:ZLj/v9UAそう
0553デフォルトの名無しさん
2016/03/11(金) 08:56:36.77ID:KJTBe9Dx0554デフォルトの名無しさん
2016/03/11(金) 22:53:51.25ID:ZLj/v9UAしかも、FAXじゃないと買えないみたいだし
0555デフォルトの名無しさん
2016/03/11(金) 23:24:16.19ID:ZQxUajjd>>545
0556デフォルトの名無しさん
2016/03/12(土) 01:01:50.31ID:0uUalLEO>>553
0557デフォルトの名無しさん
2016/03/12(土) 01:17:10.58ID:Zbyfy48z>>548
0558デフォルトの名無しさん
2016/03/12(土) 03:34:15.30ID:dB8yT5di前提が食い違ってたらそりゃ話も合わない
そりゃちゃんと宣言されたヘッダを読んでれば分かるわな
0559デフォルトの名無しさん
2016/03/12(土) 07:27:02.14ID:Zbyfy48z>>546
0560デフォルトの名無しさん
2016/03/12(土) 08:00:53.61ID:FZHgycnjcodepadの仕様の話をしているんだよ
>>545とそのリンク先読んでこい
0561デフォルトの名無しさん
2016/03/12(土) 11:29:26.27ID:dB8yT5di0562デフォルトの名無しさん
2016/03/12(土) 11:40:40.35ID:DuWmaw85そんな書き方じゃ伝わらないよ
0563デフォルトの名無しさん
2016/03/12(土) 11:52:14.30ID:tqFDIrhN0564デフォルトの名無しさん
2016/03/12(土) 12:15:41.20ID:DuWmaw85自分ではこうだといっても、相手に伝わらなければ、今回みたいな勘違いが生まれるよって話だよ。
0565デフォルトの名無しさん
2016/03/12(土) 12:30:19.55ID:Zbyfy48z>>546
0566デフォルトの名無しさん
2016/03/12(土) 12:35:00.11ID:DuWmaw85そういう答え方だから、プロトタイプ宣言があるという勘違いが生まれた。
一行だけ書かれたレスへのリンクだけ張って答えて、
伝わった気になっているからこうなったんだよ。
0567デフォルトの名無しさん
2016/03/12(土) 12:45:37.69ID:Zbyfy48zプロトタイプ宣言があるという勘違い?
どういう意味??
0568デフォルトの名無しさん
2016/03/12(土) 12:49:05.77ID:DuWmaw850569デフォルトの名無しさん
2016/03/12(土) 13:18:55.61ID:dB8yT5di0570デフォルトの名無しさん
2016/03/12(土) 17:04:44.12ID:L5RNWAGrcodepadでエラーが出る状態を具体的に示してくれれば
皆が同じ出発点から検討できるのだけど。
0571デフォルトの名無しさん
2016/03/12(土) 18:01:37.68ID:34i0brk60572片山博文MZ ◆T6xkBnTXz7B0
2016/03/12(土) 18:41:01.05ID:PAxzfn3Qオンラインコンパイラでや!
http://codepad.org
0573デフォルトの名無しさん
2016/03/12(土) 19:16:33.36ID:NuHx+xBn542はcodepadの言語選択でCではなくC++を選んでたってだけの話じゃね
0574デフォルトの名無しさん
2016/03/12(土) 22:51:44.12ID:L5RNWAGr確かにC++だと引数型のエラーが出るね。
ttp://codepad.org/07vW6oUl
0575デフォルトの名無しさん
2016/03/12(土) 23:16:03.42ID:Zbyfy48z0576デフォルトの名無しさん
2016/03/12(土) 23:48:44.33ID:dB8yT5diワロタ
0577デフォルトの名無しさん
2016/03/13(日) 06:39:28.83ID:9gULIumjttp://codepad.org/XEL2aNXg
0578デフォルトの名無しさん
2016/03/13(日) 18:52:20.94ID:N6Vxxlvc>>578
pow(float, float)
pow(double, double)
pow(long double, long double)
pow(float, int)
pow(double int)
pow(long double int)
のどれをあてはめていいかわからない,といってきている
http://cpprefjp.github.io/reference/cmath/pow.html
0579デフォルトの名無しさん
2016/03/13(日) 19:29:57.99ID:+iVrDraI0580デフォルトの名無しさん
2016/03/13(日) 23:46:05.60ID:sZxuUfy7例えば、「10」と入力したら、「1」と「0」に分解して、1、0の順番で認識させたいのですが、
どのようなプログラムになるでしょうか?
0581デフォルトの名無しさん
2016/03/14(月) 00:42:13.40ID:lJPXpy3H0582デフォルトの名無しさん
2016/03/14(月) 00:55:54.41ID:Ip84V2ob#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
printf("%d\n",a);
return 0;
}
0583デフォルトの名無しさん
2016/03/14(月) 01:00:09.04ID:lJPXpy3Hint a;
になってるけど いいの?
0584デフォルトの名無しさん
2016/03/14(月) 10:35:59.55ID:whR0RhU5バファに格納するだとか、scanfは危険だとか
こういうのについて、詳しく書いた本知りませんか?
0585デフォルトの名無しさん
2016/03/14(月) 10:45:22.09ID:V+E2qg+khttp://www.kouno.jp/home/c_faq/
0586デフォルトの名無しさん
2016/03/14(月) 13:18:23.88ID:lJPXpy3H調べないの?
0587デフォルトの名無しさん
2016/03/14(月) 18:33:14.83ID:Ip84V2obありがとうございます
0588デフォルトの名無しさん
2016/03/14(月) 19:55:40.01ID:fPs5qZap0589デフォルトの名無しさん
2016/03/14(月) 20:38:05.49ID:iw5fwB6nバカとか初心者には危険と言うことだろ
文脈も読めないのかよ
0590デフォルトの名無しさん
2016/03/14(月) 20:51:28.91ID:ibt6L1Mmたとえ玄人でも危険な関数が有るということだ
0591デフォルトの名無しさん
2016/03/15(火) 02:15:52.21ID:MTWz+w/w文脈という言葉を使いたかっただけのバカのサンプル
0592デフォルトの名無しさん
2016/03/15(火) 05:02:24.59ID:M+16HuVk0593デフォルトの名無しさん
2016/03/15(火) 06:02:48.06ID:C3AXaLpb大量に文字打ち込まれても、例外で落ちる位だろうしな。
0594デフォルトの名無しさん
2016/03/15(火) 07:28:08.47ID:7uNUDPY5バッファオーバーラン起きる可能性はないの?
0595デフォルトの名無しさん
2016/03/15(火) 07:30:21.05ID:MTWz+w/wID:M+16HuVkのようなバカじゃなければ、その可能性はゼロ
0596デフォルトの名無しさん
2016/03/15(火) 07:59:45.41ID:CzhQTntB0597デフォルトの名無しさん
2016/03/15(火) 08:22:23.07ID:MTWz+w/w文脈と言いたかっただけのバカの見本
0598デフォルトの名無しさん
2016/03/15(火) 08:28:19.79ID:MWaL28J40599デフォルトの名無しさん
2016/03/15(火) 08:31:14.53ID:CzhQTntBもちろん文脈は読めない w
0600デフォルトの名無しさん
2016/03/15(火) 08:42:08.25ID:MTWz+w/w文脈と言いたかっただけのバカの見本
文脈を読んだからこそ、scanfに言及した事を、ここに至っても読めてない
惨め過ぎるぞ、バカ
0601デフォルトの名無しさん
2016/03/15(火) 12:52:37.18ID:CzhQTntBバカすぎ w
0602デフォルトの名無しさん
2016/03/15(火) 13:26:48.97ID:tOaQpit1戻り値で変換できなかったことはわかっても、
バッファー戻して別のフォーマット指示を試すとかのリカバーはできんよね
sscanf なら 第1引数そのままで、第2引数かえたりしてトライするのだけだけども
0603デフォルトの名無しさん
2016/03/15(火) 17:12:41.77ID:XKvP/JZd0604デフォルトの名無しさん
2016/03/15(火) 17:28:40.69ID:YyhWMWyf「オーバーフロウでするスタック書き込みによる任意コードの実行」の実験してたら、
Windowsだとビタでリターンアドレス書き換えないと、
例外ぶん投げられて殺される上にリターンアドレス書き換えても例外で中断するんだよね。
任意コードの実行って例外ハンドラの乗っ取り(という方法を聞いただけ)でやってるのかな。
0605デフォルトの名無しさん
2016/03/15(火) 17:32:14.70ID:XKvP/JZd0606デフォルトの名無しさん
2016/03/15(火) 18:32:34.36ID:MTWz+w/w文脈読めないバカ w
0607デフォルトの名無しさん
2016/03/15(火) 19:08:23.63ID:RIoPtDsjバッファオーバーフロー?何それ
普通バッファオーバーランっていうんじゃないの?
0608デフォルトの名無しさん
2016/03/15(火) 19:18:22.57ID:ivyX2ptVバッファは突破してオーバーラン
0609デフォルトの名無しさん
2016/03/15(火) 20:54:01.64ID:2CrqxnpD>>599
文脈読んだと豪語したら、最初から書いてありましたとさ w
普通なら恥ずかしくて出てこれないレベル
0610デフォルトの名無しさん
2016/03/17(木) 18:54:38.16ID:qwQg5KrU覚えたての「文脈」なので使いこなせないバカ
0611デフォルトの名無しさん
2016/03/17(木) 22:29:48.12ID:yET/+Bsj何を書いても最初から書いてあったのを
文脈読んだどー
って言ってた事実は変えられないんだが w
0612デフォルトの名無しさん
2016/03/18(金) 08:06:39.80ID:hJggaWxo0613デフォルトの名無しさん
2016/03/18(金) 14:20:58.85ID:+V9oIlwr0614デフォルトの名無しさん
2016/03/18(金) 14:49:10.07ID:ZhAqSKHQ警告でないようにして
0615デフォルトの名無しさん
2016/03/18(金) 15:16:35.99ID:FJXuf9taコメント〜〜〜〜〜
#endif
0616デフォルトの名無しさん
2016/03/19(土) 15:35:03.37ID:TH+k+4Mfは?なめてんの??
0617デフォルトの名無しさん
2016/03/19(土) 18:46:43.23ID:+7UxHD3p0618デフォルトの名無しさん
2016/03/20(日) 13:55:55.35ID:X7hHDbSEGDBでステップ実行してみても*(NULL)は無視されるんですが、これはコンパイラが気を利かせて無視しているんでしょうか?
0619デフォルトの名無しさん
2016/03/20(日) 14:03:11.86ID:b1lneXIIprintf("%d",*(NULL));
にしたら無視されなくなるよ
0620デフォルトの名無しさん
2016/03/20(日) 14:08:11.01ID:X7hHDbSEということは演算を行うとセグフォるんですよね。
*(NULL); で値を参照しているからセグフォると今まで勘違いしていました。。
ポインタ変数の切り替えだけなら不正じゃないんですね。
0621デフォルトの名無しさん
2016/03/20(日) 14:17:28.53ID:b1lneXIIセグフォるタイミングは参照で合ってる
セグフォる最小コードにしたいとかであれば
volatileつきの変数に代入とかでもなると思うよ
volatileつければ最適化されずに確実に参照されるはず。
volatile int a;
a = *(NULL);
0622デフォルトの名無しさん
2016/03/20(日) 14:20:49.54ID:X7hHDbSEなんか騙し合いしてるみたいですね
volatile使うアイデアは無かったので試して見ます。ありがとうございます
0623デフォルトの名無しさん
2016/03/20(日) 14:22:52.90ID:X7hHDbSE0624デフォルトの名無しさん
2016/03/20(日) 14:34:00.13ID:2ByM0Cdf0625デフォルトの名無しさん
2016/03/20(日) 14:39:03.85ID:X7hHDbSE0626デフォルトの名無しさん
2016/03/20(日) 14:41:57.33ID:IxHxEO0wやっと言ってくれた、、、いやオレも言おうとは思ったんだけどねw
0627デフォルトの名無しさん
2016/03/20(日) 15:26:45.79ID:YlJ66Eyf0628デフォルトの名無しさん
2016/03/20(日) 15:27:10.86ID:Ad5KCdBQ0629デフォルトの名無しさん
2016/03/20(日) 16:07:38.53ID:YNMOH2/p0630デフォルトの名無しさん
2016/03/20(日) 16:12:38.31ID:2ByM0Cdfあ、セグるならいい気がしてきた
0631デフォルトの名無しさん
2016/03/20(日) 16:18:11.10ID:YNMOH2/p0632デフォルトの名無しさん
2016/03/20(日) 16:58:40.84ID:B3NGK1ug0633デフォルトの名無しさん
2016/03/20(日) 17:06:27.86ID:F85l2ARQ0634デフォルトの名無しさん
2016/03/20(日) 17:31:05.13ID:Jw6fHHdv0635デフォルトの名無しさん
2016/03/20(日) 19:51:53.77ID:l6d3jrye0636デフォルトの名無しさん
2016/03/23(水) 00:45:24.61ID:b66U0McChttp://hanabi.2ch.net/test/read.cgi/lic/1454165737/
0637デフォルトの名無しさん
2016/03/23(水) 04:29:51.53ID:I1sA7JH5俺は char* p = (char*) malloc(sizeof(char)*len+1); のようにmalloc(3)の戻り値をキャストしてるんだけど
外国の複数人が「malloc(3)はキャストするな!」って言うの。
その中の一人が根拠に上げたのが http://c-faq.com/malloc/mallocnocast.html で
たぶん「コンパイラからの警告が得られない」といった内容だと思うんだけど
ここの人達はキャストしない派?キャストしない方がCとしては良いコードなの?
0638デフォルトの名無しさん
2016/03/23(水) 06:46:48.49ID:FBcE/3NP紹介されたリンク先を読むと、
「キャストすると<stdlib.h>のインクルード忘れを見逃しやすくなる」と
書かれてるみたいだけど、キャストしない根拠としては弱いんじゃないかな。
最後の部分にもあるが、現在はプロトタイプ宣言のない外部関数を使うだけで
コンパイラから警告やエラーを出してもらえるから。
CのソースをC++コンパイラでコンパイルする時、C++ではキャストがないと
エラーになる(C++ではvoid*からの暗黙の変換はできない)ので
先手を取ってキャストしておくのが良い、という主張も見たことがある。
これも反対に、C++でコンパイルするソースにmalloc()が紛れ込んでいるのは
好ましくないから、コンパイル時に一度エラーを出させる方が安全、
という考え方もある。
個人的にはキャストはしない。
でもキャストしてるソースを見ても特に違和感もない。
どちらの流儀にもそれなりに理があるからね。
0639デフォルトの名無しさん
2016/03/23(水) 06:52:15.72ID:3O2Q3IpbCでキャストすることによるメリットが特に見当たらないように思われるし
でもC++では void * からの代入はキャストしないとエラーになるので
C++に慣れてる人が書くとキャストするだろうなあとも思う
0640デフォルトの名無しさん
2016/03/23(水) 07:16:10.65ID:I1sA7JH5なるほど。流儀の問題なのかな
すごい勢いで「you don't cast malloc」と言ってくるの
C++でコンパイル・エラーになると言ったら「C++は違う言語だ」だって
その通りだけどさ
0641デフォルトの名無しさん
2016/03/23(水) 07:39:07.48ID:2AMgDl2yなんかワロタ
0642デフォルトの名無しさん
2016/03/23(水) 08:54:43.43ID:LTRcZjfN怒られてキャストする派かな
0643デフォルトの名無しさん
2016/03/23(水) 09:34:13.92ID:XCA2ps0L単純に環境の違い?
0644デフォルトの名無しさん
2016/03/23(水) 09:45:57.15ID:ck1lVuwKコード読者への注意喚起だと思うんだよね
だから特にここ注意して読んでくれって時以外は
キャストしないほうがいいと思う
0645デフォルトの名無しさん
2016/03/23(水) 12:54:02.21ID:DRjXWvccどういう場合?
0646デフォルトの名無しさん
2016/03/23(水) 13:27:30.08ID:LTRcZjfNで わかりますか?
0647デフォルトの名無しさん
2016/03/23(水) 13:32:13.78ID:XCA2ps0Lそれキャスト一般の話?
malloc の戻りを 無キャストで怒られるケースって何だろう って流れだと思ってたが
0648デフォルトの名無しさん
2016/03/23(水) 13:49:07.92ID:LTRcZjfN0649デフォルトの名無しさん
2016/03/23(水) 13:57:32.01ID:LTRcZjfNとでも しとけば
コンパイル時に怒られるかどうかまでわからんけど
0650デフォルトの名無しさん
2016/03/23(水) 14:03:46.26ID:XCA2ps0L任意型のポインタから void* へ も警告が出る? (qsort の第一引数とかだけど)
0651デフォルトの名無しさん
2016/03/23(水) 14:16:54.47ID:DRjXWvccだから例を挙げてよ
0652デフォルトの名無しさん
2016/03/23(水) 14:56:48.45ID:LTRcZjfNこれでもわからんの?
0653デフォルトの名無しさん
2016/03/23(水) 14:58:41.33ID:LTRcZjfNせいぜい悩んでくださいな
0654デフォルトの名無しさん
2016/03/23(水) 15:03:27.90ID:XCA2ps0L一切事例を出さず、悩めとか投げっぱなしっていい身分だよね
0655デフォルトの名無しさん
2016/03/23(水) 16:23:48.40ID:LTRcZjfN0656デフォルトの名無しさん
2016/03/23(水) 17:41:53.23ID:ICosA8//つまり無い
0657デフォルトの名無しさん
2016/03/23(水) 18:25:42.21ID:cttIRKe80658デフォルトの名無しさん
2016/03/23(水) 18:33:13.71ID:YmFoTPQm0659デフォルトの名無しさん
2016/03/23(水) 21:25:59.61ID:8YZPE/ARbcc51 あたりは文句つけそうだがもう手元にない
0660デフォルトの名無しさん
2016/03/26(土) 22:35:37.39ID:wDQ5s2avむかーし、俺はGCCで入門したんだけど、その際に無変換で(char*)として受け取ろうとしたらエラーだったような。
以降、(char*)をmallocの頭に書いて受け取るのが習慣になってた。
今は書かない派が登場するまでに拮抗した状態だったのか。
悔い改める気もないけれど、勉強になりました。
0661デフォルトの名無しさん
2016/03/26(土) 23:04:06.80ID:SvzrOZwZ0662デフォルトの名無しさん
2016/03/26(土) 23:38:37.79ID:3Z6Od1jTそういう本質的でない部分にエネルギーと時間を取られてしまう
0663デフォルトの名無しさん
2016/03/26(土) 23:40:12.90ID:0JOMD2Tc0664660
2016/03/26(土) 23:52:26.45ID:wDQ5s2av相変わらず怪しい記憶を探れば、まだC++もObjectiv-CもFORTRANも付いていない、コレクションになる前のGCCだったけど。
0665デフォルトの名無しさん
2016/03/27(日) 01:47:54.10ID:MaOZ0xr60666デフォルトの名無しさん
2016/03/27(日) 06:54:25.68ID:KEbnfQgi0667デフォルトの名無しさん
2016/03/27(日) 15:05:38.30ID:fvqc9/NX0668デフォルトの名無しさん
2016/03/27(日) 17:33:29.30ID:OYer+Plz0669デフォルトの名無しさん
2016/04/03(日) 10:43:53.85ID:5Wc4cYeo環境はFreeBSD9.3 IA32で!
0670デフォルトの名無しさん
2016/04/03(日) 10:57:41.19ID:azZmmaKg0671デフォルトの名無しさん
2016/04/03(日) 15:22:41.35ID:hk27pqaZwhile(x < 10)
{
kansuu_a();
kansuu_b();
kansuu_c();
}
上記のループがあったとして、もし、割り込みなどでxが10以上になったらループを抜けるのですが
kansuu_b();の途中で、x = 10 と、条件が合った場合に、kansuu_b();も含めkannsuu_c();も最後まで実行されるのでしょうか?
よろしくお願い致します。
0672デフォルトの名無しさん
2016/04/03(日) 15:36:27.24ID:tmgxHwUn判定はループ内処理が一通り終わってから
途中でループから出たいなら、
if (x >= 10) break; を適時追加する
0673デフォルトの名無しさん
2016/04/03(日) 15:44:18.60ID:hk27pqaZやはりループ内処理が終わってからなんですね
ありがとうございました。
0674デフォルトの名無しさん
2016/04/03(日) 17:32:21.11ID:AtnrFOjrいきなり、組み込み? このレベルで
0675デフォルトの名無しさん
2016/04/03(日) 17:56:25.34ID:tmgxHwUnその手法が正当なのかは、質問の範囲ではない
0676デフォルトの名無しさん
2016/04/03(日) 20:00:16.64ID:AtnrFOjr0677デフォルトの名無しさん
2016/04/03(日) 20:08:45.49ID:1hzZ1h9p誰か分かりやすい日本語に翻訳頼む
0678デフォルトの名無しさん
2016/04/03(日) 20:12:30.47ID:H5B9gN5k非常脱出のようなことにはならない
変な抜け方するのは
setjmp longjmp や (OS依存? の)例外ハンドラ とか
atexit と exit() の組ぐらい
0679デフォルトの名無しさん
2016/04/03(日) 20:13:06.85ID:sB0jXNdb0680660
2016/04/03(日) 20:45:53.09ID:WYXG0bG70681デフォルトの名無しさん
2016/04/03(日) 20:46:34.14ID:WYXG0bG70682デフォルトの名無しさん
2016/04/03(日) 21:01:51.61ID:AtnrFOjr0683デフォルトの名無しさん
2016/04/03(日) 21:17:02.34ID:AtnrFOjr割り込みに異常に反応してしまったようだ すまんかった
0684デフォルトの名無しさん
2016/04/09(土) 12:30:12.22ID:DMfdkpDaそういう本質的でない部分にエネルギーと時間を取られてしまう
0685デフォルトの名無しさん
2016/04/09(土) 12:39:05.69ID:rws6B3un0686デフォルトの名無しさん
2016/04/09(土) 12:46:36.56ID:/4/Vu5/J0687デフォルトの名無しさん
2016/04/10(日) 13:39:56.19ID:DwnRNPVTその変数を使う場合関数の引数が必要なくなりますし、
プログラムも長くなりませんよね?
もちろんiやjみたいな走査するために使う変数はローカルで使用しますが…
0688デフォルトの名無しさん
2016/04/10(日) 13:43:48.31ID:lctucWPJ0689デフォルトの名無しさん
2016/04/10(日) 13:49:58.85ID:2Sp/+uDXiやjをローカル変数にする理由はなんですか?
その理由は他の変数には当てはまりませんか?
0690デフォルトの名無しさん
2016/04/10(日) 14:04:18.17ID:1wJYBBrT変数の値が変わると、それぞれの関数の内部処理が分岐して異なる処理を行っていた
書いた当人は体調を崩して最後までやり遂げなかった
引き継いだ時は死ぬかも知れないと思った
0691デフォルトの名無しさん
2016/04/10(日) 14:32:18.54ID:8QBZrgWf多分書き直した方が早いよねw
0692デフォルトの名無しさん
2016/04/10(日) 17:00:06.12ID:eUggSRfL0693デフォルトの名無しさん
2016/04/10(日) 18:30:07.32ID:DwnRNPVTプログラムって可読性増しませんか?はいソースって渡されて解読に時間費やしてる
んじゃ効率悪すぎだと思うんですが…
0694デフォルトの名無しさん
2016/04/10(日) 18:31:04.81ID:DwnRNPVT0695デフォルトの名無しさん
2016/04/10(日) 19:24:37.06ID:1wJYBBrTこのモジュール(実行単位)についてのドキュメント、
関数仕様書はこんな感じでした。
「初期処理」 初期処理を実行する
「メイン処理」 メイン処理を実行する
「終了処理」 終了処理を実行する
「異常処理」 異常処理を実行する
関数の引数 なし
関数の戻り値 なし
つまり、2万行のソースには全部で4個の関数がありました。
ホスト側の処理なので、クライアントの要求に応じて処理内容が変わります。
もう、いわゆるスパゲッティを遙かに超えてました。
何故こうなったかと言うと、関数一つ一つ、使用する変数一つ一つ
対応する詳細なドキュメントを本来は書かないといけなかった。
それが面倒だったのでしょう。書く時間がなかったというのも事実でしたけど。
記述内容をできるだけ減らすために、関数の数を少なく、
もちろん引数、戻り値なしで作る様になったらしいです。
内部はブラックボックスというか、ダンジョンというか・・
0696デフォルトの名無しさん
2016/04/10(日) 19:43:06.68ID:lctucWPJそれはそうなんだけど、そもそもグローバル変数を使わないだけで、読みやすくなるんだよね。
やるべきことをやらないでコメントでごまかす感じになるのは良くないと思います。
0697デフォルトの名無しさん
2016/04/10(日) 19:54:14.07ID:1wJYBBrTコメントを信じてしまうと、思わぬ落とし穴にはまる危険もある。
ソースを読んでいて、なんでこんな無駄なことをしているのだろうと
読んだ人が疑問に思うだろう箇所に、
「こういう事情・経緯があってこうせざるを得なかった。だから、直す場合は気をつけてね」
と書くのは良いと思う。
0698デフォルトの名無しさん
2016/04/10(日) 20:46:38.13ID:9f80ZgaW// もし動作したなら、これはポールによって書かれたコードだ。
// 動作しなかったら誰が書いたかわからない。
/*
* このコードがどう動作するのかわかったつもりでいるだろ。
* でも君にはわかんないよ。信じてくれ。
* 君がこのコードを「最適化」するのに充分な知識があると過信してるせいで
* 君はこれからいくつもの眠れない夜を過ごす事になるんだ。
* さぁファイルを閉じて何か違うことして遊んで来なさい。
*/
// コメントは書かない
// 説明しづらい
// だから読みづらいはず
# ==== このコードいじっちゃだめ。絶対だめ。いじったら蹴り飛ばしちゃうよ ===
0699デフォルトの名無しさん
2016/04/10(日) 21:02:30.92ID:B3wjguSX0700デフォルトの名無しさん
2016/04/10(日) 21:03:00.28ID:B3wjguSX0701デフォルトの名無しさん
2016/04/10(日) 21:19:42.51ID:v52RcnsN0702デフォルトの名無しさん
2016/04/10(日) 21:27:42.45ID:9f80ZgaW0703デフォルトの名無しさん
2016/04/10(日) 22:13:56.39ID:1wJYBBrTある有名テキストエディタをバイナリーダンプすると
プログラマーのぼやきの言葉が見つかる
リビジョンアップするたびに内容が変わるので
毎回楽しみにしていた。
0704デフォルトの名無しさん
2016/04/12(火) 23:00:53.29ID:HTKb5Qidその列挙する中身全部が有用とは限らない
かならずしも使うとは限らない有象無象を一行ですますことができるのが #include のいいところ
0706デフォルトの名無しさん
2016/04/12(火) 23:22:33.86ID:l+U7G4Kp0707デフォルトの名無しさん
2016/04/12(火) 23:50:12.11ID:HTKb5Qidすいません…
結局まとめることはできるんですか?
0708デフォルトの名無しさん
2016/04/12(火) 23:56:53.62ID:HTKb5Qidよく考えたら何となくわかった気がします。
これって哲学ですね。まとめて書いちゃったらそのまとめたくくりが大きな意味をもっちゃいますもんね
0709デフォルトの名無しさん
2016/04/13(水) 01:59:46.65ID:jupLzAcRinclude文をまとめたヘッダを用意してそれをinclude
0710デフォルトの名無しさん
2016/04/13(水) 07:56:46.74ID:vNSwsj+R0711デフォルトの名無しさん
2016/04/13(水) 11:58:19.52ID:1LLRw21Fex) b.h 中に a.h がないと都合が悪いケース
b.h
| /* インクルードガード pragma かもしれんし #ifdef かもしれん */
| #include "a.h"
| b.h で記述しようと思った本体
| /* インクルードガード #endif かもしれん */
0712デフォルトの名無しさん
2016/04/13(水) 12:05:54.44ID:vNSwsj+Rやるのが普通だからやっている前提で行う→実はやってなかった。
0713デフォルトの名無しさん
2016/04/13(水) 12:10:42.40ID:vN1MAMm80714デフォルトの名無しさん
2016/04/13(水) 12:31:30.68ID:1LLRw21F「順序反転でコンパイルは通るけどバグになる」 って読めるけど
どうやったら、そうなるんだろう… 直面したことないかも
0715デフォルトの名無しさん
2016/04/13(水) 13:05:46.83ID:gYwoKOnq自分は問題となったことはないけど
こういうリスクはあると思ってる。
---- headerA.h ----
#ifndef PATH_MAX
#define PATH_MAX 1024
#endif
---- headerB.h ----
#ifndef PATH_MAX
#define PATH_MAX 512
#endif
0716デフォルトの名無しさん
2016/04/13(水) 13:31:21.17ID:1LLRw21F確かに、おこりうるパターンやね
固定長の配列に PATH_MAX で一意に決めてるつもりが
include 順によって実は一意に定まってなかったって、これは問題点の追跡がしんどいな
0717デフォルトの名無しさん
2016/04/13(水) 15:21:54.03ID:7YNUgm8C*p = 1 //ok
ポインタの使い方がよくわからないのですが、
初期化時は、int型変数のアドレスを指定しないと駄目で、初期化後(定義後?)は*で変数のようにアクセスできるので、
定義時と、定義後の*の意味は違うということでいいでしょうか?
また、初期化時は任意のアドレスを指定(&iなど)した方がいいんでしょうか?
必要なければ、定義時のアドレスをそのまま使ってもいいんですか?
0718デフォルトの名無しさん
2016/04/13(水) 15:31:28.67ID:fbVZAWIt定義時は、 int* の pだよ
ただし int* a, b; ってやってもbはただのintだから注意ね
そしてその例だと *p が確保されてないからいろいろまずい
まあ例として出しただけでいろいろ端折ってるのかもしれないけど
0719デフォルトの名無しさん
2016/04/13(水) 15:38:30.89ID:1LLRw21F初期化とそれ以外とで意味が異なってるので、ややこしくなってる
int *p = 1; ← ポインタの初期化 (アドレスの 1 にしようとしてる)
.....
*p = 1; ← 指し先に 1 を代入 (正当な存在する場所かどうかは不明)
---------------------
int a, b;
int *p = &a;
これに続いて
*p = 1; と書くと、結果的には a = 1; が実施されている
このまま
p = &b;
*p = 1;
と記述すると、結果的には b = 1; が実施されている
0720デフォルトの名無しさん
2016/04/13(水) 16:12:08.01ID:s5MRiDQ8Cを作った人たちは頭が良かったから
初期化と式内で実際に使うときの、見た目だけ無理やり合わせたんだよ
おかげでプログラマは頭を使わずに済むのだ
ね、C言語って素敵でしょ
0721デフォルトの名無しさん
2016/04/13(水) 16:22:02.19ID:7YNUgm8C領域を指定しないと、何入ってるか想像できないんですか?
型に応じたサイズを未使用領域へ勝手に割り当てることはないということですか?
0722デフォルトの名無しさん
2016/04/13(水) 16:24:21.08ID:fbVZAWItそうだよ、int a; とかやってaの内容をいきなり使わないでしょ、それと同じ。
0723デフォルトの名無しさん
2016/04/13(水) 16:35:46.13ID:1LLRw21F型に応じたサイズを未使用領域へ勝手に割り当てることはない
int *p; *p = 1;
は、どこ指してるか不明な領域に代入操作していて
たまたま、動いているように見えるかもしれないし、
ソフトがコア吐いて落ちるかもしれないし
鼻から悪魔が出るかもしれない
0724デフォルトの名無しさん
2016/04/13(水) 16:35:51.58ID:7YNUgm8Cあと、オブジェクト指向におけるnewはc言語でいうcalloc mallocと考えていいのでしょうか?
0725デフォルトの名無しさん
2016/04/13(水) 16:40:12.36ID:fbVZAWIt0726デフォルトの名無しさん
2016/04/13(水) 17:14:59.52ID:7YNUgm8Cポインタをインクリメントすると、
次のアドレスを指していきますが、
nullを返すと最後ですよね。
ここに動的に確保した領域をセットしてあげれば、動的配列となるのでしょうか?
でも、アドレスを指すためのメモリもただじゃないし違う??
0727デフォルトの名無しさん
2016/04/13(水) 17:17:54.71ID:1LLRw21Fそいうのを全て排除し、覚えることは最小限にして、
何でも書ける(= 全部書かないと動かない) のが C言語ですし
そういうのが欲しければ別の言語の使用を検討したほうが
精神衛生上良いかもしれない
0728デフォルトの名無しさん
2016/04/13(水) 17:19:06.51ID:fbVZAWIt伸び縮みさせたいならrealloc使う、後ろに領域なければ別の場所に確保して内容コピーされる
0729デフォルトの名無しさん
2016/04/13(水) 18:24:55.46ID:7YNUgm8Cでは、文字列リテラルをchar* strに代入すると、
charの先頭アドレスのみが置かれるんでしょうか。次のアドレスの参照を保持しているわけではない?
インクリメントした後は、指しているアドレスを戻さないといけない?
あと、そうだとすると、巨大な文字列を代入しようとしたとき、メモリ合計上では余っていても、領域が分断されている場合は確保することができないということになるんでしょうか。
すみません、勉強不足なので調べます。
0730デフォルトの名無しさん
2016/04/13(水) 18:39:14.11ID:fbVZAWIt何がしたいのかよくわからんが、実験コード書いてどんどん動かしてみりゃいい
ちなみにサイズ分移動する、そのサイズはコンパイル時に決定する
アドレスそのものはただの数字なので、使うなら保存すりゃいいし
別の変数にコピーして使うことだってできる
0731デフォルトの名無しさん
2016/04/13(水) 19:04:05.57ID:P6uESFcm添え字変数があります int i = 0;
添え字変数を インクリメントします i++
添え字を使って配列に代入します a[i] = なんとか
インクリメントの過程で
用意した10個分の器を突破して代入したらどうなるの?
→未定義 決して領域を拡張してくれるなんてことはない
0732デフォルトの名無しさん
2016/04/13(水) 21:06:57.20ID:Wc5oLkczどういう書き方をするのが一般的?でしょうか。
下記はa,b,cのような一文字変数ですが、実際は変数名が長くて
ディスプレイの端に届きます…。
if(a==1 && b==2 && c==3 && d==4){
i++;
}
0733デフォルトの名無しさん
2016/04/13(水) 21:21:25.02ID:01Fp5Zkb&&は前にあったほうがいいかも
0734デフォルトの名無しさん
2016/04/14(木) 00:33:41.05ID:z3BF5zjOif(a==1 &&
b==2 &&
c==3 &&
d==4 ){
i++;
}
かな。
0735デフォルトの名無しさん
2016/04/14(木) 01:07:19.94ID:Hz0vtyFd>>734
これは、結構人でバラバラですか?
0736デフォルトの名無しさん
2016/04/14(木) 01:48:17.50ID:R2UuQJrM個人の内面的な信仰心はそっとしとこう
0737デフォルトの名無しさん
2016/04/14(木) 03:05:37.79ID:AcxcRoSD0738デフォルトの名無しさん
2016/04/14(木) 03:20:02.46ID:R2UuQJrMそうじゃないんですね。
ちなみに私は、後ろに書く派
0739デフォルトの名無しさん
2016/04/14(木) 04:28:05.22ID:NR3Tjvfq0740デフォルトの名無しさん
2016/04/14(木) 07:12:49.63ID:MF2aLNAH文字列定数は、先頭のアドレス値を持つ、ポインタ定数。
文字列の内容は無くなったりしないが、先頭のアドレスが判らなくなった時点で、事実上使えなくなる。
0741デフォルトの名無しさん
2016/04/14(木) 07:15:58.10ID:J7AkptOMそもそも比較演算子の話じゃないし...
0742デフォルトの名無しさん
2016/04/14(木) 08:22:14.74ID:Y6Qtie59個人的には論理演算子は行の先頭に書く派。
でも、前の行の行末に書く気持ちも理解できる。
「改行の後もまだまだ続くよ」
0743デフォルトの名無しさん
2016/04/14(木) 08:26:12.54ID:qdE9CW7g0744デフォルトの名無しさん
2016/04/14(木) 12:30:39.65ID:5f4G3Aw20745デフォルトの名無しさん
2016/04/14(木) 12:44:59.76ID:h3KiwqeP0746デフォルトの名無しさん
2016/04/14(木) 13:44:48.67ID:NR3Tjvfq0747デフォルトの名無しさん
2016/04/14(木) 16:09:09.04ID:oJ3K84zWいった宗教戦争になるんじゃね?
読み込むときにきちんと構文解析まで
してくれる奴使えば各種書式スタイルの
切り替えなんてボタン一発で出来るらしい。
50万位するらしいけど
0748デフォルトの名無しさん
2016/04/14(木) 16:20:55.42ID:5f4G3Aw20749デフォルトの名無しさん
2016/04/14(木) 16:49:19.23ID:3SneyASi0750デフォルトの名無しさん
2016/04/14(木) 19:12:15.44ID:pVIMEHPP無償のテキストエディタでもできるよ
0751デフォルトの名無しさん
2016/04/14(木) 19:22:36.22ID:gC/abIq/高機能なプリティープリンタ機能を付加するだけでエディタが50万で売れるんだ
よーし、パパ連休中に頑張っちゃおうかな w
0752デフォルトの名無しさん
2016/04/14(木) 19:42:11.68ID:f1hhftJp各種書式スタイルっていうほどたくさんあるのかね‥
0753デフォルトの名無しさん
2016/04/14(木) 19:50:23.23ID:BnC75/K2indentコマンドのオプションを見れば・・・
山ほどある
0754デフォルトの名無しさん
2016/04/15(金) 22:48:49.82ID:zl6YVf4aたいていの質問ならさらっと答えられる人ってもちろん業務でC使ってる
からだろうけど最終目標みたいなのはあるんですか?
何でも知ってるなーって感じの人が目指すところってどこにあるんでしょう?
0755デフォルトの名無しさん
2016/04/15(金) 22:56:08.43ID:HTsiRdusその道具を使って何を作るか、どう作るかのほうに注力したいね
0756デフォルトの名無しさん
2016/04/15(金) 23:00:08.91ID:zl6YVf4a何を作るか考えるときに車輪の再発明に陥る事ってないですか?
その回避方法とか教えていただければ。
0757デフォルトの名無しさん
2016/04/15(金) 23:13:07.68ID:HTsiRdus似て非なる場合に車輪の再発明しているかもしれんが、理想より納期
0758デフォルトの名無しさん
2016/04/15(金) 23:17:50.93ID:zl6YVf4aなるほど
普段気づいた事とかってノートに書いてます?
例えばC言語での新たな発見とか…
0759デフォルトの名無しさん
2016/04/15(金) 23:24:03.99ID:HTsiRdus小さいエッセンスだけを抽出したソースコードを、フォルダにまとめておいてるぐらいかなぁ?
(ファイル名でなんとなく概要がわかるようにはしてるけど、 これなんだ? というのもあるw)
状況にもよるし、人それぞれだろうとは思うが 参考になれば
0760デフォルトの名無しさん
2016/04/15(金) 23:35:39.81ID:zl6YVf4aメモ取らないんですか確かにメモ取って集めてもそれは本に過ぎない気もします。
でもいいすね仕事でC言語触れるなんて…w
チーム開発において手抜きの方法、効率化とかって何かあります?
もちろん既存のツールを最大限使うとかはありますが対人間要素など
広い視野で。
0761デフォルトの名無しさん
2016/04/15(金) 23:55:13.35ID:goHZ67UE桃鉄の作者、さくまあきらも言っていたが、
仕事ではたいてい、言った言わないで、証拠が無くて、もめる
だから、必ず証拠の書き込みを、優先する。
書き込みが無かったら、言わなかったという扱い
このルールを採用すると、もめ事が減る
0762デフォルトの名無しさん
2016/04/16(土) 09:04:51.98ID:SgsvO2FJ下の立場だと濡れ衣着せられることもあってそういう時って仕事辞めたく
なりますよね…
0763デフォルトの名無しさん
2016/04/16(土) 09:30:17.19ID:n32HsPrI0764デフォルトの名無しさん
2016/04/17(日) 10:08:14.00ID:J9sWRtNNPOSIXの時刻処理の構造体のマクロについてだが
#ifdef __USE_GNU
/* Macros for converting between `struct timeval' and `struct timespec'. */
# define TIMEVAL_TO_TIMESPEC(tv, ts) { \
(ts)->tv_sec = (tv)->tv_sec; \
(ts)->tv_nsec = (tv)->tv_usec * 1000; \
}
# define TIMESPEC_TO_TIMEVAL(tv, ts) { \
(tv)->tv_sec = (ts)->tv_sec; \
(tv)->tv_usec = (ts)->tv_nsec / 1000; \
}
#endif
これどっちかのdefine消さないとループになっちゃうよね?
0765デフォルトの名無しさん
2016/04/17(日) 11:08:39.41ID:9RtFA8P00766デフォルトの名無しさん
2016/04/17(日) 11:19:18.49ID:J9sWRtNN0767デフォルトの名無しさん
2016/04/17(日) 11:21:55.44ID:L0n2/yYV他に何か言うことないの?
0768デフォルトの名無しさん
2016/04/17(日) 11:33:05.19ID:J9sWRtNNtimeval構造体はtimespec構造体に
timespec構造体はtimeval構造体に変換されるだろ
俺の勘違いか?
0769デフォルトの名無しさん
2016/04/17(日) 11:35:36.47ID:MXiE5eIT0770デフォルトの名無しさん
2016/04/17(日) 11:39:27.84ID:J9sWRtNNdo {a ^= b; b ^= a; a ^= b;} while (0)
俺はこの程度で勘違いするレベルなんだ
マクロはさっぱり分からなかった
0771デフォルトの名無しさん
2016/04/17(日) 11:42:59.84ID:J9sWRtNNサンクス
0772デフォルトの名無しさん
2016/04/17(日) 18:16:12.66ID:QfnURbDg0773デフォルトの名無しさん
2016/04/17(日) 18:37:41.00ID:qbPhCdn+正式なテスト方法に悩むならともかくデバッグだったらなんとでもなると思うが
0774デフォルトの名無しさん
2016/04/17(日) 19:09:46.30ID:QfnURbDgデバッガでブレイクポイントに止まらんとです
関数指定では止まったんだけど関数内の指定行では素通りしてしまうのです
0775デフォルトの名無しさん
2016/04/17(日) 20:41:45.06ID:aon4BAjF/*static*/
にしたら止まるかも、関数内で
0776デフォルトの名無しさん
2016/04/17(日) 21:43:20.32ID:Ri3wwcor最適化し過ぎてんじゃないと?ばってん
0777デフォルトの名無しさん
2016/04/18(月) 09:18:35.56ID:looFcgiP飛ばされることがある
0778772
2016/04/18(月) 10:32:38.66ID:k47wJ5ZZちなみにコンパイラはccでsolarisです
>>775さんの言うようにifdefとか使ってstatic外すのが早いですかね
0779デフォルトの名無しさん
2016/04/18(月) 10:49:13.39ID:looFcgiP0780デフォルトの名無しさん
2016/04/18(月) 12:15:33.30ID:k47wJ5ZZ宣言も実体も.cファイルにあります
0781デフォルトの名無しさん
2016/04/18(月) 12:26:47.52ID:OvHIqTOi見てみたほうが早そう
0782デフォルトの名無しさん
2016/04/18(月) 12:31:26.88ID:looFcgiP変だなあ、static外して問題が無くなるのかも知りたいな
0783デフォルトの名無しさん
2016/04/18(月) 13:19:06.62ID:Jl/B9TZoccでコンパイルしてgdb使う、みたいなのはよくないかも
0784デフォルトの名無しさん
2016/04/18(月) 15:46:58.55ID:ErdsNVpNおみゃ熊本だがや?
地震はどーもにゃーのか?
0785デフォルトの名無しさん
2016/04/18(月) 15:50:10.19ID:yb7Uc/LD0786デフォルトの名無しさん
2016/04/18(月) 19:42:35.80ID:h2Yzyofc0787デフォルトの名無しさん
2016/04/18(月) 23:57:10.34ID:EV7F0j6L0788デフォルトの名無しさん
2016/04/19(火) 06:11:08.50ID:DxOQ7Q1K> ccでコンパイルしてgdb使う、みたいなのはよくないかも
何故?
0789デフォルトの名無しさん
2016/04/19(火) 07:46:44.67ID:gMT1daXa実行結果やハングした場所でバグの箇所を判断してたわ。
0790デフォルトの名無しさん
2016/04/19(火) 08:35:05.62ID:o4vMvrvgそれでは試験作業ですらないだろう。
0791デフォルトの名無しさん
2016/04/19(火) 08:38:05.12ID:SvHoNoSF0792デフォルトの名無しさん
2016/04/19(火) 13:12:07.31ID:q+Olin0wいまsolaris使えないので確認できないけど、ccとgccを混在しない方がいいよねってぐらい
0793デフォルトの名無しさん
2016/04/19(火) 13:23:08.66ID:ygWYJ2CYそれ25年くらい前にハマったわ
0794デフォルトの名無しさん
2016/04/19(火) 13:30:53.01ID:p1DLuv4Uccはgccのコンパイルするためだけに使ってたなw
0795デフォルトの名無しさん
2016/04/20(水) 20:22:28.61ID:3/WxgUSn倍にできますよね?そうなると掛け算を一瞬でできるんじゃないですか?
例えば10万ケタ×1073741824は本来なら100万回の掛け算が必要ですが
30ビット左にずらせばいいだけなので30回の処理ですみます。
あれ?そう考えるとスーパーコンピュータって必要ですか?
0796デフォルトの名無しさん
2016/04/20(水) 20:24:28.16ID:3/WxgUSn一瞬で掛け算が終わる。これってすごくないですか?
0797デフォルトの名無しさん
2016/04/20(水) 20:28:13.96ID:sZH76cZn0798デフォルトの名無しさん
2016/04/20(水) 20:30:29.69ID:3/WxgUSn使ってないですよね?使えばいいのに
0799デフォルトの名無しさん
2016/04/20(水) 20:41:17.48ID:sZH76cZn2^n以外を使う乗算はどうするの?
0800デフォルトの名無しさん
2016/04/20(水) 20:45:24.26ID:3/WxgUSnそれは簡単ですよ
×3はa+2a
×5はa+4a
×7は8a-a
0801デフォルトの名無しさん
2016/04/20(水) 20:46:06.26ID:3/WxgUSn「ビット演算子を用いた高速計算方法について」
0802デフォルトの名無しさん
2016/04/20(水) 20:46:44.84ID:1rGPQiSA100進数なら、お尻に0を書き込めば100倍
かけ算するときに、その乗数に合わせて、
扱っている数値の基数を動的に切り替えるような
計算機作ったら良いんじゃない?がんばれw
0803デフォルトの名無しさん
2016/04/20(水) 20:48:10.14ID:fsvlQikDx2352 とか x 512324 はどうするの?
0804デフォルトの名無しさん
2016/04/20(水) 20:50:19.68ID:3/WxgUSn分解すればいいんですよ。
0805デフォルトの名無しさん
2016/04/20(水) 20:57:39.54ID:r07pzD8i0806片山博文MZ ◆T6xkBnTXz7B0
2016/04/20(水) 21:00:26.90ID:HDtf39ye1.C:=0、D:=Bとおく。
2.Bを二進数にする。
3.Bのビット0が1であればCにDを加算する。
4.Dを二倍する。
5.Bのビット1が1であればCにDを加算する。
6.Dを二倍する。
7.Bのビット2が1であればCにDを加算する。
以下、Bのすべてのビットについて繰り返す。
0807デフォルトの名無しさん
2016/04/20(水) 21:02:27.26ID:EM73E2Zf乗算器の所要クロックが加算器の所要クロックの掛け算倍になるわけないだろ
0808片山博文MZ ◆T6xkBnTXz7B0
2016/04/20(水) 21:03:22.80ID:HDtf39ye(誤)1.C:=0、D:=Bとおく。
(正)1.C:=0、D:=Aとおく。
0809片山博文MZ ◆T6xkBnTXz7B0
2016/04/20(水) 21:09:50.43ID:HDtf39ye0810片山博文MZ ◆T6xkBnTXz7B0
2016/04/20(水) 21:16:49.48ID:HDtf39ye計算するより遅くなると思う。
0811デフォルトの名無しさん
2016/04/20(水) 21:24:28.03ID:Jmz22TMT今時のは乗算器内蔵だから、32 bit の掛け算も一瞬。
0812デフォルトの名無しさん
2016/04/20(水) 21:28:24.98ID:/MyWq4P0亀レスですみませんがstatic外したら止まります
0813片山博文MZ ◆T6xkBnTXz7B0
2016/04/20(水) 21:34:13.26ID:HDtf39ye0814デフォルトの名無しさん
2016/04/20(水) 21:58:51.62ID:1PUcpHsehttp://hayabusa8.2ch.net/test/read.cgi/news/1460990224/
※「tefu」とはこの人です。
自称小学生「(安倍総理は)どうして解散するんですか?」、慶応SFCのtehuさんと、菅直人の息子と接点を持つ青木氏が代表を務めるNPO法人「僕らの一歩が日本を変える」が関与を認める。
http://korokial.com/archives/2025
【速報】自称小学4年生が作った安倍政権批判サイトはTehuとNPO法人「僕らの一歩が日本を変える」が仕掛けたステマだった
http://netgeek.biz/archives/25581
0815デフォルトの名無しさん
2016/04/20(水) 22:09:26.28ID:3/WxgUSn掛け算より加算回数が多くなるんだなー
0816デフォルトの名無しさん
2016/04/20(水) 22:22:57.86ID:3/WxgUSnどういう半導体が魅力的なんですか?
半導体は集積度からもう限界達してるっぽいですけど
0817デフォルトの名無しさん
2016/04/20(水) 22:28:44.31ID:1rGPQiSA0818デフォルトの名無しさん
2016/04/21(木) 12:58:25.86ID:w5Z3WEgDint ungetchr(int ch)の
chって何が語源でしょうか?
関数はスタックに数字をエンキューするような関数です。
0819デフォルトの名無しさん
2016/04/21(木) 13:05:59.15ID:ne9homxy(なお、母音は落とす傾向) 元は character でしょ
0820デフォルトの名無しさん
2016/04/21(木) 19:20:57.41ID:w5Z3WEgD変数の意味が分からない参考書とか絶滅して欲しい。
0821デフォルトの名無しさん
2016/04/21(木) 19:29:07.29ID:NkUsQZeW0822デフォルトの名無しさん
2016/04/21(木) 20:41:02.42ID:lMrhGQ0gいや数値じゃなくて文字だよ
0823デフォルトの名無しさん
2016/04/21(木) 21:18:12.14ID:BUxy1JL6そういうどうでもいいことにエネルギーと時間を浪費させられるんだ
C言語なんか週末勉強会で取り上げられることなんかないし
求人を見てもオワコンメーカーかパチンコの仕事しかねえわ
メーカーの仕事なんか完全に終わってるからな
エクセルパワポのドキュメント作成と下請け管理しかしない
クリエイティブという言葉からは最も遠い所にあると思っていい
Macを使ってる職場なんか皆無やぞ
アメリカではプログラマーの年収が1000万だというのに、
日本では上記雑用しかしないSE(笑)とかいう職種が600万貰ってるせいで
下請けプログラマーは400万しか貰えない
その結果日本のソフトウェア産業の国際競争力は最底辺になってしまって馬鹿にしていた
馬鹿チョンカメラメーカーにすら負けてしまったしソニーはアイホンを生み出せなかった
自動車の自動運転技術もGoogleに先を越されてしまったしこれからソフトウェアの重要性が
増すにつれ日本メーカーの存在感はますます薄くなっていくだろう
全ては技術の蓄積を放棄し既得権益にしがみつき目先の利益を優先したメーカーの人間のせい
そもそも自分の作ったソフトウェアをたくさんの人に使ってもらいたいとか
革新的なソフトウェアで世の中を変えたいとかそういう純粋な気持ちで理系を志したんじゃないのか
進捗表と一日中にらめっこして下請けに圧力を掛ける仕事で満足してしまうような
低俗な人間の集まりが日本のメーカーだ
そしてそういう現場から離れるためにはC言語なんていうオワコン言語をやってはいけない
研究室の教授に薦められるままオワコンメーカーに就職してはいけない
0824デフォルトの名無しさん
2016/04/21(木) 21:18:59.17ID:BUxy1JL6ttp://itpro.nikkeibp.co.jp/atcl/column/15/051800124/051800001/?ST=ittrend
0825デフォルトの名無しさん
2016/04/22(金) 15:07:28.35ID:Fd5Rfi8R0826デフォルトの名無しさん
2016/04/22(金) 20:47:17.04ID:TT82zXSl0827デフォルトの名無しさん
2016/04/22(金) 21:54:20.33ID:J9/jo3Xyパッケージ?のURLを逆に書く意味って何でですか?
current/donw3/down2/donw1/root
こんな感じで。
どういうことですか?
0828デフォルトの名無しさん
2016/04/22(金) 21:54:55.63ID:J9/jo3Xycurrentが一番したです。
0829デフォルトの名無しさん
2016/04/23(土) 00:29:13.14ID:Nt0JgD2+com/company/prj
こんなのなら普通に見るけど
その逆なの? 見たことない
0830デフォルトの名無しさん
2016/04/23(土) 01:05:19.73ID:TP7qzO4HURLは世界で一意で、重複しないから、
パッケージ名・モジュール名などの名前空間に使っても、他とかぶらないので安全
>>823
米国人の年収を、1,000万円にしたのは自公政権だぞ
1,000万円は、1ドル120円で、83,333ドル
民主党政権では、1ドル80円だったから、667万円しかない
自公のせいで輸入物価が上がって、貧乏人は何も買えないようになった
0831デフォルトの名無しさん
2016/04/23(土) 11:07:38.23ID:ZFNcEgTG開発環境に手を出すだけでも大変なのに
コンパイラだけでも大変なのに
他のに変えようかな
0832デフォルトの名無しさん
2016/04/23(土) 11:10:19.22ID:ZFNcEgTGアメリカと日本は違うで全て論破できる
0833デフォルトの名無しさん
2016/04/23(土) 11:25:42.77ID:lquf7+7b0834デフォルトの名無しさん
2016/04/23(土) 11:38:30.38ID:8AmVCCg3今はeclipse入れればいいだけじゃね
0835デフォルトの名無しさん
2016/04/23(土) 13:21:46.13ID:pe7A/Xk6>民主党政権では、1ドル80円だったから、667万円しかない
俺は自民に批判的だが、こういう間抜けは味方には要らんわ。
矛盾指摘されまくりで、こっちまで同種と思われるのは迷惑。
0836デフォルトの名無しさん
2016/04/23(土) 13:24:21.73ID:RLEkkPM/0837デフォルトの名無しさん
2016/04/23(土) 13:43:38.07ID:0n68wQyZ潰れた会社がどれだけあったと思ってんだよ
0838デフォルトの名無しさん
2016/04/23(土) 13:54:56.39ID:RLEkkPM/倒産する企業はもっと増えるよ。
0839デフォルトの名無しさん
2016/04/23(土) 13:57:50.60ID:RLEkkPM/円安関係ないんだな
そういう企業は、円高になったからって国内に回帰することはない。
円安で国として持っている力は押してしまっている。何にも良い事がない。
0840デフォルトの名無しさん
2016/04/23(土) 14:36:28.52ID:5fv/8zz4ただ,基本,消耗品ビジネスで消耗品は現地生産だったりする.円安?増収増益で会社はウハウハだったようだ,俺のところにはまわってこなかったが
0841デフォルトの名無しさん
2016/04/23(土) 15:15:21.45ID:wuTnXjCz会社つぶれたら、生保で、パチンコ生活。
0842デフォルトの名無しさん
2016/04/23(土) 15:17:31.88ID:ZFNcEgTGbuildしてrunしてもlaunch faild binary file...(略
になるから
素直にアンインストールしてパソコン買い換えるわ
0843デフォルトの名無しさん
2016/04/23(土) 15:24:49.90ID:ZFNcEgTG悪夢だわ
0844デフォルトの名無しさん
2016/04/23(土) 20:07:57.81ID:PVRMM1xg世界から消えて欲しい
0845デフォルトの名無しさん
2016/04/23(土) 21:13:40.76ID:SK3ygulk生保って書くと生命保険と思っちゃう。
0846デフォルトの名無しさん
2016/04/25(月) 21:51:33.93ID:0xpbBk2Njdkがでかいって何と比べて?
C++ の boost は1桁上だよ
0847デフォルトの名無しさん
2016/04/25(月) 23:12:48.52ID:bn/mODeUスレタイ読めたらCだって分かるけどな
0848デフォルトの名無しさん
2016/04/26(火) 09:22:20.85ID:+6Vecjaittp://anond.hatelabo.jp/20160424135253
0849デフォルトの名無しさん
2016/04/28(木) 19:27:01.77ID:a/gmwLrdhttp://hanabi.2ch.net/test/read.cgi/lic/1454165737/
0850マルマイケル ◆SpT0vOJDD4oz
2016/04/29(金) 19:25:09.20ID:q40Wzln/医療機器のプログラムなんかはミスで死人が出ると思うんだけど
プログラムを書いてる途中のテスト段階のコードが紛れ込んで、
その場合、特定の条件で誤作動起こしたりすることも考えられますよね。
実際そんなコードが紛れ込んでないことを確認する工程はあるんでしょうか?
特にC言語の場合低級言語だからコード数が半端なく長いですよね。
性善説に立って一定の条件を満たせばあとは大丈夫だろみたいな感じですか?
0851デフォルトの名無しさん
2016/04/29(金) 20:08:41.73ID:KKrgBx8+そういうのはリリース段階でコンパイル対象には
ならない。ちゃんとそれがコンパイルされていない
ことをチェックするテスト?
厳密にはそれはできないだろ。コンパイラのテスト
になってしまう。
そういうことまでにいちゃもん付けてくるクライアント
にはソース納品で自分でビルドしてくれって話になる
だろ
0852デフォルトの名無しさん
2016/04/29(金) 20:19:24.30ID:yivpch89そういう所でそんな不具合あったら、
大変なことになるな
0853デフォルトの名無しさん
2016/04/29(金) 20:30:15.75ID:KKrgBx8+そういう用途に使用されることは想定されていないと
書いてある筈
0854マルマイケル ◆SpT0vOJDD4oz
2016/04/29(金) 20:40:05.98ID:q40Wzln/ということはコンパイルで通ってしまった不本意なコードはもう
どうしようもないって事ですか?よく医療機器でミス起こってないですね…
誰かがやけになってとんでもないコード書いてしまったりとか想像するだけで
怖い。
0855デフォルトの名無しさん
2016/04/29(金) 20:46:09.31ID:Wtls6hahその上でテストするもんだ
0856マルマイケル ◆SpT0vOJDD4oz
2016/04/29(金) 20:51:27.70ID:q40Wzln/無茶では?
0857デフォルトの名無しさん
2016/04/29(金) 20:52:01.16ID:KKrgBx8+メモリエラーでブルースクリーンなひ弱な
PCと、X線撮影機とかCTやらMRIとか
強い電磁波を出す医療機器に囲まれた
環境で使われるコンピュータは(ソフト・ハード)
の強靭さという点でレベルが全然違うから心配
しなくても良いとは思ってはいるんだが...
結構医療現場でもPC最近見るなw
0858マルマイケル ◆SpT0vOJDD4oz
2016/04/29(金) 20:57:05.97ID:q40Wzln/そんなこといったら整備士とかいろんな仕事に言える事ですがね。
でもプログラムの場合ちょちょっと変えただけで機械をクラッシュさせる
事ができるんだからそういうケースは侮れなくないですか?
0859デフォルトの名無しさん
2016/04/29(金) 21:03:41.12ID:D58W+5CLC言語とかマイコンで動いていないから心配しなくていい。
0860デフォルトの名無しさん
2016/04/29(金) 21:05:02.32ID:oe77Lu/z0861デフォルトの名無しさん
2016/04/29(金) 21:07:28.69ID:QczfiLRqPLCでもC言語つかえますよw
0862デフォルトの名無しさん
2016/04/29(金) 21:08:28.26ID:KKrgBx8+そういうハードウェアを選ばなければいい
0863デフォルトの名無しさん
2016/04/29(金) 21:19:21.27ID:n6riXDRu0864デフォルトの名無しさん
2016/04/29(金) 21:21:37.96ID:Wtls6hah0865デフォルトの名無しさん
2016/04/29(金) 21:22:31.40ID:KKrgBx8+低水準言語で書けという話かな?
昔からあるねその種の話は。
0866マルマイケル ◆SpT0vOJDD4oz
2016/04/29(金) 21:24:11.57ID:q40Wzln/コードでは検出できなくても読み込んだ画像のビットマップ
がそういうウイルスコードだった場合ランタイムの時は遅いですからね。
0867デフォルトの名無しさん
2016/04/29(金) 22:00:25.33ID:KKrgBx8+Cプログラマは信用するな
って話?
ちょっと訓練すればだれでも使えるだろ>C言語
0868デフォルトの名無しさん
2016/04/29(金) 22:43:37.71ID:U0VcHFID0869デフォルトの名無しさん
2016/04/29(金) 22:53:44.39ID:NuB51tNSソフト起因に限らず、意図せぬ動作に備えて、ハード的に水際防止策を入れとくもんなんだけど。
0870デフォルトの名無しさん
2016/04/29(金) 23:18:22.16ID:QczfiLRqインターロック回路
0871デフォルトの名無しさん
2016/04/30(土) 00:56:26.91ID:+IKIlF8vいや、やっているよ、特定条件でデバッグ動作にならない確認は。
どこの誰でも必ずやっているかは知らないが。というか言語特有の問題じゃない。
0872デフォルトの名無しさん
2016/04/30(土) 01:54:31.78ID:xjJ1xOm/0873デフォルトの名無しさん
2016/04/30(土) 06:50:41.19ID:/MW2Imho0874デフォルトの名無しさん
2016/04/30(土) 13:27:13.62ID:421BlVaM0875デフォルトの名無しさん
2016/05/01(日) 07:35:48.94ID:QiyN6juHねつ造してまで、{}内コードに到達するかとか
チェックするテストは無意味
今時のコンパイラは条件が常に偽とか判定したら
すぐに報告してくるので、コンパイラ出力を見る
ほうが合理的
てか複雑な論理式を作るのはヘタクソか偏屈
出力アセンブリ通読はやったほうがいいだろ
ど〜せIntelプロセッサなんだろから
行数がCコードの100倍以上にになるのは比較
的珍しいだろうし
0876デフォルトの名無しさん
2016/05/01(日) 08:17:25.07ID:1nJ9seSe0877デフォルトの名無しさん
2016/05/01(日) 09:00:35.94ID:lKKwm3l+括弧内のテストなんじゃないの
0878デフォルトの名無しさん
2016/05/01(日) 10:21:48.72ID:QiyN6juHことを確認するほうが大事じゃないかと...
0879デフォルトの名無しさん
2016/05/01(日) 10:47:33.71ID:tKi6j9CTBitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
:
0880デフォルトの名無しさん
2016/05/01(日) 11:05:28.14ID:gPof6zqnint main(){
float f;
printf("浮動小数点数を入力してください :");
scanf("%f" , &f);
printf("%f",f);
return 0;
}
↑のソースをbcc32でコンパイルして実行し
123.567を入力すると
123.567001と帰ってきます
どういう理屈で最後に1が加わるのですか?
0881デフォルトの名無しさん
2016/05/01(日) 11:14:02.22ID:D365QZlp0882デフォルトの名無しさん
2016/05/01(日) 11:37:43.26ID:AqctS693分数を小数で表現して打ち切りを入れるのと同じ
有名な罠で、単純な加減乗除でも信じられないような結果が頻出する
0883880
2016/05/01(日) 11:47:16.67ID:gPof6zqn浮動小数 誤差 でググって調べました。
勉強になりました。
0884デフォルトの名無しさん
2016/05/01(日) 12:19:58.61ID:NIgoXmA1年金計算プログラムとか、端数が出てくるときは誤魔化されて
というわけか。
0885デフォルトの名無しさん
2016/05/01(日) 12:23:35.45ID:iq4naj/T0886デフォルトの名無しさん
2016/05/01(日) 12:26:07.29ID:eBy0niIg0887デフォルトの名無しさん
2016/05/01(日) 12:33:20.65ID:lKKwm3l+端数計算は普通明記されとるよ
0888デフォルトの名無しさん
2016/05/01(日) 12:34:31.70ID:PDZmFLD60889デフォルトの名無しさん
2016/05/01(日) 12:38:00.63ID:vPINUUTJ0890デフォルトの名無しさん
2016/05/01(日) 12:39:59.75ID:lKKwm3l+0891デフォルトの名無しさん
2016/05/01(日) 12:40:34.57ID:eBy0niIg切り上げ、切り捨て、四捨五入、どれでも構わない
一貫してさえいれば
0892デフォルトの名無しさん
2016/05/01(日) 13:32:46.80ID:xJ13VA8P0893デフォルトの名無しさん
2016/05/01(日) 13:41:40.40ID:eBy0niIg消費税の場合は簡易課税制度というのがあって
結構どんぶりですから
0894デフォルトの名無しさん
2016/05/01(日) 13:51:40.52ID:eBy0niIgこのようなお店で商品を買うと、購入者が支払った消費税は、業者の懐にまるまる入ります。
売上額の8%相当ですから、馬鹿にできない金額ですね。
ちょっとした国内旅行ならこれで賄えますね。
0895デフォルトの名無しさん
2016/05/01(日) 15:56:16.27ID:Rr3HGAwm0896デフォルトの名無しさん
2016/05/01(日) 17:25:02.32ID:QiyN6juH0897デフォルトの名無しさん
2016/05/01(日) 21:55:38.37ID:csgBMw5fchar num[10000]で1万桁の数値が表現できる
あとは加減乗除を専用の関数で実装すれば完成や
0898デフォルトの名無しさん
2016/05/01(日) 23:52:37.05ID:CScrXKEZひょっとして、その商品は仕入れ値0円で入手したと仮定しているの?
確かにすべて0円で仕入れ、経費も0円しかかかっていなければ消費税はまるまる業者の懐に入るが
そんな業者はないでしょ。
0899デフォルトの名無しさん
2016/05/02(月) 00:04:05.40ID:HcV+3/NE何かを伝えたいことはわからんでもないが
どう仮定を置こうが1000万円以上か以下かで消費税分まるまる差がでるんだから
見当違いではないかい
0900デフォルトの名無しさん
2016/05/02(月) 00:09:10.01ID:IfsZ2QOPそういう細かい説明は省略ですけど
この業者が本来支払うべき消費税額がそのまま懐に入ると言うことです
1000万の売上げで仕入率が8割なら16万の税額ですが、
この16万で旅行にいけますねと言う話です。
0901デフォルトの名無しさん
2016/05/02(月) 00:16:16.12ID:c3r8sV7s>>897みたいな方法を使いながら
0902デフォルトの名無しさん
2016/05/02(月) 10:34:42.28ID:xDgTrmYehttp://daily.2ch.net/test/read.cgi/ newsplus/1462141973/
新入社員プログラマーですが周りについていけません
文系出身新入社員プログラマーの22歳の女です。
今月入社致しました。プログラミング経験はないです。
今は研修期間で、C言語を学んでいるのですが、周りに全くついていけていない状態です。
同期も文系卒のプログラミング初心者が何人かいますが、その同期は自分でプログラムを組めるのに私だけが組めません。
何をすればいいのか、どういう風に書けばいいのか考えればいいのかわからないのです。
研修中に質問したりもしますが、何度聞いても何を言っているのか、どうしてそのコードを書くのか理解できません。
もちろん帰宅後や休日も参考書などを使って遅くまで勉強はしていますが、それでもどうすればいいのかわからないのです。
勉強の仕方が間違っているのかもしれません。参考書を読んで載っているコードを書いて、
あとは章末の問題を解いて…(わからないときはページを読み直したり)を繰り返しているのですが、それでもできません。
まず専門用語なども中々理解できなくて辛いです。
C言語を学び始めてから食事も中々喉を通りませんし、精神的にとても苦しく、
情けないのですが行き帰りの電車の中で泣いてしまっています。1ヶ月しか経っておらず、
まだ仕事の内容もわかっていないのにこの状況です。向いていないのではと思い、転職も考えましたが、
転職するにもこの早さで辞めても流石に先があるとは思えないので出来ればしたくないです。頑張りたいです。
同じような悩みをお持ちだった方や業界の方、いらっしゃいましたら勉強方法、仕事の仕方のアドバイスなど宜しくお願いいたします。
0903デフォルトの名無しさん
2016/05/02(月) 10:37:29.48ID:60l+wW3o死ぬ気でがんがってくだちい
いじょ
0904デフォルトの名無しさん
2016/05/02(月) 12:15:25.21ID:ImRjejIk0905デフォルトの名無しさん
2016/05/02(月) 13:09:14.23ID:GAQZImzk0906デフォルトの名無しさん
2016/05/02(月) 13:17:33.15ID:YMDS87Sk0907デフォルトの名無しさん
2016/05/02(月) 15:44:19.90ID:IfsZ2QOPそこに書いてやれよ。
そこしか見てないだろう
0908マルマイケル ◆SpT0vOJDD4oz
2016/05/02(月) 22:22:49.02ID:mtf1Pv4wdouble使わずfloat使うってメリットあるんですか?
0909デフォルトの名無しさん
2016/05/02(月) 22:37:51.59ID:IfsZ2QOPこの議論でスレが埋まるのではないか
0910デフォルトの名無しさん
2016/05/02(月) 23:53:47.59ID:vR4NgSd7まるまる儲けってのも本当はおかしいけどね
売り上げ一千万円未満ならたいしたことない
まあ、仕入れがほとんどない業態なら儲けにはなるか
基本的に(課税売上ー課税仕入れ)×消費税率やから
0911デフォルトの名無しさん
2016/05/03(火) 00:08:27.41ID:5/T8XYwh製造工程にかかわった全企業に還元してないだろう
0912デフォルトの名無しさん
2016/05/03(火) 00:11:36.12ID:08rY3gPrあれは製造時点まで積み上がった課税仕入れの戻し
0913デフォルトの名無しさん
2016/05/03(火) 00:21:12.21ID:OkUA5KxLVMWAREみたいなソフトを作りたいですが、時間かかりますか?
0914デフォルトの名無しさん
2016/05/03(火) 00:36:27.85ID:0Mi+2tJe仕込みと思われる通行人:「あらまぁ。それじゃ私たちが納めた消費税まるまるもらっちゃうの?ひどい話ね。」
というインチキテレビを見ていると、まるまる儲ける という発想が出てくるのではないだろうか?
0915デフォルトの名無しさん
2016/05/03(火) 00:48:11.45ID:5/T8XYwh0916デフォルトの名無しさん
2016/05/03(火) 00:55:21.96ID:6NKlaeyL0917デフォルトの名無しさん
2016/05/03(火) 00:58:41.64ID:WwILnE98//┏┳┳┳┳┓
//┣╋╋╋╋┫
//┣╋╋╋╋┫
//┣╋╋╋╋┫
//┣╋╋╋╋┫
//┗┻┻┻┻┛
//上記の6X6の通路を左上から右下へ到達する時に
//同じ場所を通らずにたどり着くルートは何通りあるか?
嫌儲のプログラミングスレで盛り上がってるこの問題
Cの解法だれか書いてみて
C++ならあった
https://ideone.com/gA7yt6
0918デフォルトの名無しさん
2016/05/03(火) 19:54:55.79ID:1OXiQfcMここで始めるのか?
0919デフォルトの名無しさん
2016/05/03(火) 20:34:29.66ID:vTjz5YiN0920デフォルトの名無しさん
2016/05/03(火) 20:47:51.22ID:1OXiQfcM0921デフォルトの名無しさん
2016/05/03(火) 21:09:38.39ID:ZU3oWcCD難しい概念がポインタぐらいしかないしさ
オブジェクト指向と比べて簡単じゃね?
プログラミング言語の中でも単純なほうだろ
0922デフォルトの名無しさん
2016/05/03(火) 21:37:08.24ID:ycNDa31R0923デフォルトの名無しさん
2016/05/03(火) 22:13:37.26ID:LGUko+RS有る場合もあるし、無い場合もある。
0924デフォルトの名無しさん
2016/05/03(火) 22:15:21.41ID:LGUko+RSCはアセンブラを便利にしただけの様な物。
0925デフォルトの名無しさん
2016/05/04(水) 01:37:27.93ID:xW6MhDte> 簡単じゃね?
何が簡単なの?
0926デフォルトの名無しさん
2016/05/04(水) 02:18:38.97ID:VTHyhTWb難しいって言うか、めんどくさいって言う方が適切かも。
0927デフォルトの名無しさん
2016/05/04(水) 07:22:06.14ID:3gr5ld3eあの意味不明なポインタ構文とかいつ直るの。
個人的に変数とかの定義時は型の方に寄せろよ。
ポインタを返すんだから。
未定義処理が多いくせに、地味に糖衣構文あったりして、たまにやるとなんだよこれってなるわ。
0928デフォルトの名無しさん
2016/05/04(水) 09:20:32.60ID:wjUC1pj0Cを作った人たちは天才だったので
宣言と実際に使うときの見た目だけ合わせるという離れ業をやってのけた
ふつうは絶対こんなことは思いもつかない、天才的
凡人は、
型名 変数名;
という風に書くという、自分たちの作ったルールに引っ張られて
型名の方に細工しようと考える
まさか変数名のほうに「*」を付けようなどということは思いもつかない
すごいね
0929デフォルトの名無しさん
2016/05/04(水) 09:29:32.20ID:U08ccE2Zcみたいな、なんの制約も無い言語仕様なら誰でも作るわ
0930デフォルトの名無しさん
2016/05/04(水) 09:55:23.53ID:wjUC1pj0ふつうはそうは考えない
0931デフォルトの名無しさん
2016/05/04(水) 16:39:34.38ID:0wPtL/Lt0932デフォルトの名無しさん
2016/05/04(水) 17:30:10.82ID:UZMKRODU0933片山博文MZ ◆T6xkBnTXz7B0
2016/05/05(木) 01:19:10.87ID:Oq7RlKiI武器を持たずに戦うのは無謀で危険。
0934デフォルトの名無しさん
2016/05/05(木) 06:53:41.22ID:tobW131P0935デフォルトの名無しさん
2016/05/05(木) 07:09:56.36ID:hRlWJ7Nnint を突込んで戻したい → 引数を int * に
char* を突込んで戻したい → 引数を char ** に
void foo1(int *a) { *a = 1; }
void foo2(char **p) { *p = malloc(1); }
0936デフォルトの名無しさん
2016/05/05(木) 08:03:32.64ID:l2iYxkK+内部的には char **argv だから「『charへのポインタ』へのポインタ」。
使うときに強く意識する必要はないんだけどね。
0937デフォルトの名無しさん
2016/05/05(木) 10:15:39.04ID:lAw+TM4Q0938デフォルトの名無しさん
2016/05/05(木) 10:22:43.45ID:qzGbsflZ0939デフォルトの名無しさん
2016/05/05(木) 10:26:09.36ID:lAw+TM4Q0940デフォルトの名無しさん
2016/05/05(木) 11:22:33.76ID:/d0bofMt0941デフォルトの名無しさん
2016/05/05(木) 12:18:14.62ID:ZZV12Kuj0942デフォルトの名無しさん
2016/05/05(木) 12:48:46.05ID:aJrsnmyH#include <stdio.h>
int main(int argc, char **argv)
{
while (*argv) {
while (**argv) {
printf("%c", **argv)
(*argv)++;
}
putchar('\n');
argv++;
}
return 0;
}
ポインタを学習するのに最適なコード
gcc -S test.cでおk
0943デフォルトの名無しさん
2016/05/05(木) 12:51:26.44ID:M3xx0KzKポインタの学習で2重ポインタにする意味がわかんねぇんだよ
それとも普段2重ポインタ使うようなクソコード書いてんの?
0944デフォルトの名無しさん
2016/05/05(木) 13:04:22.44ID:Sd1mMrNqわいてんのか?
0945デフォルトの名無しさん
2016/05/05(木) 13:09:11.05ID:ztPvWGx6>今回はなぜコードなしなんですか?
ソースを要求していないから。
要求していないのについてくるのが当たり前だと思っているあたりが朝鮮人ぽいな。
0946デフォルトの名無しさん
2016/05/05(木) 13:12:06.10ID:xYG36dS/さすがにこういうの貼るときには、
一度ちゃんと動くのを確認してから、それをコピペしろよ
0947デフォルトの名無しさん
2016/05/05(木) 13:12:41.92ID:M3xx0KzK0948デフォルトの名無しさん
2016/05/05(木) 14:43:32.75ID:46+7SZaB連想配列(例えばハッシュテーブル)や自己参照構造体(連結リストや二分木など)を利用したデータ構造をC言語で実装しようとすれば
自然に多重ポインタを使うようになる
例えば>>917の経路探索とかの場面でvector型のコンテナが使えないC言語だと自分でポインタ駆使して探索木を構築する必要がある
コード起こすのは面倒くさいからやらないけど、多分 多重ポインタを使うことになると思う
ニ分木や連結リストぐらいなら二重ポインタはいらないよ
0950デフォルトの名無しさん
2016/05/05(木) 18:57:05.23ID:46+7SZaBうん、単純な場合だと必要ない
ただ>>917の場合、連結リストそのものが多重構造になるような気がしてる
最短経路と違ってすべての経路というのが地味に面倒くさい
後戻りの方向のルート探索の部分二重ポインタ使わなくていけるかな?
C++の解法でもかなり強引な方法使っているしね
まあ実際にコード組んでないから分からんけどね
0951デフォルトの名無しさん
2016/05/05(木) 22:31:35.58ID:YJJ4THJY0:*send
1:*receive
2:*sleep
のように定義しておくと便利で高速だろ?
テカ、特権リングへの遷移とか知らんわな
0952デフォルトの名無しさん
2016/05/07(土) 22:04:42.69ID:tZzPlnjSカンマ演算子について参考書には↓のように記述している
(1)左から右に評価される
(2)コンマで区切られた式の並びが返す値は右端にある式の値
(3)for構造で複数の変数を使用するときによく使われる
(3)の例:
for(i=1, j=10 ; i <= j ; i++, j--)
printf("i=%d, j=%d", i, j);
【疑問】
(1), (2)までの説明からすると(3)の例のi=1とかi++とかが破棄されるんじゃないの
って思うんだけど実際に動かすとi=1もi++も実行される
間違ったイメージを持ってるんだと思うけどそれが何かわからん
頼む
(3) の例では,初期化の i=1, j = 10 の両方は評価実行され,この部分でのコンマ演算子による評価は 10 になる
また,i++, j-- の両方が評価され,コンマ演算子全体の評価値は,デクリメントされる前のj になる
printf() に出てくるコンマは関数の区切りのコンマで,コンマ演算子ではない.
0954デフォルトの名無しさん
2016/05/07(土) 23:42:12.72ID:ENlS/GyL「i + j」という式はiとjを足した値を返すのと同様に
「i=1, j=10」という式は10を返すってだけ
「i=1」という式は代入演算子の副作用としてiに1を代入するけど
代入した値を返すのが演算子としての本作用
0955デフォルトの名無しさん
2016/05/08(日) 00:20:52.65ID:7UXL6x+W> (1), (2)までの説明からすると(3)の例のi=1とかi++とかが破棄されるんじゃないの
i = 1 を実行した「結果」が捨てられるだけで実行自体は行われる
ってこと
0956デフォルトの名無しさん
2016/05/08(日) 04:19:09.75ID:Hppc22ou可変長引数だと簡単にいくらでもとれそうだけどintかなんかの限界までとか?メモリの限界?
ただの興味だけど詳しい人教えて
0957デフォルトの名無しさん
2016/05/08(日) 08:42:15.34ID:8MWByAdJ0958デフォルトの名無しさん
2016/05/08(日) 11:35:15.36ID:UKRiNMsMCの特徴として、式そのものも値を持つ
カンマで区切ると、一番右の式の値以外の式の値が破棄される
式の値というのは変数の値ではない
0959デフォルトの名無しさん
2016/05/08(日) 11:36:03.26ID:UKRiNMsM初心者はそれをどうでもいいと判断できないからだろ
0960デフォルトの名無しさん
2016/05/08(日) 11:42:04.76ID:Q2Wi/60e他のレスの言葉足らずの部分を補足するとかいうレベルじゃないぞ
0961デフォルトの名無しさん
2016/05/08(日) 11:45:32.84ID:b7gQy6O3実装依存。
少なくとも127個はOK
0962デフォルトの名無しさん
2016/05/08(日) 17:11:05.10ID:/CtBZ1/5あ?どうでもいいことだから2chなんかで聞いたんだろうが
ほんと最近の2chの専門板ってちょっと難しいことにはとんちんかんなこと言ってくるし
誰でもわかるググればわかるレベルのことにはここぞとばかりに馬鹿が延々レスつける感じ
0963デフォルトの名無しさん
2016/05/08(日) 17:42:37.84ID:MJgt2i9Hカンマ演算子としてのの戻り値と変数に格納される値が
ごっちゃになってたってことかな
返レスthx
専門板なのに流れはえーのな
0964デフォルトの名無しさん
2016/05/08(日) 22:11:19.26ID:06Doni3l0965デフォルトの名無しさん
2016/05/08(日) 22:24:58.68ID:s0N92ljE面白いと思う本人だけが楽しめばいい
他人のオナニーに付き合うアホは滅多にいない
0966デフォルトの名無しさん
2016/05/08(日) 23:53:34.23ID:Fav8VFmlありがとう これが正解みたいだねしゃーないからC99読んで確認とったC11は知らん
>>964
実用上どうでもいいのは確かでしょ 面白い内容だと思ったなら
たまには仕様読むのもいいかもほかにもいろいろ書いてあって面白かったぞ
0967デフォルトの名無しさん
2016/05/09(月) 04:07:41.17ID:uOjemUjOプログラム言語でも、問題を解決するためにプログラムを書くことが目的であって仕様を読むのはそのための手段
人によるけど仕様そのものが面白いと思うのはただの言語オタだな、あるいはプログラム言語そのものの開発者か
0968デフォルトの名無しさん
2016/05/09(月) 04:18:38.67ID:iJ6TeaPm0969デフォルトの名無しさん
2016/05/09(月) 05:08:44.24ID:uOjemUjOゲームをプレイすることが面白いんだろ?
0970デフォルトの名無しさん
2016/05/09(月) 05:55:11.77ID:rWBxrsBpたくさんいるからクソコードが世の中に量産されるんですね、わかります。
0971デフォルトの名無しさん
2016/05/09(月) 06:20:35.06ID:uOjemUjO言語の仕様の理解も手段であって目的ではない
そこを取り違えると>>917の書き込みに対して>>919のレスを返すような間抜けが現れる
言語仕様については喜々としてレスを返すが問題解決の方針についてのレスは出来ない
スレのレベル低すぎだろ
0972デフォルトの名無しさん
2016/05/09(月) 06:45:15.52ID:viJzCX5wアルゴリズムをそれぞれの言語でどう記述するかってだけ
そもそも>>917はスレ違い
0973デフォルトの名無しさん
2016/05/09(月) 06:51:07.30ID:6g78ma39って言う奴もいる
視点が狭すぎる
0974デフォルトの名無しさん
2016/05/09(月) 06:57:51.24ID:uOjemUjOQzとかがその典型だな
ただし一般的ではない、だから言語オタと言ったのだ
0975デフォルトの名無しさん
2016/05/09(月) 10:30:17.04ID:0w9P8+p9アルゴリズムはもうC++で解いたものがあるからいいとしてCで書くとどうなるの?
って話なら別にスレ違いでもないでしょう
0976デフォルトの名無しさん
2016/05/09(月) 12:08:44.44ID:9+jy/olkコマンドプロンプトからwmic使ってできないことはないんですが
cmd開くのが煩わしいので…
やっぱりos関係の情報を取得するにはcmdコマンド介さずにというわけには
いかないでしょうか?
0977デフォルトの名無しさん
2016/05/09(月) 12:27:45.18ID:bbv3Ed96APIで出来んこともないけど、アクセス権がめんどい
0978デフォルトの名無しさん
2016/05/09(月) 12:40:29.22ID:R05Gh5Rw0979デフォルトの名無しさん
2016/05/09(月) 13:01:29.58ID:noyNIse2C#だと楽にUIを作れるから便利ですよね
0980デフォルトの名無しさん
2016/05/09(月) 13:07:36.87ID:0PzUsjdrOSもライブラリもCでかかれてきた。Rubyは、Cでかかれているそうだ
CならたいていどのOSでもどのバージョンでも通用する(Java, Perlも同様)
0981デフォルトの名無しさん
2016/05/09(月) 14:45:27.49ID:VjDsz29Uツッコミいれてほしいの?
0982デフォルトの名無しさん
2016/05/09(月) 14:48:54.71ID:K9w0IuWNps使えよ
0983デフォルトの名無しさん
2016/05/09(月) 18:26:18.55ID:8NXZzRJZえ?
0985デフォルトの名無しさん
2016/05/09(月) 21:33:43.57ID:pzKdLl0Rstring使え
0986デフォルトの名無しさん
2016/05/09(月) 22:54:04.01ID:tSgtGV7Jきゅーずぃーたんまだいきてたの?
0987デフォルトの名無しさん
2016/05/09(月) 23:33:43.98ID:8NXZzRJZどういう時に使うのかがよくわからん。書き方は知ってるんだけど
どういう場面で使うと良いのか教えてくれ。
きだあきらさんのwinapi散歩道/win32api 散歩道に書いてあった気がする
0989デフォルトの名無しさん
2016/05/10(火) 07:18:15.80ID:oz2wxhed0990デフォルトの名無しさん
2016/05/10(火) 13:16:13.87ID:3fG5/CbCC言語なら俺に聞け! Part 135(c)2ch.net
http://echo.2ch.net/test/read.cgi/tech/1462853629/
0991デフォルトの名無しさん
2016/05/10(火) 13:27:52.52ID:7ZZ0aP+d0992デフォルトの名無しさん
2016/05/10(火) 13:55:30.08ID:zxnDb8j/ごめんよ、C言語の質問にしか答えられないんだ。
0993デフォルトの名無しさん
2016/05/10(火) 17:12:46.89ID:/c+E/E1d書き方知っているのに
使えないのか。
変わった奴だな。
0994デフォルトの名無しさん
2016/05/10(火) 17:28:47.76ID:V1ay1Asb関数を使わなければいけない状況というのが想像できないのかも知れない
0995デフォルトの名無しさん
2016/05/10(火) 17:45:32.94ID:bh4nZJj20996デフォルトの名無しさん
2016/05/10(火) 19:45:09.87ID:/rfeiIz1Cの文字列に馴染みすぎたせいで思いもよらなんだ。
0997デフォルトの名無しさん
2016/05/10(火) 22:18:03.37ID:fu/r74O4難しいのはダメだよ。
あと、俺の興味のないのもダメ。
0998デフォルトの名無しさん
2016/05/11(水) 10:53:14.06ID:7/pimAAr0999デフォルトの名無しさん
2016/05/11(水) 11:28:14.61ID:GzlL/1jH死ね
1000デフォルトの名無しさん
2016/05/11(水) 11:28:18.51ID:Xef87XAV10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 627日 14時間 21分 57秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。