トップページ⇒tech
1002コメント314KB

C言語なら俺に聞け! Part 135©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net2016/05/10(火) 13:13:49.45ID:3fG5/CbC
Language C FAQ
http://www.kouno.jp/home/c_faq/

K&R
プログラミング言語C 第2版 ANSI規格準拠
http://www.amazon.co.jp/dp/4320026926

C99
JIS X 3010:2003 プログラム言語C
http://kikakurui.com/x3/X3010-2003-01.html

C11
ISO/IEC 9899:2011 - Information technology -- Programming languages -- C
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853
価格:198 CHF
----
C言語なら俺に聞け
http://echo.2ch.net/test/read.cgi/tech/1408709181/
2014/08/22(金)

【初心者お断り】ガチ規格準拠C専用スレ Part133
http://pc11.2ch.net/test/read.cgi/tech/1201153965/
2008/01/24(木)

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132
http://pc11.2ch.net/test/read.cgi/tech/1190261457/
2007/09/20(木)
0002デフォルトの名無しさん2016/05/10(火) 13:14:58.31ID:3fG5/CbC
C言語なら俺に聞け!
http://www.geocities.jp/c_cpp_cs/about_c/index.html
0003デフォルトの名無しさん2016/05/11(水) 12:26:34.34ID:gJ/xQTr/
printf("乙\n");
0004デフォルトの名無しさん2016/05/11(水) 13:50:20.31ID:pvGtAJM0
1.
char *s = null;
if (null == s) {
s = "";
}

2.
char *s = null;
if (null == s) s = "";

前者は空文字がカッコ内でしか有効じゃないと思うんだけど、後者は有効なのかやっぱり有効じゃないか誰か教えて!
0005デフォルトの名無しさん2016/05/11(水) 13:51:53.59ID:7/pimAAr
前者も間違ってるけど、、、スコープの質問?
0006デフォルトの名無しさん2016/05/11(水) 13:53:34.77ID:7/pimAAr
リテラルとオート変数は別物
0007デフォルトの名無しさん2016/05/11(水) 13:55:09.91ID:QMXZ8hSl
リテラル文字列 "" の生命期間はグローバル変数と同じくランタイム間で readonly


じゃなかったっけ?
0008デフォルトの名無しさん2016/05/11(水) 14:02:53.36ID:71GbDeiF
>>4
nullなる変数なり定数なりが定義済みであると仮定すると、
どっちも、空文字列へのポインタをsに代入してる。
んでもって、リテラル文字列の実体は無限エクステント(だったと思う)。
つまり、例えば
char* test() {
char* buffer = "foo";
return buffer;
}
とした場合に於いても、testの戻り値は使うことが出来る。
一見バグってるように見えるけどね。

一方で、配列に対して代入により初期化した場合はそのエクステントは配列のエクステントと等しくなるから
char* test() {
char buffer[] = "foo";
return buffer;
}
とした場合には、testの戻り値は信用出来ない。
0009デフォルトの名無しさん2016/05/11(水) 14:04:21.81ID:71GbDeiF
>>7
実際にreadonlyかどうかは環境に依らなかったっけ?
0010デフォルトの名無しさん2016/05/11(水) 14:12:17.48ID:QMXZ8hSl
>>9
憶測だけでちゃんと調べてないけど、C90あたりで
リテラルに対する書き込みは環境依存から鼻から悪魔だったような気がするけど
C++とごっちゃになってるのかもしれない
0011デフォルトの名無しさん2016/05/11(水) 14:21:00.63ID:1vLHQDGP
いっそ、「自分自身のバグを直しながら強くなるC言語」にしてくれ
0012デフォルトの名無しさん2016/05/11(水) 15:14:35.80ID:pvGtAJM0
>>7-8
生命期間を知りたかったんです
わかりやすい説明ありがとうございます
理解できました ノシ
0013デフォルトの名無しさん2016/05/11(水) 16:02:45.59ID:KPNpqwlb
>>12
生命期間って要するにスコープだろ
0014デフォルトの名無しさん2016/05/11(水) 16:16:50.99ID:ZuUCgQaq
>>13
scopeは見た目の範囲
lifetimeは期間
0015デフォルトの名無しさん2016/05/11(水) 16:27:30.53ID:71GbDeiF
>>14
そのscopeの定義だとダイナミックスコープもポインタスコープも説明できない。

より正確には、
scopeは変数名に束縛された値が参照できる範囲
extent/lifetimeは値の生存期間
じゃない?
0016デフォルトの名無しさん2016/05/11(水) 17:01:58.66ID:eH1yb+5y
ポインタスコープって何?
0017デフォルトの名無しさん2016/05/11(水) 17:50:43.10ID:71GbDeiF
>>16
構造体へのポインタを使ったメンバアクセスに関するスコーピングなんかがポインタスコープって呼ばれてる。

int foo(struct Position* p) {
p->x = 10; /* xのスコープはレキシカルでもダイナミックでも無い */
}

http://ustcscgy.github.io/wiki/let-over-lambda.html
Although the scoping methods provided by C-like languages are limited,
C programmers need to program across different environments too.
To do so, they often use an imprecisely defined scoping known as pointer scope.
Pointer scope is famous for its difficulty to debug, numerous security risks,
and, somewhat artificially, its efficiency.
0018デフォルトの名無しさん2016/05/11(水) 18:06:33.12ID:eH1yb+5y
全然known asじゃないんですが、Lisp用語かなにかですか?
0019デフォルトの名無しさん2016/05/11(水) 18:22:01.58ID:eH1yb+5y
ポインタスコープの説明は
『LET OVER LAMBDA Edition 1.0』
http://www.amazon.co.jp/dp/4434133632
の6.4章か・・・。
0020デフォルトの名無しさん2016/05/12(木) 03:26:25.03ID:+NvLv0pI
インターネットが無い頃の人たちって
どうやってC言語の勉強してたんですか?
やっぱ本だけ?
0021デフォルトの名無しさん2016/05/12(木) 07:08:25.33ID:/eB9RrGz
インターネットの前にパソコン通信があった。パソコン通信は、有料の会員制で、書込みはIDがついた。荒らしは、IDによって追放された
0022デフォルトの名無しさん2016/05/12(木) 08:06:15.93ID:Ac+Wesiy
それでもやっぱ書籍が主流で、
アホなこと書いてる本のせいで大勢が誤解を持ったままってことが往々にしてあった
0023デフォルトの名無しさん2016/05/12(木) 11:59:10.80ID:ehHa3Ia2
言語自体は「はじめてのC」って本である程度覚えて、「K&R」。
初めて使うコンパイラなんかの場合、ライブラリのマニュアルも含め、精読してたな。

アルゴリズムとかは師匠のコード読んだり、教わったりしていた。
OSもない様な環境でのばりばりのハードウェア制御系だったから、一子相伝って感じだったな。
その後 OS 本体の仕事もやったりしたんで、非常によい経験になったと思う。
0024デフォルトの名無しさん2016/05/12(木) 19:27:28.09ID:H+I8h1G8
>>22
アホなことを書いてる Web のせいで大勢が誤解を持ったままってことの方が多いと思うが...
0025デフォルトの名無しさん2016/05/12(木) 19:36:37.93ID:tDNaM0bc
【ワカヤマン】C言語プログラミング能力認定試験 [無断転載禁止](c)2ch.net
http://hanabi.2ch.net/test/read.cgi/lic/1454165737/
0026デフォルトの名無しさん2016/05/12(木) 20:47:27.03ID:USYeYoDr
>>24
>>20
0027デフォルトの名無しさん2016/05/12(木) 21:10:14.58ID:QSCTd5b6
当時は今と違ってパッケージについてくるマニュアル
が印刷されていてとんでもボリューム、殴って殺せる重量感があった

はじめてのCは有害図書
0028デフォルトの名無しさん2016/05/12(木) 21:31:27.03ID:Fooytq8l
恵比寿低迷さんが
亡くなったそうです。
ナムー
人
0029デフォルトの名無しさん2016/05/12(木) 21:35:47.26ID:6mJeQbGO
>>26
>>24 は今の話をしてるんだろ
0030デフォルトの名無しさん2016/05/12(木) 23:08:27.58ID:USYeYoDr
>>29
昔どうしてたの?って話に今の話をするのがアホってことだろ言わせんな恥ずかしい
0031デフォルトの名無しさん2016/05/13(金) 04:44:40.44ID:Weatj0gE
charやintなどのプリミティブ型って内部でメモリを確保されてるんですか?
もし大量ににプリミティブ型を使えばメモリが足りなくなりますか?
0032デフォルトの名無しさん2016/05/13(金) 05:06:47.80ID:+5h85NoM
一つ知れば十個ぐらい分からないことが増える
奥深いにも程があるだろc言語
0033デフォルトの名無しさん2016/05/13(金) 06:08:43.23ID:OQGFJHwa
>>30
お前は一旦昔の話をしだしたらずっと昔の話しかしないのかよ w
0034デフォルトの名無しさん2016/05/13(金) 08:17:29.36ID:ogYSC2Nf
その擁護には無理がある
話の流れ的にはあれはただのアスペ
0035デフォルトの名無しさん2016/05/13(金) 08:37:00.20ID:Tinmnd2+
>>31
ほんの数個なら最適化してレジスタに割り当てちゃうけど
それ以上ならメモリ消費するよ
それを大量に使う現実的でないプログラム書けば不足するだろうねぇ
0036デフォルトの名無しさん2016/05/13(金) 09:27:04.66ID:Weatj0gE
>>35
やっぱそうか・・・
それはプログラムが終了するまで解放されないわけですよね?
何週間も回し続けるプログラムならプリミティブも意図的にnew/deleteしなければならないのかな
0037デフォルトの名無しさん2016/05/13(金) 10:45:14.80ID:2XyS3TKW
>>36
ここCスレだよ。newとかdeleteとかないよ
それはともかく、自動変数(関数ローカル変数)ならスタック上に確保されるので
関数から抜ければ解放される
0038デフォルトの名無しさん2016/05/13(金) 12:31:35.77ID:LotgazQY
javaからきたの?
基礎的なこと分かってなさそうだから勉強した方がいいよ。
0039デフォルトの名無しさん2016/05/13(金) 12:37:29.49ID:vpMU1txe
>>28
https://twitter.com/epitwit/status/730933208624205824
0040デフォルトの名無しさん2016/05/13(金) 12:42:28.01ID:ZUyuraMo
>>36
ヒープから確保するのか、スタックから確保するのかを考えれる程度に
よくあるコンパイラの実装について学ぶと良いよ。
んでもってプログラムが終了するまで開放されないってのは普通はヒープでの話になる。
mallocしてfreeしなければその内メモリが足りなくなるだろうね。
# グローバル変数もある意味では開放されないけどそれはまた別物として考える
0041デフォルトの名無しさん2016/05/13(金) 12:55:47.95ID:3RLOovra
>>34
ID:USYeYoDr もお前も充分アスペ
0042デフォルトの名無しさん2016/05/13(金) 14:03:47.48ID:K5STjXBE
助けて欲しいのですが
今大量にmalloc&freeをするアプリケーションをlinuxで作っているのです。
そしたらvirtual memoryの使用量が数〜数十GBになっているのです。
しかし実際に使ってる物理メモリは数kbなのです。
あとずっと(1時間とか)そのプログラムを走らせてるとswap領域がグリグリ増えていきます。そして重くなります。
何が気になるって普通のメモリ部分じゃなくてスワップ部分がグリグリ増えていくのです。
これって単純にフリーのし忘れによっておこるのでせうか?
それとも何か内部的仕組みに対して私が悪いことをしてしまっているのでせうか?
このアプリケーション一度に500個くらいのスレッドを動かすものなのですがもしかしてそれに理由があるのでせうか?
virtual memoryの値がグリグリ増えるのは別に構わないのですがswap領域の使用量が増えるのには納得いきませぬ。
ちなみに再帰的構造体を大量に使うのでmalloc以外の方法がありません。
ご教授お願いいたしまし候。
0043デフォルトの名無しさん2016/05/13(金) 14:44:22.05ID:+7L1Kkkt
リークか何かを疑うのは当然として、
セクタ単位とバイト単位を取り違えているとかいうしょうもない問題もあると見た
0044デフォルトの名無しさん2016/05/13(金) 14:54:13.63ID:+7L1Kkkt
>>36
確保・解放はヒープ領域を使う場合の話だけど
C/C++ では他の言語と比べてヒープ領域の利用を避ける傾向がある

可変長データ(テキスト、ファイル系データ、その他複合データ構造)以外は
スタックか静的領域に置くことをまず考える

ただし一応スタックにも上限はあるから大きめのオブジェクト(1kBとか)は避ける
0045デフォルトの名無しさん2016/05/13(金) 14:58:10.72ID:ZUyuraMo
使ってるライブラリはGlibcだよね?
500スレッド程度で数GBってのはmallocの普通の使い方じゃ起こらないと思うんだがなぁ。
unistd.hのgetpagesize()関数が非常に大きな値を返したりしてない?
俺の環境だと4096になったけど。
あと、malloc()の引数にどのくらいの値を使ってる?
0046デフォルトの名無しさん2016/05/13(金) 15:01:58.10ID:Uh2qXKp7
>>44
そんな傾向は言語にはねえよ
組み込み系はそうなるだろうけど言語とは独立
0047デフォルトの名無しさん2016/05/13(金) 15:35:57.01ID:cduHyZK8
>>45
http://i.imgur.com/THfSwDv.jpg
問題のexecはstudentmulです
一度にmallocしてるサイズはsizeof
struct game_info{
MYSQL *sql;
pthread_t thread;
long gameid;
char isDone;
};
と
struct id_chain{
long id;
struct idchain *left;
struct idchain *right;
};
なのでだいたい16~24byteくらいかなぁとおもいまふ
小さいmallocを頻繁にするのは良くないっていうのをmallocのソース書いた人が言ってるのですがそれはCPU使用量の話なんですよ
なんどもmalloc&freeするんじゃなくて使い終わったものを再利用するようなコードにしたほうがいいですかね?
0048デフォルトの名無しさん2016/05/13(金) 15:38:00.16ID:cduHyZK8
ちなみにgetpagesizeは4096でした
0049デフォルトの名無しさん2016/05/13(金) 15:53:20.89ID:ZUyuraMo
>>47
小さいmallocを頻繁にするのが良くないのはK&Rのmallocの話だな。
glibcのmallocは小さいmalloc/freeを頻繁にやってもそんなに速度は落ちないように組まれてた筈。
にしても1時間半で46G消費は何かおかしいな。
単純計算で毎秒8MB程消えてる話になる。

ループの中にmallocがあって、それをループ中にfreeし忘れてるとか
そういうミスは無い?
或いはinitしたのにendしてないとか、connectしたのにcloseしてないとかMySQL周りでミスは無い?
0050デフォルトの名無しさん2016/05/13(金) 15:55:09.76ID:Uh2qXKp7
>>47
ちゃんとfreeしてないんじゃないの?
あるいはしてるつもりで無関係のアドレスfreeしてたり。
0051デフォルトの名無しさん2016/05/13(金) 15:55:43.17ID:0l3VxkcG
一応szも見てみたい
$ ps -o pmem,rss,sz,vsz,cmd -C studentmul
0052デフォルトの名無しさん2016/05/13(金) 16:32:48.30ID:wbr+ZJxV
配列や構造体がDOS時代(16Bit環境)は32Kバイト、Win95/98の時は1Mバイト超えそうな時にmalloc使ってた。
0053デフォルトの名無しさん2016/05/13(金) 16:44:30.82ID:cduHyZK8
http://i.imgur.com/zmzrQVL.jpg
psコマンドの結果はこうなりました


http://i.imgur.com/LfSA3Rm.jpg
valgrindってツールでチェックしてみたらこんな出力がされたのですが関係ありますかねぇ?
pthread_createの中で使われたソースが解放されてないと出ているのですが。
ちなみにheadmanagerって関数の中のfree忘れがあるっていう出力は実際にはメモリリークじゃないので気にしないでくだしあ
0054デフォルトの名無しさん2016/05/13(金) 17:08:04.12ID:cduHyZK8
あっ
申し訳ない
言っていなかったがこのアプリケーション500個くらいのスレッドが同時進行しているというだけであってスレッドは20秒くらいで死んでまた生まれるっていう感じの内容
これって関係ある?
0055デフォルトの名無しさん2016/05/13(金) 17:10:59.22ID:ZUyuraMo
>>53
うーん
スワップ領域がモリモリ使われるのと直接関係ない気もするが・・・・・・
もしかしてスレッド毎にMySQLをinitしてたりする?

あるいは
https://gist.github.com/
か何処かでもうちょっと全体を見渡せるようなコード片を上げれる?
0056デフォルトの名無しさん2016/05/13(金) 17:15:40.84ID:ZUyuraMo
>>54
てことはスレッドあたり300〜400KB程リークしてる、かな
作られたスレッドでは何してんの?
0057デフォルトの名無しさん2016/05/13(金) 17:16:18.43ID:cduHyZK8
>>55
...
本当に申し訳ない。
よく見たらスレッドごとにsqlのオブジェクト作ってる。
もしかしてこれが原因?
そういうもんなんだと思ってた
0058デフォルトの名無しさん2016/05/13(金) 17:22:46.91ID:ZUyuraMo
>>57
スレッド毎に作ったなら、スレッド毎に消さなきゃ駄目。消してる?
スレッド毎に作ること自体はまぁ(効率は悪いけど)問題ない
0059デフォルトの名無しさん2016/05/13(金) 17:27:46.77ID:0l3VxkcG
>>53の結果からVSZの4分の1くらいは実際に使用しているメモリだから
そのうちswapに追い出さなきゃならなくなるのは当然だな
0060デフォルトの名無しさん2016/05/13(金) 17:28:19.19ID:cduHyZK8
オブジェクト消してはいるのは確かだなあvalgrindがもし消していなかったら検知する筈だし
ちなみに作られたスレッドはオセロやりながらそのゲームの記録をDBに書いてるだけ
そのスレッド達はmalloc使ってない
0061デフォルトの名無しさん2016/05/13(金) 17:33:39.32ID:ZUyuraMo
>>60
closeもendも呼んでるなら違うのかねぇ。
MySQLのバージョンはいくつ?
あと、そのスレッドのコードはうp出来ない感じ?
0062デフォルトの名無しさん2016/05/13(金) 23:22:11.87ID:WY8PSQUs
Cで高速ファイル検索プログラム作ってるんだけど、何でOSの方は
インデックス作った後再構築してないのに新しいファイル見つけるの
速いんだろう?インデックス作っても新しいファイルを適当な場所に
作ったら結局最初から探すのと一緒だからそのファイルに限っていえば
時間かかると思うんだけどOSのほうはすぐ見つけてくれる。
ここらへんが自分の腕じゃプログラミングで実装できないんですが…
何故だかわかります?
0063デフォルトの名無しさん2016/05/13(金) 23:23:19.02ID:WY8PSQUs
すいません…
一応Cで作ってるのでここで質問さえてもらいました。
0064デフォルトの名無しさん2016/05/14(土) 00:25:22.08ID:USUvWshC
>>62-63
インデックスサービスってので常時監視してるからじゃないかな
0065デフォルトの名無しさん2016/05/14(土) 09:00:34.19ID:fmllMf1b
>>64
なるほど…常に差分を発見してるんですね。
でも差分発見ってインデックスファイルをもう一度精査するとかじゃなくて
容量の増減とかで判別してるような…
そう考えたら、同じフォルダで
容量12Kのファイルが消えて同じ容量12Kのファイルが新しく作成された場合
新しいファイル見つけるのってえらく時間がかかりそうな気がしますね…
0066デフォルトの名無しさん2016/05/14(土) 13:36:09.76ID:f3s9/uBz
推測通りならそんな速いわけないだろ。
そもそもアプリケーションとOSで同じことしてると思うなよ。
0067デフォルトの名無しさん2016/05/14(土) 14:42:49.24ID:5Fb9fh+q
* インデックスの構築
git init && git add && git commit
* インデックスの再構築
rm .init && git init && git add && git commit
* インデックスサービス
inotify git add filename
* インデックス化
git commit
0068デフォルトの名無しさん2016/05/14(土) 17:41:16.84ID:fmllMf1b
OSのインデックスでファイルの中身まで情報取得してるのって
txtファイルで閲覧可能なファイル限定なんかな?どうなんだろう
0069デフォルトの名無しさん2016/05/14(土) 18:05:23.06ID:fLeelvLJ
iFilterとかいうので機能追加できるらしい
0070デフォルトの名無しさん2016/05/14(土) 18:11:04.94ID:SbPIcar1
officeのファイルなんかもIndexとってるから違うだろうな
スレ違いのような気はする
0071デフォルトの名無しさん2016/05/19(木) 21:08:04.94ID:TxoTuPPd
本や勉強サイトを見るとポインタを宣言する際に
int *pと
int* pと書いてる場合があるのですが
どちらを使うべきなのですか?
0072デフォルトの名無しさん2016/05/19(木) 21:28:41.61ID:dUK54jFV
どっちでもいいけど後者の場合
int* a,b;
と書くとbはポインタにならない

俺は一番最初に読んだ入門書が前者だったからずっとそっち使ってるけど世間では後者が多い気がする
0073デフォルトの名無しさん2016/05/19(木) 21:40:00.95ID:L4Xn6zhh
C言語って20年前(windows95が出てすぐのころ)は大学生でも勉強が困難だったって本当なんでしょうか?
原因としては教材の確保、C言語を実行するための環境など。
そういえば20年前30年前なんてほとんど参考書無かったと思うし、この時代は
どうやってC言語勉強してたんですか?
0074デフォルトの名無しさん2016/05/19(木) 23:00:03.54ID:tYxkNBp0
40代からじゃ無理かい?
0075デフォルトの名無しさん2016/05/19(木) 23:00:38.25ID:JetDRGhU
そりゃもうwarez様々よ
俺はBoland C++ 3.0を学割で買ったな
今はgccやらLSI-C86試食版やらBoland C++ compilerやらMicrosoft C/C++ Cmpilerやら使えるしいい時代になったよ
0076デフォルトの名無しさん2016/05/19(木) 23:18:14.36ID:lI3UOE+c
20数年前大学生だったけど、
「インターネット下さい!」ってネタのが出る前の時代で
パソ通でもやって情報集めないとプログラム言語の書籍なんて
本屋に置いてあるのが全てで良書、悪書の選別が無理だった。

Cコンパイラもフリーの物が存在すること自体想像もしてなかったので
有名所のTC++あたりを買うか、学校のPCのから盗ってくるか
PCサークルの関係からxxxしてくるか。
それでもちょうどVectorからCDxxx選シリーズが出始めた頃だったのが救いだった。
0077デフォルトの名無しさん2016/05/19(木) 23:29:58.71ID:73EK6oIW
コンパイラが数万すると聞いて
アホかー と思いながらBASICやってたな
初歩的な入門書は普通にあった

ライブラリやツールは
パソ通経由かもしくはベクターがCDにまとめて売ってる奴がありがたかった
LSI-C86試食版でCをおぼえた
0078デフォルトの名無しさん2016/05/20(金) 00:14:50.94ID:oSwuXQlt
Trubo CやWatcom Cなどがありましたね。
Watcom C/C++は使いやすかった
いまは無料で使えるみたいですね。
0079デフォルトの名無しさん2016/05/20(金) 02:27:39.41ID:WCEBsdoQ
てことは今の時代プログラミングできるって強みにならないってことかな?
大学は情報学科なんだけど怖くなってきた。
今の小学生って二人に一人はプログラミングができるって本当なんだろうか?
0080デフォルトの名無しさん2016/05/20(金) 02:32:09.04ID:WCEBsdoQ
この時代の技術的な強みって何だろう…
皆なんでもできるからすごいワクワクしなくなってきた
0081デフォルトの名無しさん2016/05/20(金) 02:35:11.67ID:WCEBsdoQ
プログラマって歯科医なみに飽和してるんでしょ?
なんかわくわくしない
0082デフォルトの名無しさん2016/05/20(金) 02:35:51.62ID:WCEBsdoQ
この時代俺だけ知っていて俺だけが持ってる技術みたいなのはないのかな
もちろん旋盤みたいに技能職じゃなくて技術職でね
0083デフォルトの名無しさん2016/05/20(金) 02:37:01.92ID:WCEBsdoQ
とりあえず20年前の事情がきけてよかったですw

>>75
割れ??
もし割れならネット公開なんてしてもサイバーポリスもいなかった
だろうし氾濫してたんじゃないですか?
0084デフォルトの名無しさん2016/05/20(金) 04:42:16.28ID:6E3fbfbw
プログラミングで大学の情報学科とか意味ない
文系学科出身者でもプログラミングなんかできる
ただし、詳細な理論まで理解するには専門知識が必要
例えば、データの暗号化とかを本当に理解しようとすれば、モジュロ演算などの整数論の
深い理解と応用力がなければ暗号化/解読の新たなコードを作ることはできない
(ライブラリ利用するだけなら誰でもできる)
技術職とはそういうこと、どちらかといえば単なるプログラマは技能職に近い
0085デフォルトの名無しさん2016/05/20(金) 07:44:52.19ID:4VXo3Ti0
>>83
CDの転送するのにどれだけの時間がかかったと思ってるんだよ
そしてそれを上げたままにできるサーバがどれだけあったと思ってるんだよ
0086デフォルトの名無しさん2016/05/20(金) 07:50:52.02ID:Nm0E3DoF
100M落とすのに一晩。テレホ万歳!!
0087デフォルトの名無しさん2016/05/20(金) 08:16:56.21ID:fK4sx7tu
>>85
オフ会で FD 交換とかやってたな
0088デフォルトの名無しさん2016/05/20(金) 08:29:08.86ID:5cANZ/vE
>>87
あとは共同購入とかな
どっちにしてもオフラインで会えること前提だったよな
0089デフォルトの名無しさん2016/05/20(金) 09:34:33.72ID:Nm0E3DoF
MOドライブ(5万円)もCD-Rドライブ(10万円)もこの頃買ったな。
0090デフォルトの名無しさん2016/05/20(金) 10:00:12.37ID:WCEBsdoQ
ちょっとまって
UNIXってのはフリーOSだから
C言語のコンパイラもフリーだったんじゃ?
有料だったんですか?
0091デフォルトの名無しさん2016/05/20(金) 10:09:53.31ID:WCEBsdoQ
例えばぼくUNIXライクなubuntsuっていうソフトインストールしたんですけど
普通にCコンパイラ標準でありましたよ?
UNIXは95がでた当時からあっただろうしインストしたらCコンパイラもついてきた
のでは?
0092デフォルトの名無しさん2016/05/20(金) 11:46:43.26ID:jCV1qcCq
そうだね、LinuxもGNU C Compilerも1995年には既にあったね。

でもメジャーなコンパイラはだいたい有料だったよ。
LSIとかBorlandとか。
0093デフォルトの名無しさん2016/05/20(金) 12:38:02.55ID:EWS23G7J
20年前の振り返り、まだまだ続くよ!
0094デフォルトの名無しさん2016/05/20(金) 12:43:08.23ID:Nm0E3DoF
DOSで使うソフト開発の為にCが使いたいのに
Cの為にUNIX系にするんじゃねぇ…。
0095デフォルトの名無しさん2016/05/20(金) 12:56:51.00ID:fK4sx7tu
>>90
> UNIXってのはフリーOSだから
その UNIX とやらが何を指してるのかによるけど初めからフリーだった訳じゃない
0096デフォルトの名無しさん2016/05/20(金) 13:23:25.79ID:jCV1qcCq
> 例えばぼくUNIXライクなubuntsuっていうソフトインストールしたんですけど
そのubuntsuとやらがUbuntuを指すものとしても、Unixとはコードの系統が違うよ。

Multicsという革新的なOSがあってだな
0097デフォルトの名無しさん2016/05/20(金) 13:24:10.61ID:H0RYJTua
20年前だとPC98+FreeBSDがそこそこ支持されてた
だがネットもない時代に
日本語も不自由な環境やらコンパイラやらわざわざ勉強するとか苦行すぎる
それはフリーじゃなくて嫌儲や
0098デフォルトの名無しさん2016/05/20(金) 13:39:22.34ID:jCV1qcCq
>>79-82
Javaしか読み書きできないようなクズプログラマは腐るほど情報工学系大学から産出されてるらしいけどね。

独学でプログラミング学びましたってレベルですら貴重で
一つでも良いから言語を相当深く知ってる、とか
浅くしか知らなくてもverilogからlispまで何でも触れる、とか
あるいは凡そネットワーク関連で括られる技術なら何でも知ってる、とか
そういった何かに特化したプログラマは枯渇してるから
悲観することは何もないよ。
0099デフォルトの名無しさん2016/05/20(金) 14:03:26.74ID:DpcPfMoX
int i;
int *buf;
buf = NULL;
buf = (int *)malloc(100);

for(i = 0;i < 100;i++){
buf[i] = i;
 }

↑これが動いちゃって凄く怖くないですか?
0100デフォルトの名無しさん2016/05/20(金) 14:08:28.87ID:4wIX/qhD
それを動いちゃうって言う人って・・・
0101デフォルトの名無しさん2016/05/20(金) 14:13:55.00ID:jCV1qcCq
>>99
それが怖いようなら、きっとC言語は向いてないんだよ

// 特定の環境では意味した通りに動くよ!
uint16_t* buf = (uint16_t*)0xb8000;
buf[0] = 0x0730;
0102デフォルトの名無しさん2016/05/20(金) 14:27:51.70ID:4wIX/qhD
>>99
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main()
{
int i;
int *buf;
char *str; //
buf = NULL;
buf = (int *)malloc(100);
str = (char *)malloc(10); //
strcpy(str, "ABCDEFGHI"); //

printf("1:%s¥n", str); //
for(i = 0;i < 100;i++){
buf[i] = i;
}
printf("2:%s¥n", str); //
return 0;
}
実行結果
1:ABCDEFGHI
2:
0103デフォルトの名無しさん2016/05/20(金) 14:40:03.44ID:jCV1qcCq
buf = (int*)malloc(sizeof(int)*100);
0104デフォルトの名無しさん2016/05/20(金) 15:41:46.85ID:0SZSpLq/
>>99
どの辺りが怖いん?
0105デフォルトの名無しさん2016/05/20(金) 17:24:28.41ID:I2VFTkQS
>>97
その頃 Linux を使い始めて、「初めて良い環境を手に入れた」と思ったよ。日本語のことも含めてね。
多分、FreeBSD も大差無かったんじゃないかな。まあ、何を良いと思うかは人それぞれだけどね。
0106デフォルトの名無しさん2016/05/20(金) 17:46:40.38ID:6uv30l7L
例えcのコンパイラがなかったとしてもunixコマンド自体が構造化プログラムの仕様だからc言語の勉強の代わりになったんでは?
むしろ正規表現の勉強ならスクリプトのほうが捗ると思うんだが
0107デフォルトの名無しさん2016/05/20(金) 17:49:04.24ID:6uv30l7L
ちなみにcygwinは20年前から無料だったのかな?
0108デフォルトの名無しさん2016/05/20(金) 18:03:35.32ID:tTx5oGeP
>>106
> 例えcのコンパイラがなかったとしてもunixコマンド自体が構造化プログラムの仕様だからc言語の勉強の代わりになったんでは?
なるかアホ
0109デフォルトの名無しさん2016/05/20(金) 18:26:15.49ID:Nm0E3DoF
大学のプログラミング言語の講座って言語だけ教えてOSについては全く教えなかったよ。
まぁハードとOSの関係についての講座やったらそれだけで1年かかっちゃいそうだけど。
0110デフォルトの名無しさん2016/05/20(金) 18:50:07.63ID:Nf8lVFp1
#include <stdio.h>
int main()
{
printf(
0111デフォルトの名無しさん2016/05/20(金) 19:14:50.29ID:WCEBsdoQ
>>108
いやなるんじゃないですか?
25年前に一太郎しか入ってないガラクタのPC持ってましたが
ターミナルからバブルソートのスクリプトとか作ったりしてましたよ?
まーアルゴリズムが楽しくて仕方ないって感じでしたね。
0112デフォルトの名無しさん2016/05/20(金) 19:38:03.29ID:6E3fbfbw
ID:WCEBsdoQ
>大学は情報学科なんだけど怖くなってきた。
>とりあえず20年前の事情がきけてよかったですw
>25年前に一太郎しか入ってないガラクタのPC持ってましたが
???
0113デフォルトの名無しさん2016/05/20(金) 19:39:20.61ID:WCEBsdoQ
>>112
25年前のPCを10年前に使用してたんですよ。
もう捨てました。機種が何なのかさえ分からないw
0114デフォルトの名無しさん2016/05/20(金) 19:42:44.54ID:1+9PyLLT
unix、linuxについてわけわかんないこと言ってる人が
いるな。本気だったらちょっと検索してunixの歴史でも
見てきた方がいい。釣られてんのかもしれんが。
0115デフォルトの名無しさん2016/05/20(金) 19:46:12.75ID:fQtTxPZw
アルゴリズムを学ぶことをC言語の勉強とは言わない
0116デフォルトの名無しさん2016/05/20(金) 20:08:01.24ID:fK4sx7tu
>>105
カーネルバージョン 1.x の時に日本語なんて使えたっけ?
0117デフォルトの名無しさん2016/05/20(金) 20:22:10.45ID:WCEBsdoQ
ただ昔のPC欲しいな
捨ててしまった。
ターミナルがある30年前くらいのPCだと
何円くらいするんだろう
レアななものは手に入れたい。
0118デフォルトの名無しさん2016/05/20(金) 20:44:24.15ID:HJzRWrTX
この前9801FA買った‥
0119デフォルトの名無しさん2016/05/20(金) 21:11:03.63ID:H0RYJTua
>>104
ホントは分かっててあえて聞くC使いが怖い
ホントに分からずに聞く馬鹿なC使いが怖い
0120デフォルトの名無しさん2016/05/20(金) 21:40:22.16ID:WCEBsdoQ
>>118
羨ましい…
昔の性能でどれだけのことができるか試したいんだけどなー
シミュレータではなく実物そのものがほしいです
0121デフォルトの名無しさん2016/05/20(金) 22:00:19.87ID:jE3cpxsv
藤原さんが自殺されたそうです。
ナムー
人
0122デフォルトの名無しさん2016/05/20(金) 22:25:52.77ID:1ED8UVgC
UNIXなんてWindowsどころじゃない高いOSの代表格だったんだぞ
Solaris8が無料になった時なんてサンがとち狂ったかと思ったもんだ
0123デフォルトの名無しさん2016/05/21(土) 00:06:44.35ID:LPDYglBZ
Quadraがどうしたって?
0124デフォルトの名無しさん2016/05/21(土) 08:22:53.67ID:XW0E+OmD
人工知能でプログラマがいなくなったらどうしようとかいう
ベタな考えがうかんだわけだけどこれについてみんなどうおもう?
0125デフォルトの名無しさん2016/05/21(土) 09:25:24.25ID:4qmWB+Wj
スレ違い
0126デフォルトの名無しさん2016/05/21(土) 09:27:26.82ID:XW0E+OmD
>>125
すまそ
フレームワークがちょうど人口知能っぽいなって思って
質問してしまいました。
0127デフォルトの名無しさん2016/05/21(土) 09:34:42.37ID:K70VO2ZY
どうみても板違い
0128デフォルトの名無しさん2016/05/21(土) 09:41:23.13ID:4qmWB+Wj
>>127
せやな

>>126
つ http://tamae.2ch.net/prog/
0129デフォルトの名無しさん2016/05/21(土) 10:54:11.25ID:PCAwvFHK
このコンテンツで、「C言語は純粋関数型言語だ」と主張されているんですが、
世界ではある程度合意はあるんでしょうか?

>http://kenokabe-techwriting.blogspot.jp/2016/05/c.html
>C言語は純粋関数型である。 「純粋関数型」と「参照透明性」国内の自称関数型コミュニティの胡散臭さと海外論調の違い
0130デフォルトの名無しさん2016/05/21(土) 11:24:54.71ID:4qmWB+Wj
ある言語が純粋関数型言語だって言う時に通常指しているのは、
その言語に束縛はあっても代入は無いって事。
Cには代入はあっても束縛はない。
0131デフォルトの名無しさん2016/05/21(土) 11:43:42.14ID:xEB5od3W
そのURLはアンチスレが賑わうほどの問題児 ブラックリストに入れとけ
0132デフォルトの名無しさん2016/05/21(土) 11:57:57.53ID:jS5LSITS
>>116
漢字を表示する手段と、日本語emacsがあればだいたいなんとかなったからな
カーネル0.xのころからXが使えたはずで、X使えりゃまあ表示は問題無いし、
X使わんでも漢字表示できるフレームバッファドライバとか誰か作ってたし、
ネットワークとかシリアル経由でログインするなら
8bitさえ通れば漢字が表示できる端末エミュレータでいけたし
0133デフォルトの名無しさん2016/05/21(土) 12:46:22.01ID:+EFIShQB
>>97
20年前ってインターネットがまだ一般に普及してないのに凄いな
0134デフォルトの名無しさん2016/05/21(土) 13:07:56.86ID:xEB5od3W
パソ通はあったけどググるという文化も仕組みもなくて決定的に別物
0135デフォルトの名無しさん2016/05/21(土) 13:19:59.91ID:5nz199Fi
電気・電子板から誘導されてきました。

OSなしのC言語でlibJPEGを使ってMotionJPEGを再生させようとしています。
開発環境はTrueSTUDIO5.4.2liteでターゲットはSTM32F7です。

Motionの部分は自作できたのですが、JPEGの部分で一部のデータが壊れているようで
「Bogus Huffman table definition」というエラーが出ます。libJPEGはエラーが出るとexit()関数で
外に抜けてしまうのですが、その時当たり前ですがプログラム全体が落ちます。

エラーが出た場合、exitでmain文から抜けるのではなく、特定のアドレスに飛ぶようにしたいのですがいい方法はないでしょうか。
アセンブラはさっぱりなのでできればCでお願いします。
0136デフォルトの名無しさん2016/05/21(土) 13:29:50.98ID:0WiMYEUz
その環境がどんなもんか知らないけど
setjmp + atexit + longjmp
0137デフォルトの名無しさん2016/05/21(土) 13:45:45.15ID:YA9Dgs9l
libjpegでexit呼ばないようにすればいい
0138デフォルトの名無しさん2016/05/21(土) 14:22:01.23ID:xEB5od3W
その libjpeg とやらが素人の書いたオモチャでないなら
たとえば条件コンパイルや初期化フラグで抑制できるんじゃないの?

どうしてもダメならその処理に入る前に破損チェックして
入らないようにするとか
01391352016/05/21(土) 14:39:41.58ID:5nz199Fi
>>136
ありがとうございます。
こんな便利な関数があったんですね。
まだ解決できてないけど何とかめどが立ちそうです。

>>138
もしかしたらそういうのもあるのかもしれませんが、
見切れてないのでできていません。
破損チェックはCPUの能力的に無理そう(動画にならなくなる)です

ちなみにlibJPEGとはこれのことです
http://libjpeg.sourceforge.net/
0140デフォルトの名無しさん2016/05/21(土) 15:03:47.21ID:5gRfId3+
>>139
ソースあるんだから自分で改造すりゃいいだけじゃね?
0141デフォルトの名無しさん2016/05/21(土) 15:29:00.89ID:ygJHdEnh
>>139
> ちなみにlibJPEGとはこれのことです
> http://libjpeg.sourceforge.net/
example.c にまんま書いてあるぞ
0142デフォルトの名無しさん2016/05/21(土) 15:50:06.84ID:0WiMYEUz
libjpeg知らずにソフトエンジニア気取ってるお笑い芸人も来てるのか
0143デフォルトの名無しさん2016/05/21(土) 16:47:10.90ID:JScxRfd8
>>99
確保する領域固定なら、最初から配列で確保すれば良いのに。
0144デフォルトの名無しさん2016/05/21(土) 19:53:24.35ID:XW0E+OmD
破損チェックで思い出したんですが、横槍すいません。
ISOファイルのオリジナルディスクを入れてくださいは
C言語のプログラムに精通していたら解決できるんでしょうか?ww
そういうツールもあるんですが全然効果なくて自分で作ったほうが
いいのかなと思い始めました。
0145デフォルトの名無しさん2016/05/21(土) 20:02:16.63ID:XW0E+OmD
どんな言語も逆アセンブラしたらC言語にたどり着けるんですかね?
そこが気になります。プログラムのクラックなんかも技術的にできるようになりたい。
0146デフォルトの名無しさん2016/05/21(土) 20:43:47.85ID:p89iMTtM
は?
0147デフォルトの名無しさん2016/05/21(土) 21:25:16.13ID:BejPyWil
>>146
いや、「は?」とか言われてもな...
0148デフォルトの名無しさん2016/05/21(土) 22:20:05.59ID:hnLkmDWv
逆アセンブルは機械語をアセンブリ言語になおすことだぞ?
プログラム言語は関係ないだろ
0149デフォルトの名無しさん2016/05/21(土) 22:20:54.87ID:XRbWBdK9
>>145
辿り着くよ
0150デフォルトの名無しさん2016/05/21(土) 22:49:54.12ID:XW0E+OmD
でも何故このニーモニックはjavaでもなくperlでもなくC言語のコード
に対応してる!って断言できるんでしょうね。
それが知りたいんですけどね。それを知るには変換の仕組みを知る必要
があるのでは?つまり
C言語が変換されたらどんなニーモニックになるか。
こういう参考書が殆どないのは歯がゆいですね。
0151デフォルトの名無しさん2016/05/21(土) 22:54:53.84ID:/Psi2UIt
確かにマシン語のテキストは激減したね
0152デフォルトの名無しさん2016/05/21(土) 22:59:31.73ID:jS5LSITS
>>150
コンパイラにアセンブラへ変換するオプションがある
そういうのは自分で変換して確かめようともしない奴には極められない
0153デフォルトの名無しさん2016/05/21(土) 23:04:59.40ID:XW0E+OmD
>>151
それって誰でもC言語に変換できたらコードが解析されて大変になるから
圧力でもかかってるんですかね?大げさですが技術者って技術についてあんまり
おおっぴらにしてほしくないとかあったりするのかな。あまりにも情報が
垂れ流しにされて困ってる人も多いのではと思いますね。
0154デフォルトの名無しさん2016/05/21(土) 23:05:44.09ID:XW0E+OmD
>>152
なんかワクワクしてきました。やってみます。
0155デフォルトの名無しさん2016/05/21(土) 23:11:37.09ID:/vZ9lW0K
機械語のニーモニック一つを見て、元のC言語ソースを復元はいくら何でも無理だろう
0156デフォルトの名無しさん2016/05/21(土) 23:12:46.76ID:/Psi2UIt
>>153
そんな陰謀論めいた話はなくて,単にマシン語で記述するメリットが正直なくなってきたからだよ
0157デフォルトの名無しさん2016/05/21(土) 23:15:02.99ID:XW0E+OmD
>>155
では何故プログラムはクラックされるんですか?
社員が情報を流出してるからですか?
>>156
でも制御系プログラミングとか機械語で書いてるんじゃないでしたっけ?
0158デフォルトの名無しさん2016/05/21(土) 23:28:28.27ID:/vZ9lW0K
>>157
クラックするためには、元のC言語にたどり着く必要が無いから
機械語レベルで解読し、書き換えをすれば良いし、
そのレベルの事ができない人なら、クラックなんてできないよ
0159デフォルトの名無しさん2016/05/21(土) 23:36:53.61ID:XW0E+OmD
>>158
さりげなく解答頂きありがとうございます
機械語だけをいじるってそんな器用な事ができるのかと思ったのと同時に
それしか無理なのかなーと納得もしました
0160デフォルトの名無しさん2016/05/21(土) 23:38:05.09ID:/Psi2UIt
>>157
今はCで書いてるんじゃないかな
0161デフォルトの名無しさん2016/05/22(日) 00:48:41.64ID:1OYErECz
こういうの読んで勉強した方が早い。最初の数章がCやgccツールの復習になっている

Hacking:美しき策謀 第2版――脆弱性攻撃の理論と実際
https://www.oreilly.co.jp/books/9784873115146/

0x200 プログラミング
0x210 プログラミングとは何か?
0x230 制御構造
======================================
0x252 x86プロセッサ
0x253 アセンブリ言語
======================================
0x260 基本に立ち返る
0x261 文字列
0x263 ポインタ
======================================
0x267 変数のスコープ
0x270 メモリのセグメント化
0x271 C言語におけるメモリセグメント
0162デフォルトの名無しさん2016/05/22(日) 00:59:24.33ID:5k8BO1OF
将棋ソフトのやねうら王の作者、やねうらおの書いた本、
解析魔法少女美咲ちゃん マジカル・オープン!

OllyDbg を使って、ハッキング
0163デフォルトの名無しさん2016/05/22(日) 05:36:57.29ID:FgH6NpYj
やねうらおも今やそういう肩書で呼ばれる時代か
0164デフォルトの名無しさん2016/05/22(日) 13:25:56.29ID:vCgoPFhr
>>161
すげーワクワクする
こういうの勉強したらクラックとかできるようになるんでしょ
0165デフォルトの名無しさん2016/05/22(日) 13:46:55.18ID:vKoFE7Z9
クラックの本質は高級マンションに張り付いて
住人一人一人を尾行して部屋番号と勤め先を調べたり
電話を盗聴したりするようなもの
魔法みたいに突然出来るものじゃない
0166デフォルトの名無しさん2016/05/22(日) 16:16:45.97ID:5k8BO1OF
ドラクエXでは、ハッキングできないよ

通信データのうち転送エラーで、500バイト中、1バイトは、
間違ったデータを返すルーターがあるため、

はなから通信データを信用せず、独自にチェックしているので、
データをいじっても、サーバー側でエラーになる
0167デフォルトの名無しさん2016/05/22(日) 16:26:27.19ID:llPwnouv
他板から誘導されてきました

gcc+ldのリンカスクリプトについて質問があります。
現在、ヒープとスタックを同じメモリ領域に確保しています。
/* User_heap_stack section, used to check that there is enough RAM left */
._user_heap_stack :
{
. = ALIGN(4);
_heap_start = .;
PROVIDE ( end = . );
PROVIDE ( _end = . );
. = . + _Min_Heap_Size;
. = . + _Min_Stack_Size;
. = ALIGN(4);
} > RAM
このような感じです。それを、ヒープとスタックで別領域のメモリを確保したいので、
/* heap data section */
.heap :
{
. = ALIGN(4);
_end = .;
end = _end;
PROVIDE ( _end = .);
PROVIDE ( end = _end);
PROVIDE ( _heap = .);
*(.heap .heap.*)
*(.HEAP)
. = . + _Min_Heap_Size;
. = ALIGN(4);
} > RAM
(続く)
01681672016/05/22(日) 16:26:52.01ID:llPwnouv
/* stack data section */
.stack :
{
_stack_top = .;
PROVIDE ( _stack_top = .);
*(.stack .stack.*)
*(.STACK)
_stack = .;
PROVIDE ( _stack = .);
. = ALIGN(8);
_stack_end = _estack;
PROVIDE ( _stack_end = _estack);
} > DRAM
としてみました。ところが、ヒープに十分な容量があるにもかかわらず、mallocでメモリ確保ができません。
これは、.heapをヒープとして認識されていないような気がするのですが対処法はないでしょうか?
よろしくお願いします。
0169デフォルトの名無しさん2016/05/22(日) 21:42:51.41ID:vCgoPFhr
C言語勉強した後→今はやりのニューラルネットワークの勉強
したんだけどいまいち応用したいことがないというww
思ったんだけど言語の勉強は簡単だけど情報理論の勉強ってめちゃくちゃ
大変ですね
0170デフォルトの名無しさん2016/05/22(日) 23:13:00.28ID:kh4BCROc
ちょっと板違いかもしれないんですけど、ここなら技術者がたくさんいるかなって思ったので書きます。
言語はCじゃなくてアセンブラとハードウェア記述言語なんですけど、
ファミコンを作ってみました。
http://youtu.be/ASx5mEBuKJE
色々技術者の感想とか聞いてみたいです。
まだ途中です。
アセンブラとエミュレータも作りました。
なんか響くものありますか?技術者の方々。。。
0171デフォルトの名無しさん2016/05/23(月) 08:54:53.18ID:bDXz1lkX
バグバグだけどそれっぽく動いてるね!
でもスレ違いだよ!
該当スレは無いから新しくスレッド立ててみたらどう?

ソースが無いから「すげぇ!動いてる!」以外の感想は出ないと思うの。
0172デフォルトの名無しさん2016/05/23(月) 10:12:40.21ID:EqRWnqiT
ありがとうございます!カーネーション。

ソースは公開はしてます。昔のsourceforgeで。

FPGA
https://osdn.jp/projects/motonesfpga/scm/git/motonesfpga/

エミュレータ
https://osdn.jp/projects/motonesemu/scm/git/motonesemu/

アセンブラ
https://osdn.jp/users/astoria-d/pf/motonesas/scm/tree/master/

スレ違いですねー。すいません。

時間あるときにスレッド立ててみますー。
0173デフォルトの名無しさん2016/05/23(月) 10:18:58.57ID:8vldmLpi
http://echo.2ch.net/gamedev/

立てるならこっちの方外衣のではないかな?
0174デフォルトの名無しさん2016/05/23(月) 10:19:39.52ID:8vldmLpi
方が良いのではないかな

誤変換すまん
0175デフォルトの名無しさん2016/05/23(月) 10:36:11.05ID:mr7kZnmZ
板違いにかまってあげるみんな優しい
0176デフォルトの名無しさん2016/05/23(月) 12:52:21.51ID:BbHX4Eo2
スレ違いだとは思うが
エミュレータとかアセンブラ
はこの板でいいような気がする

FPGA は
電気・電子
http://wc2014.2ch.net/denki/
かな
0177デフォルトの名無しさん2016/05/23(月) 14:29:21.48ID:EqRWnqiT
>>174
あー、ゲームは全然分かんないんですよ。それこそスーマリやったことある程度なんで。
ゲームの話の方に行っちゃうとちんぷんかんぷんになるかも。
0178デフォルトの名無しさん2016/05/23(月) 14:31:50.76ID:EqRWnqiT
>>176
いいですかね?Cとアセンブラ詳しい人達と話してみたかっただけです。
0179デフォルトの名無しさん2016/05/23(月) 14:33:02.94ID:EqRWnqiT
>>175
ホント優しい世界ですね。日本のそういうとこ好きです。
0180デフォルトの名無しさん2016/05/23(月) 14:41:05.37ID:RYuvL5QP
この板で良いんじゃないかな?
立てたら教えてくださいね
0181デフォルトの名無しさん2016/05/23(月) 14:44:07.66ID:rInNNyjw
>>172
君はなかなかやるなあ。
このスレの俺を除く誰よりも君の方が優秀だ。
0182デフォルトの名無しさん2016/05/23(月) 15:13:31.31ID:RYuvL5QP
最初から自分を除いてしまうって

何て謙虚な人なんだ
0183デフォルトの名無しさん2016/05/23(月) 15:45:37.76ID:W4bNz0YE
暗に自分が一番だって言ってるののどこが謙虚なんだ
0184デフォルトの名無しさん2016/05/23(月) 15:49:42.45ID:hH63TVCl
>>183 も一連のネタに含まれるの?
0185デフォルトの名無しさん2016/05/23(月) 16:04:42.33ID:V758P28P
世界中のハッカーより2chのが優秀だと思うのでここに書き込みました。
0186デフォルトの名無しさん2016/05/23(月) 16:12:32.37ID:2nxNFjiS
C言語がアセンブラに変換される仕組みを勉強したくて色んな参考書買ったんですが
同じアセンブラでも命令の内容が違うのは何故ですか?
後NOPとかROTATEとか本によっては無い命令もあります。
もしかしてアセンブラって機種依存ですか?
0187デフォルトの名無しさん2016/05/23(月) 16:15:28.27ID:bDXz1lkX
>>186
もしかしなくてもアセンブリは機種依存です。
0188デフォルトの名無しさん2016/05/23(月) 16:46:57.15ID:WJyvxaEH
機種依存のアセンブラを覚えても、意味なし

LLVM, CASL2 などの、仮想・抽象アセンブラを見た方がいい
0189デフォルトの名無しさん2016/05/23(月) 16:49:01.69ID:2nxNFjiS
ではWindows7とかは標準のアセンブリなんですか?
標準アセンブリというのを学んでみたいんですけど…
0190デフォルトの名無しさん2016/05/23(月) 17:00:59.85ID:PCdOqhja
今からアセンブラ覚える人って大変だろうなぁ。
自分の場合はゲーム作成目的でBASICから呼び出すレベルから始めたけど。
0191デフォルトの名無しさん2016/05/23(月) 17:30:36.10ID:2nxNFjiS
>>190
自分が言ったアセンブラはPICアセンブラです
NOPとかMOVLFとかPIC専用アセンブラなんですよ
これ覚えてるだけでもwindows7Cのアセンブラもすんなり理解できますか?
0192デフォルトの名無しさん2016/05/23(月) 18:04:14.84ID:vsZv3DVO
出来ません。
0193デフォルトの名無しさん2016/05/23(月) 18:25:03.43ID:bDXz1lkX
>>189
そもそも、CPU毎に機械語が違うんだから
機械語とほぼ一対一対応するアセンブリ言語がCPU毎に違うって事くらい
アセンブリ言語とはなんぞやってのを知ってれば分かる事なんだがなぁ

Windows 7が動作するCPUはx86系だから、
どうしてもアセンブリを覚えてWindows 7上で動かしたいと言うのであれば
x86アセンブリを覚えれば良い。
0194デフォルトの名無しさん2016/05/23(月) 18:25:55.21ID:bDXz1lkX
あるいは>>188にあるように
LLVM IRを覚えるとかね。
0195デフォルトの名無しさん2016/05/23(月) 18:41:44.56ID:q9fFfbWe
gas使えば。
0196デフォルトの名無しさん2016/05/23(月) 19:35:41.34ID:2nxNFjiS
>>193
x86やx64ってアセンブラの名前だったんですね。
ただCPUごとにアセンブラが違ってもhelloworldが同じコンパイラで
動くのは何故なんだぜ?とは思いますけど
0197デフォルトの名無しさん2016/05/23(月) 19:42:56.92ID:bDXz1lkX
>>196
x86やらx64やらは、正確にはアーキテクチャの、それも通称の方。

何故CPUが違っても同じコンパイラで動くか?
コンパイラが頑張ってるからさ。
0198デフォルトの名無しさん2016/05/23(月) 20:16:14.16ID:2nxNFjiS
>>197
なるほど!
さっそくx86アセンブラ勉強します!
何て本買えばいいですか?
0199デフォルトの名無しさん2016/05/23(月) 20:20:05.61ID:zyN7MWUp
>>198
最近はいいテキストがなくてね‥
0200デフォルトの名無しさん2016/05/23(月) 20:28:11.43ID:zzMperjF
MASM 6.0のマニュアル

アセンブラの参考書は、無い。むかしから、無い
0201デフォルトの名無しさん2016/05/23(月) 20:45:08.88ID:vsZv3DVO
インテルのマニュアル3巻組のを
初めから読むと良い。
もしくはAMDのAm186 and Am188 Family Instruction Set Manual
とか古いのだと量が少ないので楽。
0202デフォルトの名無しさん2016/05/23(月) 21:21:37.40ID:2nxNFjiS
>>200
無いww
これはやる気でますね
アセンブラ覚えたらほかの学生と差がつくってことですもんね
0203デフォルトの名無しさん2016/05/23(月) 21:23:47.26ID:G//Wy7ps
>>202
CPUのマニュアルがそれに相当するよ
MMX命令が〜とか聞いたことあるだろ?
そういう○○命令とそれに対応するニーモニックの組み合わせってだけ
0204デフォルトの名無しさん2016/05/23(月) 21:56:12.14ID:bDXz1lkX
3巻組と銘打ってるのに最終的に8個のpdfのセットになってるのが
インテルのマニュアル。

昔は上中下巻の中巻が2本立てという謎仕様だったが今よりマシという
0205デフォルトの名無しさん2016/05/23(月) 22:00:35.12ID:bDXz1lkX
>>202
強いて言えば、ちょっと古い本だが「高級言語プログラマのためのアセンブラ入門」
http://www.amazon.co.jp/dp/4797332816
とか、「30日でできる! OS自作入門」
http://www.amazon.co.jp/dp/4839919844
とかがx86の参考書としては使えるかな。
0206デフォルトの名無しさん2016/05/23(月) 22:03:19.56ID:bEUIJma6
アセンブラ勉強したいなら文法はネットで調べるだけで十分。コードをみたほうがいい。linuxのブートストラップがお勧め。16ビット、32ビット、64ビット、MMU、全て最小限のコードはある。
理解できないなら具体的にコードを引用して誰かに質問すればいい。
0207デフォルトの名無しさん2016/05/23(月) 22:08:20.97ID:bEUIJma6
あ、PICか。マイコンの雑誌とかがいいんじゃないでしょうか。
PICはアセンブラが基本だからアセンブラ分からなければPICいじる意味ないくらいですね。
0208デフォルトの名無しさん2016/05/24(火) 09:49:37.98ID:AiuqlWdY
386まではニーモニック表見ながら勉強出来たけどMMXで躓いてからは全く勉強してないなぁ。



昔スパコンOS開発部に派遣された時、デバッグで
「ダンプを逆アセして原因探してね。ニーモニック表あそこにあるから」
と言われたのには驚いたわ。PowerPC系は触ったことなかったのに(X68kのアセンブラ解説書を少し読んだ事があった程度)。
0209デフォルトの名無しさん2016/05/24(火) 13:35:34.09ID:H+uoNdTK
>>208
RISCのCPUならあり得ますね。逆アセするのも慣れてれば簡単だし。スパコンってppcがベースなんですね。
MMXなどコンパイラが生成しないような命令は特殊用途と割り切って、局所的に使うんですかね?汎用性が下がりますもんね。
0210デフォルトの名無しさん2016/05/24(火) 13:43:09.34ID:t6Kxw5HS
コンパイラは指定されたCPUに対して最適コードを書き出すんじゃないの?
0211デフォルトの名無しさん2016/05/24(火) 14:30:12.12ID:zoeZ+LAK
>>210
MMXなどの拡張命令はオプションを指定しないと入らないと思ってましたけど、勝手に使われるもんなんですかね。
0212デフォルトの名無しさん2016/05/24(火) 15:37:26.91ID:tdzye3Zz
>>211
勝手に使われて、オプションで使われなくする方が多いんじゃないか?
0213デフォルトの名無しさん2016/05/24(火) 15:41:55.35ID:t6Kxw5HS
>>211
http://www.isus.jp/products/c-compilers/compiler_part1/
0214デフォルトの名無しさん2016/05/24(火) 17:34:51.51ID:zoeZ+LAK
>>212
そうなんですね。OS開発してると拡張命令なんて使われるの見たことないんで、アプリの人達は大変ですね。それこそ逆アセなんてもうできないような気がするなあ。
0215デフォルトの名無しさん2016/05/24(火) 18:25:17.62ID:yhhSFwtW
gccだと古くは-msoft-floatオプションとかあるな
0216デフォルトの名無しさん2016/05/24(火) 19:02:12.95ID:2lDnpmo+
visual studio C++でmfcプロジェクト選んだら
最初からコードいっぱい書かれてて何をしていいか分かりませんでした。
これらのコードは消していいんですか?
ハローワールドのプログラム書きたいだけなんですけど困ってしまいました。
0217デフォルトの名無しさん2016/05/24(火) 19:09:46.55ID:Mn8/L3Ni
>>216
mfc選ぶなよ。
初心者にはc++/cliがオススメだぞ。
0218デフォルトの名無しさん2016/05/24(火) 19:22:26.77ID:2lDnpmo+
>>217
いや通っぽいの選んだら他人と差つくかなと思って
ちなアセンブラ質問してた奴です
とにかくMFCでやりたいんです。
関数も多いそうですしほかの奴だとMFCAPIつかえないんですよね?
0219デフォルトの名無しさん2016/05/24(火) 19:41:26.30ID:NcOn82rz
自動生成されてるコードの意味が解らなきゃMFC使うの夢物語だよ
0220デフォルトの名無しさん2016/05/24(火) 19:47:03.54ID:9gec5rAi
>>218
hello world 動かせない時点で他人に差をつけられてるよ

独学ならちゃんと順序を踏め
0221デフォルトの名無しさん2016/05/24(火) 19:53:36.74ID:ehSASbT+
おれまだ20代で歴も薄い雑魚グラマだから知らないんだけど、MFCはあれ流行ってたことあるの?
directwriteでhello world描画できる方がよっぽど重宝されそう
0222デフォルトの名無しさん2016/05/24(火) 19:54:21.71ID:LoTiGm3R
>>218
まず8ビットマイコンで色々弄って見たらどうだろう
0223デフォルトの名無しさん2016/05/24(火) 19:56:51.25ID:TK7Wrztf
>>221
win3.1とかwin95とかの頃は大流行りだったよ
0224デフォルトの名無しさん2016/05/24(火) 20:02:23.11ID:ehSASbT+
>>223
ありがとうございました
文献に2002年とか多いのはそういうことか
0225デフォルトの名無しさん2016/05/24(火) 20:27:33.40ID:H+uoNdTK
え、逆に今はMFC使わないんだ。知らんかったw
ま、フレームワーク変わっても書く内容はあんま変わんないような気がするけど。
0226デフォルトの名無しさん2016/05/24(火) 20:31:41.19ID:D0tZyPZ2
勉強しててもGUIじゃないとモチベーション維持できないよね。
gtkとかどうなんでしょう。
0227デフォルトの名無しさん2016/05/24(火) 20:42:16.63ID:mt0PIiy1
まずAPIって何か分かる?
0228デフォルトの名無しさん2016/05/24(火) 20:51:45.36ID:TtTF6uFS
間違ってc++スレに迷い込んだ気がした
0229デフォルトの名無しさん2016/05/24(火) 22:12:51.25ID:fsM+Gj6y
副作用関連の未定義について教えて下さい

> 直前の副作用完了点から次の副作用完了点までの間に,式の評価によって一つのオブジェクトに格納さ れた値を変更する回数は,高々1 回でなければならない。
> さらに,変更前の値の読取りは,格納される値 を決定するためだけに行われなければならない
の2行めが何を言っているかさっぱり分からんとです。

i = i + 1; // ... (1)
a[i] = i++; // ... (2)

(1)が許されて、(2)は許されないことから逆算して考えてみました。


・「変更前の値の読取り」は、「格納される値 を決定する」ケースにおいてのみ許される

・「変更前の値の読取り」とは、(1)における右辺のi、(2)における左辺のiを示す
イコール「副作用の発生するオブジェクトの値の読み取り(その値は副作用による変更前のものになる)」

・「格納される値 を決定するため」は、「代入される値を算出するため」
 ((2)は、配列の位置を決めるためだからNG)

という認識であっていますでしょうか?


a = i + i++;
とか(2)がダメなら何となくダメそうに感じましたが、
iが「代入される値を算出するため」にしか使われていないからOKだったりしますか?
0230デフォルトの名無しさん2016/05/24(火) 22:30:44.98ID:wt2wiSzh
C++は、Cと違ってクラスがある。
君はクラスのことを知っているのか?

継承チェーンをさかのぼって、Baseクラスの同名のメソッドを、
自動的に順々に呼んでいく言語と、
自動的には呼ばないので、自分で呼んでいく言語の、2種類がある

まあ、このスレはCのスレだから、C++の話はスレ違い
0231デフォルトの名無しさん2016/05/24(火) 23:15:07.66ID:wt2wiSzh
>>229
>i + i++;
インクリメントを他の式と、組み合わせられない。
必ず単独で使うこと。MISRA-C 2004、ルール12.13

ルール12.2、1つの副作用完了点内での、部分式の評価順序は未規定
i = 1; の時、
i + i++; は、1 + 2, 2 + 2 のどちらかわからない

次の文が実行される時には、インクリメントされているけど、
そのタイミングは同じ文内では、はっきり決まっていない

func(i, i++);
これも同様に引数が、(1, 2), (2, 2)のどちらかわからない
02322312016/05/24(火) 23:27:48.52ID:wt2wiSzh
>231 修正

>i = 1; の時
>i + i++; は、1 + 2, 2 + 2 のどちらかわからない
1 + 1, 2 + 1 だな

>func(i, i++);
>これも同様に引数が、(1, 2), (2, 2)のどちらかわからない
(1, 1), (2, 1) だな
02332312016/05/24(火) 23:45:57.48ID:wt2wiSzh
>>229
>さらに,変更前の値の読取りは,格納される値 を決定するためだけに行われなければならない

これは、MISRA-C 2004、ルール12.2、volatile 変数のことかな?

vがvolatile 変数だとして、
v + v;
ハードウェアをアクセスする度に、コロコロと値が変わるから、
これは、1 + 1, 1 + 2 かも知れない

だから、vに不用意にアクセスせず、
a = v; のように、一旦変数に入れてから、aを使う

v; みたいにアクセスしては、いけない
0234デフォルトの名無しさん2016/05/25(水) 00:44:05.85ID:gdJJQ64a
ご回答ありがとうございます

>>231
> インクリメントを他の式と、組み合わせられない。
> 必ず単独で使うこと。MISRA-C 2004、ルール12.13
例えば
a = b * c + i++;
は、C言語規格上許されると思っているのですけれど、ルールに抵触するのでしょうか?

> ルール12.2、1つの副作用完了点内での、部分式の評価順序は未規定
a = i + i++;
がダメな理由はしっくりきました。


>>233
>さらに,変更前の値の読取りは,格納される値 を決定するためだけに行われなければならない
C言語の規格書から持ってきました
JISX3010 2003 プログラム言語C 6-5 式

a[i] = i++;
がダメな理由が、この一文らしいのですが・・・
この文をどう解釈すればよいかさっぱりだったので質問に至った次第です。
0235デフォルトの名無しさん2016/05/25(水) 03:01:42.03ID:sGJacJpA
マ イ ン ド コ ン ト ロ ー ル の手法

・沢山の人が、偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法

偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い

靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト

10人に一人は カ ル ト か 外 国 人

「ガ ス ラ イ テ ィ ン グ」 で 検 索 を !
02362312016/05/25(水) 03:53:16.87ID:0v8CMiQb
>a = b * c + i++;
Goでもインクリメントは単独文で、他の式と組み合わせられないから、
MISRA-C 2004、ルール12.13 には違反する

>a[i] = i++;
これも、i = 1 だとして、a[1], a[2]のどちらかわからない。
ルール12.2、1つの副作用完了点内での、部分式の評価順序は未規定

iの読み取りが、1つの副作用完了点内で、
左辺・右辺の2回起こっていて、そのタイミングがわからない。
とにかく、1つの文内で、更新される同じ変数を、2回アクセスしたらダメ

言語の規格書を読んで勉強するのは、素人には絶対無理。
MISRA-Cの日本語訳を書いている集団でさえ、
規格書に詳しい人はいないし、皆欧州の委員会へ、問い合わせて作っている

まず規格書を説明するための、例題や概念が必要。
副作用と副作用完了点、キャストの潜在型・汎整数拡張・平衡化、複合式など

とにかく、バグを避けるには、まぎらわしい書き方をしない。
長い文を書かない。誰も規格について詳しい人はいないから
0237デフォルトの名無しさん2016/05/25(水) 05:12:46.44ID:gdJJQ64a
>>236
あー分かった

> とにかく、1つの文内で、更新される同じ変数を、2回アクセスしたらダメ
と
> > さらに,変更前の値の読取りは,格納される値 を決定するためだけに行われなければならない
がイコールか


> 直前の副作用完了点から次の副作用完了点までの間に,式の評価によって一つのオブジェクトに格納さ れた値を変更する回数は,高々1 回でなければならない。
> さらに,変更前の値の読取りは,格納される値 を決定するためだけに行われなければならない

2行目の「格納される値 を決定する」は、1行目の「(高々1回の)格納さ れた値を変更する」を指しているんだ。
iに副作用が発生する式(i++)を書いたのであれば、iの値の読み取りはi++のため以外ではしてはならないと。

それを簡単に言うと
> とにかく、1つの文内で、更新される同じ変数を、2回アクセスしたらダメ
となる


> とにかく、バグを避けるには、まぎらわしい書き方をしない。
> 長い文を書かない。
はい、自分が書く時はそうしたいと思います。


ありがとうございます
お陰で理解できました
0238デフォルトの名無しさん2016/05/25(水) 07:21:38.02ID:Qq1d4n8I
MISRA-C推しの底辺がかきまわしてるけど、C言語は自由度が高いので、高い信頼性を要求される分野では単価の安い底辺PGを使えない
それを解決しようと足掻いてるのがMISRA-C

C言語を学ぶ上で参考にするのは構わないが、NGワードに設定しておいた方がノイズリダクション出来て良いかもね
0239デフォルトの名無しさん2016/05/25(水) 12:55:28.50ID:pZYZ14wu
PM, >>238 が WARNING 無視するなと何度言っても聞きません 首にしてください
0240デフォルトの名無しさん2016/05/25(水) 13:12:27.40ID:ADImxnBq
だって警告レベル一番キツくしてSDKサンプルをコンパイルすると警告出るんだもん
M$馬鹿じゃねぇの?()
0241デフォルトの名無しさん2016/05/25(水) 13:14:52.07ID:PX54IJWY
>>240
いい学習素材だと思うから、
そのエラーの原因と直しをしてみたら?
0242デフォルトの名無しさん2016/05/25(水) 13:22:36.73ID:JRGw8yci
>>240
それで警告が出るからMSが馬鹿だと結論づけるお前が馬鹿
0243デフォルトの名無しさん2016/05/25(水) 14:50:18.90ID:Qq1d4n8I
>>239
MISRA-Cはバカのための規格なので、バカを排除している職場では不要、使ってない。
0244デフォルトの名無しさん2016/05/25(水) 16:59:51.98ID:grsxbFu1
以下のようなプログラムを作成せよ。
5名分の数学の点数と英語の点数を入力する。
以下の計算式に基づいて合計点数を計算する。
(合計点数)=(数学の点数)×1.2 + (英語の点数)×0.8
上位2名を「合格(A)」とする。
上記合格者以外について、以下の計算式に基づいて合計点を再計算する。
(合計点数)=(数学の点数)×0.8 + (英語の点数)×1.2
上位2名を「合格(B)」とする。
つまり、不合格者は1名のみとなる。
同じ合計点数はないと仮定してよい。

こういう課題なんだけど、とりあえず1.2とかの計算はおいといて、入力した点数の最高点の人を合格にしようとしたんだけど
合格が0人目になってしまう 途中までのプログラム下に貼るんでアドバイスください
0245デフォルトの名無しさん2016/05/25(水) 17:00:51.35ID:grsxbFu1
>>244の続き
#include<stdio.h>

void main()
{
int i=0;
int a[5];
int b[5];
int c[5];
double tempmax;

printf("5人分の数学の点数を入力してください\n");

for( i=0; i<5; i++)
{
printf("%d人目の数学の点数:",i+1);
scanf_s("%d",&a[i]);
}

printf("英語の点数を入力してください\n");

for( i=0; i<5; i++)
{
printf("%d人目の英語の点数:",i+1);
scanf_s("%d",&b[i]);
}
0246デフォルトの名無しさん2016/05/25(水) 17:02:05.60ID:grsxbFu1
連投すいません さらに続き

for( i=0; i<5; i++)
{
c[i] = a[i] + b[i];

}
printf("%d,%d,%d,%d,%d",c[0],c[1],c[2],c[3],c[4]);
tempmax = c[0];

for( i=0; i<4; i++)
{
if(c[i]>tempmax)
{
tempmax = c[i];
}
}

printf("合格(A):%d人目 ",tempmax);
}
0247デフォルトの名無しさん2016/05/25(水) 17:13:25.35ID:hmlo+RWl
tempmax は最高得点を記録した double の値らしいが、
表示の方は「何人目」で int (%d) の値として扱ってるね。

他にも色々間違ってるけど、意味のある値が見えてくれば
検討の取っ掛かりになると思う。
0248デフォルトの名無しさん2016/05/25(水) 17:32:24.26ID:8+OpaV01
printf("合格者の得点: %f\n", tempmax);
0249デフォルトの名無しさん2016/05/25(水) 18:09:12.23ID:mqK6DNQr
最後のループではi<4ではなくてi<5。
最後のprintfでは最高点tempmaxを表示するようだけど、
何人目だからiを表示しないといけない。
最高点を取った人の番号を保存するための変数を用意して
最後のループを書き換える。
int no=0;
for( i=0; i<5; i++)
{
if(c[i]>tempmax)
{
tempmax = c[i];
no=i;
}
}
printf("合格(A):%d人目 ",no+1);
これでどうだ?
0250デフォルトの名無しさん2016/05/25(水) 18:12:42.26ID:mqK6DNQr
こっちの方がいいかな。
printf("合格(A):%d人目 %d点",no+1,(int)tempmax);
0251デフォルトの名無しさん2016/05/25(水) 18:46:25.87ID:grsxbFu1
>>249-250を参考にしたら数学英語の得点の最高合計点取った人が出るようになった ありがとう
でも、数学英語の両方とも上から5,4,3,2,1て入力したら-858993459人目って出るようになった
どっかforの範囲間違えたかな?
0252デフォルトの名無しさん2016/05/25(水) 20:07:47.10ID:GAaLSrgN
ちょっと前にFPGAでファミコン作ってみたって書いて、スレ違い、板違いって怒られた者です。
エミュならこの板で良さげなんで、スレッド立ててみました。

http://itest.2ch.net/test/read.cgi/tech/1464174113

良かったら遊びに来てください。
0253デフォルトの名無しさん2016/05/25(水) 20:09:18.71ID:grsxbFu1
>>251
自己解決しました
また質問なんだけど上から二番目の点数のデータ、もしくは、一番目のデータを除いた最高点数のデータ
ってどう表現すればいいの?
0254デフォルトの名無しさん2016/05/25(水) 20:12:29.33ID:6ZfKurqy
>>240
サンプルはいいとしてヘッダーファイルの警告ぐらい抑止しといてくれ
0255デフォルトの名無しさん2016/05/25(水) 20:25:21.80ID:Il38ptRz
>>217
でもあれでしょ?
c++/cliだとセットアップしたばかりのwindowsでは動かないでしょ?
0256デフォルトの名無しさん2016/05/25(水) 20:46:37.33ID:8+OpaV01
>>253
ソートしろ
0257デフォルトの名無しさん2016/05/25(水) 22:07:32.21ID:3hC190Yp
教えてください。
固定長テキストデータを、別ファイルに読み込む方法。
例えば3か月分の給料、15万6千円、18万7千円、19万3千円が
156187193とテキストデータで入っている。
156,187,193と切り出したい。
fscanf,fseek使ってもできませんでした。未熟者です。
0258デフォルトの名無しさん2016/05/25(水) 22:09:08.14ID:8+OpaV01
fgetcで1文字ずつ読み込める。
それを3回繰り返す。
0259デフォルトの名無しさん2016/05/25(水) 22:09:08.78ID:mqK6DNQr
ソートしないなら、tempmax1とtempmax2を用意して最初に最高点のtempmax1と順番を決定する。
次にtempmax2に対しても同じ計算をする。但し、c[i]<tempmax1を果たす。
要するに、最高得点を超えない場合の最高得点を求めればよい。
double tempmax1 = c[0],tempmax2 = c[0];
int no1=0,no2=0;
for( i=0; i<5; i++)
{
if(c[i]>tempmax1)
{
tempmax1 = c[i];
no1=i;
}
}
for( i=0; i<5; i++)
{
if(c[i]>tempmax2 && c[i]<tempmax1)
{
tempmax2 = c[i];
no2=i;
}
}
printf("合格(A):%d人目 %d点\n",no1+1,(int)tempmax1);
printf("合格(A):%d人目 %d点\n",no2+1,(int)tempmax2);
0260デフォルトの名無しさん2016/05/25(水) 22:38:48.23ID:grsxbFu1
>>259
参考にさせてもらって合格(A)はうまく出力できた
後半の合格(B)を出力するときにc[i]<tempmax1のtemomax1の値が計算が変わって
変わってしまってるからif(c[i]>tempmax2 && c[i]<tempmax1) こういうふうにできない

#include<stdio.h>

void main()
{
int i = 0;
int a[5];
int b[5];
int c[5];
int no1=0,no2=0,no3=0,no4=0,no5=0;
double MAX,MAx,Max,max;
int min;

printf("5人分の数学の点数を入力してください\n");

for (i = 0; i<5; i++)
{
printf("%d人目の数学の点数:", i + 1);
scanf_s("%d", &a[i]);
}

printf("英語の点数を入力してください\n");

for (i = 0; i<5; i++)
{
printf("%d人目の英語の点数:", i + 1);
scanf_s("%d", &b[i]);
}
0261デフォルトの名無しさん2016/05/25(水) 22:39:39.72ID:grsxbFu1
>>260続き
for (i = 0; i<5; i++)
{
c[i] = (double)1.2*a[i] + (double)0.8*b[i];
}

MAX = c[0];

for( i=0; i<5; i++)
{
if(c[i]>MAX)
{
MAX = c[i];
no1=i;
}
}
printf("合格(A):%d人目 ",no1+1,(int)MAX);

MAx = c[0];

for (i = 0; i<5; i++)
{
if (c[i] > MAx && c[i] < MAX)
{
MAx = c[i];
no2 = i;
}
}
printf("%d人目\n", no2 + 1, (int)MAx);

Max = c[0];
0262デフォルトの名無しさん2016/05/25(水) 22:42:35.41ID:grsxbFu1
>>261続き
for (i = 0; i<5; i++)
{
c[i] = (double)0.8*a[i] + (double)1.2*b[i];
}

for (i = 0; i < 5; i++)
{
if (c[i] > Max && c[i]<MAx)
{
Max = c[i];
no3 = i;
}
}

printf("合格(B):%d人目 ", no3 + 1, (int)Max);

max = c[0];
for (i = 0; i < 5; i++)
{
if (c[i] > max && c[i]<Max)
{
max = c[i];
no4 = i;
}
}
0263デフォルトの名無しさん2016/05/25(水) 22:43:25.22ID:grsxbFu1
<<262続き
連投すいません
printf("%d人目\n", no4 + 1, (int)max);

min = c[0];
for (i = 0; i < 5; i++)
{
if (c[i] >min && c[i]<max)
{
min = c[i];
no5 = i;
}
}
printf("不合格:%d人目", no5 + 1, min);
}
0264デフォルトの名無しさん2016/05/25(水) 23:24:12.02ID:mqK6DNQr
面倒な奴だな。質問を小出しにするなよ。手間を掛けさせるな。
1番目2番目とかじゃなくて
5番目6番目とかずっと先まで出力したいなら
並べ替えしてから出力した方が短くて簡単だぞ。
並べ替えの方法はそこら辺のアルゴリズムの本に
幾らでも書いてある。本を探すのが面倒ならwikiにも出ているぞ。
挿入ソートでも見ればC言語のソースも載っている。
それをコピペして使え。
0265デフォルトの名無しさん2016/05/26(木) 00:56:11.94ID:B/Q2fO5b
いい加減余所でやれ
C/C++の宿題片付けます 170代目 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1456908378/
0266デフォルトの名無しさん2016/05/26(木) 01:07:08.20ID:z4o5uVHs
int my_cmp(const void* c1, const void* c2)
{
0267デフォルトの名無しさん2016/05/26(木) 01:11:01.98ID:z4o5uVHs
int my_cmp(const void* c1, const void* c2)
{
 int a1 = *(const int*)c1;
 int a2 = *(const int*)c2;
}
....
int a[5];
int b[5];
int c[5];
....
qsort(a, sizeof(a)/sizeof(a[0]), sizeof(a[0]), my_cmp);
qsort(b, sizeof(b)/sizeof(b[0]), sizeof(a[0]), my_cmp);
qsort(c, sizeof(c)/sizeof(c[0]), sizeof(a[0]), my_cmp);
0268デフォルトの名無しさん2016/05/26(木) 11:39:15.27ID:G3Xzn+W/
配列に決められた数字を格納し、格納した数字の奇数か偶数のみを表示した後に指定された数ずらすプログラムを組んだのですが
数字をずらすところでうまく行かずに困っています、誰か助けてください。
例:a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4 ずらす数:2
a[0]=2,a[1]=3,a[2]=4,a[3]=0,a[4]=1


長いのでアップローダにtxtファイルをアップロードしました
http://fast-uploader.com/file/7019785771104/
0269デフォルトの名無しさん2016/05/26(木) 12:42:34.93ID:f2o0rrY8
>>268
表示するときにずらせばいいのでは。ずらす数をkとすると
for(i=0; i<NUM; i++) {
printf("a[%d] = %d ", i, a[ (i + k) % NUM ]);
}
0270デフォルトの名無しさん2016/05/26(木) 12:47:12.90ID:Cj4xC8mS
どういう環境で書いてる?
デバッガ使ってステップ実行するやりかた覚えたほうが今後のためになると思うが
0271デフォルトの名無しさん2016/05/26(木) 14:24:54.91ID:ZS10B00B
>>255
それを動かすのが漢だ
0272デフォルトの名無しさん2016/05/26(木) 14:47:38.51ID:UrTJJdUS
>>268
コードをよく読めなかったので最初の表示以降を適当に書いたんだけど
どうかな
http://codepad.org/dLVAfTEu
大きなループの中で全部やろうとせず表示とずらしで処理を分けた方が
考えやすいと思うよ
0273デフォルトの名無しさん2016/05/26(木) 19:05:11.96ID:fhnCNSUE
今日IT企業の面接で今まで作ったプログラム見せてほしいっていわれたので
渾身の力作を見せたところ人事の内一名からすごいたたかれました。

人事
「君のプログラムは短いのはいいけど複雑さがなくて物足りない。
MP3形式の録音ソフトとはいえ工夫すれば1万行は超えるけど1000行程度だし、
もっと何とかならなかったのかい?プログラムは簡素なほうがいいけど、
外部ライブラリを読み込んだり、DLLファイルとの連携部分もあったほうが素人っぽくなくなる。
本当に純粋にプログラミング言語中心で学んできた人が描いたようなプログラムだ。」

こんなこといわれてしまいました…
確かに容量は20KB程度で物足りないかもしれません。
他の3社にも同じのみせましたけどすごいって賞賛されました。
でもかなりの酷評(言い方は非常に柔らかい)でこんなこといわれたのは初めてです。
4年間プログラムを根詰めてやってきたなら1000行じゃ物足りないんでしょうか?
もっと外部ファイルととあえて連携させて複雑にしたほうがいいんでしょうか?
虚をつかれたような評価なので大変困惑しております。
皆さんはどうお考えですか?
0274デフォルトの名無しさん2016/05/26(木) 19:08:09.80ID:fhnCNSUE
確かにフリーソフトとか見てるとexeファイルの容量は最低でも1MBを超えていて
自分が作ったのはいつも数十KBで収まっているのは気になっていました。
だけど僕は4年間必死にC言語を勉強していて特に足らない点、もちろん業務知識は
0ですが基本的知識でPCの機能を実装することくらいはできます。
何かすごいショックで…
0275デフォルトの名無しさん2016/05/26(木) 19:15:59.92ID:KKsKg0mH
面白くないネタ
0276デフォルトの名無しさん2016/05/26(木) 19:39:49.89ID:5yoH/rz8
納得できんのなら無視して自分認めてくれるとこ行けばいいんじゃないのかね
モノがわからんのにどう?とか言われてもね
0277デフォルトの名無しさん2016/05/26(木) 19:53:00.42ID:fhnCNSUE
>>276
複雑なプログラムのメリットって何ですかね?
0278デフォルトの名無しさん2016/05/26(木) 19:53:52.50ID:fhnCNSUE
>>275
ネタではありません。
本当に言われたんです。
0279デフォルトの名無しさん2016/05/26(木) 20:13:49.57ID:6iXHX0kN
どこかにアップしなよ
評価してくれる人が出てくるだろ
アップできないならネタと言う評価で
0280デフォルトの名無しさん2016/05/26(木) 20:16:42.24ID:Z+cHO4t2
#include <stdio.h>
int a = 0;
void Func1(void) {
int b;
static int c;
printf("a:%p b:%p c:%p\n",&a,&b,&c);
if (++a<4) Func1();
else a = 0;
}
void Func2(void) {
int x;
printf("x:%p\n",&x);
Func1();
}
int main(void) {
Func1(); printf("\n");
Func1(); printf("\n");
Func2(); printf("\n");
return 0;
}
0281デフォルトの名無しさん2016/05/26(木) 20:34:20.78ID:c9LsFSoH
>>277
複雑さ自体にメリットはない
面接官も「プログラムは簡素な方がいい」と言っているのだろう?

憶測になるけど
もう少し大規模で複雑になるソフトを書いてみてほしいってことだと思うよ
君の見せたプログラムは「Hello world」のような
小さく簡単で単純なプログラムだと言いたいんじゃないかな
0282デフォルトの名無しさん2016/05/26(木) 20:36:30.24ID:M2X0d2Pu
>>273
デカければいいというものではない 同じ内容なら小さく短く書けるほうがエライ
同じ内容ならシンプルな方がエライ

でも○年間勉強しましたと言ってアピールする材料なのに 1000行程度ではあまりに物足りない
そもそもCで書くのは無駄が多く行数がイヤでも増えるからすぐに数千〜数万行行ってしまう
ファイル一本かならず1,000行以内に収めろと言われたら窮屈で仕方ないくらい

それに、どうせソースを軽く眺めた程度では実力なんてわからないし
イチから教える手間は省けますくらいのアピール力だよ
0283デフォルトの名無しさん2016/05/26(木) 21:05:22.73ID:fhnCNSUE
>>282
mp3形式またはwav形式でPCからでる音楽を記録するソフトです。
音質はフリーソフトと全く変わりませんでした。
どこを工夫すればいいんでしょう?全く考えが及びません。
0284デフォルトの名無しさん2016/05/26(木) 21:07:26.52ID:fhnCNSUE
複雑さの要因はほぼGUIコンポーネントだと考えているんですが
そこらへんを凝ればいいのでしょうか?
どうすれば長くなるのか全く見当がつきません。
0285デフォルトの名無しさん2016/05/26(木) 21:08:25.74ID:fhnCNSUE
>>282
別の面接官3人「なかなか1000行かける大学生はいない」
今日の面接官の内一人「1000行は少し物足りないなぁ…」

うーん…
0286デフォルトの名無しさん2016/05/26(木) 21:13:25.80ID:KKsKg0mH
もうちょっとリアルな設定にしないと面白くないよ
次からは自分の知ってる分野で書こうね。
0287デフォルトの名無しさん2016/05/26(木) 21:15:40.61ID:0wGqATI0
どっちにせよマ板で聞いてくれ
0288デフォルトの名無しさん2016/05/26(木) 21:20:36.96ID:M2X0d2Pu
>>285
上は「ド素人の大学生にしては頑張ってるね」
   (教育して見る価値があるかもしれない)

下は1から教育する気がないブラック寄りの企業
  きっと即戦力として鍛えてくれるよ
0289デフォルトの名無しさん2016/05/26(木) 21:26:33.06ID:fhnCNSUE
>>288
ご名答
0290デフォルトの名無しさん2016/05/26(木) 21:27:22.89ID:fhnCNSUE
自分を信じたい
0291デフォルトの名無しさん2016/05/26(木) 21:30:02.48ID:kT3OAx5i
面接官はプログラムを評価するのが目的じゃなくて
面接に来た人を評価するのが目的だからプログラムの評価自体に意味は無い
0292デフォルトの名無しさん2016/05/26(木) 21:41:57.14ID:fhnCNSUE
>>291
もしかしたら下の企業で採用あるかも…
ブラックぽいんだよな…
0293デフォルトの名無しさん2016/05/26(木) 21:44:40.05ID:fhnCNSUE
ちなみに1000行のプログラムは1か月かかりましたwww
0294デフォルトの名無しさん2016/05/26(木) 21:47:03.25ID:2uDctnGE
>>268です、遅レスになってしまい大変申し訳ありません。
みなさんとても丁寧に回答していただいて本当にありがとうございます!
今から皆さんの書いていただいた内容参考に頑張ります、本当にありがとうございました。
0295デフォルトの名無しさん2016/05/26(木) 21:48:24.27ID:YS/YHZQs
三十三間堂には何であんなに仏像があるの?
コレクターでもいたの?
0296デフォルトの名無しさん2016/05/26(木) 21:51:58.49ID:YS/YHZQs
間違えました
0297デフォルトの名無しさん2016/05/26(木) 21:53:29.21ID:tNvxuks+
わいニート、2週間で7000行のライブラリを書いたったwww
0298片山博文MZ ◆T6xkBnTXz7B0 2016/05/26(木) 21:56:40.29ID:W80Kwxkw
録音するプログラムなら、波形を見せるとカッコいいかも知れない。
他には音量調節とか。
0299デフォルトの名無しさん2016/05/26(木) 21:57:15.96ID:fhnCNSUE
>>297
羨ましいです。
ライブラリなんて作ろうと思ったことないです。
面接官的にはライブラリなんかもリンクしてればかっこいいみたいな…
なんなんだ…w
0300片山博文MZ ◆T6xkBnTXz7B0 2016/05/26(木) 22:00:53.60ID:W80Kwxkw
無音部分を自動でカットする機能があってもいいな
0301デフォルトの名無しさん2016/05/26(木) 22:03:17.27ID:rFYMqLi5
というか、そんなに気になるなら当人に聞いてみればよかったのに。
こちらは募集に応じてやってる身分なんだから遠慮なんていらないんだよ。
0302デフォルトの名無しさん2016/05/26(木) 22:13:55.26ID:5yoH/rz8
コミュ症なんだろ
0303デフォルトの名無しさん2016/05/26(木) 22:14:25.46ID:fhnCNSUE
>>298
イコライザーですか…
それだけで1000行くらいいきそうだww
俺は作りたいものを早く作りたいんですよね
0304片山博文MZ ◆T6xkBnTXz7B0 2016/05/26(木) 22:40:18.79ID:W80Kwxkw
人間は操作系が貧弱なソフトウェアにあまりお金を使わない傾向があるから、
シンプル過ぎるソフトは高く売れないんだよ。
0305デフォルトの名無しさん2016/05/26(木) 22:45:12.30ID:B/Q2fO5b
プログラマ板かとおもった
0306デフォルトの名無しさん2016/05/26(木) 22:53:28.09ID:fhnCNSUE
>>304
シンプルな目的にはシンプルなフリーソフトが一番だと思うから
単純なGUIのフリーソフトは重宝すると思いますけどねー
Windows7のほうが圧倒的人気なのもシンプルだからじゃないですか?
ソフトウェア業界ってこれから大丈夫なのかな…
0307デフォルトの名無しさん2016/05/26(木) 22:57:08.32ID:fhnCNSUE
IT業界ってがっかりするような話多くないですか?
これからIT業界に行きたい(C言語使いまくりたい)のに
残念なニュースばかり…

・ウイルス対策ソフトは半分も防御できていない
・Windows10の不人気ぶり
・OSから個人情報抜きとっている
・officeが1年ライセンスで1万円超え
0308デフォルトの名無しさん2016/05/26(木) 23:00:44.67ID:UjMbTLsx
たぶん最初から、不採用が決まっているから、君を馬鹿にしただけだろ

面接官なんて、気にしない方がいい。
そいつらは、2chの住民には勝てないからさ
0309デフォルトの名無しさん2016/05/26(木) 23:02:54.50ID:fhnCNSUE
>>308
その面接官褒めたふりして
「採用の観点からは違う評価するけど意気込みとかはすごいよね…」
とか言ってきてほかの面接官が苦笑したりしてました。
何かデリカシーないですよね。
0310デフォルトの名無しさん2016/05/26(木) 23:09:46.92ID:rFYMqLi5
だから不満があるなら本人に言えよ。
0311デフォルトの名無しさん2016/05/26(木) 23:46:56.88ID:KKsKg0mH
ネタじゃないように思えてきたわ…
こんな思い込みの激しく人の話を聞かない奴ならそんな事もあるんじゃないかと。
0312デフォルトの名無しさん2016/05/27(金) 00:35:44.59ID:q7OrZRlw
謎は解けた
もしこいつがライブラリフル活用したコード書いてたら、複雑すぎるといってお祈り
シンプルなコードだからシンプルすぎると言ってお祈り
要するにコイツを採用したくないだけだわ
俺が採用担当でも、板違いの指摘受けた上で話題までそらしていく奴取りたくねーもん
0313デフォルトの名無しさん2016/05/27(金) 00:46:42.46ID:TGBFEs+a
製品のプレゼンテーションではなくて採用面接なんだろ?
面接官はコードそのものを見たい訳ではない
応募者がコードを通じてどのように自己PRするか
意地悪っぽい突っ込みに対してどのように受け答えするか、そこを見てるはず
製品発表ではないのだから、売り込むべきはプログラムではなくて自分自身を優先するべきだった
その場の雰囲気がわからないので、どのように返すのが良かったのかは何とも言えないけど
0314デフォルトの名無しさん2016/05/27(金) 01:14:47.51ID:TGBFEs+a
ちょっと考えてみたけど、常道としては相手の言うことをひとまず肯定しつつ、コードをシンプルに保つメリットを
理解しているという基礎力をPRするか、他のレスにあるような機能追加のアィデアを幾つか挙げて応用力をPRするか
どちらかをその場の流れで返すくらいかなあ
実務的なコミュニケーション能力が試されていたんだよ
0315デフォルトの名無しさん2016/05/27(金) 02:34:39.42ID:q2+au5cx
>>77
Borland C++ 5.5
Cygwin

が15年前の時点で0円なんだが
ということは20年前も0円だったのかな?

そう考えてみると20年前からプログラミングの敷居なんて
高くないんじゃないかね。

プログラマが不足してるとか言われてるけど日本終わりすぎでしょw
0316デフォルトの名無しさん2016/05/27(金) 02:38:59.32ID:q2+au5cx
20年前だとバリュースターが中古で8万前後で売ってあったし
安価にプログラム十分できた時代だったんだよね。
何で20年前プログラムしなかったか本当後悔してるわ。
0317デフォルトの名無しさん2016/05/27(金) 02:50:19.29ID:8Borfexq
20年前というとVBの時代か
0318デフォルトの名無しさん2016/05/27(金) 03:12:12.17ID:2/vps+6r
20年前っていうと大昔の気もするけど
すでにwin95が発売済みなのか…
0319デフォルトの名無しさん2016/05/27(金) 05:45:29.41ID:Q4WE5iSk
今ならタダ同然の中古ノートにLinuxでも入れて…で
Cの勉強も手軽に始められるけど、昔はやっぱり敷居が高かったろ。

マルチOSは元のWindowsまで起動不能になる危険があったから
専用に1台調達しなくちゃいけなかった上に、PC自体も高価だった。
Linuxの導入にも手間がかかった。

Windowsで簡単に使えるLSI-C試食版は本当にありがたかったね。
本屋で売ってる雑誌の付録フロッピーで手に入ったし。
0320デフォルトの名無しさん2016/05/27(金) 06:52:30.71ID:TGBFEs+a
最近の途上国では高価なPCを買えないので、数百円から数千円程度のワンボードマイコン(ArduinoやRaspberryPiなど)を使って
プログラムを学んでいる若者が多いそうな(主にC言語とアセンブリ言語)
インドやアフリカあたりの一部地域では、プログラマは医師や弁護士なみのステータスだそうなので、サクセスドリームを
夢見る若者がかなりの人数輩出されてきており、将来的に現在の先進国の地位を脅かす存在になるだろうとか言われているな
0321デフォルトの名無しさん2016/05/27(金) 07:16:07.78ID:TGBFEs+a
補足するとC言語が注目されている IoT の分野での話
JavaやC++などのそれなりのリソースが要求される分野では直接の影響は少ないだろうけど、それらの人材の一部が
C言語でのスキルを武器に大学ででも本格的にプログラミングを学ぶことを考えれば途上国の潜在能力は侮れない
0322デフォルトの名無しさん2016/05/27(金) 07:17:23.25ID:ak6msHew
そういうポテンシャル高い奴は先進国に行って仕事するだろ
0323デフォルトの名無しさん2016/05/27(金) 07:32:20.02ID:TGBFEs+a
先進国では総じてプログラマの社会的地位は低い
日本ではIT土方とまで言われる始末
先進国での下層階層と、途上国でのエリート階層ではどちらが居心地が良いか
0324デフォルトの名無しさん2016/05/27(金) 07:53:05.91ID:aYCv3sEW
ブログにでも書いとけ。
0325デフォルトの名無しさん2016/05/27(金) 13:37:38.08ID:q2+au5cx
というかLinuxとか今でも使わんだろ
プログラミングならwindowsで十分
0326デフォルトの名無しさん2016/05/27(金) 13:42:31.76ID:zfNVlpD4
むしろプログラマの世界でLinuxに触ったことすらないというのは恥ずかしいレベル
0327デフォルトの名無しさん2016/05/27(金) 13:49:46.35ID:S2Ksk7l1
これからはWindows10でbashもネイティブで動くから(震え声
0328デフォルトの名無しさん2016/05/27(金) 14:15:22.27ID:q2+au5cx
あえて不便なLinux使う理由は?
0329デフォルトの名無しさん2016/05/27(金) 14:21:12.33ID:fvoGjXwU
>>328
お前が不便だと思いこんでるだけ
Linuxに慣れ親しんだユーザーが無視できない数要るからcygwinやらWindowsにLinuxサブシステムが搭載されたりしてるんだよ
0330デフォルトの名無しさん2016/05/27(金) 14:32:38.19ID:ftcnTlL4
プログラミング系の授業でWindowsを使う大学は少ない
そういうことですわ
0331デフォルトの名無しさん2016/05/27(金) 14:33:44.62ID:zfNVlpD4
Microsoft が MS-D0S 作るのに利用したOS、のはず
MS-DOSがUnixにどこか似ているのも仕方がないね。

>XENIX(ジーニックス・ゼニックス)とは、マイクロソフトによって開発されたUNIXである。
>安価なマイクロコンピュータで動作することから、1980年代半ばから1990年代初頭にかけて
>大きなシェアを誇った。
>1981年の最初の発表時はVersion7ベース、後にSystem III、System Vに追随し、BSD由来の
>機能も積極的に実装した。AT&Tからライセンスを受けた、世界最初の商業ベースのUNIXでもある。
0332デフォルトの名無しさん2016/05/27(金) 14:39:29.13ID:fvoGjXwU
むしろ未だにSJISなWindowsの方が不便なんだよなぁ
0333デフォルトの名無しさん2016/05/27(金) 14:47:38.59ID:82PeGMWr
>>328
Visual Studio C++とかなんとかいうC言語にちょっと似てるだけの全く別な言語環境を除いたら
WindowsでC言語プログラミングってどうやってやるの?
0334デフォルトの名無しさん2016/05/27(金) 15:24:59.01ID:q2+au5cx
cygwinとかVC++とかあるのにlinux使う理由は?
トラブル発生したときの解決法だってwindowsに比べて少ないんだし
フリーツールだってlinuxじゃ動かないこともある。
プログラマでも制御系じゃないならlinuxなんて使わないよ
0335デフォルトの名無しさん2016/05/27(金) 15:27:38.65ID:fvoGjXwU
>>334
Windowsでまともなメモリリーク検出やメモリ破壊検出ツールある?
0336デフォルトの名無しさん2016/05/27(金) 15:35:59.86ID:q2+au5cx
>>335
いやそれはコードレベルでチェックしたらいいじゃん…
0337デフォルトの名無しさん2016/05/27(金) 15:44:50.72ID:82PeGMWr
>>334
トラブルが発生した時の解決方法が少ない?
そりゃそうだろうさ。解決方法なんざ1つありゃ十分だ。

そもそもWindowsと違ってトラブルなんざ発生しないしなぁ
0338デフォルトの名無しさん2016/05/27(金) 15:48:17.93ID:fvoGjXwU
>>336
お前は他人が書いたコードをいつもメモリ破壊もリークもしてないかコードレベルで漏れなくチェックできてるの?
0339デフォルトの名無しさん2016/05/27(金) 15:56:40.76ID:fvoGjXwU
それをツール使うより早くできるなら凄い才能だし、お前の言い分は正しいよ。
お前とお前並の才能を持つ人の中だけで。
0340デフォルトの名無しさん2016/05/27(金) 17:30:50.16ID:D/wh61wT
マ板でおけ
0341デフォルトの名無しさん2016/05/27(金) 17:33:00.72ID:mk39Rryz
前世紀から
0342デフォルトの名無しさん2016/05/27(金) 18:16:16.54ID:KOeYCo11
libmadで『decoding error 0x0235 (bad main_data_begin pointer) at byte offset 0』というエラーが多発して困っています。

コールバック関数output()の戻り値をMAD_FLOW_CONTINUEにしているときは発生せず、MAD_FLOW_STOPにすると発生します。
必ず発生するわけではなく、decode()関数に入った1フレーム目では発生しません。
1フレーム+次フレームの冒頭8byteのデータは正常に取得しています。

多分使い方が間違っているのだと思いますがどう間違っているのかがわかりません。
どなたか教えていただけないでしょうか。
よろしくお願いします。
0343デフォルトの名無しさん2016/05/27(金) 20:05:23.92ID:A4KBBTj7
>>335
DevPartner とか Purify とかいくらでもあるだろ
0344デフォルトの名無しさん2016/05/27(金) 23:45:32.50ID:0lBzfo5D
>>343
どっちも個人では手が出ない価格だけどな
0345デフォルトの名無しさん2016/05/28(土) 00:05:34.52ID:BPoJKFOK
貧乏人にはVisual Studioのデバッグ機能で充分
0346デフォルトの名無しさん2016/05/28(土) 00:12:25.31ID:MRX8K1iF
メモリ破壊とか制御系の話じゃん。
俺はweb系だからメモリリークとは無縁だ。
0347デフォルトの名無しさん2016/05/28(土) 00:15:38.44ID:IDSqcyq5
結論:Windowsは使う必要が無い
0348デフォルトの名無しさん2016/05/28(土) 00:37:30.75ID:MRX8K1iF
動画見る時どうしてるのさ
0349デフォルトの名無しさん2016/05/28(土) 00:38:15.61ID:S85rxOSy
C言語のスレで何言ってんだ
0350デフォルトの名無しさん2016/05/28(土) 00:39:54.60ID:MRX8K1iF
エクセルは?
0351デフォルトの名無しさん2016/05/28(土) 00:46:08.50ID:MRX8K1iF
エクセル連携できなうのはきつい。
窓は
0352デフォルトの名無しさん2016/05/28(土) 05:09:58.54ID:C1gDZr5r
>>346
いつからC言語にGCが導入されたんだ?
0353デフォルトの名無しさん2016/05/28(土) 08:18:11.92ID:O1fTNVgV
Linuxって単なるOSだろ
開発環境で重要なのは作業環境とビルド時間ですよ
マルチディスプレイでデュアルプロセッサ
これでいい
0354デフォルトの名無しさん2016/05/28(土) 08:22:49.32ID:O1fTNVgV
Linuxは英語表記も多くてきつい
正直耐えられない
大学でLinux使うところ多いとかいうけどさ
東大がそんなイメージだが
他はソースあんのか?
俺も旧帝だったけどふつうにWindowsに好きなコンパイラ入れてみたいな
感じだったよ?
0355デフォルトの名無しさん2016/05/28(土) 08:32:01.21ID:8Xha/C3F
英語に忌避感ある底辺はエンジニアには向いてない
英語苦手で屁理屈こねて旧帝に逃避した口か
0356デフォルトの名無しさん2016/05/28(土) 08:55:16.95ID:O1fTNVgV
英語表記が業務上面倒ってだけなんだが?
宮廷に逃避とか意味不明
0357デフォルトの名無しさん2016/05/28(土) 09:02:46.78ID:O1fTNVgV
まー大抵の企業じゃwindowsよ
0358デフォルトの名無しさん2016/05/28(土) 09:30:12.68ID:8Xha/C3F
日本語表記だけでやってける開発なんて、今時存在しねーだろ
0359デフォルトの名無しさん2016/05/28(土) 09:36:06.22ID:IDSqcyq5
 
変数名も「合計」とか「売上」って付けているんだろうな
0360デフォルトの名無しさん2016/05/28(土) 09:39:19.92ID:C1gDZr5r
無暗に強がる奴は、大抵は逆にコンプレックスを抱えている
認めたくないが故の自己防衛
0361デフォルトの名無しさん2016/05/28(土) 10:14:02.23ID:O1fTNVgV
単にLinuxが面倒なだけ
器用な人は使えばいいじゃん
それだけのこと
コンプレックスだの忌避だの大げさだな
まー食わず嫌いなところはあるよ俺は
0362デフォルトの名無しさん2016/05/28(土) 10:15:04.46ID:O1fTNVgV
食わず嫌いなところはあるけど
ネットワークの中で仕事してて
自分の端末だけLinuxにして効率落とすようなことはしたくねーわな
Linux使う職場は少数のところが多いのは事実
0363デフォルトの名無しさん2016/05/28(土) 10:26:54.31ID:IDSqcyq5
ネットワークの中にいて、
ネット上の複数のサーバーのメンテをやって
必要な時だけVM立ち上げWindowsを起動しています

こんな効率の良い環境って無いと思うけど
0364デフォルトの名無しさん2016/05/28(土) 10:36:33.13ID:O1fTNVgV
>>363
開発職じゃないのならLinuxサーバのメンテナンスはあるんかな
俺はWindows製品開発してるからLinux使う必然性がまるでない
0365デフォルトの名無しさん2016/05/28(土) 10:38:32.52ID:ks9oZ0SW
業界特有の専門CADが有ってファイルの受け渡しさえ専用の端末が必要だから
Windows一択。
0366デフォルトの名無しさん2016/05/28(土) 10:40:46.87ID:IDSqcyq5
使っている人が気がつかないと言うだけかも
スマホも内部はLinuxだったりする
ChromeBookも売上げ伸ばしているけど、これもLinuxがベースだな
PC全体の販売数が落ち込んでいる中、これらの売上げは逆に伸びているね
0367デフォルトの名無しさん2016/05/28(土) 10:46:24.29ID:ks9oZ0SW
NuGetにOSSの移植を進めてほしいよね。
実のところ、そういうことでLinuxが滅びていくと思う。
0368デフォルトの名無しさん2016/05/28(土) 10:55:42.99ID:kHgsDhCP
IT系の技術職でプログラマ板に出入りする人が
ここまでUnix系OSを嫌う意味がわからない。
仕事になっているのか?
0369デフォルトの名無しさん2016/05/28(土) 10:58:42.69ID:IDSqcyq5
一応、ム板
出入りしている人は開発系が多いと思うけど
0370デフォルトの名無しさん2016/05/28(土) 11:00:16.42ID:C1gDZr5r
Windowsも夏頃の次期アップデートでBashシェルをネィティブサポートするようになる
内部のサブシステムにLinuxカーネルを丸ごと取り込むことになる予定
0371デフォルトの名無しさん2016/05/28(土) 11:06:13.65ID:ks9oZ0SW
>>368
元々UNIXはUNIX板だし。
IT系と言ってもLinux使ってるのはPHPの人たちでしょ?
ホントはPHPはウェブプログラミング板だから。
最近は本来の板が崩壊してJSやPHPがム板に来てるだけで。
0372デフォルトの名無しさん2016/05/28(土) 11:07:36.94ID:IDSqcyq5
>>370
思い切って内部も外部もUTF8に統一して欲しいね
そうしたら、各国語版が不要になるからコストも削減できるでしょ
0373デフォルトの名無しさん2016/05/28(土) 11:08:42.48ID:1gMYSkQh
>>370
> 内部のサブシステムにLinuxカーネルを丸ごと取り込むことになる予定
こう言うバカってまだいるんだな w
0374デフォルトの名無しさん2016/05/28(土) 11:14:33.53ID:C1gDZr5r
>>370はちょっと勘違いしていたみたい
LinuxカーネルではなくてLinuxのバイナリを直接動作させるみたいだな

>「Building Apps for Windows Blog」の投稿によれば、仕組み的にはWindowsカーネル内に「Windows Subsystem for Linux(WSL)」
>というサブシステムを新たに構築し、ユーザーモード上で動作するUbuntuが必要に応じてサブシステムに対して「syscall」を行うことで、
>Linuxバイナリのネイティブ実行をサポートしているようだ。

http://www.itmedia.co.jp/pcuser/articles/1604/12/news086.html
0375デフォルトの名無しさん2016/05/28(土) 11:16:49.47ID:IDSqcyq5
> グーグル(Google)の「Chromes OS」を搭載するノートPC「Chromebook」の出荷台数が、
>米国市場でアップル(Apple)製ノートPCのそれを初めて上回ったとするレポートが、調査
>会社IDCから発表されている。

こういうニュースが最近あったけど、
Chromes OSがMacOSのシェアを奪った訳ではないんだよね。
一体どこのシェアが減ったんだろう
0376デフォルトの名無しさん2016/05/28(土) 11:24:14.00ID:IDSqcyq5
>>252
スレ落とされちゃったみたいだな
03773422016/05/28(土) 11:28:34.09ID:PR4ivl2W
私の質問もお願いします
0378デフォルトの名無しさん2016/05/28(土) 11:31:18.14ID:O1fTNVgV
スマホなんておもちゃアプリばっかりだし
これから衰退していく一方だと思うよ
0379デフォルトの名無しさん2016/05/28(土) 13:39:56.12ID:gQV7Fme1
かつてのPCも同じこと言われてたっけ
0380デフォルトの名無しさん2016/05/28(土) 17:55:35.66ID:F56ihzr4
vmでwindowsとか重いだけだろ
わらかすなwww
0381デフォルトの名無しさん2016/05/28(土) 18:00:33.46ID:F56ihzr4
貧乏根性リナックス
0382デフォルトの名無しさん2016/05/28(土) 18:16:50.94ID:IDSqcyq5
重いもなにもその程度しかWindows使ってないので
0383デフォルトの名無しさん2016/05/28(土) 19:11:40.30ID:DOIDDQ8t
板違いだから余所でやれ
何度も言わせるな
0384デフォルトの名無しさん2016/05/28(土) 19:19:41.86ID:IDSqcyq5
止めるけど、言ってないやん

[板違い]は5件
312 名前:デフォルトの名無しさん[sage] 投稿日:2016/05/27(金) 00:35:44.59 ID:q7OrZRlw
・・・
俺が採用担当でも、板違いの指摘受けた上で話題までそらしていく奴取りたくねーもん

252 名前:デフォルトの名無しさん[] 投稿日:2016/05/25(水) 20:07:47.10 ID:GAaLSrgN
ちょっと前にFPGAでファミコン作ってみたって書いて、スレ違い、板違いって怒られた者です。

175 名前:デフォルトの名無しさん[sage] 投稿日:2016/05/23(月) 10:36:11.05 ID:mr7kZnmZ
板違いにかまってあげるみんな優しい

170 名前:デフォルトの名無しさん[] 投稿日:2016/05/22(日) 23:13:00.28 ID:kh4BCROc
ちょっと板違いかもしれないんですけど、ここなら技術者がたくさんいるかなって思ったので書きます。

127 名前:デフォルトの名無しさん[sage] 投稿日:2016/05/21(土) 09:34:42.37 ID:K70VO2ZY
どうみても板違い

[余所でやれ]は1件
265 名前:デフォルトの名無しさん[sage] 投稿日:2016/05/26(木) 00:56:11.94 ID:B/Q2fO5b [1/2]
いい加減余所でやれ
C/C++の宿題片付けます 170代目 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1456908378/
0385デフォルトの名無しさん2016/05/28(土) 19:43:15.59ID:7/7pYeqL
>>384
荒らしておいてその発言できるのすげーわ
二度目を言わせるなって意味にも取れるのに
0386デフォルトの名無しさん2016/05/28(土) 20:32:17.01ID:SMV0h0jn
鼬飼い
0387デフォルトの名無しさん2016/05/28(土) 21:59:51.95ID:0J0pDIIN
質問者そっちのけで喧嘩ばかり
役に立たんスレだな
0388デフォルトの名無しさん2016/05/29(日) 00:43:27.21ID:lkZpmfRh
まあな
0389デフォルトの名無しさん2016/05/29(日) 09:37:12.15ID:hkeRWX+0
ワロタ
0390デフォルトの名無しさん2016/05/29(日) 10:52:55.38ID:L9044dGy
>>342
まだ見てる? 助けを求めるならメーリングリストがあるよ。

http://www.underbit.com/products/mad/
03913422016/05/29(日) 11:34:04.52ID:wahlHBnL
>>390
ありがとうございます。
早速メーリングリストに投稿してきました。
0392デフォルトの名無しさん2016/05/29(日) 16:28:15.43ID:9AIy5jLg
d=-300
16進でみると0xFED4。この0xFEの箇所のみを取り出したいので
コードを書いてみたんだけど、0xFFになる。なぜ?

double d, wk;
unsigned char c;
d=-300;
wk=d/256;
c=(unsigned char)wk;  ←0xFFになる。
0393デフォルトの名無しさん2016/05/29(日) 16:32:06.42ID:Zak8dvzg
d の型 unsigned char が 16bit長無いからなんでないの?
unsigned short か unsigned int に汁
0394デフォルトの名無しさん2016/05/29(日) 16:32:13.75ID:GBRDVTrG
doubleをやめれ
0395デフォルトの名無しさん2016/05/29(日) 16:32:36.94ID:Zak8dvzg
ゴメン見間違えた 忘れて
0396デフォルトの名無しさん2016/05/29(日) 16:45:14.60ID:G28yeXzC
wk=d/256=-1.1718750000000000
となって、unsigned charでキャストすると
(unsigned char)-1=255=0xFF
となるから。
0397デフォルトの名無しさん2016/05/29(日) 16:54:02.01ID:9AIy5jLg
サンクス
0398デフォルトの名無しさん2016/05/29(日) 17:00:55.40ID:adFee1tN
linuxとかいう老害os
0399デフォルトの名無しさん2016/05/29(日) 17:13:26.77ID:GBRDVTrG
>>392
少し強引ですけど

short d=-300;
unsigned char *p = (unsigned char*)&d;
printf("%02x ",*p);
printf("%02x ",*(p+1));
0400デフォルトの名無しさん2016/05/29(日) 17:42:46.74ID:Xg0gIt10
>>399
なんでそんな遅くかつエンディアンに依存するコードを書くかな
short d=-300;
unsigned char c = (unsigned char)(((unsigned short)d & 0xff00u) >> 8);
でいいだろ
0401デフォルトの名無しさん2016/05/29(日) 21:16:27.92ID:GBRDVTrG
doubleを使おうとしていて、内部でどう格納されているのかも知らない様なので
多少冗長でも、理解する上でヒントになりそうな書き方をしました
0402デフォルトの名無しさん2016/05/29(日) 22:39:43.29ID:HnF0l+my
unsigned charって1バイト?
0403デフォルトの名無しさん2016/05/29(日) 22:50:07.31ID:Yd5mQjmt
1バイトですね
0404デフォルトの名無しさん2016/05/29(日) 22:52:14.31ID:Yd5mQjmt
話それるけどJavaには、unsignedがない
0405デフォルトの名無しさん2016/05/29(日) 23:03:50.91ID:HnF0l+my
>>403
それって規格のどの辺に書いてあったっけ?
0406デフォルトの名無しさん2016/05/29(日) 23:09:50.80ID:Yd5mQjmt
「character),1 バイト」


バイトは連続するビットの列から成る。1 バイト中のビットの個数は,処理系定義である。
最も重みの小さいビットを
最下位ビット(low-order bit)と呼び,最も重みの大きいビットを
最上位ビット(high-order bit)と呼ぶ。
3.7
文字(character) <抽象的意味>データを構成する,制御する,又は表現するために使用する基
本要素から成る集合の要素。
3.7.1
文字(character),1 バイト文字(single-byte character) <プログラム言語 C での意味>1 バイ
トに納まるビット表現。

JIS
http://kikakurui.com/x3/X3010-2003-01.html
0407デフォルトの名無しさん2016/05/29(日) 23:15:11.37ID:HnF0l+my
えっと
unsigned char型が1バイトかどうかを訊いたのであって
「1バイト文字」が1バイトに収まるビット表現かどうかは訊いてないんだけど・・・・・・
0408デフォルトの名無しさん2016/05/29(日) 23:16:10.15ID:+f7Xlk4E
byte が8ビットばかりじゃないから、そういうこと気にする場合
uint8_t とかやる
0409デフォルトの名無しさん2016/05/29(日) 23:22:00.75ID:HnF0l+my
なるほど!

ちなみに自分でも調べたら
The C Programming Languageの第2版 p195に
Objects declared as characters (char) are large enough to store any member of the
execution character set. If a genuine character from that set is stored in a char object,
its value is equivalent to the integer code for the character, and is non-negative. Other
quantities may be stored into char variables, but the available range of values, and
especially whether the value is signed, is implementation-dependent.
って書かれてて、否定的に解決できたよ。
0410デフォルトの名無しさん2016/05/30(月) 02:03:21.54ID:izE0wMtN
否定的に解決て…

6.2.5 (略)
型 char として宣言されたオブジェクトは,実行基本文字集合の任意の要素を
格納するのに十分な大きさをもつ。実行基本文字集合の任意の要素を
char 型のオブジェクトに格納した場合,その値は非負であることを保証する。
その他の文字を char 型のオブジェクトに格納した場合,その結果の値は
処理系定義とするが,その型で表現可能な値の範囲に含まれなければならない。
(略)

3.6 バイト(byte) 実行環境の基本文字集合の任意の要素を保持するために
十分な大きさをもつアドレス付け可能なデータ記憶域の単位。
0411デフォルトの名無しさん2016/05/30(月) 11:47:11.51ID:9f9My9NT
調べたら、CHAR_BITが8じゃない環境も幾つかあるみたいね。9だったり16だったりする。
http://stackoverflow.com/questions/6971886/exotic-architectures-the-standards-committees-care-about
0412デフォルトの名無しさん2016/05/30(月) 11:58:51.91ID:x7J+KkRS
そろそろ sizeof のことも思い出してあげてください。
0413デフォルトの名無しさん2016/05/30(月) 12:01:10.83ID:XUi+aAng
>>408
byteが8じゃない世界ってどんなの?
0414デフォルトの名無しさん2016/05/30(月) 12:21:47.87ID:1GAxP3Nb
>>413
2つ上のレスくらい読もう
0415デフォルトの名無しさん2016/05/30(月) 14:04:40.97ID:5bIpWmdK
8bit の塊は byte ではなく octet
0416デフォルトの名無しさん2016/05/30(月) 17:48:01.93ID:Xl0N1v2s
オクテットストリームからオクテットストリームを引けばバイト列が得られる。
0417デフォルトの名無しさん2016/05/30(月) 19:57:11.44ID:fRR6Jjoh
遠い地平線が消えて、 ふかぶかとした夜の闇に心を休める時、
はるか雲海の上を音もなく流れ去る気流は、 たゆみない宇宙の営みを告げています。
満天の星をいただく、はてしない光の海を ゆたかに流れゆく風に心を開けば、
きらめく星座の物語も聞こえてくる、 夜の静寂の、なんと饒舌なことでしょうか。
光と影の境に消えていったはるかな地平線も 瞼に浮かんでまいります。
日本航空があなたにお送りする音楽の定期便 ジェットストリーム
皆様の夜間飛行のお供をするパイロットは私、城達也です
0418デフォルトの名無しさん2016/05/30(月) 20:25:35.37ID:x7J+KkRS
懐かしいな。毎晩聴いてたよ。でも、それをなぜここで?
0419デフォルトの名無しさん2016/05/30(月) 20:29:03.49ID:WCkl0VDd
ジジイはストリームからそれを連想するんだろ
0420デフォルトの名無しさん2016/05/30(月) 20:43:11.28ID:AljfUxzD
例えの話で大変恐縮なのですが
C言語でポインタを一切使わずにプログラムを書いた場合
C#と同じぐらいのモッサリになりますか?
0421デフォルトの名無しさん2016/05/30(月) 20:48:27.32ID:uE4rs4cu
試してみたら良いと思うけど

ポインタを全く使わないでできるんだろうか?
0422デフォルトの名無しさん2016/05/30(月) 20:59:47.77ID:WCkl0VDd
データは全部値渡しだから、でかいデータも全部コピー
戻り値も全部コピー
0423デフォルトの名無しさん2016/05/30(月) 21:13:21.38ID:pQiH0JIA
スタッコオーバーフローだろ
0424デフォルトの名無しさん2016/05/30(月) 21:28:39.63ID:YCs7CVa/
LISTやVECTORなどのデータ構造を持たないC言語でポインタを封印したらまともなプログラム記述できないだろ
そもそもファイルポインタ使えないとファイル操作すら不可能になる
0425デフォルトの名無しさん2016/05/30(月) 21:31:08.36ID:Ma8cRvD3
おまいらもちつけ!
C#に近い実装は、むしろほとんどポインタだろに!
0426デフォルトの名無しさん2016/05/30(月) 21:57:30.58ID:WCkl0VDd
>>424
ポインタ持たないFORTRANは配列で全部やってた
配列は直接は値渡し出来ないけど、構造体に突っ込めば値渡し出来る
0427デフォルトの名無しさん2016/05/30(月) 23:12:43.97ID:QLR29Gsc
コンパイル単位でスコープを分けたスタティック変数を駆使しながら
シングルトンパターンでなんとか
0428デフォルトの名無しさん2016/05/31(火) 08:00:23.12ID:OHEvS41m
グローバル変数配列で大きく確保してそこ経由で受け渡すと。
ポインタと配列の番号の扱いでどれほど違いがあるのか不明だけど。
0429デフォルトの名無しさん2016/05/31(火) 09:29:26.04ID:TRYwrF1a
Cでポインタを使わずに全てをやろうとするなら
巨大な未初期化配列をグローバルにポンと置いてmallocを自作するのが良いのかな
0430デフォルトの名無しさん2016/05/31(火) 10:19:13.36ID:KVAswEZI
で、配列の添字の配列の先頭位置の添字を引数で渡すんですね
0431デフォルトの名無しさん2016/05/31(火) 10:36:26.66ID:ayjBr20G
とりあえずそびえ立つ糞のようなコードが出来上がるのは間違いないな
0432デフォルトの名無しさん2016/05/31(火) 10:42:19.85ID:N6PjvSqh
スパゲッティなら触ってもいいけど、うんこはやだ
0433デフォルトの名無しさん2016/06/01(水) 09:10:57.60ID:2NfamsKM
見た目が違うだけでやってることはポインターと一緒なんだよなぁ。
0434デフォルトの名無しさん2016/06/01(水) 09:44:37.22ID:Jq1IPnFR
ポインタは型がある、インデックスは型が無い
0435デフォルトの名無しさん2016/06/01(水) 16:12:18.11ID:pNkDz0bF
#define ARRAY_SIZE 10
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    double d[ARRAY_SIZE];
    double *p = &d[0];
    int i;

    for(i = 0; i < ARRAY_SIZE; i++, p++) {
        printf(
0436デフォルトの名無しさん2016/06/01(水) 16:13:54.13ID:pNkDz0bF
チキショー引用符がかけないらしい
きのうも失敗した
0437デフォルトの名無しさん2016/06/01(水) 16:19:01.64ID:z/VHQJBB
つ ideone.com
0438デフォルトの名無しさん2016/06/01(水) 19:11:01.61ID:gN04e8i3
書き込み全部見ましたけど本格的にCの環境について考えてみました。
Visual Studio 2010でばっかCやってましたが環境的にはLinuxのほうがいいみたいですね…
それで今日Linuxの基礎的な参考書のNISについて書いてあったことで分からないことがあります。

「どのコンピュータにも同じパスワードでログインできるようにユーザー情報をファイルとして
共有できるのが良い」って書いてありましたけど、これどういう意味ですか?
ネットワーク上のコンピュータに同じパスワードでログインとは???
頭が混乱してしまいました。
0439デフォルトの名無しさん2016/06/01(水) 19:13:19.24ID:gN04e8i3
自分のイメージだとWindowsの場合は複数のPCのユーザーとパスワードを管理
という感じなんですが、Linuxは全部のPCにどのユーザーもログインできるんですか?
0440デフォルトの名無しさん2016/06/01(水) 19:16:02.61ID:aOPPmGKo
設定次第
0441デフォルトの名無しさん2016/06/01(水) 19:18:41.95ID:3reqmZT4
prog.c:2:21: fatal error: windows.h: No such file or directory
compilation terminated.
0442デフォルトの名無しさん2016/06/01(水) 19:19:53.20ID:r16e60WU
NISがそういうことをするためのソフトだということだよ。
ついでに言うとLinuxのことはスレどころか板違いな。
0443デフォルトの名無しさん2016/06/01(水) 19:41:35.00ID:gN04e8i3
>>442
失礼いたしました。
0444デフォルトの名無しさん2016/06/01(水) 19:45:36.61ID:uohmGdPE
NISの話題はLinux板では見つからず
Unix板にはあった。
覗いてみる?
http://echo.2ch.net/test/read.cgi/unix/1139633506/

ぱっと見た感じは、昔の思い出語りの同窓会っぽい
0445デフォルトの名無しさん2016/06/01(水) 19:52:18.53ID:gN04e8i3
>>444
随分過疎ってますね…
NISの仕組みがいまいちわかりませんが聞く場所はどうやらないようですねw
概要だけでも知りたいと思っていて…
0446デフォルトの名無しさん2016/06/01(水) 19:55:03.91ID:aOPPmGKo
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf
0447デフォルトの名無しさん2016/06/01(水) 22:01:07.42ID:r16e60WU
何を求めてLinux使いたいのか知らんけど、そんなレベルならWindowsでGCC使えば良くね…?
0448デフォルトの名無しさん2016/06/01(水) 23:15:55.67ID:UOAJZ08o
【ワカヤマン】C言語プログラミング能力認定試験 [無断転載禁止](c)2ch.net
http://hanabi.2ch.net/test/read.cgi/lic/1454165737/
0449デフォルトの名無しさん2016/06/02(木) 00:11:29.05ID:j+S1t6S0
NIS クライアントでは、/etc/passwd・/etc/group・/etc/protocols・/etc/services などの各ファイルは、本来の意味を持たない

つまり、すべてのホストについて、そのホストに保存している、本来のユーザ情報を使わず、
代わりに、NIS サーバに登録している、ユーザ情報を使う

ひょっとして君は、/etc/passwd の内容も知らないの?
LPICレベル1 の資格も持っていないの?
0450デフォルトの名無しさん2016/06/02(木) 00:27:43.73ID:G7HA41c1
聞くところがないからって、ここはもっと違うだろ
同窓会で質問すりゃいいじゃねーか
0451デフォルトの名無しさん2016/06/02(木) 13:20:40.02ID:ninBX+uN
コード書くときエディターは何使ってます?
0452デフォルトの名無しさん2016/06/02(木) 13:23:23.18ID:YxqJQ0yc
>>439
うわーややこしいですね…全く理解できません。
つまりLinuxではAdministrator的なものはなく勝手にユーザーを作る事も
できないし、自分だけのパスワードを持つこともできないって事ですか?
思っていたよりややこしい。
0453デフォルトの名無しさん2016/06/02(木) 13:49:12.28ID:6s5oWoo8
>>451
Vim

>>452
LinuxだとrootとかwheelerとかがWindowsのAdministratorに相当する。
rootならアカウント作ることも、コマンド一発でOSを消去することも出来る。
rootじゃなかったらアカウントは勝手に作れないし、勝手に作れるべきじゃない。
0454デフォルトの名無しさん2016/06/02(木) 15:03:59.28ID:8hoFcAaU
>>452
Windows でユーザー管理したことがあるなら、ほぼ同じことができると考えていいよ。
Linux の場合、rootは最初から存在するアカウントで、何でもできるので
誤操作しないように通常は一般ユーザーアカウントを作って操作する。
各自は用意されたアカウントとパスワードでアクセスし、自分でパスワードの変更を行う。
これは自分だけのパスワードであり、root ですら分からない(変更はできるけどね)。
0455デフォルトの名無しさん2016/06/02(木) 15:10:42.87ID:hpz40EtU
OSの機能を説明するスレになりました
0456デフォルトの名無しさん2016/06/02(木) 16:27:09.54ID:YxqJQ0yc
>>454
え??・
パスワードは分からないってそれは本当ですか
だって巷のパスワード流出事件はどういう理屈なんでしょう?
だってNISはLinuxサーバーが多いんですよね?
0457デフォルトの名無しさん2016/06/02(木) 16:41:56.96ID:Isfjmcjv
パスワードハッシュを説明するスレになったな
0458デフォルトの名無しさん2016/06/02(木) 17:05:54.21ID:nZ4cUJen
素直にスレチと言ってやろう
0459デフォルトの名無しさん2016/06/02(木) 17:08:36.15ID:hpz40EtU
>>456
何でこのスレで聞き続けるの?
他のスレでやるべきってのは分かるよね?
0460デフォルトの名無しさん2016/06/02(木) 19:27:57.79ID:+GpFgwT1
分かってないから続けるんだろ
0461デフォルトの名無しさん2016/06/02(木) 19:28:43.20ID:c2MxArRR
>>456
てめぇはとことん向いていない スレ選択すらできていないのだから
どっかいけ 邪魔 邪魔
0462デフォルトの名無しさん2016/06/02(木) 19:37:21.81ID:61iLDved
ここは、質問よりもバトルが優先なので正しいスレの利用方法
0463デフォルトの名無しさん2016/06/02(木) 19:40:05.37ID:YxqJQ0yc
なんかすいませんでした。
面白そうだからレス返してしまいました。
ROMします。
0464デフォルトの名無しさん2016/06/02(木) 19:47:35.77ID:61iLDved
回答者気取りのアホを釣り上げる事が、このスレの質問者の役割
0465デフォルトの名無しさん2016/06/02(木) 19:48:18.55ID:YxqJQ0yc
Linux論争の時盛り上がってたから尻馬にのってちょっと分からなかったこと
聞いたんですけどダメでしたか…もうちょっと空気読めるようにします。
0466デフォルトの名無しさん2016/06/02(木) 19:55:53.83ID:E4q84+Ma
今日からC言語始めようと思って苦しんで覚えるC言語ってサイトで
学習用C言語開発環境っていうコンパイラをインストールしたんだけどこれ上書きモードから変えられないの?
書きなおす時にいちいち上書きされるから全部消すのめんどくさすぎる
0467デフォルトの名無しさん2016/06/02(木) 21:11:08.81ID:3SQ4v7Pn
>>466
enterキーの付近にinsertキーがあるだろ?
0468デフォルトの名無しさん2016/06/02(木) 22:28:40.77ID:lh6gew1U
例外処理って
if文で判定してfalseならreturn -1でいいと思うんだけど
なんでc++とかにはtry-catchがあるの?

書ききれなかった異常系処理のif文を省略するため?
0469デフォルトの名無しさん2016/06/02(木) 22:54:14.90ID:lh6gew1U
#include <stdio.h>

int main(void)
{
FILE *fp;
char *fname = "test.txt";
int c;

fp = fopen( fname, "r" );
if( fp == NULL ){
printf( "%sファイルが開けません\n", fname );
return -1;
}

printf( "\n-- fgetc() --\n" );
while( (c = fgetc( fp )) != EOF ){
printf( "%c", c );
}

fclose( fp );
return 0;
}
0470デフォルトの名無しさん2016/06/02(木) 22:54:31.49ID:lh6gew1U
C#
https://msdn.microsoft.com/ja-jp/library/system.io.streamreader(v=vs.110).aspx
using System;
using System.IO;

class Test
{
public static void Main()
{
try
{
// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader("TestFile.txt"))
{
string line;
// Read and display lines from the file until the end of
// the file is reached.
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
catch (Exception e)
{
// Let the user know what went wrong.
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
}
}
0471デフォルトの名無しさん2016/06/02(木) 22:55:19.87ID:lh6gew1U
スタックにつまれた戻り値を検査するやり方から
実行時にCLRが例外を補足してlongjmp、みたいな大道芸になんで変わったの?

それが普通と言われたら適応するしかないけど
異常系の処理は全部goto使ってるみたいで不安になってくる・・・
0472デフォルトの名無しさん2016/06/02(木) 23:05:33.23ID:Xl5LnTax
関数の戻り値でエラーをバケツリレーするのが面倒
正常系の流れがぶつ切りになってリーダビリティ低下
0473デフォルトの名無しさん2016/06/02(木) 23:12:40.21ID:UTqywkRW
>>471
Linuxカーネルのソース読んだ事ないの?
0474デフォルトの名無しさん2016/06/02(木) 23:28:54.52ID:lh6gew1U
本職はVBラー。カーネルなんて読むわけない。
アホでも分かるように教えてほしいんだけど
>>472ってことで問題ないんだよね?
「戻り値検査」方式でなくてもいいよって
お墨付きが欲しい。
on error goto乱発してるみたいで不安なんだよ
0475デフォルトの名無しさん2016/06/02(木) 23:35:50.80ID:PRVcUOTs
>>468
シグナルハンドラで捕捉するよりtry cacheの方が簡単に書けるから
0476デフォルトの名無しさん2016/06/02(木) 23:37:00.77ID:PRVcUOTs
chche じゃねぇや catch だw
0477デフォルトの名無しさん2016/06/02(木) 23:39:03.67ID:X+hQPb++
>>474
longjmpと違って例外はちゃんとスタックを辿って呼び出し階層を巻き戻るだけだから。
0478はちみつ餃子 ◆8X2XSCHEME 2016/06/02(木) 23:49:51.21ID:pLSRIB/r
>>451
Emacs
0479デフォルトの名無しさん2016/06/02(木) 23:59:19.19ID:lh6gew1U
>>475
>>477
ありがと。何となく理由があるのが分かってすっきりした。
とりあえず納得できたので、今後はもっと勉強しとくわ。
0480デフォルトの名無しさん2016/06/03(金) 00:57:12.21ID:MKjSew0C
>>477
longjumpもスタックちゃんと面倒見るでしょ?
0481デフォルトの名無しさん2016/06/03(金) 01:10:19.32ID:tkhh2L0d
ちゃんとでは無いな
0482デフォルトの名無しさん2016/06/03(金) 01:42:57.82ID:MKjSew0C
>>481
そうだっけ?
まあsetjmpしたとこにしか飛べないし
環境を持って回らないといけないし
例外の処理としては使い勝手悪すぎだけど
0483デフォルトの名無しさん2016/06/03(金) 02:17:05.13ID:fVYd85Q0
Linuxのコーディング規則では、
エラー処理は、関数の下の方にまとめて、そこできっちりとリソースの解放をする

エラー時には、gotoでそこへ飛ぶ
0484デフォルトの名無しさん2016/06/03(金) 15:04:41.99ID:/LuDeT53
僕はプログラマじゃないんですが技術者で
ツールで同僚がつくったcプログラムよく使う
んです。ただ会社の決まりで安易に許可外の
つかったらだめとかで同僚が主任に怒られています。
スクリプトくらい良いと思いませんか?
プログラムによるって言われそうですが...
皆さんの職場ではどうですか?
0485デフォルトの名無しさん2016/06/03(金) 16:03:50.57ID:ZxT6RqW/
適切な板、スレを選択もできない様なやつに好き勝手なプログラム使わせるわけ無いのは当然
0486デフォルトの名無しさん2016/06/03(金) 18:49:43.75ID:at7eqVww
一般にフリーソフトをつかったらいけない。損害が発生した場合、責任の所在が不明だから
0487デフォルトの名無しさん2016/06/03(金) 19:15:46.88ID:H80BNsfC
そもそもC言語のツールってww
Cで作れるものならスクリプトで作れるだろ
というかCは制御系の言語で未だに時代遅れの古臭いコード書くためのものでしょ
低級に近い言語だからメモリ系のエラー乱発で残業続き…
未だに残業とかやってるプログラマは殆どCな
javaとかネットワーク系のエンジニアで残業してるやつなんていない
いい加減Cは廃止したほうがいいよ。
適度にメモリ開放する機能満載のjavaに何で統一しない
0488デフォルトの名無しさん2016/06/03(金) 20:04:52.54ID:H80BNsfC
後フリーソフトなんてログに残らないし
外部メディアから実行すればいいだけじゃね?
これだとネットワーク内部で検知されないし
0489デフォルトの名無しさん2016/06/03(金) 20:46:35.53ID:CirWSLm7
自作ツールにwinny.exeってファイル名にしたらウィルス検出ツールに引っかかって
情報システム部門から呼び出されてエラいことになった人がいたという話を思い出した
0490デフォルトの名無しさん2016/06/03(金) 20:56:40.02ID:H80BNsfC
ウイルス検出ツールのほうがむしろ欠陥だらけだろそれwww
0491デフォルトの名無しさん2016/06/03(金) 21:16:12.55ID:5fTzgssX
ファイル名での検出でもいいでしょ
0492デフォルトの名無しさん2016/06/03(金) 22:02:31.26ID:PtuVt43Q
スレ違いの話は余所でお願いします
0493デフォルトの名無しさん2016/06/03(金) 22:10:01.48ID:iHOLs29h
>>487
java重いでしょ?
0494デフォルトの名無しさん2016/06/03(金) 22:11:55.14ID:xBJRJijw
C言語であったらいいなって思うのでeval()ね
これないとか終わってる
0495デフォルトの名無しさん2016/06/04(土) 00:09:26.95ID:C2wHM9iL
それを実現するのに必要なものを少しでも考えたら解ることなのに、脳の活動間違いなく終わってる
0496デフォルトの名無しさん2016/06/04(土) 01:13:00.75ID:qkJP2JtG
オートマトンの本読めとかそれはないですよw
0497デフォルトの名無しさん2016/06/04(土) 02:06:28.69ID:qkJP2JtG
ところで片山博文さんは今これがつくりてーみたいなプログラムあるんですか?
ホームページが更新滞ってる気がしますが

というか公開しているツールのレベルの差が気になりますね

2ch書き込みとか結構レベル高いものから計算レベルのものまでw
0498デフォルトの名無しさん2016/06/04(土) 02:09:28.59ID:qkJP2JtG
片山さん、提案ですが、大学生のCプログラムを解いてあげるサイト立ち上げたらどうでしょう?
それをビジネスにすればいい。フリーツール公開だけじゃ何か作り損な感じですよ。
片山さんがプログラマで十分稼いで中途リタイアしてて善意でサイト運営してるとかなら何も言えませんがね。
割とプログラミングできない学生っているんですよね。こんなのモチベーション次第でいくらでも知らないまま
の状態になれますし。
0499デフォルトの名無しさん2016/06/04(土) 02:11:49.52ID:qkJP2JtG
一応ソフトウェア作成して作ってられるんですね…
フリーソフトだなんて見くびってすいませんでした…
0500片山博文MZ ◆T6xkBnTXz7B0 2016/06/04(土) 02:13:45.21ID:9azu721e
>>497
今、IMEを開発中です。私は嫌われ者なのであまり近付かないで下さい。
0501デフォルトの名無しさん2016/06/04(土) 02:17:07.96ID:qkJP2JtG
プログラム開発は骨を折る作業ですが、宿題を解くなら余裕だと思いますよ
同じような課題もあるだろうし、体裁を変えて作ればいいじゃないですか。
単位落とす学生が多くてプログラミングの講義再履修したくねーよ…みたいなのは
めちゃくちゃ多いです。俺はそこらへんに目をつけてビジネス考えていますよ。
0502デフォルトの名無しさん2016/06/04(土) 02:22:00.82ID:qkJP2JtG
web上に落ちてるプログラムそのまま使えば単位くれませんからね
1課題につき3000円〜10000円でも単位のためなら普通に頼んでくると思いませんか?
というかもうすでにやってるなら余計なお世話かもしれませんがどんくらい捗ってるか教えて下さい
0503デフォルトの名無しさん2016/06/04(土) 02:23:40.59ID:qkJP2JtG
>>500
IMEですか…
なかなかハードルが高いと思いますよ
でも頑張ってください
0504デフォルトの名無しさん2016/06/04(土) 07:23:29.90ID:fw/QBPwX
>>501
>俺はそこらへんに目をつけてビジネス考えていますよ。

>>502
>課題につき3000円〜10000円でも単位のためなら普通に頼んでくると思いませんか?

http://echo.2ch.net/test/read.cgi/tech/1434079972/
http://hibari.2ch.net/test/read.cgi/tech/1289715349/
http://hibari.2ch.net/test/read.cgi/tech/1295273862/
http://hibari.2ch.net/test/read.cgi/tech/1309527259/
http://peace.2ch.net/test/read.cgi/tech/1313183984/
0505デフォルトの名無しさん2016/06/04(土) 14:04:23.48ID:jrcHuPII
この参考書充実時代にむしろプログラマが減ってる理由が分からん
もしかしたらプログラムはできるけどプログラマの現実を知ってるから
あえてならない人が多いとか?
0506デフォルトの名無しさん2016/06/04(土) 14:26:13.39ID:eHL3+XPp
プログラマ総人口は増えてるだろ
減ってるのは職業プログラマ
0507デフォルトの名無しさん2016/06/04(土) 14:27:03.89ID:jrcHuPII
何で減ってるの?
0508デフォルトの名無しさん2016/06/04(土) 14:30:02.99ID:2hWy5mYV
HttpWebRequestについての質問です。

JavaScript実行後のHTMLを取得する方法を教えて下さい。

現在HttpWebRequestのGetResponseメソッドで特定URLのHTMLを取得するコードを実装しているのですが、
取得したHTMLから、さらに呼ばれているJavaScriptの処理で、そのHTMLの内容が変わります。
※innerHTML 等で

JavaScriptが処理された後のHTMLを自動的に生成する方法を教えて下さい。
0509デフォルトの名無しさん2016/06/04(土) 14:46:14.76ID:hxfbVDs6
>>508
まずスレタイを255回音読しろ
0510デフォルトの名無しさん2016/06/04(土) 14:56:44.35ID:jrcHuPII
>>509
8ビットwww指定ww
0511デフォルトの名無しさん2016/06/04(土) 16:55:35.81ID:4YNkREF8
>>508
それを C でやるのは面倒くさい話だけど、
最も簡単なのは実際にウェブブラウザにやらせてからそのデータを受け取る方法だと思う。
ウェブブラウザと通信する方法は OS など、アーキテクチャによる。
Windows なら COM (OLE オートメーション) 経由でやることになると思う。
0512デフォルトの名無しさん2016/06/04(土) 20:27:02.37ID:jrcHuPII
「WM_CLOSE が返すべき値は 0 です」
の意味が分かりません。これは
case WM_CLOSE:
return 0;
の部分のreturn 0のことをいってるんですか?
return が0以外じゃなダメってことですか?
でも日本語的にはWM_CLOSEが返す値が0ってことだから
return 0とは関係ない気がしますね。
return 0はwinprocの返す値が0って意味ですよね。
0513デフォルトの名無しさん2016/06/04(土) 20:28:40.81ID:jrcHuPII
すいません512は

「標準 Windows API」っていうHP
の
12閉じないウインドウ

です。


URL書き込もうとしたらひっかかりました。
0514デフォルトの名無しさん2016/06/04(土) 20:34:47.55ID:hxfbVDs6
Win32APIの話だからC言語の話じゃないよ
0515hdghfssh2016/06/04(土) 21:24:40.15ID:2hWy5mYV
WebBrowserクラスを継承したクラスを作成していて、
OnDocumentCompletedメソッドをオーバラーライドしたいのですが、
コンパイルエラーとなります。

コンパイル警告/エラー無しで正しく継承する具体的なコーディング内容を教えて下さい。

■環境
Visual Studio 2012
C++ CLI

■ソース
public ref class ClassHTTPAuto : WebBrowser{

virtual void OnDocumentCompleted(WebBrowserDocumentCompletedEventArgs e) override = WebBrowser::OnDocumentCompleted{//★
}

};

■コンパイルエラー内容 ★の箇所
'System::Windows::Forms::WebBrowser::OnDocumentCompleted' : 明示的なオーバーライドの署名に一致するメンバーはありません。
'ClassHTTPAuto::OnDocumentCompleted' : 関数は 'System::Windows::Forms::WebBrowser::OnDocumentCompleted' をオーバーライドしません
'override' : オーバーライド指定子の使用法が不適切です。'ClassHTTPAuto::OnDocumentCompleted' は基本 ref クラス メソッドと一致しません
0516デフォルトの名無しさん2016/06/05(日) 10:22:15.36ID:vhl6udDL
CでもなけりゃC++の範囲からも逸脱してるような

くだすれC++/CLI(初心者用)part2
http://echo.2ch.net/test/read.cgi/tech/1268613679/
0517デフォルトの名無しさん2016/06/05(日) 10:55:06.38ID:5CTJmFcd
>>500
なぜimeを自作する必要があるんですか?
0518デフォルトの名無しさん2016/06/05(日) 21:31:36.34ID:6XcU5txU
> if文で判定してfalseならreturn -1

結果はreturnでほしいから成功不成功を返す関数なんてノーサンキューだな
0519デフォルトの名無しさん2016/06/05(日) 21:43:58.12ID:k+LB+XT6
>>468
例外がどこで起きるのかが確実に分かればそれでいいよ
ifが無いところでの例外はどうやって判断するの?
0520デフォルトの名無しさん2016/06/05(日) 23:01:13.80ID:D97p9ZEl
>>518
最近はoptionalで返すのが流行りだと思うけど
Goとかswiftとか
0521デフォルトの名無しさん2016/06/05(日) 23:30:37.36ID:6XcU5txU
>>520
それならなお良い。0と-1は滅んで。
0522デフォルトの名無しさん2016/06/05(日) 23:49:53.29ID:fa5iqzk/
PythonのCAPIは、戻り値がintで成功時に0を返す関数と「真」を返す関数が混在してやがる。
精神分裂症かと思うわ。
0523デフォルトの名無しさん2016/06/06(月) 16:21:10.05ID:gQ2+whqJ
C++もJavaも文字列を検索してみつからない場合、-1をかえす。0は、先頭を意味する
AWKの文字列の先頭は、1だから、0がかえされたらみつからなかったことになる
0524デフォルトの名無しさん2016/06/07(火) 14:13:54.90ID:NVTOjl7e
配列の内容を書き換えるにはどうすればいい?
0525デフォルトの名無しさん2016/06/07(火) 14:18:59.78ID:QJ1i2iu2
配列の中身を指すポインタを参照して書き換えればいい
0526デフォルトの名無しさん2016/06/07(火) 14:24:01.04ID:TyQk9mVD
静的に確保されている配列だと、ソースを書き直さないと書き換えできないだろう
0527デフォルトの名無しさん2016/06/07(火) 15:35:54.62ID:PaoygGE3
静的に確保された配列でも(constでなければ)
書き換え可能な領域に格納されると思うが。
0528デフォルトの名無しさん2016/06/07(火) 16:49:11.14ID:DjDItv96
Cにシグネチャだけのポインタって存在します?
typedef *x=(int x, int y);
ちょっと書き方は正しくはわからないですが…
0529デフォルトの名無しさん2016/06/07(火) 19:24:42.51ID:OKBkxg47
関数へのポインタはあるけど、それがあなたの求めているものかどうかは分からない

void (*funcptr)(int x,int y) = FunctionAddress;
funcptr(x,y);
0530デフォルトの名無しさん2016/06/07(火) 19:55:42.72ID:DjDItv96
>>529
いやなんかDLLから明示的に関数呼び出すときに
シグネチャポインタ使った気がするんですが別の言語だったっけ
0531デフォルトの名無しさん2016/06/07(火) 20:05:50.98ID:RY15Skw4
GetProcAddress 使う時のお馴染みのアレだな
0532デフォルトの名無しさん2016/06/07(火) 20:44:14.35ID:FZ7BirVg
>>528
戻り値の型を無視したいってこと?
0533デフォルトの名無しさん2016/06/07(火) 20:58:55.58ID:+/Tgw7NW
C++ で参照使ってのキャストなんじゃ?

void (*my_funcPtr)(int x, int y);
(FARPROC&)my_funcPtr = GetProcAddress(...)

GetProcAddress は FARPROC (typedef された関数へのポインタ) を返す
0534デフォルトの名無しさん2016/06/07(火) 21:14:42.50ID:pAUiEzK3
>>530
お前は>>529が理解出来てないだろ
シグネチャポインタってのの明確な定義が分からんけど
typedefしたいならすればいいだけだ

void (*funcptr)(int x,int y) = FunctionAddress;
 ↓
typedef void (*funcptr_t)(int x,int y);
funcptr_t funcptr = FunctionAddress;
0535デフォルトの名無しさん2016/06/07(火) 21:24:04.41ID:sgwXY3KG
c言語の構文はまあまあ理解できてるけど
あまりプログラムをかけない俺にアドバイスをください
どうしたら描けるようになるのか
0536デフォルトの名無しさん2016/06/07(火) 21:50:33.11ID:L3iK4Feg
書くようにすればいいと思いまぁす。
0537デフォルトの名無しさん2016/06/07(火) 21:52:38.40ID:sgwXY3KG
>>536
わかりました

構造体の中に構造体ってややこすぎでしょ
0538デフォルトの名無しさん2016/06/07(火) 22:15:28.84ID:o0PWSYpM
慣れよう
0539デフォルトの名無しさん2016/06/07(火) 22:19:55.12ID:+/Tgw7NW
横断的に見ようとするからややこしくなる
なんかしらんけど都合のよいヒトまとまりがあるんだな ぐらいの位置づけ <構造体
0540デフォルトの名無しさん2016/06/07(火) 22:23:33.99ID:sgwXY3KG
質問があります
memsetの書式は
void *memset(void *buf, int ch, size_t n);
ですが
これはvoid型ポインタがmemsetの戻り値だということなんでしょうか?
0541sage2016/06/07(火) 22:26:00.06ID:Ap8KFN02
https://www.youtube.com/watch?v=nZDsMPhj4p4
0542デフォルトの名無しさん2016/06/07(火) 22:32:36.58ID:AqghaPJw
>>540
はい、そうです。
Yes, it is.
0543デフォルトの名無しさん2016/06/07(火) 23:09:42.16ID:RY15Skw4
>>540
そうみたいだね
でも 10人中10人が memsetに戻り値なんてあったっけ? って言いそう
0544デフォルトの名無しさん2016/06/07(火) 23:25:59.72ID:hqVkz6fS
10人中10人というのは同意しかねる
0545デフォルトの名無しさん2016/06/07(火) 23:26:30.79ID:E5ZKvz7b
>>543
言わねえよ
0546デフォルトの名無しさん2016/06/08(水) 00:42:44.45ID:s78ka570
#include <iostream>
#include <cstring>

class Employee {
public:
int id;
char name[80];
long wage;
void DispData();
};

void Employee::DispData() {
std::cout << id << std::endl;
std::cout << name << std::endl;
std::cout << wage << std::endl;
}
0547デフォルトの名無しさん2016/06/08(水) 00:43:04.71ID:s78ka570
int main() {
Employee yamaguchi;
Employee* p = &yamaguchi;

p->id = 123456;
strcpy(p->name, "Miho Yamaguchi");
p->wage = 225000;

p->DispData(); // [1]
(*p).DispData(); // [2]
p[0].DispData(); // [3]
0[p].DispData(); // [4]
(&p[0])->DispData(); // [5]
(&yamaguchi)->DispData(); // [6]
yamaguchi.DispData(); // [7]

return 0;
}
05485462016/06/08(水) 00:44:43.61ID:s78ka570
[1]〜[7]は全部同じ意味なのでしょうか?
プログラマ板からこっちに来ました。
0549デフォルトの名無しさん2016/06/08(水) 00:52:49.92ID:scj+Em0X
>>548
うん
0550デフォルトの名無しさん2016/06/08(水) 02:11:00.48ID:7iuYU3FM
山口美穂さんが気になる
0551デフォルトの名無しさん2016/06/08(水) 06:22:43.52ID:Ss5C/9P6
実用ではまず使わないような書き方も混ざってるし
場面によって選ばなきゃならない部分もあるけど、
動作はどれも同じだな、たぶん。

俺は wage が気になる。
0552デフォルトの名無しさん2016/06/08(水) 06:26:37.12ID:dlZJ+myO
確かに
wageって何だ
0553デフォルトの名無しさん2016/06/08(水) 06:53:04.18ID:WRRf0iRn
普通はsalaryじゃないかな
0554デフォルトの名無しさん2016/06/08(水) 06:57:46.32ID:roXGBAml
wageは普通に賃金だろ
人事か勤怠管理関係のソフトの例に見える
0555デフォルトの名無しさん2016/06/08(水) 07:27:45.38ID:vAuk/aLa
どう見てもC言語に見えない
0556デフォルトの名無しさん2016/06/08(水) 07:32:51.85ID:Ss5C/9P6
wage って普通の英単語なんだな。意味は「賃金」「労賃」。
年齢の age に w が前置されてるんだと勘違いした。

p->wage = 225000;
4桁ずらしの固定小数点で22歳と6ヶ月か、と早とちり。
0557デフォルトの名無しさん2016/06/08(水) 07:41:54.64ID:E3Y0fydP
3. p[0].DispData();
4. 0[p].DispData();
5. (&p[0])->DispData();

p[0]って、配列のインデックスやろ。
pが配列なんて、どこにも記述されていないだろ

こういう使い方は、warning を付けてコンパイルしたら、警告されるだろ?
0558デフォルトの名無しさん2016/06/08(水) 07:42:00.13ID:kd4iSoui
chinginでいいよ
0559デフォルトの名無しさん2016/06/08(水) 07:44:57.32ID:q0/3Jdrh
>>557
malloc で確保した領域のアクセスに [index] 使えなくなるよ?
0560デフォルトの名無しさん2016/06/08(水) 08:13:33.22ID:eNSrjZZk
>>556
> 年齢の age に w が前置されてるんだと勘違いした。
俺も...
0561デフォルトの名無しさん2016/06/08(水) 09:19:39.64ID:roXGBAml
最初のEmployeeに続いてwageと来れば普通分かるだろ
0562デフォルトの名無しさん2016/06/08(水) 12:00:43.32ID:zhNLsr9i
文字列型のポインタをprintするとき、なぜ
char* p='abcdef';
printf("%s\n",*p);
だとエラーが出るのですか?
0563デフォルトの名無しさん2016/06/08(水) 12:09:26.40ID:kd4iSoui
>>562
*pはaだから
0564デフォルトの名無しさん2016/06/08(水) 12:31:56.50ID:DsLC5JRr
そもそも
? char* p='abcdef';
◎ char* p="abcdef";

だから。
0565デフォルトの名無しさん2016/06/08(水) 13:05:38.58ID:wNXQdM9t
1行目 文法に沿ってないくてコンパイルエラー → "abcdef" とせよ

2行目 実行時エラー
%s は文字列を要求しているのに (アドレス寄こせ by printfの中の人)
文字 *p を渡してる

%c として *p を渡す 1文字だけ書くケース
%s として p を渡す 文字列を書くケース
0566デフォルトの名無しさん2016/06/08(水) 13:53:46.21ID:dxYJdGcn
int func(int a, ...);
この、 ... ってどういう意味?
0567デフォルトの名無しさん2016/06/08(水) 13:55:34.85ID:vAuk/aLa
引数沢山
0568デフォルトの名無しさん2016/06/08(水) 14:01:52.59ID:NAh8v38D
可変長引数
0569デフォルトの名無しさん2016/06/08(水) 20:43:00.47ID:eNSrjZZk
>>566
三点リーダの秘密はねっ♪

教えてあげないよ、チャン


ってこと
0570デフォルトの名無しさん2016/06/09(木) 07:24:45.61ID:2YxjXa4R
ファイル入出力ってなんで必要なんですか?
0571デフォルトの名無しさん2016/06/09(木) 07:31:24.70ID:xmM0KaA1
>>570
何で必要ないと思うのですか?
0572デフォルトの名無しさん2016/06/09(木) 11:46:23.65ID:CSH5zx3A
>>566
可変長引数…(可変"個" の方がわかりやすいけど)
printf と同じように引数の個数を固定せずに関数を呼び出せる

ただ一見便利そうだけど作るの面倒くさいし呼び出し側のミスも出やすいので
よっぽどのことがないと使わない
0573デフォルトの名無しさん2016/06/09(木) 12:48:38.63ID:Qt5FQmqP
wakigeかと
0574デフォルトの名無しさん2016/06/09(木) 12:58:49.08ID:BJL7nX2w
出力先を別にしたいオレオレprintf もどきも vsprintf にピンポンするだけだし
va_arg 使って自前で引数を掘り起こすようなことはしてないな
0575デフォルトの名無しさん2016/06/09(木) 14:45:36.87ID:C9jsRYgP
gets って危険な関数でしょ?
他に危険な関数ってないの?
0576デフォルトの名無しさん2016/06/09(木) 16:07:56.58ID:U6W+Lc/f
scanf
0577デフォルトの名無しさん2016/06/09(木) 16:08:59.38ID:U6W+Lc/f
「上限バイト数を指定できない関数も存在する。たとえばrealpath(中略)
realpath( )関数は決してPATH_MAXバイトを超えるファイルパス名をバッファに書き込むことはないので,バッファオーバーランは発生しない」

代替関数の多くは,上限バイト数nを指定できる
gets → fgets
sprintf → snprintf
strcat → strncat
strcpy → strncpy
vsprintf → vsnprintf

6-2. バッファオーバーラン その2「危険な関数たち」
https://www.ipa.go.jp/security/awareness/vendor/programmingv1/b06_02.html
0578デフォルトの名無しさん2016/06/09(木) 18:09:36.00ID:uMpaUb47
●AI技術(人工知能)で起業したい方へ3000万円まで投資します●

経験と情熱のある方のみ、お願いします。
http://good-hill.xsrv.jp/?id=001222

『 グッドエンジェル 』
投資家と起業家のマッチングサービス
0579デフォルトの名無しさん2016/06/10(金) 08:03:54.41ID:7xQ2IbxD
>>570
別に要らん(時もある)でしょ
0580デフォルトの名無しさん2016/06/10(金) 08:19:25.39ID:dWFrFI9c
入出力のないプログラム?
0581デフォルトの名無しさん2016/06/10(金) 08:25:30.32ID:w7JbxUjA
画面に何らかの表示だけして終わるプログラムとかならあるいは
0582デフォルトの名無しさん2016/06/10(金) 08:32:06.04ID:k+iM2OAx
組込み系だとファイル入出力がなくてもおかしくはない
0583デフォルトの名無しさん2016/06/10(金) 08:36:50.54ID:7xQ2IbxD
>>580
入出力はファイルだけじゃないでしょ?
0584デフォルトの名無しさん2016/06/10(金) 09:29:02.05ID:dvX6huj0
I/Oポートも含む?
0585デフォルトの名無しさん2016/06/10(金) 12:20:57.16ID:3enYqez8
>>583
Unix では、入出力はすべてファイル扱いだな。
0586デフォルトの名無しさん2016/06/10(金) 12:36:27.68ID:WP41EhF0
%c
%s

この違いはなんですか?
0587デフォルトの名無しさん2016/06/10(金) 14:00:05.57ID:RBefts0o
characterとstring
0588デフォルトの名無しさん2016/06/10(金) 14:16:00.67ID:WP41EhF0
char a= 'abc';

これはありですか?
0589デフォルトの名無しさん2016/06/10(金) 14:16:41.96ID:w7JbxUjA
>>588
そのコードで何が起きる事を期待してるの?
0590デフォルトの名無しさん2016/06/10(金) 14:21:47.75ID:7xQ2IbxD
>>585
Linux は違うけどね
0591デフォルトの名無しさん2016/06/10(金) 14:23:17.47ID:Jpvd/BN1
>>589
変数aに文字列'abc'が代入されること
0592デフォルトの名無しさん2016/06/10(金) 14:25:46.05ID:kPmCsxvk
stract book{
unsigned data
unsigned ed
unsigned pages
};
構造体でこんな書き方見たけど、int charとかでなくていいの?
0593デフォルトの名無しさん2016/06/10(金) 14:27:39.42ID:WP41EhF0
自己解決しますた
0594デフォルトの名無しさん2016/06/10(金) 14:32:10.63ID:af0Q21Gi
stractじゃダメ
data,ed,pagesの後にセミコロンが無いとダメ
それ以外は問題無い
0595デフォルトの名無しさん2016/06/10(金) 14:36:51.92ID:w7JbxUjA
unsignedはunsigned intの略です。

ってのがまさか答えじゃないだろうな?
0596デフォルトの名無しさん2016/06/10(金) 14:49:37.76ID:7xQ2IbxD
>>591
まず char が 24bit 以上ある処理系を探せ
0597デフォルトの名無しさん2016/06/10(金) 21:43:24.11ID:xjOVG2Xk
>>590
Linuxにも標準入出力があって、stdin, stdout, stderrは、ファイルとみなされる
0598デフォルトの名無しさん2016/06/10(金) 21:50:04.84ID:lJsEyLcp
>>597
ファイルではなくてストリーム
0599デフォルトの名無しさん2016/06/10(金) 21:56:13.13ID:0l3EpsaB
標準入出力はttyかどうかチェックして処理切り替えたりするからなあ
0600デフォルトの名無しさん2016/06/10(金) 22:08:27.22ID:NC5Uyh6x
>>597
で、入出力はそれだけだとでも言うの?
0601デフォルトの名無しさん2016/06/10(金) 22:39:14.41ID:k+iM2OAx
stdinやstdoutなどの入出力ストリームはOSのファイルシステムとは関係ないだろ
C++などだと言語仕様そのものであってOSとは関係ない
0602デフォルトの名無しさん2016/06/10(金) 22:40:35.84ID:mkeAAIE0
>>601
元々のコメントはファイルシステムじゃなくてファイル入出力な
0603デフォルトの名無しさん2016/06/11(土) 00:20:41.65ID:PMKv7Zqi
まあ、LEDピカピカだけならファイルI/Oは要らないよな。
0604デフォルトの名無しさん2016/06/11(土) 11:36:06.48ID:33DjWdel
実装仕様次第。
0605デフォルトの名無しさん2016/06/11(土) 13:40:16.80ID:JfIPVaDb
procファイルシステムからI/OレジスタアクセスできるようにするだろうJK
0606デフォルトの名無しさん2016/06/11(土) 13:46:09.29ID:YTNOaw6v
OSすら存在しない場合もある
PICマイコンなどでOSとか使わないだろ
0607デフォルトの名無しさん2016/06/11(土) 13:50:37.11ID:YTNOaw6v
流石に言い過ぎた
8bitのPICな
0608デフォルトの名無しさん2016/06/11(土) 20:08:26.18ID:QkEgHpib
LEDピカピカもOS積んでるものならデバイスファイル経由でやりそうなもんだよな
0609デフォルトの名無しさん2016/06/12(日) 08:34:14.76ID:dimfy4+I
>>607
FreeRTOSは、PIC18に対応してる。
PIC16F1 も頑張れば出来るかも。
0610デフォルトの名無しさん2016/06/12(日) 10:30:45.96ID:WyhS/xEH
デバイスファイル?何それ?
0611デフォルトの名無しさん2016/06/12(日) 11:57:43.48ID:XGCv8IVI
/dev/なんちゃら
でないの?
0612デフォルトの名無しさん2016/06/12(日) 18:15:16.99ID:KbD9aY6t
\\?\Device\なんちゃら
でないの?
0613デフォルトの名無しさん2016/06/12(日) 18:54:30.98ID:QKWa7och
ググればわかることをすぐ聞く人は普段会話する人がいなくて寂しいのかな?
0614デフォルトの名無しさん2016/06/12(日) 23:40:38.30ID:tgfb+UEQ
大学の授業やその他様々な書籍で関数にポインタを渡すことを「参照渡し」と呼んでいるのですがこれは正しいのですか?
c++のそれとは結構違うように思うのですが
0615デフォルトの名無しさん2016/06/12(日) 23:52:43.05ID:TqVPhPZJ
c言語は全て値渡し。

ポインタを渡すってことは、アドレス値を渡しているだけ。
0616デフォルトの名無しさん2016/06/13(月) 04:11:44.00ID:HX8gnVgB
CON
NUL
0617デフォルトの名無しさん2016/06/13(月) 04:30:49.41ID:mBpXhoPb
>>614
C言語は、「値渡し」しか存在しないから「参照渡し」を実現するために
変数のポインタを「値渡し」で関数の引数として渡す・・・と言う意味。
0618デフォルトの名無しさん2016/06/13(月) 06:32:13.22ID:eZuZl6sr
ポインタの必要性ってなんですか?
0619デフォルトの名無しさん2016/06/13(月) 06:45:20.78ID:HqtqGY0q
すぐ上のレスくらい読もう
0620デフォルトの名無しさん2016/06/13(月) 07:35:01.68ID:LETOL1kb
>>614
Java から感染ってきた使い方,無論おかしい
0621デフォルトの名無しさん2016/06/13(月) 09:22:30.37ID:sAnNoOTR
void hogehoge (&foo) {

は何なんだぜぃ?
0622デフォルトの名無しさん2016/06/13(月) 09:36:18.27ID:PZTSbFj/
>>621
そりゃC言語ではないだろう
0623デフォルトの名無しさん2016/06/13(月) 21:19:43.45ID:HX8gnVgB
#include <stdio.h>
void eight(int *f)
{
    int e = *f;
    *f = 8*e;
}

int main(void)
{
    int e = 6;
    eight(&e);
    printf(
0624デフォルトの名無しさん2016/06/13(月) 21:20:32.93ID:HX8gnVgB
Firefoxでかきこみましたが、やっぱり引用符できれてしまった
なにやってんだよ
0625デフォルトの名無しさん2016/06/14(火) 00:26:34.80ID:pPOUFunw
ダブルクォート? "hage" どうだ!
0626デフォルトの名無しさん2016/06/14(火) 00:49:30.74ID:8yjejgOa
void a(int*i);

int var=6;
a(&var) は参照渡しだ
0627デフォルトの名無しさん2016/06/14(火) 00:58:14.22ID:8yjejgOa
>>615
嘘つくなよ
0628デフォルトの名無しさん2016/06/14(火) 01:01:34.55ID:kHZZ/T/q
それC++だろ
0629デフォルトの名無しさん2016/06/14(火) 01:19:01.89ID:8yjejgOa
Cにも参照渡しはあるよ
構造体の参照渡ししかり
0630デフォルトの名無しさん2016/06/14(火) 01:21:16.85ID:pPOUFunw
>>629
構造体を指すポインタの値を渡してるだけじゃん
0631デフォルトの名無しさん2016/06/14(火) 01:24:18.88ID:7FWxp3bz
ポインタではない、構造体へ参照
0632デフォルトの名無しさん2016/06/14(火) 01:24:41.89ID:7FWxp3bz
への
0633デフォルトの名無しさん2016/06/14(火) 01:32:08.93ID:kHZZ/T/q
構造体の名前が構造体の先頭アドレスを指すことは確かだけど参照と言っていいのかなあ
それ言い出すと関数名も関数へのアドレスを指すけど関数を別の関数の引数として渡したり出来ないよね
0634デフォルトの名無しさん2016/06/14(火) 01:34:31.47ID:kHZZ/T/q
誤解のないように言っておくけど関数へのポインタを渡すことができるのは知ってる
0635デフォルトの名無しさん2016/06/14(火) 01:35:53.50ID:8yjejgOa
できるよ、じゃなきゃOS作れないよ
0636デフォルトの名無しさん2016/06/14(火) 01:37:18.92ID:8yjejgOa
>>634
じゃ何言いたいんだよ
0637デフォルトの名無しさん2016/06/14(火) 01:39:32.29ID:kHZZ/T/q
え?出来るの?
それじゃ関数型言語みたいに高階関数の定義とかできる方法あるの?
0638デフォルトの名無しさん2016/06/14(火) 01:43:49.26ID:8yjejgOa
C言語で書けない処理はアーキテクチャ依存のプロセス切り替えくらいしかない
C言語でSwiftも作れる
0639デフォルトの名無しさん2016/06/14(火) 01:51:37.74ID:kHZZ/T/q
いや具体的な実装のことじゃなくて、参照とかの抽象的なレベルでのこと言っているんだけど
ポインタで具体的なアドレス使えば何でも書けるのは当たり前
アセンブラでAdd命令で加算するのを、C言語では加算演算子で加算処理を抽象化するように
関数を抽象化する方法を聞いている
関数へのポインタは具体的なアドレスを指す変数でしかないので、抽象的な意味での参照の方法
があるのかどうかということ
0640デフォルトの名無しさん2016/06/14(火) 02:04:07.83ID:8yjejgOa
んなことよりWWDCみろよ
0641デフォルトの名無しさん2016/06/14(火) 02:21:18.17ID:/RxT5hmi
difference between pointer and reference in c?
http://stackoverflow.com/questions/4995899/difference-between-pointer-and-reference-in-c
0642デフォルトの名無しさん2016/06/14(火) 02:28:35.18ID:pPOUFunw
>>631-632
構造体への参照ってなんだ?
例えばこれの3行目で構造体 x への参照を y にコピーしてるとか思ってる?
struct foo { int a; };
struct foo x = { 1 };
struct foo y = x;
0643デフォルトの名無しさん2016/06/14(火) 03:40:41.64ID:f6jk1oMA
>>621
ポインタの値渡し
0644デフォルトの名無しさん2016/06/14(火) 03:41:19.81ID:f6jk1oMA
>>629
ポインタの値渡し
0645デフォルトの名無しさん2016/06/14(火) 03:41:42.26ID:f6jk1oMA
>>631
構造体へのポインタの値渡し
0646デフォルトの名無しさん2016/06/14(火) 06:02:06.24ID:ASWsULQI
構造体ってなんで必要なんですか?
0647デフォルトの名無しさん2016/06/14(火) 06:48:32.78ID:kHZZ/T/q
>>643-645
そうだよなあ
C言語は実体を持つポインタ変数の値渡ししか出来ないよなあ
C++の変数の参照にしてもただのエイリアスをちょっと扱いやすくしただけだし
あえて言えばnew演算子で生成するクラスインスタンスの参照が本来の参照の意味に一番近いかな
0648デフォルトの名無しさん2016/06/14(火) 07:40:25.03ID:c6cCaMbO
D言語にも構造体がある。構造体は、便利であるし、効率がいい

「構造体と共用体は、シンプルなデータの集約や、ハードウェアや外部の型の上にデータ構造を定義する
方法として使うことを意図されています」
http://www.kmonos.net/alang/d/struct.html
0649デフォルトの名無しさん2016/06/14(火) 07:40:33.97ID:f6jk1oMA
>>647
>new演算子で生成するクラスインスタンスの参照
new はクラスへのポインタを渡すから
これもポインタの値渡し
0650デフォルトの名無しさん2016/06/14(火) 07:44:38.06ID:c6cCaMbO
構造体が無い言語があって、とまどいます
にせものならある
0651デフォルトの名無しさん2016/06/14(火) 07:50:20.51ID:kHZZ/T/q
>>649
違うよ
インスタンスの参照はただの変数の参照とは意味合いが違う
オブジェクトそのもの(いわゆる属性プロパティ(メンバ変数)や
操作(メンバ関数))を含めた抽象的な意味合いでの参照の意味を持つ
0652デフォルトの名無しさん2016/06/14(火) 07:55:50.12ID:kHZZ/T/q
補足
インスタントの参照をポインタ変数に代入するのはC++でのただの実現手段であって
参照そのものの持つ意味はもっと広い
0653デフォルトの名無しさん2016/06/14(火) 07:56:42.93ID:kHZZ/T/q
インスタントってなんだw
インスタンスに訂正
0654デフォルトの名無しさん2016/06/14(火) 08:26:06.33ID:lt/AyDcf
そんなオレオレ定義を語られてもなぁ...
0655デフォルトの名無しさん2016/06/14(火) 08:33:05.40ID:kHZZ/T/q
C#やJavaScriptなどのマルチパラダイムのプログラミング言語を学べば
体験的に納得できることだけど、手続き型(特にC言語)だけに拘っていると
こういった視野は持ち得ないし分からないかも知れないな
プログラム言語の世界をもっと広い目で眺めたほうがいいよ
0656デフォルトの名無しさん2016/06/14(火) 09:27:38.79ID:okTh9FeH
アセンブラから見て(ry
0657デフォルトの名無しさん2016/06/14(火) 09:42:13.46ID:EcxrViCa
>>651
プロパティはオブジェクトそのものではないのでは
メソッド含めてのオブジェクトなんだから
0658デフォルトの名無しさん2016/06/14(火) 10:11:53.40ID:kHZZ/T/q
>>657
プロパティも言語によって扱いの変わる概念だからね
ただの属性としての意味しか持たない場合もあるし、C#のようにメンバ変数のアクセサとしての意味を
含んだ概念を指す場合もある
一般的には、属性と操作を含むクラスの実体(インスタンス)がオブジェクトという解釈でいいよ
staticなクラスのような実体を持たない例外もあるけど、何にせよ何らかの手段で紐付けをしておかないと
取り扱いができない
その紐づけのための概念が参照であり、特別に参照型変数を用意している言語もあるし、C++のように
クラス型の変数という呼び方をしている言語もある
特にC++はクラス型の変数は一般にポインタで扱うことが多いので、インスタンスの参照とインスタンスへの
ポインタが混同される傾向が強い
0659デフォルトの名無しさん2016/06/14(火) 10:15:39.69ID:kHZZ/T/q
誤:実体を持たない
正:(クラスそのものが)実体をもつ
0660デフォルトの名無しさん2016/06/14(火) 10:19:02.42ID:ib+gOtfn
そろそろC言語から遠くなってきてるので他所でやってもらえるとよろしいのですが
0661デフォルトの名無しさん2016/06/14(火) 10:22:33.38ID:kHZZ/T/q
失礼
ROMに戻ります
0662デフォルトの名無しさん2016/06/14(火) 11:57:59.48ID:/RxT5hmi
C言語の参照は>>641のrのことだろ
これを関数で渡せるかは知らん

char c = 'z';
char& r = c;
0663デフォルトの名無しさん2016/06/14(火) 12:02:32.34ID:c3GxBqr6
マジでC言語の区別ついてないやつ多いんだな
0664デフォルトの名無しさん2016/06/14(火) 12:12:03.98ID:Jwq6Rh3R
>>662
> char& r = c;
これは c++ だろ
0665デフォルトの名無しさん2016/06/14(火) 12:29:49.16ID:40VABfp1
>>663
俺だw
C99でべらぼーに拡張されたようだったんで
++との境界があいまいだわ
0666デフォルトの名無しさん2016/06/14(火) 12:40:41.47ID:xg9RKltB
いやc99ってちょっと便利な機能が導入されただけで大きな拡張はないだろ
それで区別つかなくなるとかないわ
0667デフォルトの名無しさん2016/06/14(火) 13:14:48.64ID:40VABfp1
c90だっけ?
0668デフォルトの名無しさん2016/06/14(火) 13:23:55.65ID:lYP0SHiS
C99とC++はたまに悩む
boolとか、可変長配列とか
0669デフォルトの名無しさん2016/06/14(火) 13:58:04.76ID:/RxT5hmi
>>664
いや俺も初めて見たんでびっくりしたんだw
試してない。
0670デフォルトの名無しさん2016/06/14(火) 14:33:41.44ID:/RxT5hmi
つーか、これは用語の定義の問題であって、
C言語に”reference”って用語が定義されてるのか?
0671デフォルトの名無しさん2016/06/14(火) 17:48:56.60ID:TCIWxICx
組み込み用途以外でC言語とか
あるの?そんな状況?
0672デフォルトの名無しさん2016/06/15(水) 01:40:59.01ID:gZwGLfL5
>>614
で、結論ね。

厳密な意味ではC言語の関数引数に参照渡しはない。
全て値渡し、これは事実。

だが、ポインタを渡して、そのデリファレンスしたオブジェクトを扱う事を参照渡しと呼んでいる書籍があるのも事実。

意図する主体が違うので、どちらも間違いとは言えないと思っている。
関数の仕組みで考えたら、前者が正しい。
オブジェクト操作のセマンティクスで考えたら、後者が正しい。
0673デフォルトの名無しさん2016/06/15(水) 13:08:38.09ID:ltaRG/Ox
C言語で参照渡しをしたいときはこうするんだよ、ぐらいの意味だろうね
初心者向けの文章なら、書き方にもよるけど別にいいと思う
0674デフォルトの名無しさん2016/06/15(水) 16:42:56.88ID:X8QJ/yXs
C言語じゃない場合の参照渡しは何が渡るの?やっぱりポインタみたいなものじゃないの?
0675デフォルトの名無しさん2016/06/15(水) 16:59:07.95ID:6RueGIQL
>>674
ポインタはただのアドレス
広義のオブジェクトの参照はオブジェクトそのもののエイリアス(別名)のこと
例えば、配列へのポインタは先頭アドレスの位置の情報しか渡らないけど
他の言語で配列の参照といえば、要素数などの情報も含めて全ての情報が渡る
0676デフォルトの名無しさん2016/06/15(水) 17:11:37.03ID:X8QJ/yXs
>>675
うーん。
その情報が置かれてるアドレスを渡してるのかもよ?
0677デフォルトの名無しさん2016/06/15(水) 17:36:40.20ID:6RueGIQL
細かい言語の内部実装までは知らないしそこまで詳しくはない
言葉通りに解釈して、値渡しは元の内容をそのまま渡すこと、参照渡しは元の内容のコピーを渡すこと
コピーとオリジナルの関係が参照ということ
コピーなのでもとの情報はすべて持っている
0678デフォルトの名無しさん2016/06/15(水) 17:41:42.05ID:9eiMbTeP
>>676
ランタイムがそれをやってる。

>>677
コピーって言うと語弊がある。インスタンスが増えたわけでは無いから。
0679デフォルトの名無しさん2016/06/15(水) 17:44:13.52ID:6RueGIQL
値渡しと参照私の説明が逆だった、訂正
0680デフォルトの名無しさん2016/06/15(水) 17:46:38.04ID:6RueGIQL
>>678
オブジェクト指向のインスタンスの場合、引数の参照渡しはコピーコンストラクタでインスタンスが生成されなかったっけ?
0681デフォルトの名無しさん2016/06/15(水) 18:15:37.40ID:9eiMbTeP
>>680
それ何の言語?
普通、参照と言ったらコピーじゃなくエイリアスだろ。
0682デフォルトの名無しさん2016/06/15(水) 18:21:07.45ID:9eiMbTeP
エイリアスと言うと語弊があるのかな。
参照はそのまんまリファレンスだよ。コピーじゃ無い。
0683デフォルトの名無しさん2016/06/15(水) 18:38:49.79ID:EUh3ry3n
>>680
> 引数の参照渡しはコピーコンストラクタでインスタンスが生成されなかったっけ?
君 >>677 でも(訂正したとは言え)間違えてるし
話がややこしくなるからちゃんと書けないならおとなしく ROM っててくれ
はっきり言って邪魔
0684デフォルトの名無しさん2016/06/15(水) 18:45:50.85ID:6RueGIQL
>>681,682
ごめん、また同じ間違いしてた
値渡しでC++の話
情報を渡す=コピーを渡す:値渡し
内容を渡す=別名で渡す:参照渡し
的な意味で捉えていたのが混乱の元だな
うん、コピーとエイリアスは別物だね
0685デフォルトの名無しさん2016/06/15(水) 18:49:40.36ID:6RueGIQL
>>683
失礼、とりあえず控えるよ
0686デフォルトの名無しさん2016/06/15(水) 20:16:28.67ID:fBdcLY2F
>>652
広いもなにも,ポインタ変数に収まるんだったらポインタ変数と同等の力しかないのであって
0687デフォルトの名無しさん2016/06/15(水) 20:17:43.93ID:fBdcLY2F
>>658
C++ では参照変数とポインタ変数は区別されているよ
0688デフォルトの名無しさん2016/06/15(水) 21:56:48.58ID:50wzyrZY
>>655
マルチパラダイムって何よ?
0689デフォルトの名無しさん2016/06/16(木) 06:30:24.37ID:A7tCzxLE
よくわからなくなってきたけど、関数の引数参照渡しの文脈の中で使われる「参照」と、オブジェクトの参照の文脈の中で
使われる「参照」は似て非なるものということでいいのかな?
ポインタ経由の参照は後者の意味で使われており、C++の&varなどの引数としての参照は前者の意味ということ?
0690デフォルトの名無しさん2016/06/16(木) 06:52:58.22ID:Ug1T/RXD
>>689
それであってる
ポインタ経由の参照は値渡しであって参照渡しではない
参照の意味が違う
0691デフォルトの名無しさん2016/06/16(木) 06:57:03.48ID:ouXjOwRe
>>690
どう違うの?
0692デフォルトの名無しさん2016/06/16(木) 07:21:37.91ID:cgaXk5xn
>>691
参照先にアクセスするときに専用の記法を使う必要があるかとか、
参照のために受け渡しされる値に直接アクセスできるかどうかも違う
0693デフォルトの名無しさん2016/06/16(木) 07:36:08.07ID:Ug1T/RXD
>>691
うまく伝わるかどうか微妙だけど、たとえ話で説明すると
本の目次から該当ページの内容の情報を見つけることができるようにする仕組みがポインタ経由の参照であり
その本の何ページの何行目の目次を見るように指定することが(ポインタの)値渡し
参照渡しは本ではなくて情報源そのもの(例えばWebなど)のリンク先を指定するといった感じかな
過去レスで誰かが言っていたようにC言語では参照渡しは出来ない
かえって分かりにくかったらごめん、うまく表現できない
0694デフォルトの名無しさん2016/06/16(木) 08:07:39.14ID:e7Ja7VI3
>>688
本人がきちんと理解できてないことは聞かないのが本当の優しさ
0695デフォルトの名無しさん2016/06/16(木) 08:14:48.11ID:e7Ja7VI3
>>689
おなじだよ
ポインタ経由ガー
って言ってる奴は概念と実装の区別がついてないだけ
C言語でも普通に de-reference operator とか言うし
0696デフォルトの名無しさん2016/06/16(木) 08:30:21.59ID:Ug1T/RXD
>>695
確かにその表現が一番しっくり来る
>>689の言う前者は実装上の参照の定義、後者が概念上の参照の定義に近い
0697デフォルトの名無しさん2016/06/16(木) 08:42:37.67ID:YJ4WCJk5
&i は参照
0698デフォルトの名無しさん2016/06/16(木) 08:55:34.26ID:dqT358IU
Cはすべて値渡しと覚えておくことで、書こうと思ったコードでメモリが実際にどういう風に使われるかシンプルに決まるから悩まなくて済むんだよ
このスレでもその辺理解できてなくて無茶苦茶書いてる奴いるし
0699デフォルトの名無しさん2016/06/16(木) 09:04:13.27ID:izAUOKKR
入り口で一旦実体をコピーしてそっちを操作、出口で書き戻すやり方はなんか嫌
かといって操作毎に * をタイプするのはかったるい
0700デフォルトの名無しさん2016/06/16(木) 09:32:39.15ID:Rn5Y9zAq
&iはiのアドレスの値渡しなんで覚えなくていいよ
&iは参照
0701デフォルトの名無しさん2016/06/16(木) 09:56:32.79ID:dqT358IU
>>700
そして、そのiがint *iとか宣言されてたりするんだ
0702デフォルトの名無しさん2016/06/16(木) 10:30:14.23ID:W4kfixme
>>698
初心者を混乱させる為にわざとやってるんでしょ
0703デフォルトの名無しさん2016/06/16(木) 11:08:26.53ID:Rn5Y9zAq
Cしたことあるの?
0704デフォルトの名無しさん2016/06/16(木) 11:53:46.67ID:vPpNXLWB
どどどど
0705デフォルトの名無しさん2016/06/16(木) 12:55:07.93ID:e7Ja7VI3
>>698
それはまた別の話
その辺理解せずに書いてるから混乱する
お前はわざとやってそうだが
0706デフォルトの名無しさん2016/06/16(木) 13:13:41.76ID:dqT358IU
>>705
参照の意味をうまく説明出来ないレベルの人は、
アドレス渡しや値渡しとかの言葉を使ったほうが間違え難くて良いと思いませんか?
0707デフォルトの名無しさん2016/06/16(木) 13:34:58.75ID:rvKKoz0Z
俺も初学者は「値渡し」と覚えるべきだと思うな。実際そういう原理なんだから。
そうでないと仮引数と実引数の違いや、ポインタのポインタで混乱するだろう。
0708デフォルトの名無しさん2016/06/16(木) 13:46:37.77ID:0I01+HHK
言語としては値渡ししかない
欠陥を補うためポインタ・アドレス渡しを援用する
0709デフォルトの名無しさん2016/06/16(木) 13:58:34.23ID:rvKKoz0Z
「参照渡し」を機械語レベルで実現する方法は「アドレス値渡し」しかないので、欠陥ではないよw
0710デフォルトの名無しさん2016/06/16(木) 13:59:19.93ID:EMLlAAao
だってアセンブラには(ry
0711デフォルトの名無しさん2016/06/16(木) 14:16:20.09ID:rvKKoz0Z
ちなJavaの例。俺はJavaよく知らんけど。
http://qiita.com/mdstoy/items/2ef4ada6f88341466783
0712デフォルトの名無しさん2016/06/16(木) 14:21:02.44ID:dqT358IU
>>709
いや、各データを配列のような場所に確保しておいて、そのインデックス番号を参照として渡してもいいだろう
その参照を渡される関数の方に、インデックス番号に対応するデータ領域へアクセスするコードが、展開されていればいいのだから
0713デフォルトの名無しさん2016/06/16(木) 14:34:54.17ID:mYoMtneI
んなややこしいコードになることあるの?アドレス渡すのが最もシンプルで最も速いでしょ
実行時にインデックスを展開するのになんのメリットがあるんだ
0714デフォルトの名無しさん2016/06/16(木) 15:24:25.42ID:918V0kLQ
実装は勝手にやればいいんじゃないの?
0715デフォルトの名無しさん2016/06/16(木) 15:40:28.15ID:rvKKoz0Z
>>712
間接的なアドレス値渡しだね。オブジェクトを生成する時に配列にアドレス値を登録する。
コーディングには生のアドレス値ではなくオブジェクトIDを使う。
GCのコンパクションで有効かもよ。なんか実例あるの?
0716デフォルトの名無しさん2016/06/16(木) 15:42:10.84ID:QwIHZKf5
参照とはポインタの事だろ
0717デフォルトの名無しさん2016/06/16(木) 16:05:45.39ID:vPpNXLWB
constなポインタということで一つ
0718デフォルトの名無しさん2016/06/16(木) 16:45:14.35ID:MwAW5wDd
ちげぇw
0719デフォルトの名無しさん2016/06/16(木) 16:56:16.91ID:dqT358IU
>>715
>>712は配列にアドレス入れる方式を書いたつもりじゃないんだけどな
でも配列にアドレス入れるのもいいね
初期のMacのメモリ管理はインデックスを渡すわけじゃないけどそんな感じの間接参照方式だった
0720デフォルトの名無しさん2016/06/16(木) 17:11:43.10ID:I3aMRqME
どんどんCからレベルが上がっていくな
Cなんて物理層に近いレベルなんだから複雑な実装するだけ無駄なのくらい分かるだろ
高レベル用にはC++やC#あるんだし棲み分けもできてる
0721デフォルトの名無しさん2016/06/16(木) 17:14:06.71ID:0N7R+m8L
javaからプログラムの世界に入る人が増えたから、
ポインタが分からないヤツが増えたみたいだな。
まぁ、その一世代前のヤツらは、C言語から入る人が
増えたから、レジスタがどうこうってのが分からいヤツが
増えたとさらに古い世代のヤツに言われたのだろうけどさ。
0722デフォルトの名無しさん2016/06/16(木) 17:35:17.45ID:fFpDCV37
その前はFORTRANやCOBOLだから余計レジスタなんかわからんわ
0723デフォルトの名無しさん2016/06/16(木) 18:14:18.20ID:2rqv/qQq
大した話じゃないから
必要になったら覚えりゃいい
0724デフォルトの名無しさん2016/06/16(木) 19:29:47.18ID:e7Ja7VI3
>>706-707
別に大丈夫だと思うけどな
VB みたいな言語で混乱したことないし
0725デフォルトの名無しさん2016/06/16(木) 19:33:02.86ID:3vx2NTVa
ふと by Ref な引数にリテラル詰んだらどうなるん?
C++ は一時オブジェクト作るんだっけか?
0726デフォルトの名無しさん2016/06/16(木) 19:39:18.80ID:3vx2NTVa
ごめんCの範囲超えてるから無しの方向で
0727デフォルトの名無しさん2016/06/16(木) 19:40:39.06ID:e7Ja7VI3
>>709
世の中にはアドレス空間がフラットでないプロセッサもあるのでそんなに単純ではないケースもある
例えば 8086 は near / far ポインタがあるのでセグメントセレクタとかを補ったりする必要がある
0728デフォルトの名無しさん2016/06/16(木) 19:54:30.45ID:e7Ja7VI3
>>725
VB(A) もコピーを作ってその参照を渡すみたい
VB(A) はサブルーチンの呼び出しを
Foo X
みたいに書くから他の言語のつもりで
Foo(X)
と書いて Foo で変更した X の値が変わりません
って言う人が定期的にでてくる
0729デフォルトの名無しさん2016/06/16(木) 20:33:24.16ID:Rn5Y9zAq
&iは参照
0730デフォルトの名無しさん2016/06/16(木) 20:49:38.27ID:G6Gqk7Uv
>>689
参照の間違った使い方は Java/C# 以来の伝統だ,気にするな C++ 流でいけばいい
0731デフォルトの名無しさん2016/06/16(木) 21:23:04.52ID:Mbmhj90t
参照の話題に飽きたので

Microsoft、C言語を拡張する「Checked C」を開発中
http://news.mynavi.jp/news/2016/06/16/218/
0732デフォルトの名無しさん2016/06/16(木) 21:37:29.43ID:dqT358IU
>>731
範囲チェックだけだったらわざわざMSの技術を使おうとは思わんなあ
0733デフォルトの名無しさん2016/06/16(木) 21:57:33.85ID:E32winSH
そんなものより桁溢れを検出できる仕組みをC言語に追加しろ
0734デフォルトの名無しさん2016/06/16(木) 22:05:50.33ID:QwIHZKf5
>>733
そんなもん必要だと思う理由を知りたい
0735デフォルトの名無しさん2016/06/16(木) 22:06:09.44ID:opCg9rRZ
>>731
MSはまた独自拡張でManaged C++やC++/CLIみたいな混乱を生み出すつもりなのか
0736デフォルトの名無しさん2016/06/16(木) 23:17:21.18ID:qQca/lXt
>>734
桁が溢れて困らない用途なんてかなり少ないと思うし
言語仕様で簡単に検出出来るようになる方がいいと思うが
0737デフォルトの名無しさん2016/06/16(木) 23:17:34.13ID:acyUZOOZ
llvmってなんですか
0738デフォルトの名無しさん2016/06/16(木) 23:28:40.01ID:ouXjOwRe
>>736
わざわざげんこ
0739デフォルトの名無しさん2016/06/16(木) 23:37:32.67ID:M9uu+ifa
確かに簡単といえば簡単。

add ax,bx
jo on_overflow

見たいな感じか。意義があると思うなら自分でやってみたらどうだろう。
たしか、PL/I にそんなのがあった気がする。
0740デフォルトの名無しさん2016/06/17(金) 01:23:33.57ID:VJGhAv1N
NilやOut Of Boundsチェックはハードでやれ
0741デフォルトの名無しさん2016/06/17(金) 01:24:42.66ID:VJGhAv1N
optoional型など愚の骨頂
0742デフォルトの名無しさん2016/06/17(金) 02:15:45.43ID:0NZ3gEEM
これはひどい
C言語から脱線しすぎだろ
0743デフォルトの名無しさん2016/06/17(金) 06:51:52.67ID:TQ7oR46s
>>736
桁が溢れるかもしれない
なんてプログラムを組む方が珍しいと思うが...
0744デフォルトの名無しさん2016/06/17(金) 08:01:39.21ID:5d/xTr9o
1ワード=64bit で大概困らない。
0745デフォルトの名無しさん2016/06/17(金) 13:59:28.10ID:9JKaIxjw
扱う文字列の上限くらいまで、数値も桁数扱えると良いよね?
0746デフォルトの名無しさん2016/06/17(金) 14:06:38.90ID:gSrbzA4F
big-int を標準でもっちゃうのはどうなんだろうね
07477392016/06/17(金) 14:22:54.01ID:RHkMxXLT
試しに gcc のインラインアセンブラでやってみたよ。

#define add_with_overflow_check( a,b) __asm__( \
"add %1,%0\n" \
"jno 1f\n" \
"call on_overflow\n" \
"1:\n" \
: "+r" (a) : "r" (b))

int g;

int foo( int x,int y)
{
add_with_overflow_check( g,y);
add_with_overflow_check( x,y);
return x;
}
0748デフォルトの名無しさん2016/06/18(土) 18:40:49.83ID:lEAjcf4T
>>709
C#とかではマーシャラがメモリ配置調整したり、別のアドレスを渡して結果をマネージ側に渡し直したりする可能性があるから、すべての言語が常にアドレスそのまま渡してるというわけではない
0749デフォルトの名無しさん2016/06/18(土) 18:45:00.56ID:CJN7kKTQ
>>748
そりゃランタイムの話だろ
0750デフォルトの名無しさん2016/06/18(土) 19:23:04.12ID:Yo6ekyLr
>>748
機械語レベルの意味分からないなら書き込まないほうがいいよ
0751デフォルトの名無しさん2016/06/18(土) 20:15:16.71ID:YZGqi88u
>>749-750
わかってないのはむしろお前らかと...
0752デフォルトの名無しさん2016/06/19(日) 00:13:37.25ID:uEp6PgcP
>>751
スレタイすら分かってない奴が何言ってるんだろう
0753デフォルトの名無しさん2016/06/19(日) 02:32:15.53ID:vEK8SCye
ランタイムだろうがなんだろうが実行時は機械語なわけだし、プラットフォーム呼び出しは十分Cに関連すると思うが
0754デフォルトの名無しさん2016/06/19(日) 13:09:16.89ID:MSpzJi0y
言語の概念の話なのにマシン語コードでそうだからとの意見に何の意味がるのかと。
半導体のレベルまで掘り下げるか?
0755デフォルトの名無しさん2016/06/19(日) 13:24:00.58ID:YBeRGNsM
C言語は値渡しですよで>>615で終わってる話
まだやるの
0756デフォルトの名無しさん2016/06/19(日) 13:48:25.50ID:Pvc+naRU
だから
概念の話 ⇒ >>754
なのか
実装の話 ⇒ >>755
なのかをごっちゃにして話すからいつまでも終わらないんだよ
0757デフォルトの名無しさん2016/06/19(日) 13:56:28.59ID:YBeRGNsM
>>756
終わらないのは実装を理解してないから。どちらも理解すれば終わる。
この問題は、実装を知らない人が疑問に思うんだよ。
0758デフォルトの名無しさん2016/06/19(日) 14:03:47.20ID:98VJv+wI
配列をそのまま(sizeof は領域の大きさをかえす)関数へ渡す手段って
構造体を経由するしかない?

※ ポインタと個数を引数にするのは別で
0759デフォルトの名無しさん2016/06/19(日) 14:30:05.53ID:Pvc+naRU
>>757
元々(>>614)は概念ぽい話なのに実装の話だけを書く奴(>>615)がしゃしゃりでてくるからおかしくなる
せめて >>617 辺りの説明しろって言うこと

あと >>615 はC言語としては正しいけど、>>709 のように機械語一般にまで範囲を広げると正しくない
って言う指摘をされてる ← 今ここ
0760デフォルトの名無しさん2016/06/19(日) 14:31:48.43ID:Pvc+naRU
>>758
グローバル変数
0761デフォルトの名無しさん2016/06/19(日) 14:42:48.24ID:ao4WLgfX
>>759
>元々(>>614)は概念ぽい話なのに
>実装の話だけを書く奴(>>615)
概念ぽい,とか実装より,とか関係ないのでは?
そもそも,その概念よりとか実装よりとか,どうして区別する必要があるの?
C にはポインタの値渡ししかない,それだけの話だ

と pascal で鍛えられた人間が言ってみる
0762デフォルトの名無しさん2016/06/19(日) 14:55:48.88ID:98VJv+wI
>>760
ノーマークじゃったw 確かに大きさも渡るね
0763デフォルトの名無しさん2016/06/19(日) 15:02:06.32ID:ao4WLgfX
>>762
実行時に渡っているわけじゃない.コンパイル時に判明しているから sizeof でその値をはめているだけ
0764デフォルトの名無しさん2016/06/19(日) 15:05:43.91ID:98VJv+wI
>>763
それは了解してるよー(実行時ではなくコンパイル時に確定し展開されてる)
0765デフォルトの名無しさん2016/06/19(日) 15:13:53.83ID:Pvc+naRU
>>761
せめて >>617 ぐらいは理解してからレスしてくれよ...
0766デフォルトの名無しさん2016/06/19(日) 15:17:28.03ID:Pvc+naRU
>>763
C言語 interpreter も知らないの?
07677632016/06/19(日) 15:27:19.51ID:ao4WLgfX
>>766
インタプリタでもコンパイラでもおんなじだよ
sizeof はあらかじめ分かっている定数をはめているだけだよ,引数に乗っているのは最初のアドレスだけだよね

>>765
おう,ごめんな,>>617 の昔はよく読んでなかったよ
でもね,「参照渡し」って言い方はきらいなんだ,Java の参照渡しか,C++/C# の参照か,一々聞かないといけないね,混乱している人が大概だからね
0768デフォルトの名無しさん2016/06/19(日) 15:33:25.17ID:YBeRGNsM
C言語においては「参照渡し」という表現は誤解を生むんだよね。
もう絶対使うなと言っても良いくらいだ。
0769デフォルトの名無しさん2016/06/19(日) 15:42:40.84ID:X+E3gNs8
>>760
配列長を省略したextern宣言しか見えないと、ダメじゃね?

と、隅をつついてみる。
0770デフォルトの名無しさん2016/06/19(日) 15:59:26.63ID:AYQ3uvUE
>>767
指摘されてるのは
> コンパイル時に判明しているから
の部分でしょ
>>709 もそうだけど自分の狭い知識で語られても困るってこと
0771デフォルトの名無しさん2016/06/19(日) 16:20:13.69ID:yIAex3DW
sizeofで配列長が取れる方法を聞かれてるのに
コンパイル時に判明してるからと書かれたところで
「だから何?」って話
0772デフォルトの名無しさん2016/06/19(日) 16:29:19.22ID:3qHPqn4y
配列長は素直に引数で渡せでFA
0773デフォルトの名無しさん2016/06/19(日) 16:44:47.48ID:ao4WLgfX
>>770
C/C++ をやるのには十分なんだが,>>763 >>767 のどういう点が「狭い」と感じられたのか,記述してほしい
0774デフォルトの名無しさん2016/06/19(日) 16:45:22.80ID:ao4WLgfX
>>771
sizeof で大きさが取れるのは,コンパイル時に判明しているからだよね
0775デフォルトの名無しさん2016/06/19(日) 16:59:24.80ID:Pvc+naRU
>>773
コンパイラしか想定してない
って理解できなかったの?
0776デフォルトの名無しさん2016/06/19(日) 17:03:05.96ID:3qHPqn4y
>>775
さっぱりわからんのだけど、例えばインタープリタを想定すると
話はどう変わるの?
0777デフォルトの名無しさん2016/06/19(日) 17:13:37.51ID:Pvc+naRU
>>776
Interpreter には「コンパイル時」何て言うものはないんだが w
0778デフォルトの名無しさん2016/06/19(日) 17:20:19.27ID:ao4WLgfX
>>775
コンパイラでもインタプリタでも,関数に引数として配列名を渡したからといって,配列の大きさまでは引数では渡らないのは一緒でしょう?
https://en.wikipedia.org/wiki/CINT むちゃなつかしい
0779デフォルトの名無しさん2016/06/19(日) 17:23:24.18ID:98VJv+wI
んで参照には、配列変数をタイプしたら、大きさまで渡って欲しいと思うの 以下ループ
0780デフォルトの名無しさん2016/06/19(日) 17:28:32.68ID:ao4WLgfX
え?何をいっているの?
0781デフォルトの名無しさん2016/06/19(日) 17:31:20.87ID:3qHPqn4y
>>777
凄くくだらない所にこだわってたんだね
まともなインタープリタで、実行前にコンパイルしないものなんて
お目に掛かった事無いけど
0782デフォルトの名無しさん2016/06/19(日) 17:37:11.68ID:Pvc+naRU
>>778
だからそんな指摘してないところのこと言われても困るってば
0783デフォルトの名無しさん2016/06/19(日) 17:38:42.70ID:Pvc+naRU
>>781
そう言うのを視野が狭いって言われてるんだけど...
0784デフォルトの名無しさん2016/06/19(日) 17:48:38.90ID:ao4WLgfX
>>782
単に「インタプリタが存在する」ことを,言いたかっただけなんだね‥でもインタプリタでもコンパイラでもこの話は一緒なんだよ‥
昔むかし,fj.source に CINT というインタプリタが投稿されたことがありまして,
そのときは CERN ではなくて別の所属だったんだが,おっと忘れてしまった,日本版 wikipedia に項目がないのは実にざんねんだ

>>781
コンパイルの必要なインタプリタですかね‥
0785デフォルトの名無しさん2016/06/19(日) 17:51:03.05ID:3qHPqn4y
>>783
視野が狭いのはそっちだろ
コンパイルという名前のプロセスが無いという
実害の無い点にいちいち躓いてるんだから
インタープリタだろうが、sizeof演算子の演算が
静的なものであるという点は何も変わらないだろ
0786デフォルトの名無しさん2016/06/19(日) 17:52:43.70ID:ao4WLgfX
>>785
おいおい,追い討ちは可哀想だ
0787デフォルトの名無しさん2016/06/19(日) 17:57:40.90ID:mhAMecRA
>>784-785
だから静的じゃない実装もあるって話なんだが...
0788デフォルトの名無しさん2016/06/19(日) 18:01:19.21ID:ao4WLgfX
>>787
インタプリタだったら静的ではなくなるのか?
ありえないね
あるというのなら実例を出せ
0789デフォルトの名無しさん2016/06/19(日) 18:08:16.26ID:3qHPqn4y
>>787
それはもはやCの処理系と呼べない
0790デフォルトの名無しさん2016/06/19(日) 18:27:15.82ID:YBeRGNsM
sizeofは、C99からは実行時解決らしいよ

void func(int n)
{
char x[n];
printf("%lu", sizeof(x));
}
0791デフォルトの名無しさん2016/06/19(日) 18:48:15.22ID:ao4WLgfX
>>790
たぶんそれはC11
0792デフォルトの名無しさん2016/06/19(日) 18:56:08.24ID:/rk5wqNm
>>791
VLAはC99からやで
0793デフォルトの名無しさん2016/06/19(日) 19:14:36.18ID:1KHjmJ1T
VLAはC11ではオプショナルに降格
0794デフォルトの名無しさん2016/06/19(日) 19:39:35.59ID:Pvc+naRU
>>788-789
規格でコンパイル時に決定しないといけないという訳じゃない
0795デフォルトの名無しさん2016/06/19(日) 21:06:32.11ID:HFF9oBK3
>>794
コンパイル時に決定できる値になるように規格でわざわざ規定してるのに、
コンパイル時に決定しない理由があるのか?
0796デフォルトの名無しさん2016/06/19(日) 21:15:29.93ID:Pvc+naRU
>>795
頭悪いの?
0797デフォルトの名無しさん2016/06/19(日) 21:22:36.70ID:HFF9oBK3
>>796
頭が悪いから、教えてくれ。
コンパイル時にsizeofの値をわざわざ決定しない理由ってなに?
0798デフォルトの名無しさん2016/06/19(日) 22:27:28.88ID:MSpzJi0y
常にしてないわけじゃないだろ?
0799デフォルトの名無しさん2016/06/19(日) 22:37:01.23ID:AK/S93IS
>>794
嘘つけ
規格で可変長配列でなければ(実行時)評価せず定数になるって書いてあるわ
0800デフォルトの名無しさん2016/06/20(月) 06:00:11.57ID:zgoYTeGr
C言語での演算子の評価は、実行時の式文のなかでの優先順位と結合規則のみで決まる
事前評価も事後評価もない
sizeof演算子も同じこと
インタプリタとかコンパイラとかの処理系の実装の話を持ち出すから話がややこしくなる
参照のときと同じで、概念と実装をごっちゃにしている奴が多すぎる
0801デフォルトの名無しさん2016/06/20(月) 06:23:18.39ID:zgoYTeGr
添え字演算子[]のオペレータに変数が利用できるかどうかについてはうろ覚えなので明言はしないけど
確かANSI C(C90だっけ?)だと定数しか使えなかったはず
最近はC++のように変数でも使用可能になっているかどうかは詳しい人に任せます
0802デフォルトの名無しさん2016/06/20(月) 06:23:46.69ID:jq4xH/GX
>>799
実行時評価しちゃダメと言うなら
どこに書いてあるのか教えてくれ
0803デフォルトの名無しさん2016/06/20(月) 06:24:27.87ID:zgoYTeGr
オペランド←オペレータ
0804デフォルトの名無しさん2016/06/20(月) 06:37:45.26ID:ZolMwWER
>>801
添字演算子に変数使えなかったらどうやって配列の要素にアクセスすんだよ…というのは多分宣言の事を言ってるんだろうから置いといて、
配列の宣言に変数を使えるのはC言語だけ。上に出てるけどVLAという機能でC++には無い
0805デフォルトの名無しさん2016/06/20(月) 06:50:05.35ID:uu/v+W1l
>>790
簡単にスタッコオバーフロウしそうなコードだな
0806デフォルトの名無しさん2016/06/20(月) 06:50:36.27ID:usQ28XEZ
>>800
宣言のなかで使われる[]は演算子ではないよ
まあ、言いたいことはわかるけど
さらに言うと配列の宣言時に変数が利用できてもそれは可変長配列とは言わない
実行時に(変数で)動的に配列長が変更できるものが可変長配列
C++でも言語仕様そのものとしては可変長配列は扱えない
vectorクラスなどの標準クラスライブラリを利用するか、C言語のようにmalloc/freeで
ポインタ経由で扱うしかない
0807デフォルトの名無しさん2016/06/20(月) 06:56:31.06ID:usQ28XEZ
ごめん、vectorよりarrayの方が相応しかったね、失礼
0808デフォルトの名無しさん2016/06/20(月) 08:20:54.33ID:Nxz2d29B
>>804
ほんと?
確かc++11から仕様になった気がするが…
もう出勤電車内だからすぐには調べられないけど。
0809デフォルトの名無しさん2016/06/20(月) 08:24:06.00ID:KuHDgHp4
>>802
§6.5.3.4
2.
The sizeof operator yields the size (in bytes) of its operand, which may be an
expression or the parenthesized name of a type. The size is determined from the type of
the operand. The result is an integer. If the type of the operand is a variable length array
type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an
integer constant.

evaluateが実行時だとは明言されてないけど
そうじゃないと評価してはいけないということになってしまうから実行時評価がダメってことだろ
整数定数になるとも書いてあるし
0810デフォルトの名無しさん2016/06/20(月) 08:32:02.75ID:ZolMwWER
>>808
なってません
0811デフォルトの名無しさん2016/06/20(月) 09:25:58.23ID:usQ28XEZ
VLAだけであればC++11どころかC++03でも使える
C言語ではC90では無理だけどC99であれば使える
ただどちらも宣言時のサイズ指定に変数が使えるだけであって、実行時のサイズの動的変更は出来ない
0812デフォルトの名無しさん2016/06/20(月) 09:39:36.17ID:ZolMwWER
>>811
なんでこれだけ標準ではないと言ってても調べもせずにそんな事いえるの?
0813デフォルトの名無しさん2016/06/20(月) 09:55:39.62ID:KuHDgHp4
少なくともc++11のドラフトでvariable length arrayで検索してみたところ該当0だな
c11ならいくつもでるけど
0814デフォルトの名無しさん2016/06/20(月) 10:08:53.26ID:usQ28XEZ
C99でのVLAの例、C++03でも構文は同じ
https://en.wikipedia.org/wiki/Variable-length_array
0815デフォルトの名無しさん2016/06/20(月) 10:11:34.42ID:ZolMwWER
話が通じないみたいだ
0816デフォルトの名無しさん2016/06/20(月) 10:11:44.95ID:yf+QHXB8
C++のほうは1zでようやくドラフト段階だったはず
0817デフォルトの名無しさん2016/06/20(月) 10:13:10.21ID:KuHDgHp4
>>814
えっ、どこにc++03でも同じって書いてあるんですかね
0818デフォルトの名無しさん2016/06/20(月) 10:19:18.65ID:usQ28XEZ
むしろC++03でwikiのサンプル例でエラーが出る処理系を教えてほしい
0819デフォルトの名無しさん2016/06/20(月) 10:32:36.98ID:ZolMwWER
>>818
MSVC
0820デフォルトの名無しさん2016/06/20(月) 10:45:25.73ID:usQ28XEZ
msvcはもともとVariable length arraysに完全対応していないことを明言してるなんちゃってC++/C処理系
https://msdn.microsoft.com/en-us/library/zb1574zs.aspx

>Variable length arrays are not currently supported in Visual C++.
0821デフォルトの名無しさん2016/06/20(月) 10:47:39.38ID:ZolMwWER
>>820
規格にねえつってんだろうが
日本語読めねえの?
0822デフォルトの名無しさん2016/06/20(月) 10:53:44.69ID:WkXFvEEF
C99で規格化されC11でオプショナルに降格だろ
つかmsvcが準拠してるのはC89?
0823デフォルトの名無しさん2016/06/20(月) 10:58:41.00ID:KuHDgHp4
>>820
個別のコンパイラの話してどうすんだよ
c++03っていうのはc++03の規格の意味であって
あらゆるc++03コンパイラを名乗る者の中で一番多い実装がc++03ではないの
そこら辺分かってない人わりといるよな
0824デフォルトの名無しさん2016/06/20(月) 10:58:55.23ID:ZolMwWER
>>822
今はC++の標準かどうかについて話してんの

g++やclang++でも -pedantic 付けると警告でる 厳格モードにするとなんちゃってC++処理系だとでもいうんだろうか?
まあスレ違いだし話通じないしもう黙るわ
0825デフォルトの名無しさん2016/06/20(月) 11:03:22.54ID:WkXFvEEF
ややこしいから「C++においては」を頭に付けてくれ
0826デフォルトの名無しさん2016/06/20(月) 14:12:18.68ID:p6+rLIxN
>>755
コンピュータのメモリ上のデータは全て値だから当然だろ。
0827デフォルトの名無しさん2016/06/20(月) 14:14:10.68ID:p6+rLIxN
>>797
手抜きだろ
0828デフォルトの名無しさん2016/06/20(月) 14:40:44.49ID:o/Q8QvES
>>827
実行時にどうやって決定するんだろうね
0829デフォルトの名無しさん2016/06/20(月) 15:47:38.33ID:y3bGvat/
ここってC言語スレであってる?
それともC++?
0830デフォルトの名無しさん2016/06/20(月) 15:48:50.28ID:7O0ObdXP
タイトル見る限りはC言語らしいけど
違う話題をしたがる人がいるみたい
0831デフォルトの名無しさん2016/06/20(月) 17:40:16.12ID:bEvQuIcU
あ
0832デフォルトの名無しさん2016/06/20(月) 19:31:58.70ID:qR6j9JAZ
++が両目で、Cが耳で、?が手で頭を掻いているところ
C++?
0833デフォルトの名無しさん2016/06/20(月) 20:37:31.93ID:FhfmjeRD
C は C + + の サ ブ セ ッ ト な の で !
0834デフォルトの名無しさん2016/06/20(月) 20:51:31.85ID:aMWLLxK3
糞ソースでも何とか追跡する気になるのがC、
追跡する気が全く起きないのがC++
0835デフォルトの名無しさん2016/06/21(火) 12:46:36.31ID:ScjYRl6x
1 (sizeof char)
2 (sizeof short)
4 (sizeof int)
8 (sizeof long)
8 (sizeof long long)
4 (sizeof float)
8 (sizeof double)
16 (sizeof long double)
8 (sizeof void *)
1 (sizeof int_least8_t)
2 (sizeof int_least16_t)
4 (sizeof int_least32_t)
8 (sizeof int_least64_t)
1 (sizeof int_fast8_t)
8 (sizeof int_fast16_t)
8 (sizeof int_fast32_t)
8 (sizeof int_fast64_t)

intが最速の型というのは迷信
int_fast8_tはchar=1byteの影響なのか最速ではない(他の3つを見る限り)

という解釈で合ってる?環境はlinux 64bit + clang 3.8.0
0836デフォルトの名無しさん2016/06/21(火) 13:44:31.02ID:1EIBrQuV
キャッシュのミスヒットのペナルティがデカいので
レジスタサイズに合わせたら必ず最速になるというものでもない
0837デフォルトの名無しさん2016/06/21(火) 14:35:10.28ID:ScjYRl6x
キャッシュの制御なんて言語仕様の範囲外なのでは?
0838デフォルトの名無しさん2016/06/21(火) 14:43:31.44ID:KqGcyocS
char同士の計算でもintにキャストされてた事あったなぁ。
0839デフォルトの名無しさん2016/06/21(火) 14:46:02.04ID:vVcY9+Oq
>>835
fast付きが最速だなんて誰が言った?

>>836
8ビットと64ビットでペナルティの違う環境とかいまどきあるのか?
0840デフォルトの名無しさん2016/06/21(火) 14:46:57.26ID:1Aiu31qu
>>835
その出力通りだとするとその環境の最速は8bitで次に速いのが64bitって事だと思うけど
0841デフォルトの名無しさん2016/06/21(火) 15:09:46.21ID:ScjYRl6x
>>839
C99の7.18を抜粋
- 少なくとも指定された幅をもつ最速整数型
(これらの型の幾つかは、同じ型を表してもよい)

実際ヘッダを見ると

typedef signed char int_fast8_t;
#if __WORDSIZE == 64
typedef long int int_fast16_t;
typedef long int int_fast32_t;
typedef long int int_fast64_t;
#else
typedef int int_fast16_t;
typedef int int_fast32_t;
__extension__
typedef long long int int_fast64_t;
#endif

となっていて既存の何らかの型を指していることがわかる
0842デフォルトの名無しさん2016/06/21(火) 15:46:57.65ID:vVcY9+Oq
>>841
脚注216読んだ?
0843デフォルトの名無しさん2016/06/21(火) 15:53:37.43ID:ScjYRl6x
>>842
least系とfast系で異なる型を選んでいるのだから根拠があるってことでしょ
0844デフォルトの名無しさん2016/06/21(火) 16:00:23.13ID:vVcY9+Oq
>>843
コンパイラ設計者の勘も根拠に入れるならね
0845デフォルトの名無しさん2016/06/21(火) 22:38:36.75ID:qCRCAI2Y
>>838
されてたことあった
というか
それがC言語の規格じゃねーの?
0846デフォルトの名無しさん2016/06/22(水) 09:57:39.86ID:es+zuR1i
基本的に整数拡張する。
0847デフォルトの名無しさん2016/06/22(水) 10:12:20.28ID:t1NluOvj
最速ったって別に一つとは限らないからな

>>839
> 8ビットと64ビットでペナルティの違う環境とかいまどきあるのか?

でっかい配列にアクセスするときなんかじゃ違うだろ
0848デフォルトの名無しさん2016/06/22(水) 11:10:19.06ID:WHe3DbmR
>>847
えー、配列まで考えたらleastが最速じゃん
0849デフォルトの名無しさん2016/06/22(水) 11:16:47.14ID:53iVaND1
外部シンボルが未解決
ってエラーが解決できなくて詰まってる…
0850デフォルトの名無しさん2016/06/22(水) 11:26:35.37ID:t1NluOvj
>>848
「ペナルティ」って限定しているんだから、フツー考えるのは配列なんかじゃないのか
キャッシュ関係以外であまりペナルティって言葉使わないだろ
0851デフォルトの名無しさん2016/06/22(水) 11:28:39.08ID:t1NluOvj
>>849
エスパーしてみよう

C++, C 混在か?
0852デフォルトの名無しさん2016/06/22(水) 11:35:33.25ID:cxBIgtwn
int *pt = &na
scanf(%d", pt);

scanf(%d", *pt);
上の書き方が正しいんだけど、下の「*」が付かないのはなんで?
0853デフォルトの名無しさん2016/06/22(水) 11:53:52.19ID:WHe3DbmR
>>852
scanfが格納する先をアドレス(ポインタ)で教えてやる必要があるから
0854デフォルトの名無しさん2016/06/22(水) 11:56:23.49ID:tA6VaAaS
>>852
・「na」と表記すれば「naの内容」、「&na」と表記すれば「naの場所」になる
・int *pt = &na;でptには「naの場所」が記憶される
・scanf()のパラメータ%dは、指定された「場所」に入力された数字を数値化して書き込む
・「pt」と表記すれば「ptの内容」、「&pt」と表記すれば「ptの場所」になる
・つまりscanf()に渡すべきなのは「naの場所」すなわち「ptの内容」にすべき
・scanf()呼び出しで「pt」の代わりに直接「&na」と書いてもよい

本題
・「*pt」と書くとアドレス解決をした結果、すなわち「naの内容」がscanf()に「場所」として渡ってしまうため、意図しない場所のメモリが書き換えられて誤動作する
0855デフォルトの名無しさん2016/06/22(水) 12:02:22.96ID:NlKUB6fm
ポインタ変数の定義に*を使うからややこしくなる。
0856デフォルトの名無しさん2016/06/22(水) 12:49:45.24ID:WHe3DbmR
>>855
*ptがintだと宣言しているのだから一貫している
0857デフォルトの名無しさん2016/06/22(水) 13:04:29.49ID:sEqYA8cS
>>849
初心者が必ずハマるのが
・使っているライブラリを指定し忘れてるか名前・場所指定が間違ってるか
・新しく作ったソースをプロジェクトに入れてないか

よくあるのが
・「環境変数や設定を書き換えろ」の説明書きを見落とし/無視してる
0858デフォルトの名無しさん2016/06/22(水) 13:30:22.89ID:PuXIjiSn
>>852
int *pt = &na;
は
int *pt;
pt = &na;

宣言のときの*はこれはポインタ変数ですよ、の*
式中で使うときは、その変数の名前で使う。
式中で*がついているときは、参照先の中身。

>>855 言ってるとおり、*に二重の意味があるので初学者は混乱する。
0859デフォルトの名無しさん2016/06/22(水) 13:42:38.14ID:pxlM+xuZ
本来の乗算の意味も含めて3重だな
cの発案者がどれだけエラい学者さんだろうが
これは愚かな決め事だったとしか言いようがない
@とか<-とかintptr_tとかあったはず
0860デフォルトの名無しさん2016/06/22(水) 13:56:30.99ID:3jrXtnQ0
トライグラフ用意するぐらいだし、記号は少なくしたかったんだろう
0861デフォルトの名無しさん2016/06/22(水) 14:35:19.45ID:tA6VaAaS
何か当初は、凄く貧弱な入力端末のサポートも考慮してたらしいからな
代替トークンとかあったし
ほとんどの奴は<% %>が{ }の代用になるとか覚えてないだろ
0862デフォルトの名無しさん2016/06/22(水) 14:39:44.36ID:U6GwwKeZ
小文字が扱えない端末だと無理
0863デフォルトの名無しさん2016/06/22(水) 15:00:20.34ID:DRbO5VgT
>>855
そういうことか
ポインタの何がわかりにくいのかさっぱりわからなかったんだ
0864デフォルトの名無しさん2016/06/22(水) 15:08:48.10ID:tA6VaAaS
(*********printf)("変態コード¥n");
最初見た時何の冗談かと思ったが
0865デフォルトの名無しさん2016/06/22(水) 18:51:46.90ID:7XAOBQ6z
>>861
> ほとんどの奴は<% %>が{ }の代用になるとか覚えてないだろ
てか、知らんかった
トライグラフは文字列まで変えてくれるから一度はまって ファ? ってなったわ w
0866デフォルトの名無しさん2016/06/22(水) 19:49:06.66ID:S4ISOPGK
そうそう、よく文字列で ?? と二つ書いて不具合?になる
0867デフォルトの名無しさん2016/06/22(水) 20:29:25.46ID:pxlM+xuZ
そんな古代との互換性なんてセキュア関数と同様に規格更新でさっさと切り捨てればいいのに
古代人のための開発環境は既に腐るほどあるわけで最新の規格で扱わなくても保守で困ることはあり得ない
そして過去の環境用に"これから新規開発する少数の変人"のために遺物を残しておくのは不利益の方が多い
0868デフォルトの名無しさん2016/06/22(水) 20:50:12.11ID:dtkzZf/t
むしろ誰も困ってないから放置されてるんだろう。
GCCもVCもデフォルトではトライグラフ無効だし。

ちなみにC++はC++17で削除予定。Cの規格は追っかけてないけど追従すると思うよ。
0869デフォルトの名無しさん2016/06/22(水) 21:21:35.14ID:pxlM+xuZ
昔話繋がりでもう一つ
符号修飾(signed unsigned)しない場合のデフォルトを符号有りにした理由は何なのだろう
そもそも正の値より負の値を扱う計算のほうが一般的に珍しくね?と思った
例えば10-5と10+(-5)は同じ結果を得るけど後者は加算器のみで可能とかそういう話かな
0870デフォルトの名無しさん2016/06/22(水) 21:44:18.74ID:X+fwM1CQ
大小を比較しやすい
unsigned int は、intと比較できない
for()で警告が出る
0871デフォルトの名無しさん2016/06/22(水) 21:45:12.70ID:X+fwM1CQ
ifとかforとかwhileとか
0872デフォルトの名無しさん2016/06/22(水) 22:09:22.60ID:sEqYA8cS
上限を追いたいなら大きい型を選べばいいわけで
0873デフォルトの名無しさん2016/06/22(水) 22:29:03.25ID:pxlM+xuZ
>>870-871
「デフォルトをunsignedと決めた場合」にもそれらの問題は起きるの?
同じタイミングで決めることなんだからunsigned同士なら警告いらないでしょ

>>872
ポインタも配列の要素数も負の値を取らないのにintをsignedにしちゃったもんだから
何も考えずに使う人が多くてsize_tとか作らなきゃいけなくなったんじゃないかと思ってさ
0874デフォルトの名無しさん2016/06/22(水) 22:46:24.05ID:hUvfpcAH
数学的に普通に考えたらsignedにしそうなもんだが。
0875デフォルトの名無しさん2016/06/22(水) 22:54:28.38ID:cYYCz91d
昔は符号の1bitさえ貴重だったからsignedとunsignedが出来ちゃったけど
整数型なんて本来signedだけでいいはずだしな
0876デフォルトの名無しさん2016/06/22(水) 23:12:26.36ID:pGQ5Vs/R
変数使って自由に計算したいと思えば
デフォルトで符号有りが妥当な考えだと思うけどな
0877デフォルトの名無しさん2016/06/22(水) 23:50:20.87ID:Qv152JkA
加算器で減算できる理に適った実装だと思うよ
加算の計算コストが一番安いから
0878デフォルトの名無しさん2016/06/23(木) 00:03:27.53ID:bf4RaDco
貧乏プログラミングをしたいがどんな環境を用意すればいいか分からん
0879デフォルトの名無しさん2016/06/23(木) 00:09:27.13ID:zQLdlEzo
>>878
MS-DOSが動くPC-9801と、MS-DOSで動作するCコンパイラを買え。
毎日の食事は卵かけご飯で決まり。
0880デフォルトの名無しさん2016/06/23(木) 00:19:41.35ID:tS35hTSk
>>878
ラズパイで
0881デフォルトの名無しさん2016/06/23(木) 00:19:54.21ID:Izcr7CYq
それ、今時だと VM で動かしそうだけど。
てか手元にあるな。Anex86 とか。w
0882デフォルトの名無しさん2016/06/23(木) 00:29:16.33ID:zQLdlEzo
MS-DOSは核ミサイルの発射にも使われているOSだから、よく研究すればアメリカ軍に雇ってもらえるかも試練
0883デフォルトの名無しさん2016/06/23(木) 00:40:21.23ID:zQLdlEzo
>>881
実機持ってるなら貧乏ちゃう
0884デフォルトの名無しさん2016/06/23(木) 00:41:19.32ID:zQLdlEzo
貧乏ならポケコンで我慢しいや
0885デフォルトの名無しさん2016/06/23(木) 00:57:51.20ID:QS3nj898
OSASKという狂ったOSをVMで動かして楽しむのが貧乏プログラミングのオススメ
0886デフォルトの名無しさん2016/06/23(木) 01:23:16.88ID:EI7DtIWp
>>878
Digital Mars C/C++ Compiler Version 8.57 (3662658 bytes) (NEW!)
Contains:

Win32 console versions of the tools
C and C++ compilers
http://www.digitalmars.com/download/freecompiler.html

バージョンは、8.52, 8.53, 8.57
どれがいいのかわからん
0887デフォルトの名無しさん2016/06/23(木) 01:25:51.66ID:EI7DtIWp
The open source, cross platform, free C, C++ and Fortran IDE.

Code::Blocks 16.01 is here!
Written by MortenMacFly
Thursday, 28 January 2016 10:21

Code::Blocks
http://www.codeblocks.org/
0888デフォルトの名無しさん2016/06/23(木) 05:57:26.88ID:woen2Xgd
>>878 の言う貧乏プログラミングが設備にかけるお金の話なら、
ジャンクノート買ってLinuxでも入れるのが安上がりかな。
仮想マシンを使えるなら追加投資なしでいけるのかもしれん。

富豪的プログラミングの反対の意味で貧乏ってことなら
MS-DOSが動く環境を用意してLSI-Cの試食版じゃないかな。
0889デフォルトの名無しさん2016/06/23(木) 09:15:39.13ID:B9t9g5hk
富豪的プログラミングの対義語だとすると、実行時の使用リソースの無駄を気にしないコーディングのことだが
0890デフォルトの名無しさん2016/06/23(木) 09:17:21.14ID:ja5rLTYk
はい?
0891デフォルトの名無しさん2016/06/23(木) 09:51:16.87ID:B9t9g5hk
逆だった
0892デフォルトの名無しさん2016/06/23(木) 10:24:23.38ID:ZQfpp6dv
>>886
10年以上前に終わってるツール勧めるな
0893デフォルトの名無しさん2016/06/23(木) 10:26:49.93ID:ZQfpp6dv
>>888
そりゃベジタリアンの間違いだろ
0894デフォルトの名無しさん2016/06/23(木) 12:50:41.20ID:woen2Xgd
「富豪的プログラミング」を誤解していたようだ。
単にメモリやらCPU速度をふんだんに使うこと、じゃないのね。
元々はユーザインターフェースに関する提言だったのか。

わざと利用可能な容量を制限する環境を作って省メモリを強要しても、
富豪的プログラミングの反対としての貧乏プログラミングにはならないな。

貧乏くさい(非力な)環境ということに訂正させてくれ。
よりリソースの制限を厳しくするならPICボードとかになるのかも知れんが。
0895デフォルトの名無しさん2016/06/23(木) 13:39:52.13ID:h9AvRner
手にはいるか分からんが、ワンダースワンの作成キットのワンダーウィッチがいい具合に貧弱
0896デフォルトの名無しさん2016/06/23(木) 15:32:50.69ID:tLxppfzL
>>884
最近のポケコンはCコンパイラ動くのか?
0897デフォルトの名無しさん2016/06/23(木) 16:31:51.23ID:woen2Xgd
シャープの学習用ポケコンにはCの動く機種があったけど、
現行機種ではないかも。あとインタープリタ方式だったかも知れぬ。
0898デフォルトの名無しさん2016/06/23(木) 17:07:27.02ID:bDeXs6rp
別に貧弱ハード揃えなくたって貧民プログラミングはできるだろう
ビットフィールド駆使したメモリマネージャ書いて数KBのメモリで全てやりくりするとか
考え方の問題だから
0899デフォルトの名無しさん2016/06/23(木) 19:00:04.78ID:GLhtmsq7
>>895
あー、買ったけど開封してないや。

x86 の tinymodelで作ればいいんじゃないかな?
0900デフォルトの名無しさん2016/06/23(木) 22:40:16.82ID:xBkC1ONT
富豪的プログラミングの対義語ならやっぱり「貧乏性プログラミング」かなぁ。
節約のためにはどんなに手間がかかってもいいみたいな。
0901デフォルトの名無しさん2016/06/24(金) 06:18:53.90ID:N/UhjoM3
>>884
ポケコンなんて高い物、貧乏人は買えない。
0902デフォルトの名無しさん2016/06/24(金) 07:04:47.89ID:fBO9F9sD
>>884
ポケコンなめんな
PC-1501 フルセット揃えたら 10万越えたし
0903デフォルトの名無しさん2016/06/24(金) 09:42:10.08ID:B5CtlbEH
おじいちゃん、その話昨日も聞いたよ
0904デフォルトの名無しさん2016/06/24(金) 10:02:57.16ID:k6zNHW44
時間課金制スパコンでプログラミング!
0905デフォルトの名無しさん2016/06/24(金) 12:41:58.93ID:5w3PkobH
昨日はそんな話してないのに
とうとう >>903 もボケはじめたのか...
0906デフォルトの名無しさん2016/06/24(金) 21:12:35.00ID:FIkQEcYv
PB-100こそ名機
0907デフォルトの名無しさん2016/06/24(金) 21:25:18.93ID:pDNM0BDJ
逆ポーランド入力な関数電卓があったっけかなぁ
0908デフォルトの名無しさん2016/06/24(金) 22:11:47.68ID:5w3PkobH
>>907
HP-35 かな
http://www.dentaku-museum.com/calc/calc/51-hp/hp/hp.html
0909デフォルトの名無しさん2016/06/24(金) 22:28:22.83ID:pDNM0BDJ
>>908
少なくとも表示装置は液晶だったから
そこまで古くはないけど メーカーはHPだわw
0910デフォルトの名無しさん2016/06/24(金) 23:01:32.62ID:maODpz5k
>>909
逆ポーランドの関数電卓って時点でhpしか頭に浮かばねぇ
0911デフォルトの名無しさん2016/06/25(土) 06:04:47.44ID:kSDNwhEx
アナウンサー「ああっと、掟破りの逆ポリッシュノーテーションが炸裂だ!!」
…C言語からえらく離れてしまったな。

結局 >>878 の言う「貧乏プログラミング」の環境についての質問は
解決したのだろうか?
0912デフォルトの名無しさん2016/06/25(土) 07:12:29.02ID:T6w8sXCU
開発環境を揃えるための金額がビンボー
実行環境がビンボー

前者なら中古のノーパソにLinuxでも入れとけ
後者ならチューリングマシンでも用意しろ
0913デフォルトの名無しさん2016/06/25(土) 07:38:50.70ID:e7YY+pe4
いやチューリングマシンじゃねぇか
0914デフォルトの名無しさん2016/06/25(土) 12:22:41.29ID:/ILuWvEE
100均あたりでペンとメモ用紙買ってきてハンドアセンブルしてればいいよ
0915デフォルトの名無しさん2016/06/25(土) 12:32:01.18ID:EXxqgeVQ
高校時代授業中ノートにアセンブラソース書いてたわ。
0916デフォルトの名無しさん2016/06/25(土) 15:23:17.36ID:kSDNwhEx
俺も似たようなことやってたけど、せめてCの話にしないか。
0917デフォルトの名無しさん2016/06/25(土) 16:18:02.52ID:/ILuWvEE
#define SIZE (100)
int bar(const size_t size) {
...
}
int foo(void) {
bar(SIZE);
}

こういうコード見かけたんだけど一般的なのかしら
0918片山博文MZ ◆T6xkBnTXz7B0 2016/06/25(土) 16:22:19.60ID:IGrWHBep
>>917
int bar(const size_t size)

constは要らないな
int bar(size_t size)
0919デフォルトの名無しさん2016/06/25(土) 16:23:00.67ID:XRYsMsxX
一般的かはしらんけどありえるんじゃない?
bar は可変で設計
foo で利用する際に大きさが決まっている (が bazで利用するときは異なる大きさかもしれない)
0920デフォルトの名無しさん2016/06/25(土) 17:38:07.79ID:kSDNwhEx
>>917
引数sizeをconstで宣言してるのは、
関数bar内ではsizeの値を決して変更しないという意図を表明してるわけで、
かなり用心深い書き方、なのかな。

他人(未来の自分も含む)に読んでもらうソースでは親切と言えるかも。
0921デフォルトの名無しさん2016/06/26(日) 01:04:02.63ID:0MBh4AdF
c言語って未定義動作が多いけど、
変なところで親切機能あるよね。
使うのめんどいけど。
0922デフォルトの名無しさん2016/06/26(日) 01:22:16.20ID:Tc6QhS1L
>>917
どこぞのコーディング規約でそういうのがあったような。。
「変更しないパラメータ変数には const つけろ」って。
0923デフォルトの名無しさん2016/06/26(日) 01:40:24.84ID:bJEUyoju
>>922
関数呼び出す側からすると意図がわからずで(どっちにしろ効果ないんだし)
関数を実装する側の立場の思考なんやね
0924デフォルトの名無しさん2016/06/26(日) 01:59:07.61ID:xVzQNhHD
>>923
コンパイラ「おっ変えてやがる警告だしとこ」
0925デフォルトの名無しさん2016/06/26(日) 02:19:49.93ID:IqnUBT+v
>>923
ヘッダに書かれる時の宣言時はconstなしで実装するときはconstありで書ける
//a.h
void f(int a);
//a.c
void f(const int a){
}
って感じで
0926デフォルトの名無しさん2016/06/26(日) 02:33:48.29ID:bJEUyoju
>>925
a.c で a.h include すると文句いわれないっけ?
って通るのか。 これはしらんかった
http://ideone.com/mFWvS8
0927デフォルトの名無しさん2016/06/26(日) 02:38:26.78ID:IqnUBT+v
>>926
規格でも保証されてるはず。
Cより型に厳しいC++でもちゃんと通るコードだよ
0928デフォルトの名無しさん2016/06/26(日) 02:52:20.82ID:VEieeoHd
>>927
レア情報ゲットだぜ、さんきゅ
0929デフォルトの名無しさん2016/06/26(日) 02:53:19.19ID:TQjwgA3H
誰がconstか述べよ
const char***
char ***
char const***
char *const**
char const*const**
char **const*
char const**const*
char *const*const*
char const*const*const*
0930デフォルトの名無しさん2016/06/26(日) 03:28:44.38ID:IqnUBT+v
>>928
そんな何気ない言葉でも嬉しいもんだぜ
こちらこそ さんきゅ

>>929
もぅマヂ無理。そんなこぉどみっけたらリファクタリングしょ…
0931デフォルトの名無しさん2016/06/26(日) 07:02:55.20ID:YvCX8H4W
>>927
値が渡されるだけだからな。
const つけたら、関数内で値変えられないだけ。
0932デフォルトの名無しさん2016/06/26(日) 09:56:23.93ID:M7uis8D6
感覚としては、関数の引数のconstはプロトタイプ宣言の方が重要かなあ
値を変えないことをcallerに明示することで安心して使えるようになるのが大きい
あとコンパイラの最適化の足しになったかも
0933デフォルトの名無しさん2016/06/26(日) 10:03:50.14ID:u47rMBKf
>>932
そういう話じゃないから
0934デフォルトの名無しさん2016/06/26(日) 10:33:08.61ID:hBvFQk6r
>>932
知ったかのアホかよ w
const なんてあってもなくても caller 側の値は変わらんぞ
0935デフォルトの名無しさん2016/06/26(日) 10:36:14.41ID:9oHVgWHL
プロトタイプで書くと入力と出力わかりやすくなるとかそういうことでは?
0936デフォルトの名無しさん2016/06/26(日) 11:10:03.83ID:hP2dj58L
ポインタ引数につけるconstと勘違いしてるのではないかな。
0937デフォルトの名無しさん2016/06/26(日) 11:42:52.24ID:M7uis8D6
ああ、ポインタの場合はエラーになるのか
>>925 を勘違いしてた
0938デフォルトの名無しさん2016/06/26(日) 17:57:46.49ID:qL6o93b4
できるからと変態コードを書かないでくれよ。
0939デフォルトの名無しさん2016/06/26(日) 23:12:31.00ID:BEfwMto/
>>929
全部
0940デフォルトの名無しさん2016/06/27(月) 05:37:02.71ID:+UTSdzaC
質問です。
pthreadで各スレッドにタイムアウトを設けたいです。
できますか?
0941デフォルトの名無しさん2016/06/27(月) 09:24:17.37ID:k6+YPkiS
>>929
まだあるぞ
char const*const*const*const a;
0942デフォルトの名無しさん2016/06/27(月) 09:51:55.14ID:E1I14SZR
>>940
タイムアウトできるようにスレッド関数の内部を実装すれば、できます
0943デフォルトの名無しさん2016/06/27(月) 11:02:53.96ID:4WbwOowj
>>942
後付けで申し訳ありませんがタイムアウトは各スレッド内でのalarmのようなものがほしいです。
しかし複数のスレッドが呼び出した場合混乱することを懸念しています。
つまりalarmの代替が必要なのですが上手い方法はありませんか?
0944デフォルトの名無しさん2016/06/27(月) 12:52:35.49ID:MU976MxC
>>943
alarmのようながシグナルみたいに強制的に外から割り込むイメージだとすると
pthreadと合わない。基本的には自らタイムアウトするように作り込む必要がある
例えばreadで長時間ブロックすることを防ぎたいなら直前にseletやpollをして
タイムアウト時間経過の前にデータが来たか判定する
0945デフォルトの名無しさん2016/06/27(月) 20:47:01.77ID:E1I14SZR
>>943
1つの実装方法として、タイマー割込み発生用のサーバスレッドを自作し、
そのスレッドから、各スレッドのシグナル処理関数(シグナルハンドラ)をCALLする、
という方法があります。スレッドを区別するため、スレッドユニークな何らかの値
(スレッド固有のデータ領域を示すポインタなど)を引数として追加しておくといいでしょう。

簡単に言えば、シグナル処理をOSではなく、自作のスレッドにやらせる、ということですね。

ただし、排他処理には十分に注意する必要があるなど、かなり複雑な実装となりますので、
スレッドのタイムアウト処理のシンプルな実装方法としては、>>944 の方法が
推奨されると思われます。

C言語の話からは微妙に外れますので、マルチスレッドプログラミング相談室スレの方が、
いろいろな意見がもらえるかも?
0946デフォルトの名無しさん2016/06/28(火) 21:14:00.03ID:nWotbSXo
>>944
>>945
ご回答ありがとうございます。
とりあえずpthread環境での現状把握はできました。
都合によりアプリケーションの説明はできないのですが、
経験の浅い私はいつくかの手法を試行錯誤していく必要があることもわかり感謝しております。
0947デフォルトの名無しさん2016/07/02(土) 18:05:27.49ID:jfeNwyow
全角カンマ(,)が文字列中に入ってるかどうかを確認するプログラムがどうしてもかけません。
文字コードはutf-8です。どう書けば良いですか?
0948デフォルトの名無しさん2016/07/02(土) 18:22:53.79ID:9Q8EwEkW
strstrじゃアカンか?
0949デフォルトの名無しさん2016/07/02(土) 18:49:17.03ID:O/VWdu0D
#include <stdio.h>
#include <wchar.h>
int main(void)
{
wchar_t *str = L"こんにちは,世界!";
if (wcschr(str, L',')) puts("True");
else puts("False");
return 0;
}
0950デフォルトの名無しさん2016/07/02(土) 18:55:20.32ID:RKIHWAuM
>>949
それ、utf-8じゃないよね?
0951片山博文MZ ◆T6xkBnTXz7B0 2016/07/02(土) 18:59:51.90ID:e6MV0/B3
//save as UTF-8
#include <stdio.h>
#include <string.h>
int main(void)
{
char *str = L"こんにちは,世界!";
if (strstr(str, L",")) puts("True");
else puts("False");
return 0;
}
0952片山博文MZ ◆T6xkBnTXz7B0 2016/07/02(土) 19:05:08.76ID:e6MV0/B3
>>951間違えた。訂正。
//save as UTF-8
#include <stdio.h>
#include <string.h>
int main(void)
{
const char *str = "こんにちは,世界!";
if (strstr(str, ",")) puts("True");
else puts("False");
return 0;
}
0953デフォルトの名無しさん2016/07/02(土) 19:13:21.68ID:N0+QBUWP
prefixは u8 でしょ
0954片山博文MZ ◆T6xkBnTXz7B0 2016/07/02(土) 19:27:22.89ID:e6MV0/B3
>>953
#include <stdio.h>
#include <string.h>
int main(void)
{
const char *str = u8"こんにちは,世界!";
if (strstr(str, u8",")) puts("True");
else puts("False");
return 0;
}
これでいいのかい?
古いコンパイラでは動かないかも
0955デフォルトの名無しさん2016/07/02(土) 19:29:48.84ID:jfeNwyow
#include<stdio.h>

int main(){
char str[] =
0956デフォルトの名無しさん2016/07/02(土) 19:44:51.68ID:RGWnw+KA
カンマのUTF-8バイト並びを見つけるようにするというのでどうか。
const char *str = "こんにちは,世界!";
int len=strlen(str);
for(int i=0;i<len-3;i++){
if(str[i]==(char)0xEF && str[i+1]==(char)0xBC && str[i+2]==(char)0x8C)
return 1;
}
return 0;
0957デフォルトの名無しさん2016/07/02(土) 19:46:13.26ID:RGWnw+KA
あ、ごめん、半角カンマと間違えた。
0958デフォルトの名無しさん2016/07/02(土) 19:56:55.39ID:RKIHWAuM
勘違いと告られた後の追撃で申し訳ないが…

そもそも、半角カンマならutf-8でもアスキーコードと同じだろに、と思ってしまったよ。
0959デフォルトの名無しさん2016/07/04(月) 12:40:15.84ID:pDU/S/zK
半角という表現はそろそろやめないか
0960デフォルトの名無しさん2016/07/04(月) 14:53:28.85ID:ZmexPAEv
全幅、半幅とでもするか?
0961デフォルトの名無しさん2016/07/04(月) 22:13:59.31ID:JCby0dsF
Unicodeだと Fullwidth Halfwidth Wide Narrow だな。って、なんで4種類もあるんだよ。
0962デフォルトの名無しさん2016/07/04(月) 23:16:47.91ID:C8fBMBnD
>>959
半角の何が悪い?
0963デフォルトの名無しさん2016/07/05(火) 00:09:43.46ID:geXOR7z6
>>961
欧米言語しか頭にない連中が2byteに収めようと決めたけど即破綻して
右往左往しつつたくさん符号化形式作っちゃった継ぎ接ぎ規格だから
初期のunicodeを実装したcのwcharもjavaのcharもwindowsの内部形式も
utf-8に統一されつつある現在ではみんな負の遺産になっちゃった
0964デフォルトの名無しさん2016/07/05(火) 00:18:02.71ID:UYP3Y0BV
さすがに、文字幅の話とエンコーディングの話をごっちゃにするのは頭悪すぎるわ。
0965デフォルトの名無しさん2016/07/05(火) 02:24:22.63ID:3TGl+uoW
日本電気の2バイト半角はどうする?
0966デフォルトの名無しさん2016/07/05(火) 03:31:02.93ID:vmUQz3+O
全角、半角の何が問題って定義が曖昧なのが問題

一応はJIS B 0191で決まってるらしいが高さと幅がほぼ1:1の文字の大きさが全角、
全角の半分が半角とかだから同じ文字コードでも固定幅フォントだと全角だけど
プロポーショナルフォントだとほぼ1:1と言えなくもないような、でもやっぱり
やや扁平してるから全角じゃないみたいなことになる

もちろんそれ以外の意味で全角、半角を使う人もいるから滅茶苦茶になって
意思疎通を難しくするだけ
0967デフォルトの名無しさん2016/07/05(火) 08:58:48.61ID:xw5v0Ltl
JISX0208の…が通じない人に仕方なく、全角の…と言うことはある
意思疏通のため仕方なく
0968デフォルトの名無しさん2016/07/05(火) 21:32:47.87ID:U9C+97cD
相手に伝わるなら何でもいいじゃん。
0969デフォルトの名無しさん2016/07/05(火) 22:25:19.31ID:7XO+QUH+
一太郎で倍角とか四倍角とか使ってたな・・・
0970デフォルトの名無しさん2016/07/05(火) 22:33:27.38ID:Jc9WRZcr
半角と言う用語に異様に反応する奴がいるよね。
0971デフォルトの名無しさん2016/07/05(火) 22:58:18.11ID:V/e0kDMU
JISコードの半角文字
0972デフォルトの名無しさん2016/07/05(火) 23:45:44.63ID:GMrEG8FV
typeid(T).name()

が返す文字列がコンパイラによって全然違うので愕然としました。
移植のため大幅な書き換えが必要になってしまったのです・・・。

C言語の仕様として、実装依存のようですが、なぜ具体的な返り値まで規定しなかったのでしょうか?
何か不都合でもあるんでしょうか?
0973デフォルトの名無しさん2016/07/05(火) 23:58:21.73ID:/0fmAgwR
C言語の仕様に無いものが実装依存なのは仕方がない
0974デフォルトの名無しさん2016/07/06(水) 00:00:40.80ID:3xqNkW2k
>>972

それC++だよね、というのはさておき

実行時に型の文字列が必要ってどんなことやってるんだろう
型周りはあんまり扱ったことないので非常に興味がある

単なる型比較ならコンパイル時にできるはずだし
0975デフォルトの名無しさん2016/07/06(水) 08:54:47.18ID:mZVlgRq0
シリアライズするのにバイナリのイメージだけじゃなく
型情報を name() から生成して保存してるのかねー
0976デフォルトの名無しさん2016/07/06(水) 19:21:53.14ID:73ByLRkJ
デシリアライズは型名見て分岐ってことになるし、それならシリアライズも同じでいいだろうし。
0977デフォルトの名無しさん2016/07/06(水) 19:27:35.37ID:QV/s5k6i
>>976

コンパイラ変えるんだけど、既存の書き出されたファイルはそのまま使いたくて

でも
>が返す文字列がコンパイラによって全然違うので愕然としました。
>移植のため大幅な書き換えが必要になってしまったのです・・・。
に陥ったんじゃねーかな?と思ったわけー
09789722016/07/06(水) 19:52:27.01ID:o0f3fZWQ
みなさんご回答ありがとうございます。

なぜtypeid().name()を使ったかというと、
同じような動作をするが、メンバー変数の型だけが違う、というクラスを作っていまして、
さらに、どういう型かを他クラスから文字列で識別できるようにもしなければならい都合がありました。
そこで、テンプレートクラスにして、その引数に型を指定し、その型から文字列を生成する、という方法を採りました。

これは、コンストラクタで型の文字列を指定しても実現できることですので、
移植性を考慮して、その方法に変えようと思います。
0979デフォルトの名無しさん2016/07/06(水) 19:56:15.90ID:M/EGIEaV
>>978
型を他クラスから文字列で識別
は別にtypeid(T).name()渡すので良くない?
0980デフォルトの名無しさん2016/07/06(水) 20:00:10.21ID:wptQ7USw
スレチの話題を引っ張るなよ
0981デフォルトの名無しさん2016/07/07(木) 21:23:17.86ID:OCqvo+9Y
C++じゃなくてC言語のプロジェクトの中に同名の別関数が複数使われている
のを以前見かけたのですが、どうやって記述したら実現できるのでしょうか?
また、それを何と呼びますか?
0982デフォルトの名無しさん2016/07/07(木) 21:30:59.45ID:+CDrHRBK
>>981
static 関数かな?
0983デフォルトの名無しさん2016/07/07(木) 21:31:11.28ID:X/6GDdks
>>981
static関数
0984デフォルトの名無しさん2016/07/07(木) 21:33:16.20ID:OCqvo+9Y
ありがとうございます。ちょっとやってみます。
09859842016/07/07(木) 23:00:04.01ID:OCqvo+9Y
staticでできました!ありがとうございます。
それと、インターポジショニングについても興味があるのですが、
どこかにいいリファレンスはないですか?
0986デフォルトの名無しさん2016/07/08(金) 06:02:58.90ID:Y7n6IncG
何で僕に聞くんだよ
0987デフォルトの名無しさん2016/07/08(金) 19:35:09.57ID:CMdG0/Nt
986さんならきっと助けてくれるんじゃないかな、って思ったので。
0988デフォルトの名無しさん2016/07/09(土) 19:28:18.58ID:wrlFaChs
なるほどな
0989デフォルトの名無しさん2016/07/09(土) 19:47:57.91ID:SM0qakfh
きっと助けてくれるよ!
0990デフォルトの名無しさん2016/07/10(日) 20:40:20.25ID:J7L2i5Ph
俺たちの986氏!
0991デフォルトの名無しさん2016/07/10(日) 21:50:14.19ID:Hf6Ci9f/
C言語なら俺に聞け 136
http://echo.2ch.net/test/read.cgi/tech/1468154937/
0992デフォルトの名無しさん2016/07/10(日) 22:10:17.50ID:Hf6Ci9f/
梅
0993デフォルトの名無しさん2016/07/10(日) 23:58:27.69ID:a5wCiUU0
竹
0994デフォルトの名無しさん2016/07/11(月) 00:00:06.97ID:IFVNL087
松
0995デフォルトの名無しさん2016/07/11(月) 02:19:59.70ID:htK4V8FQ
埋め立て伏せ
0996デフォルトの名無しさん2016/07/11(月) 08:45:51.60ID:pao9IZxi
>>991
乙
0997デフォルトの名無しさん2016/07/11(月) 09:17:36.99ID:vUeGFEyK
A言語
0998デフォルトの名無しさん2016/07/11(月) 09:19:41.98ID:vUeGFEyK
B言語
0999デフォルトの名無しさん2016/07/11(月) 09:21:41.80ID:vUeGFEyK
C言語
1000デフォルトの名無しさん2016/07/11(月) 09:43:08.74ID:IC330+YV
C++
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 61日 20時間 29分 22秒
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。