◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C言語なら俺に聞け 149 ->画像>6枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1540731704/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (ワッチョイ af9f-7TBo)
2018/10/28(日) 22:01:44.38ID:D9Gt7gmT0
!extend:checked:vvvvv:1000:512

次スレを作る時は上記1行をコピーして2行に増やして必ず1行目に入るようにしてください。

C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 148
http://2chb.net/r/tech/1537347410/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2デフォルトの名無しさん (アウアウウー Saf1-6HWJ)
2018/10/29(月) 21:37:04.36ID:l03/lfXna
0x99b9e4313e3e
3デフォルトの名無しさん (ワイモマー MM9b-Vh4f)
2018/10/30(火) 23:57:20.35ID:EION13qUM
自分を賢いと思っている馬鹿は
周りが自分をどう見ているかも
相手がどのレベルにいるのかも
なぜ自分が放置されてるのかも
何一つ知らない
4デフォルトの名無しさん (ワッチョイ 5b64-ofXo)
2018/11/01(木) 16:13:41.13ID:upF+pHX50
musl-libcみたいに,特定のOSのプロジェクトではないPOSIXユーティリティの実装ってありますかね。
5デフォルトの名無しさん (アウアウエー Sa52-qQUz)
2018/11/01(木) 17:07:48.90ID:g+DLXddba
NewLibとかあったね
6デフォルトの名無しさん (ワッチョイ a361-ZA70)
2018/11/03(土) 10:27:59.63ID:gIO4YTzK0
strtok_sを4変数にするとエラーになるんですけどどうしたらいいですか?
strmaxがある説明と無い説明があってわからないです。
7デフォルトの名無しさん (ブーイモ MMba-rFq1)
2018/11/03(土) 11:28:06.76ID:hj5IrB61M
>>6
msvcのstrtok_sは非標準だから、_MSC_VERとかが定義されてるかどうかで呼び分けるしかないね。
あんまり覚えてないけどmsvcバージョンのほうが先にあった気がするから、iso/iecが悪い気がする。(間違ってるかも)
まあmsが切り替えスイッチを用意してくれればよいのだけど。
8デフォルトの名無しさん (ワッチョイ a361-ZA70)
2018/11/07(水) 08:24:14.69ID:60G+FgCT0
>>7
よくわからないのでstrtokを使いました。
9デフォルトの名無しさん (アークセー Sxbb-0Z6C)
2018/11/07(水) 16:09:41.16ID:39tnP8GCx
ちょっとお知恵を拝借。

符号付き14ビットの整数があるとき(14ビットのMSBが符号ビット)、その値を符号付き16ビット値に拡張するうまいやり方はないでしょうか?
拡張後も符号や数値自体は変化なしです。
例えば2進で
10 1010 1010 1010
という符号付き14ビット値があった時、
1110 1010 1010 1010
のように変換したい。

14ビット値を16ビット符号付き変数に入れて左に2ビット論理シフトし、さらに右に2ビット算術シフトすれば実現できるのですが、何となく気持ち悪くて。
サクッとエレガントな方法はないでしょうか?
10デフォルトの名無しさん (JP 0He3-4S5W)
2018/11/07(水) 16:25:54.26ID:Gtw+mwj/H
>>9
シフトが一番エレガント。
11デフォルトの名無しさん (ドコグロ MM92-Ax9l)
2018/11/07(水) 18:02:56.37ID:d49i6th8M
>>9
2の補数表現として…
普通に14bit目が1なら0xc000とorするだけじゃないの?
12デフォルトの名無しさん (アウアウウー Sac7-AdN2)
2018/11/07(水) 18:16:05.56ID:bimd4khFa
もはや答えが出切ったと思うので斜め上からの回答でも書いておくか。

回答

int型が14ビットの整数型になっているCコンパイラを使う。
もちろんchar型は7ビット。
CPUは1バイトが7ビットである。
13デフォルトの名無しさん (ドコグロ MM92-Ax9l)
2018/11/07(水) 19:11:16.88ID:d49i6th8M
それ16bitの結果得るのが面倒なだけだろ
もう少し面白い回答頼むわ
14デフォルトの名無しさん (バッミングク MM86-0Z6C)
2018/11/07(水) 19:12:35.33ID:xr+D7aWAM
皆様回答ありがとうございます。
今回はビットシフト方式で行こうと思います。

>>12
使ってるCPUとコンパイラがマイナーな、ある意味純粋な16ビット環境で、sizeof(char)もsizeof(short)も1を返し、sizeof(long)は2を返すような特殊な環境なので7ビットマイコンではありません。
15デフォルトの名無しさん (ワッチョイ 8bb3-MyS3)
2018/11/07(水) 19:46:07.55ID:SCUqGzCI0
intが14ビット
そんな処理系あるの?
16デフォルトの名無しさん (アウアウウー Sac7-AdN2)
2018/11/07(水) 20:47:19.69ID:bimd4khFa
>>15
多分ない。
しかし1バイトが6ビットとか9ビットのマシンはあったようだよ。
https://qiita.com/yaju/items/c5da6df2221d5c3611e0
17デフォルトの名無しさん (ワッチョイ 1a12-Q1ft)
2018/11/07(水) 20:49:47.59ID:YuYLxFMn0
60~70年代メインフレームは百花繚乱だったなぁ

https://en.wikipedia.org/wiki/Word_(computer_architecture)
27bitマシンとかどーすんだよ
18デフォルトの名無しさん (アメ MM7f-Ul28)
2018/11/07(水) 20:55:36.02ID:Lazgvcn1M
このように1バイトが何ビットかはアーキテクチャ依存のため、EUではハードディスクなどのパッケージにはGB単独表記は認められず、Go(ギガオクテット)を併記または単独で表記しなければならない。
1オクテットは必ず8バイト。
19デフォルトの名無しさん (ブーイモ MMba-rFq1)
2018/11/07(水) 21:07:14.78ID:fEoWtkRgM
つまりEUでもHDDの容量はわからないってことか
20デフォルトの名無しさん (ワッチョイ 8bb3-0Z6C)
2018/11/07(水) 21:09:34.64ID:u7stYdWj0
>>18
いや、Octetは8ビットでは?
21デフォルトの名無しさん (アメ MM7f-Ul28)
2018/11/07(水) 21:12:33.55ID:Lazgvcn1M
そうでしたwwwww
22デフォルトの名無しさん (アウアウカー Sac3-U2lQ)
2018/11/07(水) 21:19:59.22ID:h4FWJh3Ka
大丈夫。
文脈から理解はしてる。
上げ足取りなだけだ。
23デフォルトの名無しさん (ワッチョイ 7f76-MyS3)
2018/11/07(水) 21:47:40.71ID:lW24kLVO0
バグってそういうもんだろ
笑ってられる神経が異常だ
24デフォルトの名無しさん (ワッチョイ 5b80-Q1ft)
2018/11/07(水) 23:27:18.47ID:fWOqg0Pc0
バカってそういうもんだろ
25デフォルトの名無しさん (ワッチョイ 9333-YP9l)
2018/11/08(木) 00:45:35.31ID:LWRNNBjj0
>>12
CHAR_BIT は 8 以上、 INT_MAX は 32767 以上って規定があるから、規格非準拠になっちゃう。
26デフォルトの名無しさん (ワッチョイ ab15-ki2E)
2018/11/08(木) 22:02:06.26ID:WtJgli4G0
だから何? 違ったら笑うしかできない無能か
27デフォルトの名無しさん (アークセー Sxcd-8u3a)
2018/11/08(木) 22:55:19.89ID:nQ7J47/rx
C89止まりのものです
私のような者が C11などの新しい規格を学ぶのによい書籍はありますか?
28デフォルトの名無しさん (ワッチョイ 2b81-ki2E)
2018/11/08(木) 23:16:18.68ID:x4oYjs6S0
このスレは最近独り言が増えたのか?
オレもそうだがな
29 ◆QZaw55cn4c (ワッチョイ 5360-ZWep)
2018/11/08(木) 23:21:07.60ID:PviajTiD0
>>27
>C89止まりのものです、私のような者が C11などの新しい規格を学ぶのによい書籍はありますか?
私もC89止まりですが、それで困ることがあるのでしょうか?
30デフォルトの名無しさん (ワッチョイ 415e-p2zE)
2018/11/08(木) 23:28:43.81ID:6k9Hci0C0
>>29
私はC99で止まっていますが、最近はもっぱらPythonを使っているので困りません
31デフォルトの名無しさん (ワッチョイ 4be3-peA3)
2018/11/09(金) 05:43:42.12ID:1ixP0EQ90
pythonいいよな
yieldとかC標準にもほしい
32デフォルトの名無しさん (ワッチョイ 9312-L4Ec)
2018/11/09(金) 10:07:36.38ID:6cegpcYL0
cpythonのyield実装を見ればC言語に移植できるんじゃねえの
33デフォルトの名無しさん (アウアウエー Sa23-2eEn)
2018/11/09(金) 11:42:49.67ID:Sh6b3ug/a
yieldって何につかうの?
34デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
2018/11/09(金) 12:33:54.85ID:DHGOZxvaa
動き的にgets的な動きする。
表示したら即メモリ解放的な。
35デフォルトの名無しさん (ドコグロ MMe5-Mdza)
2018/11/09(金) 12:41:29.53ID:GUqFOdkWM
>>31-32
yieldはソース上に出ないデータを管理しないといけないからC言語の理念と合わない気がする
※ 個人の感想だが…
C++には欲しいな
36デフォルトの名無しさん (ワッチョイ 31b3-ApEQ)
2018/11/09(金) 12:52:21.62ID:1VeVq06f0
yieldはいわばスタック情報の保存だから、setjmp、longjmpで出来そうな出来なさそうな?
37デフォルトの名無しさん (アウアウウー Sa05-ahuQ)
2018/11/09(金) 13:11:31.21ID:JsSTi+Gxa
ん?thread?
38デフォルトの名無しさん (アウアウエー Sa23-2eEn)
2018/11/09(金) 13:52:10.49ID:Sh6b3ug/a
単にコンテキスト保存するだけだからまあ再現はできるよ
書き方としてイテレータとか欲しいのはわかるけど実現方法はどうでもいいわけじゃん
39デフォルトの名無しさん (ワッチョイ 4b23-ki2E)
2018/11/09(金) 14:11:15.88ID:lOb1tGzl0
yieldは便利で使い勝手がいーるど
40デフォルトの名無しさん (ワッチョイ 9164-30bX)
2018/11/09(金) 20:13:38.25ID:3ZHBVzZ50
POSIXの<errno.h>にある番号とBSDの<sysexits.h>で全然番号が違うのは理由があるのかな。
いままで<sysexits.h>に従って「許可がない」動作は77を返すものだと思ってたら
Linuxでは1を返すのでなぜだと思って調べたら<errno.h>では権限エラーは1。
嫌だなぁ。
41デフォルトの名無しさん (ドコグロ MMe5-Mdza)
2018/11/09(金) 20:53:23.68ID:GUqFOdkWM
77とか1とかのリテラルで書くバカって今でもいるんだ…
42デフォルトの名無しさん (アウアウエー Sa23-2eEn)
2018/11/09(金) 23:18:17.74ID:Sh6b3ug/a
POSIXで具体的な数値決めてたっけ?
43デフォルトの名無しさん (ワッチョイ db9f-ki2E)
2018/11/10(土) 05:46:23.69ID:PYYpj2JU0
>>40
<errno.h> の方はC言語でシステムコールしてエラーになった時の errno 変数の値で、
<sysexits.h> はプログラムが exit() 等で終わる時に使う値なので全く用途が違う。
44デフォルトの名無しさん (ワッチョイ 9164-30bX)
2018/11/10(土) 06:30:10.24ID:lBOHSSIo0
>>43
つまり<errno.h>で定義された値はユーザーからは見えないんだね。
45デフォルトの名無しさん (ワッチョイ db9f-9t8X)
2018/11/10(土) 06:43:06.70ID:PYYpj2JU0
>>44
見えないというか、ただの数値なのでどこにでも使えないわけではないが、errnoの値をexit()で返す事は想定して作られていない。
46デフォルトの名無しさん (ワッチョイ 4b23-ki2E)
2018/11/10(土) 11:37:20.64ID:lMF42kZL0
>>45
わりとerrnoを返してくる人多いけどね
47デフォルトの名無しさん (ワッチョイ 2b81-ki2E)
2018/11/10(土) 11:58:28.71ID:4Oh2WWEl0
errno返してもらっても困る
48デフォルトの名無しさん (ワッチョイ f380-/quP)
2018/11/10(土) 17:42:25.30ID:16GnFLu/0
#defineマクロ定数はプリプロセッサで単純置換されるだけだからな
49デフォルトの名無しさん (アウアウウー Sa05-ahuQ)
2018/11/10(土) 18:12:43.61ID:JVjCprWqa
>>46
多いか?
別にそう作っちゃいけないということはないが、できれば exit() では <sysexits.h> の方を使って欲しいな。
単なる個人的な希望だが。
50デフォルトの名無しさん (ワッチョイ 9164-30bX)
2018/11/10(土) 18:13:54.94ID:lBOHSSIo0
>>45
>>46
ありがとう。
ユーティリティ自体の終了ステータスはPOSIXの範囲では0もしくは非0,
BSD拡張で<sysexits.h>で定められている値を使えば まあユーザーの助けにはなるって認識でいいかな。
51デフォルトの名無しさん (アウアウウー Sa05-ahuQ)
2018/11/10(土) 18:26:46.25ID:JVjCprWqa
そう。
52デフォルトの名無しさん (ワッチョイ 937f-nWRh)
2018/11/11(日) 12:27:27.91ID:2PA7tL2j0
struct S {
size_t len;
type-X buf[0];
};
という状況下で、

size_t const len = 500;
struct S* const p = (struct S*)malloc(sizeof(struct S) + sizeof(type-X)*len);

p->len = len;
p->buf = (type-X*)((size_t)p + sizeof(struct S));

という処理を偶に見かけますが、これだと末尾パディングの影響でbuf[1]のアドレスがtype-Xのアライメントに沿っていない可能性があるので、不正な気がします
具体的には

struct S {
size_t len;
type-X* buf;
};
として、

size_t const len = 500;
size_t const padding_for_align_x = alignof(type-X)*(sizeof(struct S)%alignof(type-X) == 0 ? 0 : 1);
struct S* const p = (struct S*)malloc(sizeof(struct S) + padding_for_align_x + sizeof(type-X)*len);

p->len = len;
p->buf = (type-X*)((size_t)p + sizeof(struct S) + padding_for_align_x);

...などとしないとアライメント違反になりそうな気がするのですが、この認識は正しいでしょうか
53デフォルトの名無しさん (ワッチョイ 937f-nWRh)
2018/11/11(日) 12:57:16.34ID:2PA7tL2j0
すいませんよく考えたら自己解決しました
>>52の質問は取り下げます

お騒がせしました
54デフォルトの名無しさん (ワッチョイ 9164-30bX)
2018/11/11(日) 14:07:31.98ID:PRctJ18Z0
>>4
へー。musl-libc知らなかったけど組込Linuxとかの界隈では有名っぽいね。
ソース見たけどすごく短かいのが多くて逆に不安になったw
55デフォルトの名無しさん (ワッチョイ 4b23-ki2E)
2018/11/11(日) 15:17:31.04ID:0RasjQan0
sysexits.h って初めて知った

>>49
Linuxとかだと ls unko で 2 が返るとか割と普通
56デフォルトの名無しさん (ワッチョイ 9164-30bX)
2018/11/11(日) 16:17:47.42ID:PRctJ18Z0
>>55
まあBSDでプログラミングしたことないと あんまり知りえないと思うわ。
だいたいPOSIXで定められてる訳じゃないから 知っておくべきなのはBSDプログラマくらい。

ただLinuxプログラムのエラーコード周りはなぜか非統一的なんだよね。
GNUコーディング規約で事細かに決められてそうなものだけどねw
apt(1)なんて権限エラーに100返すんだぜ?
57デフォルトの名無しさん (ワッチョイ 9312-L4Ec)
2018/11/11(日) 16:41:45.09ID:PCIE9alw0
>>52
『MSDNこそC++である』という格言があるように、構造体の末尾の配列は不定長に出来ます

構造体内の可変長配列
https://msdn.microsoft.com/ja-jp/library/b6fae073(v=vs.120).aspx
58デフォルトの名無しさん (ワッチョイ 497d-ki2E)
2018/11/11(日) 18:01:07.65ID:EYHizhRi0
VLAとは違うんだよな
そのページのサンプルに限っては不完全型配列の直前にサイズ情報があって確かに可変長だが
配列そのものがサイズ情報を含むのではないので、不定長とでもいうべきものだ
59デフォルトの名無しさん (ワッチョイ 9164-TRt+)
2018/11/11(日) 18:07:53.58ID:PRctJ18Z0
どうでもいいけど そのURLの書式はなんだ?
URLパラメータってそんな位置に置けたっけ。
60デフォルトの名無しさん (ワッチョイ f380-/quP)
2018/11/11(日) 18:21:19.83ID:1ROtIrLE0
先頭さえ確定できれば後ろなんてどうでも良い
さすがのC言語さん
61デフォルトの名無しさん (ワッチョイ 9321-A2K7)
2018/11/11(日) 21:36:09.88ID:1MIvJQ9R0
>>57
その格言は初めて聞きましたw

その方法だとアライメント違反になるかならないかが気になっていたのですが、
* 末尾のbuffer[0]でその型のアライメント以上のアライメントを構造体に強いることができる(拡張)
* 末尾のbuffer[1]の場合は当然構造体にそのアライメント以上のアライメントを強いることができる(c89)
* 末尾のbuffer[]でも同様(c99での仕様)
となり、全パターンでbuffer[i]へのアクセス時にアライメント違反にならないので、
ポインタメンバにしてアライメント気にしてmallocする必要ないのかー、これでいいのかーと解決した次第です

>>58
英語だとflexible arrayでした
62デフォルトの名無しさん (アウアウウー Sa05-Vzv6)
2018/11/11(日) 22:09:10.99ID:3Du2sMqla
>>59
v=vs.120のとこ?
クエリストリングちゃうやろ
63デフォルトの名無しさん (ワッチョイ db9f-ki2E)
2018/11/11(日) 22:26:25.11ID:0F8Q4Ddx0
>>55
ま、確かにコマンドごとにバラバラだな。
errno とも無関係だったりする。
64デフォルトの名無しさん (ワッチョイ 9164-TRt+)
2018/11/12(月) 13:20:45.59ID:JkRQG90v0
もうちょっと皆がリターンコードについて考えてくれたらいいね。
65デフォルトの名無しさん (ワッチョイ 2b81-ki2E)
2018/11/12(月) 13:26:58.93ID:yW6s8Lj00
コマンドの戻り値って、皆さんどの様に活用されてますか?
成功か失敗か、それが分かれば十分な気はしますけど
66デフォルトの名無しさん (ワッチョイ 9164-TRt+)
2018/11/12(月) 13:50:25.07ID:JkRQG90v0
>>65
例えば同じ「失敗」でも何が原因なのか分かったほうが問題に対処しやすくない?
ファイルが存在しないのか はたまたファイルが現状の権限では読みとれないのか。
もちろんエラーメッセージを見てもいいけど。

あと,終了ステータスを見ないと成功失敗が分からない場合がある。
例えばdiff(1)ユーティリティーなんかは「1」という(一見失敗してるような)終了ステータスに
「(コマンド自体は成功してるが)不一致が発見された」という意味を割り当ててる。
fsck(1)ユーティリティーはもっと複雑。

まあ知ってるに越したことはないし<sysexit.h>はPOSIX標準ではないにせよ,
Unixプログラミングをする場合は積極的に利用してもいいかも。
67デフォルトの名無しさん (ワッチョイ 2b81-ki2E)
2018/11/12(月) 14:11:20.80ID:yW6s8Lj00
イヤ、使い方の可能性としてそう言うものがあるくらいは知っている
実際に使っている人がいたら、どういう使い方をしているかを聞きたいんだ
68デフォルトの名無しさん (ワッチョイ 9164-TRt+)
2018/11/12(月) 16:42:56.85ID:JkRQG90v0
勘違いしてましたわ
俺の知ってる限りじゃシェルスクリプトでは多用されてるがCではどうだろうね。あまり見掛けない。
69デフォルトの名無しさん (アウアウウー Sa05-2eEn)
2018/11/12(月) 17:16:29.53ID:7RdsKszja
diffでちょっと迷うくらいだよな。
70デフォルトの名無しさん (ワッチョイ 56be-JwVn)
2018/11/18(日) 22:01:33.04ID:Fz4U8sel0
#define elif(e) else if (e)
みたいにして
if (...) {
...
} elif (...) {
...
} else {
...
}
↑こういう感じにするのってやっちゃマズいのかな。
個人的にelifキーワードがある言語に慣れてるんでこうやってて
現状特にエラーに遭遇したことはないんだけど
OSSのソースコードとか個人が公開してるソースコード見ても
こういうことやってないんだよね。
71デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/18(日) 22:14:05.51ID:Eond7dK60
>>70
やめとけ

メリットが1ミリもないから誰もやらない。
善し悪しはさておき、C言語での判断基準はほぼ「実行性能」であって、
else if と書けばいいだけの所をいちいちマクロにする馬鹿なんて世界中に誰もいないだけ。
というか、そのレベルで慣れられないのなら、elif言語だけ使っておけ。
72デフォルトの名無しさん (ワッチョイ ba80-N102)
2018/11/18(日) 22:24:21.65ID:KTJRdzRs0
#define { begin

みたいなことを本気でやる奴がいたとはw
73デフォルトの名無しさん (ワッチョイ ba80-N102)
2018/11/18(日) 22:26:08.72ID:KTJRdzRs0
#define begin {
逆だったわw
74さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdea-/fpg)
2018/11/18(日) 22:35:31.43ID:ZI/kDlHTd
ソースコードを静的解析する関係で、文法を強引に変えるような変態な前処理は良くないらしい。
75デフォルトの名無しさん (ワッチョイ edf2-maOp)
2018/11/18(日) 22:39:49.79ID:HA6us6PZ0
世の中の静的解析ツールは当然プリプロセッサ適用後の状態で解析するわけで
76デフォルトの名無しさん (アウアウウー Sa91-ZAHG)
2018/11/18(日) 22:42:50.43ID:gSv28L1Ba
typedefも避けるという流儀はあるからね
まあ気持ちはわかる
むしろGNU拡張のtypeofはアリ
77デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/18(日) 22:45:11.55ID:Eond7dK60
>>73
endは普通に変数名に使われてるから無理だな。
それはさておき、セミコロン嫌いも拗らせておかしくなってるよな。
78デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/18(日) 22:47:48.36ID:Eond7dK60
>>76
> typedefも避けるという流儀はあるからね
それはC++ではないか?Cでは使われまくりだったような。
79さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdea-/fpg)
2018/11/18(日) 23:14:59.59ID:ZI/kDlHTd
国際会議で誰も知らない方言を話して良い訳ない。オープンなソースコードは世界中の人が見るんだから。
80デフォルトの名無しさん (ワッチョイ 4a21-JwVn)
2018/11/18(日) 23:19:46.27ID:we8vMVw10
>>78
多分linuxカーネルの流儀じゃないかな

struct/enum/unionとかの省略を目的としたtypedefは行わない
opaque-type/関数ポインタとかの必然性が無い限り対象は明示するっていう戦略
81デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/18(日) 23:37:43.07ID:Eond7dK60
>>80
> struct/enum/unionとかの省略を目的としたtypedefは行わない
こんなのは当たり前だ。(linuxカーネルに限らず)

そもそも「タイプ数をケチるだけの為に何かする」という文化は最近のWeb系馬鹿言語だけであって、Cにはない。
当然、else if を elif にしたがる奴もいない。
「腕のいい奴のコードは短い」を勘違いしてる馬鹿共がやたら「タイプ数」にこだわってるだけだ。
だいたい、structをタイプしたくなければC++コンパイラ使えば済むし。
82デフォルトの名無しさん (ワッチョイ ad98-nUmj)
2018/11/19(月) 00:20:04.42ID:DaKcZAfU0
ここで聞いていい内容なのかわからないのですが
gccを4.8.1から8.1.0に変えたらwinAPIを使用して図形を表示するプログラムで
図形が表示されずウィンドウだけ表示されるようになってしまった
これは、c言語,gcc,winAPIどれを疑えばいいのでしょうか?
MingW-W64-buildsというところから8.1.0のgccはダウンロードした
83さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdea-/fpg)
2018/11/19(月) 00:24:07.93ID:4H6R9aF+d
図形の描画ルーチンを貼れ。
84デフォルトの名無しさん (ワッチョイ 4a21-JwVn)
2018/11/19(月) 00:25:09.76ID:+eaeK27e0
>>81
なぜ唐突にweb系云々に話が飛ぶのか理解できないのだが、
typedef struct {...} S;
typedef enum {...} E;
void f(S* s, E e);
上のような書き方、結構(昔から)見かける気がするけど
85デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/19(月) 00:28:01.74ID:1op4u+BL0
>>82
お前の頭、だな

gcc4.8.1で行けるのならそれでやればいい話。
それを8.1.0に変えただけで問題が発生するのなら、当然そこに問題がある。
そしてそもそも詳しいことはそのソースを作った奴に聞け。
86デフォルトの名無しさん (ワッチョイ 4a21-JwVn)
2018/11/19(月) 00:30:44.00ID:+eaeK27e0
というかこれ以外だとtypedefを使うべき所にしか使わないはずなので、
cだろうがc++だろうがtypedefの使用量に差が出るとは思えない

ああ、実は>>78ってc++ならusing使うべきとかそういう話?
87デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/19(月) 00:46:59.49ID:1op4u+BL0
>>84
> 上のような書き方、結構(昔から)見かける気がするけど
個人的には疑問があるが、おそらく実際はそちらの方が正しいのだろう。
C++で対策された=C言語のそこがウザイと禿が判定した、ということだから。

> なぜ唐突にweb系云々に話が飛ぶのか理解できないのだが、
ググレば分かるが、その辺の言語では「こちらの方が短いから良い」といっているページは結構見かける。
C言語でこれを言っている奴は皆無だ。


>>86
> ああ、実は>>78ってc++ならusing使うべきとかそういう話?
いや、そうじゃない。そちらの取り方で問題ないし、君の typedef の使い方は正しいと思う。

typedefって結局「型に別名を与える」為の物で、
型が自由に定義出来るようになったC++ではほぼ要らないはず、って話。
88デフォルトの名無しさん (ワッチョイ ad98-nUmj)
2018/11/19(月) 01:03:17.87ID:DaKcZAfU0
>>85
そうか...仕様変更、バグ、なにか他にも入れるものがあるとか分かるなら聞きたかったんだが
仕方ない。ありがとう
4.8.1だと古くなってるかなと思って思い切って8.1.0で試してみてるんだけど戻すか
89デフォルトの名無しさん (ブーイモ MMea-N102)
2018/11/19(月) 01:03:24.61ID:CKJwSX5SM
Web系言語界隈は条件演算子をif文の簡略表記()だの省略形()だの言ってる池沼も多いからなぁw
90デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/19(月) 01:16:02.93ID:1op4u+BL0
>>88
まじめにやる気があるのなら、少しずつ上げて切り分けるのは簡単だろ。自分でやれよ。
ここで聞くより早いと思うぜ。
91デフォルトの名無しさん (ワッチョイ 8681-maOp)
2018/11/19(月) 01:26:41.23ID:on7lyeKV0
else if の省略形は確かに頂けない
あれはperlからだっけか?
92さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdea-/fpg)
2018/11/19(月) 01:28:26.32ID:4H6R9aF+d
#elifはあって、elifがないのは変だが、キーワードを節約するためだから。
93デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/19(月) 01:30:10.27ID:1op4u+BL0
>>91
歴史的には多分sh
70は多分python
94デフォルトの名無しさん (ワッチョイ ad98-nUmj)
2018/11/19(月) 01:37:20.71ID:DaKcZAfU0
>>90
なるほど、きざんでやってみます
ありがとうございます
95デフォルトの名無しさん (ワッチョイ 4a21-JwVn)
2018/11/19(月) 01:38:53.01ID:+eaeK27e0
>>87
あー...もしかして自分の
>struct/enum/unionとかの省略を目的としたtypedefは行わない
これが「型定義時に、キーワードとしてのstructやenum、unionの省略のためだけのtypedefは行わない」
つまりstruct S{...}という形で定義し、明示的にvoid f(struct S* s)などといった形式で取り扱う
...という意味ではなく、
「structやenum、unionといった型について、それら個々の名前(タグ名)を単に省略するためだけのtypedefは行わない」
つまりtypedef struct SS...SS Sというただの省略形式にするtypedefは行わない
と伝わったのかな

それなら書き方が悪かった、申し訳ない
96デフォルトの名無しさん (ワッチョイ 56be-JwVn)
2018/11/19(月) 12:18:16.63ID:hiATcnIp0
>>92
自分もここが引っ掛かったんだよね。
プリプロセッサ向けにはelifキーワードがあるのに
コンパイラ向けにはない。
もしもキーワード数を節約したり実行速度のみを重視する実装なら
プリプロセッサ向けにもelifキーワードはなかった筈。
なのにある,ということはなにかしらタイプ数の節約とか読み易さとかを考慮してるんだろうね。
だからコンパイラ向けにelifキーワード(の紛い物)を追加するというのは何らおかしくないと思うのだが。
97デフォルトの名無しさん (アークセー Sx6d-2qly)
2018/11/19(月) 13:17:22.86ID:X/ZWPPJsx
そもそもC言語にはelse ifって構文はないよ。
んで、プリプロセッサは#の後をスペースなしの1語にした結果だと思う。
98デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
2018/11/19(月) 13:27:56.02ID:X6/A5UNDa
フリーフォーマットだからelse if(...)を自分なりに分かりやすくすれば良いだけ。
99デフォルトの名無しさん (ワッチョイ e944-maOp)
2018/11/19(月) 21:04:51.99ID:DK7kmuka0
>>74
賛成

静的解析はツールだけがすることではなく人力でもすることだ
人力「でも」と言ったが、目的意識を持って判断できるのは人間だけで
こちらが主役であることを、小者でアフォなやつほど忘れる
100デフォルトの名無しさん (ワッチョイ 9564-ddua)
2018/11/20(火) 01:45:19.01ID:EatTFoyz0
>>99
でも>>75でも言われてるけど
プリプロセッサ命令を効かせてから解析するのが普通なんだから
あんま関係なくね?
101デフォルトの名無しさん (ワッチョイ d623-maOp)
2018/11/20(火) 09:35:42.58ID:im347JOd0
>>97
構文にはなくても書けるんだから一緒だろ
102デフォルトの名無しさん (ワッチョイ cdb3-4fLB)
2018/11/20(火) 15:56:41.31ID:mQTI1hl+0
負の数を識別できません。

signed int DATA = -128 (0xFF80。int は16ビット)

if (DATA > 0)
{式1}
else
{式2}

なぜか式1 が実行されます。(DATA > 0) は偽ではないのでしょうか。
103デフォルトの名無しさん (ワッチョイ adea-EWFf)
2018/11/20(火) 16:14:32.18ID:ls520OJz0
問題のコードから症状が出るままどんどん削ってって最小単位がそのコード?

https://ideone.com/xcDRkc

実は右辺がcharの変数で 中身が 0x80 なんだけど
符号拡張の過程で char を unsigned char として 0x0080 と拡張したり
(処理系依存だっけか?  リテラルだけだっけ?)
そういう話ではない?
104デフォルトの名無しさん (アウアウカー Sa85-ZAHG)
2018/11/20(火) 16:16:24.86ID:hc2iBltta
16bitってどういう処理系なんじゃろうか
105デフォルトの名無しさん (ワッチョイ cdb3-4fLB)
2018/11/20(火) 16:43:19.22ID:mQTI1hl+0
>>103,104

右辺の0は定数です。
変数DATA の値はPRINT文で16進表示したものです(0xFF80)。

引用先のページは、残念ながら理解できませんでした。

申し遅れましたが処理系は組み込み用16ビットマイコン用GCC です。
処理系に依って前述のような動作になることはありえますか?
106デフォルトの名無しさん (ワッチョイ adea-EWFf)
2018/11/20(火) 16:49:33.90ID:ls520OJz0
右辺云々は 初期化の右辺の話だけども、そこが本質じゃなさそうね

sizeof(int) = 2 かつ printf("%x", DATA) が ff80 と表示される系で
if (DATA > 0) が成立しないとな

ごめんワカラン
107デフォルトの名無しさん (バッミングク MMe1-2qly)
2018/11/20(火) 16:59:34.34ID:7KgR8FwmM
最小の全ソースを見せて。
この手の場合、自分では正しいと思ってるとこに思わぬポカミスが入ってることがまれによくある。
108デフォルトの名無しさん (ワッチョイ cdb3-4fLB)
2018/11/20(火) 17:07:55.90ID:mQTI1hl+0
>>106,107
すいません。ご察しのとおり、変数DATA に初期値を代入しているわけではありません。
このif 文が評価される直前のDATA 値が-128 という事で、初期値を代入したように書きました。

今日はこの件で非常に疲れたので、ソースの提示は少し時間を下さい。ありがとうございます。
109デフォルトの名無しさん (ワッチョイ adea-EWFf)
2018/11/20(火) 17:18:12.25ID:ls520OJz0
>>107
元コードをそのまま横断的に眺めてるとわからないけど
症状が残るまま、余計な箇所をがんがん削っていって簡単化していくと見つかることがあるよね

a[i++] = i; のような副作用完了点内での複数回の参照とかはどうしようもないけどw
110デフォルトの名無しさん (アウアウカー Sa85-ZAHG)
2018/11/20(火) 17:26:38.15ID:GGiSm8Yna
値自体は型情報を含んでないという点は押さえないとあかんが、そういう問題でもないか。
妙なtypedefしてたりしてね。
111デフォルトの名無しさん (ワッチョイ e99e-ZAoN)
2018/11/20(火) 17:33:06.78ID:oWNEdszs0
アセンブリコード読んで見るとか
割り込みでレジスタ確認とかすれば
cで見てると気づかないことが見えてくるかも
112デフォルトの名無しさん (ワッチョイ 2961-4fLB)
2018/11/20(火) 19:23:37.02ID:2i13hG6Q0
printf("check : sizeof %d: DATA = %d\n",sizeof(DATA),DATA);
if((signed int)DATA > (signed int)0)
とかやって一つ一つ動作確認してみるとか。

よくわからん動作不良起こした時は配列変数がスタックサイズ超えてたとか
16Bit環境なら32kb/64kb超えたとかが原因だったことあるけど。
113デフォルトの名無しさん (ドコグロ MM21-JzRR)
2018/11/20(火) 19:37:09.53ID:TCh3BaRvM
>>108
そもそもその環境で>>102のコードを実行したらどうなるのさ?
114デフォルトの名無しさん (アウアウウー Sa91-AAco)
2018/11/20(火) 20:38:14.44ID:xyhgdzIUa
>>102
本当に DATA の型は signed int か?
良く見たら unsigned int ってことはないか?
115デフォルトの名無しさん (ブーイモ MMb9-ed7b)
2018/11/20(火) 21:11:07.99ID:d/DSkvWpM
>>102
16進リテラルが16bitで収まらないからunsigned intで解釈された。(c99)
そんでintに暗黙キャストされたときに最上位bitが落ちたと思われ
116デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/20(火) 22:03:30.03ID:HgsWcywV0
>>108
> 今日はこの件で非常に疲れたので、ソースの提示は少し時間を下さい。ありがとうございます。
正しい。疲れたら休め。結果的にその方が早い。

君も分かっていると思うが、まともなコンパイラ(実績のあるコンパイラ)なら、そんなところにバグはない。
ほぼ間違いなく君の勘違いだ。
それは根詰めて見てても気づかないが、一旦忘れて見直したらあっさり見つかる、ということもよくある。
残業してグダグダやるよりも、早く帰って早く寝て、次の日に早めに出社した方が捗る。

おそらくあっさり解決すると思うぜ。
117デフォルトの名無しさん (ワッチョイ 8680-vjqa)
2018/11/20(火) 22:51:04.92ID:0YIMqUF30
リテラルの大小によって、型が変わるとか、滅茶苦茶な文法だろ

コンパイルエラーにしろよ。
気づかねえ
118デフォルトの名無しさん (ワッチョイ cdb3-EWFf)
2018/11/20(火) 23:08:18.58ID:w1zNIHuF0
ソースの見栄えで桁あわせにゼロパディングしたら 8進数になっててうぁぁぁ
119デフォルトの名無しさん (アウアウカー Sa85-ZAHG)
2018/11/20(火) 23:08:44.13ID:jZchQuqWa
マジックナンバーあかんとか言ってもさあ、マクロで隠したせいで生じたバグも経験的にはかなり多いんだよね。
値のリテラル即悪みたいなのもどうかと思うね。
120デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/20(火) 23:22:23.29ID:HgsWcywV0
>>117
型は変わらないし、普通は警告が出るはず。
いずれにしても、C言語はお前みたいな馬鹿向けには出来てない。

>>115
unsigned int から int へのキャストは普通はそのままで、飽和処理なんてしないだろ。
仕様なのか処理系依存なのかは知らんが。
121デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/20(火) 23:35:21.40ID:HgsWcywV0
>>119
何をリテラルにして良いか判断出来ないのは君(または周り)の問題だろ。
独り言ではなく、問題提起~議論起動する気があるのなら、「俺なりの基準」でも言えよ。
122デフォルトの名無しさん (ワッチョイ 2105-ed7b)
2018/11/21(水) 00:29:46.48ID:Z1qX2lWM0
>>120
>型は変わらないし
つ6.4.4.1

>普通はそのまま
intの最大値を超えているのにどうやって表現する気だ
123デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/21(水) 00:32:45.26ID:UO6rINaw0
>>122
> intの最大値を超えているのにどうやって表現する気だ
ならお前はdoubleの最大値を超えている場合はどうするんだ?
お前みたいな馬鹿が使うようには出来てないんだよ。
124デフォルトの名無しさん (ワッチョイ 8681-maOp)
2018/11/21(水) 00:45:36.29ID:w42YOu3l0
釣り針が大きすぎて、咥えられないw
125デフォルトの名無しさん (ドコグロ MM72-JzRR)
2018/11/21(水) 06:57:26.41ID:sFoC6dALM
>>118
あるあるすぎる…
126デフォルトの名無しさん (ワッチョイ d623-maOp)
2018/11/21(水) 09:11:45.73ID:xS7mIekg0
>>118
止めてくれ
その術はオレに効く
127デフォルトの名無しさん (アウアウウー Sa91-AAco)
2018/11/21(水) 09:22:03.70ID:RC0TEAoba
30年ぐらい前にZ80のマイコンボード用に作ったプログラムでそれにハマった覚えがある。
128デフォルトの名無しさん (アウアウカー Sa85-ZAHG)
2018/11/21(水) 09:54:03.00ID:PloQSCN7a
すぐ16進で書きたがるのもどうかと思うわ。
intに-1でなくて0xffffffff入れてるのとか意図が掴みかねる。
そもそもunsignedがあるのが良くないんだな。javaは正しかった。
129デフォルトの名無しさん (ワッチョイ 4a12-CYUw)
2018/11/21(水) 10:14:15.23ID:nY2eM3rc0
70年代初期に何が良いか何が悪いか何が正解かが分かるの?
それに磁気コアメモリが4096ビットの時代だよ
130デフォルトの名無しさん (ワッチョイ adea-EWFf)
2018/11/21(水) 10:55:13.30ID:Gzh6p2MJ0
>>125-127
リテラル中に 8 や 9 が入ってれば文法エラーで止まるので判明するけど
入ってないとそのまま通っちゃうし、特に警告の対象になるようなもんでもないしでやっかいよね
131デフォルトの名無しさん (ドコグロ MM72-JzRR)
2018/11/21(水) 12:33:01.52ID:sFoC6dALM
>>130
今時8進表記なんて使うことはほぼないと思うから使ってたら警告してもいいくらい
132デフォルトの名無しさん (ワッチョイ cdb3-4fLB)
2018/11/21(水) 13:31:24.92ID:VldA7vNv0
>>109-116

皆さんご助言ありがとうございます。おかげさまで一応不具合は解消できました。
以下問題の箇所です。

signed int MAX, WIDTH, TMP, SHIFT;
float COEF;

COEF = MAX / WIDTH; //浮動小数点演算になると思っていた
// 1 = 128 / 128

TMP = SHIFT * COEF;
// -128 = -128 * 1

if (TMP > 0)
{式1} //TMP= -128 なのに、式1が実行される。
else
{式2}

だったのを
COEF = ((float)MAX / WIDTH);
に修正すると、式2 も実行されるようになりました。他に変更したところはありません。
今まで何故(-128 > 0)が真だったのかは不明です...
133デフォルトの名無しさん (アウアウウー Sa91-AAco)
2018/11/21(水) 13:55:29.32ID:89fYavxUa
>>132
本当に if の直前で TMP がマイナスだったのかが怪しい。
それと気になるのはやはり型が本当にその通りなのかだな。
134デフォルトの名無しさん (ワッチョイ adea-EWFf)
2018/11/21(水) 14:13:56.46ID:Gzh6p2MJ0
本当に変数の型は signed なのか?
実際に 式2 に通って欲しいのに 式1 へ流れた MAX, WIDTH, SHIFT の値 をメモって
再現する最小セットのコード作って何が起きてるのか把握しとかないと、また同じことやらかすかもよ

signed int TMP;
signed int MAX = <リテラル>;
signed int WIDTH = <リテラル>;
signed int SHIFT = <リテラル>;
float COEF;

COEF = MAX / WIDTH;
TMP = SHIFT * COEF;
printf("1:%d\n", TMP);
if (TMP > 0) { printf("1:式1\n"); } else { printf("1:式2\n"); }

COEF = ((float)MAX / WIDTH);
TMP = SHIFT * COEF;
printf("2:%d\n", TMP);
if (TMP > 0) { printf("2:式1\n"); } else { printf("2:式2\n"); }
135デフォルトの名無しさん (アウアウウー Sa91-ZAHG)
2018/11/21(水) 14:20:55.45ID:HZsG+Ur+a
COEFが0なんじゃ?
まあわかんないね
136デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/21(水) 22:53:01.43ID:UO6rINaw0
>>132
皆が指摘しているように、それだけでは無いと思うがな。
おそらく君が出してきたソースにも色々間違いがあるんだろうけど。

ソース見る限りズブの初心者のようだが、問題点を理解しているか?

まず用語がおかしいので先にこれを修正しておくが、普通は
float scale = width / max; だ。shiftは足すもの、scaleが掛けるもの。coeffは係数=無次元数だろ。
読んだときに違和感がないようにしろというのはアプリケーションハンガリアンの思想だが、
これを採用するかはともかくとして、思想自体は当たってる。
そして通常は max で割る。(ただしこれについては、意図的に逆数にすることもあるが)
あと変数を全部大文字にするのはマジで止めろ。そんなことしてる奴は居ないだろ。

それで、君の「キャスト忘れ」についてはscaleが0に張り付くなり、整数の階段状になるので、
「動作を見た瞬間にどこがバグっているか分かる」タイプのバグになる。
追跡するにも苦労しないし、そもそも追跡の必要すらない。
当然、疲れもしない。マジで10分で修正して、てへぺろ、だ。

だからそのバグを取るのに手こずること自体がおかしい。
そしてその遠因になっているのはその意味不明なネーミングだ。
まずはそこからだと思うぜ。

(-128 > 0)が真になることはないので、確実に君が何か勘違いしている。
先生/先輩/上司その他、見てもらえる人がいるのなら、
君のソースのその酷さも含めて見てもらった方がいい。
そういう人がいなくて君が一人でマイコンを動かそうとしてるのなら、今の君では無理だと思うぜ。

Python馬鹿なら、最近はPythonが動くマイコンもあると聞くので、環境を変えた方がいい。
マイコン環境のCは、色々と貧弱な分、PC環境のCより難しい。
今の君ではPC環境のCでも無理がある。
状況聞く限り、俺は>>135の予想が正しいと思う。
137デフォルトの名無しさん (ワッチョイ 6acb-maOp)
2018/11/21(水) 23:10:25.75ID:iZ9rHJSw0
ズブの素人が来てよかったね
嬉しそう
生きがいみたいなもんだな
138デフォルトの名無しさん (ワッチョイ 217b-sJSV)
2018/11/21(水) 23:20:56.85ID:ILAAUKO60
歳を取ると説教したくなる
139デフォルトの名無しさん (ワッチョイ 09e3-4fLB)
2018/11/21(水) 23:26:10.43ID:0tXjM5tc0
何が起きていたのか本人は追求する気はないみたいなんで
話はこれ以上進まないだろう

>>137
で、それがお前の生きがいなわけだ
なんだかな
140デフォルトの名無しさん (ワッチョイ 9580-CYUw)
2018/11/21(水) 23:48:20.51ID:QmHGv3o90
低学歴知恵遅れが
低学歴知恵遅れ丸だしなレスして
イキイキしてる
141デフォルトの名無しさん (ワッチョイ 054f-CYUw)
2018/11/21(水) 23:57:18.63ID:UO6rINaw0
>>137,138
まあお前らは上達しないと思うぜ。
最近お前らみたいな奴も増えたが。

上達出来るかは結局、自分で深みに突っ込んで行けるかにかかってる。

俺の指摘が間違っている、というのならともかく、
気に入らない指摘は無視すればいい、というスタンスなお前らはプログラマは無理だ。
諦めて他の職を探せ。

132は努力しているようだが、方向を間違っている。
それはお前らにも見えてることだろ。放置するのもまた悪だと思うぜ。
巻き込まれるのが怖くて見て見ぬふりをして、結果、
陰湿ないじめが横行してたゆとりなんてその程度だと思うが。

勿論132も追求した方がいいとは思うが、正直、そのレベルじゃない。
PC環境のCでGUIのIDEを使ってまずCを覚えるか、
既にプログラミング出来るのならその言語、調べたところRubyが動くのもあるようだから、そっちから行った方がいい。
Cも初めて+マイコンも初めて、では、確実にはまる。
142デフォルトの名無しさん (ワッチョイ c380-1YVs)
2018/11/22(木) 00:13:37.04ID:8rnkEr570
こんな低学歴知恵遅れ丸出しな長文レスばっかりで埋め尽くされると
まともなヤツは近づかなくなるわ
やはり自覚がない
143デフォルトの名無しさん (ワッチョイ ff12-1YVs)
2018/11/22(木) 07:53:35.42ID:pCbzIdwz0
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?

まーたこのゴミが登場したのか
もう出てけよ
余りにもゴミだからこのスレにはいらねーよ
144102 (ワッチョイ 63b3-Kv/S)
2018/11/22(木) 13:02:07.52ID:RP03a4vB0
この議論に参加してくださった皆さん

>>136 さんの指摘は初心者の私には大変有難いものでした。
ただ、いくつか反論したい部分もあります。私はハード屋で、ハードウェア言語で使われる変数(フリップ・フロップ)の動作遷移を意識した変数名にした方が私には分かり易いのです。

変数を全て大文字にしているのは単純に昔からの癖です。命令文 = 小文字、引数,変数 = 大文字 と決めています。

「キャスト忘れ」についてですが、異常動作に即気付けるか否かはint 変数をキャストしないと
0,1,2・・・などの整数にしかならないことを知らなければなかなか気付けない事ではないでしょうか。
Cの参考書は持っていますが、浮動小数点演算に関連する情報が離散していて、この事象が起こりうるという説明を見出すことが出来ませんでした。

>>134 さんが提示されたテスト・プログラムは余裕が出来た時に実行してみるつもりです。現在このプロジェクトはほぼ完成しており、細かな調整を残すのみです。ありがとうございます。
145デフォルトの名無しさん (アークセー Sx47-4vBw)
2018/11/22(木) 13:18:43.76ID:mBJlqzKNx
>>144
まずは問題解決とプロジェクト完了おめでとうございます。

分かってると思いますが、ここは教えたがりな人、説教したい人、煽りたい人がマウントとり合うだけのスレなので、あまり細かいことは気にせず自分に有用な情報だけ吸収してくださいな。
146デフォルトの名無しさん (ワッチョイ e3ea-jnO+)
2018/11/22(木) 13:19:52.16ID:xeK3mO2I0
すごいゲスパーだけど
式1 式2 が実際にはハードからの電圧出力やリレーのON/OFFで
オシレータか分周器書いててオシロで当たったら、どうもデューティーがおかしい
ってなったのかな
147デフォルトの名無しさん (アウアウエー Sadf-rBFN)
2018/11/22(木) 13:46:54.48ID:Q57x8lAMa
Cは型を意識しないとどうしようもないという所はあるよね。
なので、そもそも型変換が入る余地のない、キャストに頼らないコードを書くという強い意志を持つのが大事なんじゃろうと思う。
148デフォルトの名無しさん (ワッチョイ cf81-zhOP)
2018/11/22(木) 15:41:36.24ID:QPQE3Of30
getchar 「型変換?要らないよね?」
149デフォルトの名無しさん (ワッチョイ 3308-zhOP)
2018/11/22(木) 21:29:32.36ID:53EGOrV/0
>>141
おまえの指摘が間違っているかどうか以前に
おまえは何を指摘したんだ?
たとえば「10分」という物理量はどういう計算で出てきた値だ?
テキトーすぎて相手するに値しないんだが
150デフォルトの名無しさん (ワッチョイ 034f-1YVs)
2018/11/22(木) 22:08:04.59ID:/6bysR4g0
>>143
> ワッチョイ ff12
回答無し
だからゆとりは駄目なんだよ

>>149
> ワッチョイ 3308
同上
151デフォルトの名無しさん (ワッチョイ 034f-1YVs)
2018/11/22(木) 22:09:04.67ID:/6bysR4g0
>>144
> ハードウェア言語で使われる変数(フリップ・フロップ)の動作遷移を意識した変数名にした方が私には分かり易いのです。
他文書と同期したいのならコメントに残せ。
ソフトウェアはソフトウェアだけで評価出来ないと管理上問題だ。(大体において同期が取れずに意味不明になる)
そもそもその部分、ハード叩いている感じでもないし。
それ以前にFFの状態遷移でSHIFTも無いと思うが。

> 命令文 = 小文字、引数,変数 = 大文字 と決めています。
これはマジで今すぐ直せ。
大文字にするのは目立たせる為であって、RAMが64バイトしかないような環境ならさておき、
今時ただの変数なんて目立ったら余計に邪魔になるだけ。今時白黒端末もないから、普通は、
命令文(キーワード)=青(色付き)、引数/変数=黒(色無し)、マクロ=全大文字、と大体相場が決まっている。
(そもそもverilogにも大文字文化はない。VHDLには多少有った気もするが…)

> Cの参考書
Cに限らず、プログラミング全般で、入門書/参考書はゴミだ。理由は筆者自身がゴミだから。
海外の参考書は一部達人が書いている物があって、それは参考になるらしいが、俺はよくは知らん。
(ただこれも、昔からプログラミングをやっているのなら常識のはずだが)

> この事象が起こりうるという説明
int/int は端数切り捨てで商のみが返る、というのはCの仕様だ。

> 変数を全て大文字にしているのは単純に昔からの癖です。
言っちゃ悪いが、君は「昔から」というほどプログラミングをやってないはずだ。
昔からやってるなら、マイコンで割り算やfloatを使うこと自体が無いし、
Cの割り算の仕様を知らないこともない。
そしてそのソフトウェアの完成度で良しと出来ること自体が(普通のプログラマからすると)キチガイじみてる。
確実に事故るぞ。
152デフォルトの名無しさん (ワッチョイ 034f-1YVs)
2018/11/22(木) 22:10:24.36ID:/6bysR4g0
>>144(続き)
ただしあまり反発もないところを見ると、ただのゆとり(若者)でもないらしい。
仮に全てを満足出来るプロフィールを定義すると以下となるが、合ってるのか?
・全て大文字とはCOBOL/FORTRAN/BASIC/アセンブラの世界。つまりC以前からであり、プログラミング歴自体は長い。
・Cの基本的仕様を知らない=Cは普段使いではない。
・変数が大文字の方が都合がいい=RAMがほぼ無い4bitマイコン等だとあり得る。この場合、ほぼアセンブラ。
・基本ハードウェア+ちょいソフト(アセンブラ)程度で、今時ならIoTの末端の各センサ等、
 定期的に計測値を報告するようなプログラムはずっとやってきている。
 WatchDogTimerやPowerOnResetを使いまくりなのでプログラム自体はポンコツでもいい。
だとすると、下からCを攻めてきているわけだが、これはほぼ無いパターンだから最初にそれを言うべきだ。

この場合、参考書はK&Rのみで、それ以外は全部ゴミだから捨てていい。
割り算の仕様なら、P13にもろに書いてある。
> Cでは他の多くの言語と同様、整数の割り算では切り捨てが行われて、
> 小数部が切り捨てられてしまうからである。(K&R第2版P13)
K&Rは「既にプログラミング出来る人がCを入門する用」に書いてあるから、
プログラミング自体の入門者には不向きだが、君の場合は最適だ。
一応言っておくが、ハロワがP7、コメントがP11、のP13な。本当にど頭に書いてある。

アセンブラの範囲を超えてCに踏み込んできたのなら、C流の管理方法に合わせた方がいい。
アセンブラの管理方法は、結局はアセンブラの規模用でしかなく、Cの規模には対応しづらい。
アセンブラ修得済みの人がCを修得するのは容易い。
ただし既に言ったように、世の中の「入門書」はそういう人向けではないから、K&R以外は読まなくていい。

とりあえずK&Rを頭から全部一通り読め。それでだいぶ状況が変わるはずだ。
153デフォルトの名無しさん (ブーイモ MMe7-XNyg)
2018/11/22(木) 22:12:40.41ID:BRQlwM1LM
でもvoid君はC言語詳しくないじゃん
154デフォルトの名無しさん (ワッチョイ 034f-1YVs)
2018/11/22(木) 22:14:51.83ID:/6bysR4g0
>>147
× キャストに頼らないコードを書く
○ 『暗黙の』キャストに頼らないコードを書く

だろ。ただ、intをfloatに突っ込むと『精度が落ちる』と警告が出るはずだが。
(少なくともVC++ではそう。gccはこの辺甘々だから駄目かもしれんが)
キャスト自体が悪、というのはC++(というより型安全)の思想だが、
現実的にはCでは『明示的な』キャスト無しではまともに書けない。
ただし、『暗黙的な』キャストは当然無しには出来る。
155デフォルトの名無しさん (ワッチョイ cf6e-zhOP)
2018/11/22(木) 23:05:52.65ID:Qbh1A67u0
>>150
10分という物理量と3308はどういう関係だ?
テキトーすぎて相手するに値しないんだが
156デフォルトの名無しさん (ドコグロ MMdf-I6zH)
2018/11/22(木) 23:32:58.42ID:y7NAvobyM
>>154
暗黙のキャスト?
意味わからん造語で語られても困るわ
157デフォルトの名無しさん (ワッチョイ cf6e-zhOP)
2018/11/22(木) 23:47:40.88ID:Qbh1A67u0
>>154
> 現実的にはCでは『明示的な』キャスト無しではまともに書けない。

ほうほう
暗黙変換を明示的なキャストにすることで
どんな「現実的」なコードが書けるんだ? おいバカ
158 ◆QZaw55cn4c (ワッチョイ 7f60-4xdr)
2018/11/23(金) 00:18:09.13ID:e/BZMkzC0
>>154, >>156
>暗黙のキャスト
integral promotion?
それとも bcc用語では暗黙の型変換のことですか?
159デフォルトの名無しさん (ワッチョイ 8fbe-pqc8)
2018/11/24(土) 09:23:26.40ID:I8hvszb00
型変換って割とおこなうとは思うけどなぁ。
160デフォルトの名無しさん (ワッチョイ cf61-9gvt)
2018/11/25(日) 05:17:32.88ID:iX9BTM1g0
確かにintをflotに突っ込むのは型だけ変わるじゃなくてデータも変わるからなぁ
161デフォルトの名無しさん (ワッチョイ 8fbe-pqc8)
2018/11/25(日) 08:02:06.68ID:rsPEFWOD0
<stdint.h>とかのint8_tとかって
「プログラマが気が付かない整数型に関するミスをコンパイルする段階で(エラーとして)発見できる」
以外に使い道ってか利点ってないよね?
int8_tで定義することでプログラムの速度が上がったりはしないと思ってるんだけど 間違ってる?
162デフォルトの名無しさん (ワッチョイ 83b3-4vBw)
2018/11/25(日) 08:15:12.05ID:Euo5liwn0
>>161
速度も上がらないし、そもそもコンパイル時にエラーとしても発見できない。
ただ単にコーディング時や人のソースを読む時にビット数が明確に認識できるだけ。
163デフォルトの名無しさん (ワッチョイ 63b3-jnO+)
2018/11/25(日) 08:19:43.85ID:8Uvv4MpL0
(通信プロトコル等の)外的要因でビット数が規定されているものを操作するコードを書くとき
164デフォルトの名無しさん (ワッチョイ 8fbe-pqc8)
2018/11/25(日) 09:24:44.24ID:rsPEFWOD0
>>162
例えばすごく初歩的なんだけど
uint8_t型で宣言したループカウンタが500回回ったらコンパイルの時に警告でるよね。
……と思って今試したら警告レベルを最大にしてやっと出たわ。

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

int
main(void)
{
for (uint_fast8_t cnt = 0; cnt < 500; cnt++) {
printf("%d\n", cnt);
}

exit(EXIT_SUCCESS);
}
これを
$ gcc -std=c99 -Wall -Wextra -Wpedantic -o inttest ./inttest.c
でやっと注意してくれる。
あれ? なんかもっと良い感じに撥ねられて(不注意な自分には)便利だなと思ったんだが,勘違いだったようだw
165デフォルトの名無しさん (ブーイモ MM1f-XNyg)
2018/11/25(日) 09:53:54.15ID:2C+NPzGbM
>>161
利点というか、1byteが8bitでない環境もあるので、ポータブルなコードを書く場合は他に選択肢がないと思う
166デフォルトの名無しさん (アウアウウー Sa27-rBFN)
2018/11/25(日) 09:55:02.80ID:jMSg79gEa
それはどちらかというと静的解析の仕事じゃないかなあ。
167デフォルトの名無しさん (ワッチョイ 034f-1YVs)
2018/11/25(日) 10:08:42.57ID:i1TAIE2a0
>>164
> ……と思って今試したら警告レベルを最大にしてやっと出たわ。
最大にすれば出るのだから『便利』と言っていい。

警告レベルは自分に合わせて使うものだ。
判断する能力がないのなら、とりあえず最大にしとけ。


>>161
演算速度自体は上がらない。むしろ符号拡張等が必要になり落ちる。(事が多い)
これは通常はintがCPU内部のALU幅と同じ(つまり最速)に設定される為だ。
ただしフットプリントは減る為、キャッシュヒット率が上がり、結果的に速くなることはある。

よく分からなければ、基本的に全部 int で、明確に必要なところだけその他を使えばいい。
(同一ソースでint幅が異なる複数の処理系で動かすというような場合を除く)
168デフォルトの名無しさん (ワッチョイ 8fbe-pqc8)
2018/11/25(日) 10:15:56.81ID:rsPEFWOD0
>>167
ありがとう。
169デフォルトの名無しさん (ワッチョイ cf3f-zhOP)
2018/11/25(日) 12:58:50.32ID:FjBIbaie0
int8_tとか使おうとしているやつ相手に、とりあえずint使っとけとか
どんだけドヤアホなんだよ
170デフォルトの名無しさん (ドコグロ MM87-I6zH)
2018/11/25(日) 13:25:51.40ID:dxJC+hBBM
>>169
いやint8_tの利点を聞いてる時点で>>167に分があると思うぞ
171デフォルトの名無しさん (アウアウカー Sa87-rBFN)
2018/11/25(日) 14:26:54.92ID:uM/ivlZCa
現時的にはちょっとデータを保存するとかネットワーク越しに外に送るとかした時点でサイズは意識することになるから、intが無難とも言い難い。
意識できてればなんでもいいんだが…
172デフォルトの名無しさん (ワッチョイ cf61-9gvt)
2018/11/25(日) 15:22:16.95ID:iX9BTM1g0
構造体とかにint_8が入ってたらintに入れて計算してint_8に入れて
戻すのがいいのか?
173デフォルトの名無しさん (ワッチョイ cf3f-zhOP)
2018/11/25(日) 16:05:11.73ID:FjBIbaie0
よくねえよ
ナローイングになっちまう
174デフォルトの名無しさん (ワッチョイ e3f2-/G1A)
2018/11/25(日) 16:11:29.88ID:x3zl9kFB0
計算の途中でint8_tの範囲外になる可能性があるかどうかと範囲外になった場合にどうしたいか次第だろ。
175デフォルトの名無しさん (ワッチョイ cf61-9gvt)
2018/11/25(日) 17:07:06.68ID:iX9BTM1g0
int32_tが最速だけれどsize_tと一緒に使うと型変換がいることで遅くなるんだよな
176デフォルトの名無しさん (スッップ Sd1f-TL5M)
2018/11/25(日) 17:16:56.38ID:XilAUoVOd
>>175
何が最速化は環境によるのでは?
少なくともfast型のほうが早そうだが
177デフォルトの名無しさん (ワッチョイ c364-m15j)
2018/11/25(日) 20:07:43.14ID:74eaLfxV0
ごめんバカみたいな質問なんだけど
その「遅い」っていうのは実行時の速度だよね。コンパイルが遅いってことじゃないよね。
だとすると8の倍数のbit数のCPUでint<8×N>型を使ってもタイムロスって起きない気がするんだけど……。
178デフォルトの名無しさん (アウアウカー Sa87-rBFN)
2018/11/25(日) 21:05:52.83ID:6ChQfOQca
メモリに詰めて格納してると嫌な感じ
179デフォルトの名無しさん (アウアウカー Sa87-ZX3B)
2018/11/26(月) 06:54:36.44ID:xHCVYRaTa
>>177
そういうのはSSE命令とか使うXMMレジスタ使う話。
Intelコンパイラでも無いとアセンブラの話。

単純に上位ビットを0で埋める。(分遅くなる)

ただ、CPUアーキテクチャにも依存する。
95年当時はpentiumは32ビットCPUだが16ビットの方が速く、pentiumⅡ以降で32ビットの方が速くなった。
Core2は32ビットが速く、64ビットは遅く、Core iから64ビットの方が速くなった。
(ハードレベルでも、ただ実装しただけと、最適化したのとある)
180デフォルトの名無しさん (スフッ Sd1f-TETZ)
2018/11/26(月) 14:44:44.56ID:00kzfg0Id
encode.exe
PGM 形式の画像ファイルを入力に与え,Run Length 法によって圧縮したデータを出力す る
decode.exe
encode.exe で圧縮したデータを入力に与え,PGM 形式の画像ファイルを出力する。
これをc言語で書くにはどうすればいいですか?
osはUnix開発環境はMSYS2です。
181デフォルトの名無しさん (アークセー Sx47-4vBw)
2018/11/26(月) 15:15:00.32ID:t9INuUY1x
ランレングスと画像フォーマットは何ら関係ないよ。
てかもしかしてランレングスのコードそのものを教えてもらうつもり?
学校の課題は自分でやりな。
182デフォルトの名無しさん (スフッ Sd1f-TETZ)
2018/11/26(月) 15:19:44.48ID:00kzfg0Id
コードはかけたのですがエラーが出ないのに圧縮するとデータサイズが大きくなるはずなのに小さくなります。それがわからないです。
183デフォルトの名無しさん (アークセー Sx47-4vBw)
2018/11/26(月) 15:25:50.47ID:t9INuUY1x
>>182
私はあなたの言ってることが分からないです。
184デフォルトの名無しさん (アウアウウー Sa27-ml8p)
2018/11/26(月) 15:27:58.32ID:mDHVgMsLa
元のファイルと出来上がったファイルの中身を16進ダンプしたりして調べれば良いのでは?
それとプログラムもよーく読み直してみな。
185デフォルトの名無しさん (アークセー Sx47-4vBw)
2018/11/26(月) 15:36:52.43ID:t9INuUY1x
>>182
圧縮したらデータサイズが小さくなったって悩んでるんだよね?
自分で何言ってるか分かってる??
布団も圧縮したら小さくなるぜ。
186デフォルトの名無しさん (アウアウウー Sa27-ml8p)
2018/11/26(月) 15:44:04.38ID:mDHVgMsLa
Run Length は連続データが少ないと大きくなる事があるからその辺は特に不思議はない。
187デフォルトの名無しさん (アウアウカー Sa87-rBFN)
2018/11/26(月) 15:45:34.47ID:n96xVY2na
でかくなる様なデータで確かめる課題かね?
ちょっとそのまんま見てみたいね
188デフォルトの名無しさん (アークセー Sx47-4vBw)
2018/11/26(月) 15:47:36.67ID:t9INuUY1x
>>186
ああ、単純な実装なら確かにそうね。
189デフォルトの名無しさん (ワッチョイ 63b3-jnO+)
2018/11/26(月) 18:55:01.13ID:XECRUPoh0
PGMのランレングスは何かしら工夫してんのかな
(行単位で生列とRLを切り替えできるとか? 連続性の強い色空間を選択してるとか?)
190デフォルトの名無しさん (ワッチョイ 63b3-jnO+)
2018/11/26(月) 19:58:24.72ID:XECRUPoh0
あー ちゃんと読んでなかった 189 は無しで
191デフォルトの名無しさん (ワッチョイ c380-1YVs)
2018/11/26(月) 22:38:09.76ID:404pxOU70
0バイトのデータを圧縮すると間違いなく大きくなる
192デフォルトの名無しさん (ワッチョイ cf81-zhOP)
2018/11/26(月) 22:54:04.60ID:9UWiUoMZ0
虚数空間にデータを書き移すから、さらに小さくなる、かも
193デフォルトの名無しさん (ワッチョイ 63b3-jnO+)
2018/11/26(月) 22:58:35.51ID:XECRUPoh0
ホログラフィーみたいに3次元情報?が2次元に畳み込まれてなんて話ではないんだろう
194デフォルトの名無しさん (アウアウウー Sa27-rBFN)
2018/11/26(月) 23:10:34.44ID:4Tpz9uQJa
単に乱数とかね
195デフォルトの名無しさん (ワッチョイ cf81-zhOP)
2018/11/26(月) 23:21:21.04ID:9UWiUoMZ0
任意のデータをその半分に出来る圧縮技法、誰か考えて
196デフォルトの名無しさん (ワッチョイ 33ab-kvwJ)
2018/11/27(火) 00:17:38.39ID:sRUlwxGC0
SERNをハックしてLHCでマイクロブラックホールを作ってどうたらこうたらするとかなり圧縮できるよ
197デフォルトの名無しさん (ブーイモ MMff-X8Q6)
2018/11/27(火) 00:21:47.09ID:E9za3JrpM
綴りを間違えるとホワイトホールができちゃうかもしれんぞ
198デフォルトの名無しさん (ワッチョイ cf81-zhOP)
2018/11/27(火) 00:22:04.16ID:ugyzpzqZ0
圧縮は出来ても、復元が出来なさそうw
199デフォルトの名無しさん (ワッチョイ c364-m15j)
2018/11/27(火) 01:23:33.76ID:UHpiRGCo0
マジレスすると情報っていうのは消失しないと考えられているので
BH表面にエネルギー運動量テンソルの波動として,飲み込まれた物質郡の属性
(電荷など)が記録される……筈w
少なくとも現状の場の量子論と重力宇宙論ではそういう結論が出てる。
C言語とは関係ないけど,BHを記憶装置として用いるっていう考えは
突拍子もないけど理論的には可能だよねぇ,上記の理屈が正しいとすると。
200デフォルトの名無しさん (ワッチョイ 6f9f-KQkZ)
2018/11/27(火) 01:29:33.86ID:IxTjeZ9T0
みんなが何を言っているのかよくわからない
201デフォルトの名無しさん (ワッチョイ 7ff9-/93F)
2018/11/27(火) 02:18:13.33ID:enNfKuoe0
C言語でok
202デフォルトの名無しさん (ワッチョイ 6f9b-nNS8)
2018/11/27(火) 22:26:43.87ID:/aKqcH8H0
>>195
例えば100bitの長さのデータは全部で2^100種類作ることができる
50bitの長さのデータは全部で2^50種類作ることができる

任意のデータを半分に圧縮できる方法があるとして
100bitで作れる2^100種類のデータをすべて圧縮したなら
50bitの長さで2^100種類の異なるデータができなくてはいけないがそれは不可能
203デフォルトの名無しさん (ワッチョイ 6f9f-zhOP)
2018/11/28(水) 01:13:46.19ID:BkKDQWNJ0
いやいや、ちょっと待て。ここは発想の転換が必要だ。例えば8インチのフロッピーディスクから3.5インチの

いや、なんでもない。みんなには内緒にしておいてくれ。
204デフォルトの名無しさん (ワッチョイ ff2b-pqc8)
2018/11/28(水) 02:27:03.19ID:iOF+GVq50
「任意の」データを半分に圧縮できるとすると
圧縮した後のデータもさらに半分に圧縮できるはず
そうやって圧縮を繰り返せば最後には全てのデータは1ビットになる
よってそのような圧縮法がないことは明らか
可逆でないならそれでもいいかw
205デフォルトの名無しさん (ワッチョイ c364-m15j)
2018/11/28(水) 05:46:42.41ID:N04UITTm0
しかしソースコードとかって圧縮率高いよね。
やっぱり同じような文字が続いたりインデントに空白文字が続いたりするからだろうか。
206デフォルトの名無しさん (アウアウウー Sa27-9MLK)
2018/11/28(水) 07:08:14.21ID:82iiMHmWa
コルモゴロフの複雑性もあります
207デフォルトの名無しさん (ワッチョイ ffd2-f63u)
2018/11/28(水) 09:24:07.52ID:seMAmMUm0
そこでTHCompですよ
208デフォルトの名無しさん (ワッチョイ e3ea-jnO+)
2018/11/28(水) 09:40:55.66ID:0XeeIlyH0
情報のエントロピー
209デフォルトの名無しさん (アウアウクー MM47-Zoqv)
2018/11/28(水) 13:43:56.99ID:rECr01ZDM
今から趣味でプログラミング始めます!激励してください!!
210デフォルトの名無しさん (ワッチョイ c364-m15j)
2018/11/28(水) 17:27:07.00ID:N04UITTm0
悪いこと言わないからPython3やれ
211デフォルトの名無しさん (ブーイモ MMe7-X8Q6)
2018/11/28(水) 17:57:49.24ID:Vqd4vFOqM
趣味で初プログラミングなら、俺からもpythonを勧める。
GUIが手軽だとモチベーション違うよ。
212デフォルトの名無しさん (アウアウクー MM47-Zoqv)
2018/11/28(水) 18:00:54.28ID:rECr01ZDM
分かった!いやよくわかんないけどそっちから始める!
XCodeでできるかな、ありがとう!
213デフォルトの名無しさん (ワッチョイ c364-m15j)
2018/11/28(水) 18:48:28.91ID:N04UITTm0
$ brew install python
とやって
$ python
これで起動する。もうスレチだし「macOS Python3」とかでググれ。
214デフォルトの名無しさん (アウアウウー Sa27-ml8p)
2018/11/28(水) 19:51:31.92ID:wHjpMIAFa
Kotlinもよろしく
215デフォルトの名無しさん (ブーイモ MMe7-X8Q6)
2018/11/28(水) 20:05:07.50ID:Vqd4vFOqM
まだマイナーすぎ。入門書があふれてきたら推すよ
216デフォルトの名無しさん (アウアウウー Sa27-/Yu/)
2018/11/28(水) 22:31:15.42ID:xsmtECg3a
https://bituse.info/c/kadai/44

上記のサイトなどを参考に
簡単な九九の表を作ると

1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15...
...
...
(略)


このようになると思いますが、

隣の数字を参照にして足して
3 5 7 9 11 13 15 17
6 10 14 18 22 26 30 34
9 15 21 27 33...
...
...
(略)


と、表示するには上記のサイトの様なプログラムをどのようにすれば良いのでしょうか?
宜しくお願いします。
217デフォルトの名無しさん (ワッチョイ 034f-1YVs)
2018/11/28(水) 22:37:30.42ID:IOIePrN/0
>>216
死ね
218デフォルトの名無しさん (ワッチョイ 63b3-jnO+)
2018/11/28(水) 23:13:58.25ID:MBR3DrMT0
puts("3 5 7 9 11 13 15 17\n");
puts("6 10 14 18 22 26 30 34\n");
puts("9 15 21 27 33...\n");
219デフォルトの名無しさん (ササクッテロ Sp47-FLrG)
2018/11/28(水) 23:24:49.65ID:30WXuBf5p
>>218
puts は改行するので、文字列の末尾に \n を付けると2回改行することになる
220デフォルトの名無しさん (ワッチョイ 63b3-jnO+)
2018/11/28(水) 23:26:32.45ID:MBR3DrMT0
あっー  指摘ありがと
221デフォルトの名無しさん (アウアウオー Sa92-LBlS)
2018/11/29(木) 02:39:17.93ID:d0mF96D3a
>>216

#include <stdio.h>
int main(void){
int i, j, k, n, m;
n = 0;
m = 0;
for (i = 1; i <= 9; i++){
n += 3;
m += 2;
k = n;
printf("%3d", k);
for (j = 1; j <= 9; j++){
k = k + m;
printf(" %3d", k);
}
printf("\n");
}
return 0;
}
222デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 04:25:22.53ID:+QhJBOyD0
int main() {
char *ary[] = { "AAAA" , "BBBB" , "CCCC" };
printf("%s\n%s\n%s\n" , ary[0], ary[1], ary[2]);
printf("%x\n%x\n%x\n" , ary[0] , ary[1] , ary[2]);
printf("%x\n%x\n%x\n" , &ary[0] , &ary[1] , &ary[2]);
return 0;
}
実行結果
AAAA
BBBB
CCCC
405064
405069
40506e
61ff24
61ff28
61ff2c

っていうのでよくわからなくなったんですが
0061FF24==00405064で00405064==41414141
なのに、同じary[n]で参照?してるアドレスが違うのは%sが特別だからですか?
それと、AAAA,BBBB,CCCCはどの変数にも格納されていなくて、ただポインタがその文字列たちを指しているっていう理解であってます?
*がよくわからない・・・・・
223デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 04:37:33.83ID:+QhJBOyD0
ああ直接ポインタを作っててそれで変数がある必要もないのかな?
AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。みたいなのってCでできるんですか?
224デフォルトの名無しさん (ワッチョイ a7c3-o5Pc)
2018/11/29(木) 05:10:38.21ID:ljP5qN1x0
any[]には各文字列のアドレスが格納される。文字列へのポインターの配列。
%sはポインターが指すアドレスの文字列を、%xはポインターに格納されたアドレスを表示する。
&any[]とすると、ポインターそのもののアドレスを取得して表示する。

61ff24 -> 405064 -> "AAAA"

みたいになってる。
225デフォルトの名無しさん (ワッチョイ a7c3-o5Pc)
2018/11/29(木) 05:25:57.02ID:ljP5qN1x0
一つのポインターでオフセットを指定することはできるけど、
"AAAA"はAAAAの4byteではなくて、文字列の終端である0を含めた5byteになる。

char *any = "AAAABBBBCCCC";

こういうイメージで+4や+8でアクセスしようとしたら
%sで表示したとき意図する結果にならないかもしれない。
文字列として扱わなければ問題ないです。

char *any = "AAAA\0BBBB\0CCCC";

こんな書き方もできますが、*を理解したほうがよいと思います。
アドレスやオフセットの概念は理解しているようですので。
226デフォルトの名無しさん (ワッチョイ 2393-abuG)
2018/11/29(木) 07:00:11.93ID:f12HiZt90
>>222 の実行結果を解釈すると...

文字列 "AAAA" "BBBB" "CCCC" の実体は 0x405064 から格納されていて、
16進ダンプだと
0x405064: 41 41 41 41 00 ; {'A', 'A', 'A', 'A', '\0'}
0x405069: 42 42 42 42 00 ; {'B', 'B', 'B', 'B', '\0'}
0x40506e: 43 43 43 43 00 ; {'C', 'C', 'C', 'C', '\0'}
という具合に(アラインメントのためのパディングなしに)詰め込まれている。
行分けせずに
0x405064: 41 41 41 41 00 42 42 42 42 00 43 43 43 43 00
と書けば「詰め込む」のイメージが分かりやすいかも。

charへのポインタの配列 ary[] は 0x61ff24 から配置されていて
番地: 0x61ff24 == &ary[0], 値: 0x00405064 == ary[0] (== "AAAA"の先頭番地)
番地: 0x61ff28 == &ary[1], 値: 0x00405069 == ary[1] (== "BBBB"の先頭番地)
番地: 0x61ff2c == &ary[2], 値: 0x0040506e == ary[2] (== "CCCC"の先頭番地)


これで分からんかな。
ポインタが指す実体(文字列)の番地、その(文字列の)番地が格納された配列の値、
(値としてポインタが格納された)配列要素の番地。
227デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/29(木) 09:05:40.33ID:Msn7clch0
どうでもいいけど略すならaryじゃなくて,arrでは。
228デフォルトの名無しさん (アークセー Sx3b-Gcmv)
2018/11/29(木) 09:24:21.59ID:b4PauqdMx
>>227
aryもまれによく見る。
229デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 12:11:40.55ID:+QhJBOyD0
ありがとうございます。
読んでみてなんとなくは理解できるようになりました

>>225
NULLのことはすっかり忘れてました
*を理解できるように頑張ります、ご丁寧にありがとうございました。
230デフォルトの名無しさん (ワッチョイ 4e80-gjgg)
2018/11/29(木) 16:00:56.19ID:Pq9K3tWa0
>>216-221
Ruby で作った

NUMBERS = ( 1..5 ).to_a
Count = NUMBERS.length

# 九九の表、Times Table ( Multiplication table ) を作る。
# map は1次元配列を作るので、each_slice で、2次元配列にする
Multiplication_table = NUMBERS.product( NUMBERS ).map { | x, y | x * y }
.each_slice( Count ).to_a

result = [ ]

Multiplication_table.each do | ary | # 1行ずつ処理する
result.push ary.each_cons( 2 ).map { | x, y | x + y } # 隣同士を足す
end

p result

結果
[[3, 5, 7, 9], [6, 10, 14, 18], [9, 15, 21, 27], [12, 20, 28, 36], [15, 25, 35, 45]]
231デフォルトの名無しさん (アメ MMff-egAi)
2018/11/29(木) 16:15:48.88ID:qd4rCcG0M
>>230
Rubyすげぇ~!!!

https://gigazine.net/news/20181116-top-programming-languages-2018/
https://www.softantenna.com/wp/software/the-state-of-the-octoverse-2018/
https://www.softantenna.com/wp/software/ieee-spectrum-top-programming-languages-2018/
https://findy-code.io/engineer-lab/github-programming-language-ranking

大人気Ruby!
Ruby大人気!!
232デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/29(木) 16:20:18.55ID:Msn7clch0
>>231
やめてさしあげろw

まあ擁護するなら人気のありなしで言語の優劣は測れないと思うけどね。
IOなんてドマイナーだけど俺は好きだし,素晴しい言語だと思っている。
なおRuby
233デフォルトの名無しさん (ワッチョイ a7c3-o5Pc)
2018/11/29(木) 18:14:40.72ID:ljP5qN1x0
(´-`).oO(aryだったのね……)
234デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/29(木) 18:49:51.71ID:Msn7clch0
いやarrやろ(しつこい)
235デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
2018/11/29(木) 19:09:36.82ID:8tueZiBHa
array
236デフォルトの名無しさん (ワッチョイ 0bb3-Gcmv)
2018/11/29(木) 19:12:17.70ID:sIB7nB920
いいやaryもまれによく見る。
俺は省略せずarray派だが。
237デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/29(木) 19:19:19.48ID:Msn7clch0
まあarrayくらい省略するなって話よな
creatじゃないんだからw
238デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
2018/11/29(木) 19:46:28.81ID:8tueZiBHa
>>236
「まれによく見る」とは?
239デフォルトの名無しさん (ワッチョイ 83b3-YERU)
2018/11/29(木) 19:51:20.93ID:lt3dDpp60
総体としての頻度は稀だが、とある人の書いたソースには悉く ary として書かれており、
その書いた人というスコープ内においては良く見る
240デフォルトの名無しさん (ワッチョイ 0bb3-Gcmv)
2018/11/29(木) 19:53:37.10ID:sIB7nB920
>>238
weblio辞書より

まれによくある
別表記:稀によくある、稀に良くある

起こり得る事柄を形容して用いられることのある言い回し。
滑稽な表現であるが、あからさまな形容矛盾であり、日本語としては意味をなさない。
「ブロント語」として広まったインターネットスラング。

「まれによくある」の語のニュアンスは、使用者や使用場面によって異なるといえるが、
「頻繁に起こるとも言えるし、めったに起きないとも言える」といった意味合いだったり、「特定の人においてはよくあるが、その他の人には起こらない」といった意味合いだったり、あるいは、いわゆる「あるあるネタ」を指していたりする。
241デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 20:38:21.77ID:+QhJBOyD0
ちなみに>>222のやつは入門サイトにあったやつを少しいじったやつです
242デフォルトの名無しさん (アウアウウー Sa47-gzl5)
2018/11/29(木) 21:38:47.98ID:FncUCYw3a
スッキリわかるC言語と苦しんで覚えるC言語
どちらで勉強するか迷ってるんですがどっちがいいと思いますか?
243 ◆QZaw55cn4c (ワッチョイ ba60-4R1R)
2018/11/29(木) 22:00:55.64ID:yDZ234lo0
>>242
>スッキリわかるC言語
胡散臭いです…

>苦しんで覚えるC言語
正直で好感を持てる題名ですね
244デフォルトの名無しさん (ワッチョイ baf9-+PYh)
2018/11/29(木) 22:01:35.59ID:kX/wXhND0
>>242
立ち読みして自分にとって説明が理解しやすいと思った方を選んだら?
245デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 22:30:54.22ID:+QhJBOyD0
苦CのほうはWebにサイトがあるのでそっちを見ては?
246デフォルトの名無しさん (アウアウウー Sa47-gzl5)
2018/11/29(木) 22:40:45.52ID:FncUCYw3a
まだ新しいスッキリわかるC言語をベースにウェブで分からない時に苦しーも見る方針に決めました
皆さんありがとうございます
247デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/11/29(木) 22:48:01.10ID:TPe/tu+/0
>>241
IDEを使ってメモリウインドウから>>226の内容を納得いくまで確認しろ。

> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。みたいなのってCでできるんですか?
それを222で君がやっているように見えるが。
書き方が気に入らないのなら、以下でも多分行ける。
for (int i=0;i<3;i++) printf("%s", *(ary+i));

他言語とは文字列の扱いが異なる。Cの方がより原始的で、はっきり言って使いにくい。
他言語:文字は長さ1の文字列
C言語:文字はcharで、文字列はcharの配列

ただ、char周りなんてどうせ大して使わないから飛ばしていい。さらに言うと、
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。
なんてのはbotとかでも作るわけでなければ使わない。
printfべた書きで大体事足りる。
248デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 23:07:20.28ID:+QhJBOyD0
>>247
一応プロセスメモリエディタとか使いながらやってたんですよ、それでも混乱するので聞きました。
多言語はやったことないのでよくわかりませんが、高級言語のよくわからずに使う感じが苦手なので、むしろ原始的なのは好きです。

> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。
っていうのがbotを作るうえで必要というのは初めて知りましたが、botは作りたいと思ってました。
249デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/11/30(金) 00:06:17.84ID:tn7d6mNM0
>>248
> プロセスメモリエディタ
なんじゃそりゃ?と思ってみてみたが、どっちかというとハッキングツールだな。
マジな話、IDE使え。個人開発レベルの糞ツールとは次元が違うから。
俺はVSがいいと思うが。
言い忘れてたが当然return文にブレークポイントを当てて止めて見るんだよ。

というか他に何言語やってるんだ?
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。
これは全くの初心者の発想ではないはず。
明らかに他言語ではこう書ける、これをCでやりたい、というように読めるが。

> っていうのがbotを作るうえで必要というのは初めて知りましたが
というか、文字列を配列に持って切換ながら使う=それらの文字列は同列に扱うべき、
という使い方をすることがほぼ無いんだよ。他の言語でも、アプリでも。
大体文字列なんてリテラルでその場で使って終わり、が殆どだ。
それ以前に、charを主として使うアプリ(bot含む)をCでやろうというのも間違いだが。

char出力は結局UIであって、どうせI/Oで引っかかるから、Cの優位性(速度)が生かせない。
そして原始的な分、生産性自体は悪いから、そのデメリットだけ受けてしまう。
AIbotとかで演算部分に相当速度が必要でない限り、スクリプト言語で作った方がいいと思うぞ。
この意味で、Cでの文字出力はほぼログ生成でしかなく、
だからこそ貧弱なライブラリでも間に合ってる訳だが。

> 高級言語のよくわからずに使う感じが苦手
いやこれは違う。
「余計なことを考えなくて済む」という意味で後発言語はよく出来てるんだよ。
まあこれはじきに分かるだろうさ。
250デフォルトの名無しさん (ワッチョイ 6a80-6Zjp)
2018/11/30(金) 01:05:40.46ID:qUT8id4/0
void君は相変わらずだな
251デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/30(金) 01:14:13.61ID:dHzryZqK0
プログラミングというより解析系に興味があっていろいろ調べてただけです。
Cのこともプログラミングのこともまだ全然わからないです
252デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/30(金) 01:40:17.87ID:ZZJKHSVT0
puts()関数とかの「s」ってストリングのsなんだね。
今までずっとputの三単現だと思ってたわw
253デフォルトの名無しさん (ワッチョイ 4e80-gjgg)
2018/11/30(金) 08:28:07.36ID:VjmtC3o00
>>242-246
スッキリJava は、250ページにも及ぶ、猿向けにオブジェクト指向を解説した、伝説の書。
単純な言語の文法書ではない

前半はフレームワークを使う人の立場で、後半はフレームワークを作る人の立場での解説。
だから初心者は、後半を読まなくてもよい

苦しんでC は、手順書。
14歳以下とか、中学生に教えるたぐいの本。手順を教えるだけ。
たいていのAndroid アプリの本と同じ

なぜ、こういうデザインパターンをするのかとか、概念の説明などはない。
漏れは、2時間で読める。
理解して考える要素がないから、ライトノベルと同じ
254デフォルトの名無しさん (ワッチョイ ff7b-egAi)
2018/11/30(金) 08:32:59.05ID:xQIq6Uyn0
理解して考える脳の無いRuby厨であった
255253 (ワッチョイ 4e80-gjgg)
2018/11/30(金) 08:36:47.97ID:VjmtC3o00
例えば、WEB+DB 106号の「実践 Android/iOS アプリ設計」を読んでみ

DI, MVVM, Flux とか、なぜこういうデザインパターンを使うのか、
自分で理解して考えないといけないから、こういう概念の話は難しい

デザインパターンを参考にして、Ruby などでいじくり回すのが、最も身につく。
ポインターのバグ取りに、時間を取られないし
256デフォルトの名無しさん (アウアウウー Sa47-7zod)
2018/11/30(金) 09:22:30.92ID:KWzr3gbka
DIって外部の設定を使いましょうって話なんですか?
257デフォルトの名無しさん (アウアウウー Sa47-gzl5)
2018/11/30(金) 09:39:20.17ID:vcs52++Va
>>253
スッキリわかるC言語はパズドラ作りながらC言語が学べるみたいです
258253 (ワッチョイ 4e80-gjgg)
2018/11/30(金) 10:35:00.21ID:VjmtC3o00
DI は、C++ の、p-impl パターン。
外部から、後に作られる、依存性を注入する

class A { new B(引数); }
class A { b = 構築メソッド }

上のように、クラスA 内で、直接B を作らず、
構築メソッドで、Bインスタンスを作る

例えば、クラスBの引数の変更が、クラスAに及ばないように、疎結合にしている。
クラスA・Bの作者が、同一でない場合に、効果が大きい

間接的に、Duck Typing, Interface を使う事で、インターフェース・構築メソッドが固定されるが、
同じ構築メソッドを使うことで、似たようなクラスを扱いやすい
259デフォルトの名無しさん (ワッチョイ a79f-C0zt)
2018/11/30(金) 14:03:17.31ID:wR5wJL4H0
苦Cから入ったけどつまずいて1年くらい何も触らなかったおもひで
260デフォルトの名無しさん (ワッチョイ 0ed6-C0zt)
2018/11/30(金) 16:07:52.38ID:cYaYTjx50
何もわからんうちからえり好みしないでK&R
これですんなり入れることが適性試験
261デフォルトの名無しさん (JP 0H63-X2R9)
2018/11/30(金) 17:16:53.52ID:fQi4U1HQH
ループとか条件分岐とか関数とかは別言語で十分習得したという前提でならそれでよい。
262デフォルトの名無しさん (ワッチョイ a79f-C0zt)
2018/11/30(金) 17:20:44.30ID:wR5wJL4H0
アセンブラの入門かじった程度でもイメージはつかめるしCで躓くことはかなり減ると思う
263デフォルトの名無しさん (ワッチョイ 0ed6-C0zt)
2018/11/30(金) 18:19:25.99ID:cYaYTjx50
俺はサブルーチンが関数な言語を1つも知らずにK&Rで憶えた
強いて言うならBASICのUSR関数くらいか
264デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
2018/11/30(金) 18:33:32.23ID:vx8Iixcxa
BASICの全てグローバル変数だとか行番号に苦しんでいた時に徐々にMS-DOSでCが使える状態になってきて、PC-98でMS-DOSが使えるようになり、TurboCとかも出て俺は救われた。

しかしその後UNIX関係の仕事になったのでCができて当たり前の環境になってしまった。
265デフォルトの名無しさん (ワッチョイ 0e30-C0zt)
2018/11/30(金) 19:07:15.02ID:m3TSK4YL0
大学でunixでCをやるようになってvim系の操作が気持ち悪かったからノリで大学を辞めた
人生で最悪の選択をしてしまった
266デフォルトの名無しさん (バットンキン MM77-Gcmv)
2018/11/30(金) 19:17:21.91ID:9hh85ykUM
>>263
BASICならGOSUBだろ。
267デフォルトの名無しさん (ワッチョイ 0ed6-C0zt)
2018/11/30(金) 21:49:44.97ID:cYaYTjx50
>>266
GOSUBが、どのように関数なんだ?
268デフォルトの名無しさん (ワッチョイ 4e81-C0zt)
2018/11/30(金) 22:03:56.69ID:5CDqtXe60
関数と言えるのは、DEF FN かな?
269 ◆QZaw55cn4c (ワッチョイ ba60-4R1R)
2018/11/30(金) 23:31:23.55ID:MkfLpznc0
>>253
>スッキリJava は、250ページにも及ぶ、猿向けにオブジェクト指向を解説した、伝説の書。
私が知りたいのはスッキリC++(そんなものが存在するのですか?限りなく胡散臭いですね)の話です
270 ◆QZaw55cn4c (ワッチョイ ba60-4R1R)
2018/11/30(金) 23:33:27.03ID:MkfLpznc0
>>258
おっしゃることがよくわからないので、ちょっと書いていただけますか?http://ideone.com
271デフォルトの名無しさん (ワッチョイ b3af-C0zt)
2018/11/30(金) 23:34:56.47ID:PIchVJHi0
#define C Java
272 ◆QZaw55cn4c (ワッチョイ ba60-4R1R)
2018/11/30(金) 23:50:06.20ID:MkfLpznc0
>>263
下準備にはPEEK/POKEも重要
私は CALL で呼んでいた記憶がありますが、もしかするとNとN88とN88(86)とでは違っていたかもしれません…
273デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/12/01(土) 07:43:03.30ID:7EJdQB2R0
PC6001でBASICを覚えてPLAY,SOUNDで音楽作ってたな
PSGの音を聞くだけで懐かしい気分になる
そしてMSXでMSX-Cを覚えた
cursesがあったからローグもどきのゲーム作って遊んでたよ
274デフォルトの名無しさん (ワッチョイ 1761-o5Pc)
2018/12/01(土) 07:47:36.67ID:+NY+xI8A0
サブルーチンって用語はもう消えた?
275デフォルトの名無しさん (ワッチョイ 9ab3-TLTW)
2018/12/01(土) 09:16:07.78ID:4Hoi4/y50
C言語以降関数と手続きを区別しない言語が増えたこととOOPでは一部がメソッドと呼ばれるようになったので使用頻度は下がったな
なくなってはいないけど
276デフォルトの名無しさん (ワッチョイ 2393-abuG)
2018/12/01(土) 09:27:06.02ID:TOuK5lWF0
関数と手続きを総称して、「メインルーチン」に対して「サブルーチン」って
言い方なら今でも使うんじゃないかな。
プログラミング教育の初期の段階での説明。

BASICでの「サブルーチン」は言語仕様での用語だっけ?
277デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/01(土) 09:27:25.60ID:piawvWud0
サブルーチンと関数って違うのか(無知)
278 ◆QZaw55cn4c (ワッチョイ ba60-4R1R)
2018/12/01(土) 09:55:16.44ID:J8cQMvWo0
>>276
GOSUB 命令がありました
279デフォルトの名無しさん (アウアウウー Sa47-7zod)
2018/12/01(土) 10:14:48.66ID:/TQ/ikyba
ラベルはなかったね
280デフォルトの名無しさん (ワッチョイ b78a-+5zm)
2018/12/01(土) 10:27:11.17ID:tI2T+oTI0
>>277
処理をまとめたのがサブルーチンで
値を返すのが関数…とかなんかあった気がする
281デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/01(土) 16:05:57.68ID:piawvWud0
>>280
その定義だとvoid func(void)
はサブルーチンになるな
ちょっと難癖っぽいけどw
282デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/12/01(土) 16:11:09.57ID:oMoZEV7I0
アセンブラだと値返していようがいまいがサブルーチンっていうよね
今曖昧だってことは元々曖昧だったのかな
283デフォルトの名無しさん (ワッチョイ e3f2-r3MB)
2018/12/01(土) 16:42:04.42ID:mW7z3f7A0
もともとは呼び出しがステートメントであって返値というものが存在しないサブルーチンと、
値を返して式の一部となる関数という区別だね。
式+;が文になるという単純化を行ったCではその区別もなくなってそれが主流になった。
副作用のないものが関数、ありえるのがサブルーチン、と定義を変えて復活はあるかも。
284デフォルトの名無しさん (ワッチョイ 4e81-C0zt)
2018/12/01(土) 16:58:01.89ID:6zv/O1Bm0
void以外は関数って事だな
285デフォルトの名無しさん (ワッチョイ 0bb3-Gcmv)
2018/12/01(土) 17:11:46.73ID:FtOkB0gI0
言語(VBとか)によっては明確な違いがあったりするけど、概念的にはサブルーチン⊃関数というイメージあるわ。
286デフォルトの名無しさん (ササクッテロレ Sp3b-4pMt)
2018/12/01(土) 18:36:37.73ID:qSa8BGaMp
副作用のある手続きをほんとは関数とは呼ばないのだろうけど
Cではそんなことに頓着せず全て関数に単純化したからね

ただ本来サブルーチンとはメインルーチンと対立する文脈で語られていたものかと
これは単なる呼び出し関係だけでなく、古い言語では変数のスコープなども異なる
Cではこれも単純化してしまった
main は単にスタートアップルーチンから最初に呼び出されるという以外は
特別なスコープを持つわけでもなく、他の関数と何ら違いがない
他の関数から main を呼ぶことも、普通やらないだけで問題なく可能だ
Cでサブルーチンという名前がしっくりこないのはこの辺が理由でもあるかと
287デフォルトの名無しさん (ワッチョイ e3f2-r3MB)
2018/12/01(土) 19:00:11.99ID:mW7z3f7A0
ああ、関数と対比されるのはサブルーチンじゃなくて正しくはプロシージャ(手続き)だね。
288デフォルトの名無しさん (ササクッテロレ Sp3b-4pMt)
2018/12/01(土) 19:53:46.70ID:qSa8BGaMp
>>287
そうだけと、その辺の用語も統一されてるとは言い難いところがあるよ
AdaなどのPascal系の言語ではprocedureとfunctionという区別があるよね
まぁ値を返すかどうかという違いでしかないわけだけど
VBではPascalのprocedureに相当するのはSubであって、SubとFunctionをまとめた
上位概念としてプロシージャと言うからね
289デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/01(土) 21:37:27.03ID:piawvWud0
mainが特別扱いされてると言えばOSが受け取れる返り値は0--255なのにint型を指定するってところとかかな。
290デフォルトの名無しさん (ワッチョイ 769f-C0zt)
2018/12/01(土) 22:24:12.87ID:3EVAE8120
Perl ではサブルーチンは sub で始まる。これはCの関数のようにも使える。
291デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/01(土) 22:38:01.02ID:VxENaYkZ0
>>286
> 副作用のある手続きをほんとは関数とは呼ばないのだろうけど
> Cではそんなことに頓着せず全て関数に単純化したからね
逆だぞ。関数型が馬鹿やったから「副作用」なんて言葉が必要になったのであって。

元々Cの関数は副作用がない。これは単純に、Cの場合は引数で渡すしかないからだ。
(当たり前だがグローバルは使わないとする)
だからC全盛の時代には「副作用」なんて言っている奴すら居なかった。
関数型の連中が副作用(キリッとか気にする必要がでてきたのは、クロージャを濫用したからだ。

単純に言えば、関数に対しての値の渡し方は、
・引数
・グローバル
・this(OOPの)(=インスタンス内グローバル)
・クロージャ(=レキシカルスコープの場合は階層内グローバル)
とあって、クロージャは使い方を間違えば結合を強めてしまうんだよ。
(thisの場合は最初からクラス界面で切る《=public/privateを意識して設計する》
からそこまで酷くはならない)
Cはそれがないから、便利に書けない反面、無駄に結合するって事もない。
(少なくとも、結合していることは明示的に見える)
伊達に50年近く現役な訳でもないのさ。現役で居続けられた理由がある。

>>288
AdaとかPascalとか、最早死んで誰も使わないし使う価値もない言語を持ち出しても、
何の意味も無いと思うぜ。
それらが死んだのは、それなりの理由があるんだよ。
292デフォルトの名無しさん (ワッチョイ 4e81-C0zt)
2018/12/01(土) 22:43:10.84ID:6zv/O1Bm0
>>291
ねえねえ、Fortranは?
293デフォルトの名無しさん (アメ MMff-egAi)
2018/12/01(土) 22:58:40.52ID:fkjVwInMM
なんだCの関数には副作用なかったのか。これで安心してprintfできる
294デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/01(土) 23:00:40.61ID:piawvWud0
Cに副作用の概念はないって……それは流石に嘘でしょう。
箇所は失念してしまったがK&Rにも関数を指して「文字列を出力したりする場合もあるので純粋な関数とは呼べない」
みたいな記述あるくらいだし。
295デフォルトの名無しさん (ブーイモ MMff-6Zjp)
2018/12/01(土) 23:07:56.71ID:8rj5PksfM
void君は今日も平常運転
296デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/01(土) 23:11:44.86ID:VxENaYkZ0
>>294
副作用の概念はあるに決まってるだろ。
そもそもプログラミング自体が副作用を伴うものであって、
全てを含んだ「学術的な意味での副作用」を伴わないプログラムなんて、何もやらないプログラムだからだ。
それすら理解出来ない>>293なんてただの馬鹿だ。

そうではなくて、関数型()の連中が言っている意味での「副作用の無い関数」についてなら、
Cは全ての関数が該当する、ということだよ。
だから、「副作用(キリッ」する必要すらなかったって事だよ。

試しに関数型()の連中に、「クロージャ禁止、this禁止、グローバル禁止、全て引数で渡せ」と言ってみろよ。
多分、顔が引きつると思うぜ。
297デフォルトの名無しさん (アウアウウー Sa47-7zod)
2018/12/01(土) 23:56:03.97ID:C49O7CpGa
引数voidって初めて見たぞ
298デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/02(日) 00:31:53.73ID:jISJOvCb0
void君人気っすね。羨し…くはないなw
299デフォルトの名無しさん (ワッチョイ 4e81-C0zt)
2018/12/02(日) 00:39:59.56ID:qwr+Mk5T0
秋田
300デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 00:45:19.85ID:Bx+z5yQP0
>>298
まあそれがゆとりが嫌われる理由なんだけどな。
お前も含めて自覚がないのが救いようがない。

お前ら、もう既に老害になってると思うぜ。
301デフォルトの名無しさん (ワッチョイ ff05-ZETi)
2018/12/02(日) 00:53:05.03ID:+Qh0SqlG0
よく分からん捨て台詞だな
302デフォルトの名無しさん (ワッチョイ 769f-C0zt)
2018/12/02(日) 00:55:37.62ID:twRH93OM0
https://ja.wikipedia.org/wiki/%E3%82%86%E3%81%A8%E3%82%8A%E4%B8%96%E4%BB%A3#%E5%AE%9A%E7%BE%A9%E3%83%BB%E7%AF%84%E5%9B%B2

ゆとり世代については明確な定義、範囲はなく諸説ある。

小中学校において2002年度施行(高等学校は2003年度)の学習指導要領による教育を受けた世代(1987年4月2日 - 2004年4月1日生まれ)。
小中学校において1980年度以降(高等学校は1982年度以降)の学習指導要領による教育を受けた世代。1966年度生まれ以降。

1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
303デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 01:01:50.46ID:Bx+z5yQP0
>>301
俺に言ってるのなら説明しても良いが、タダではやらん。
お前が説明に値するだけの頭があることを先に示せ。
具体的には、現状の議論について、何らかの進展があるレスをまずしろ。
304デフォルトの名無しさん (ワッチョイ 9a2b-lzSb)
2018/12/02(日) 01:23:06.59ID:26H0WWJ10
>>291
まず、副作用という言葉は C が生まれる前から使われていたし意識されていたことですよ
Lisp をやってれば分かることだけど

C 全盛時にCプログラマが副作用という言葉を使わなかったのは当然でしょうね
C は副作用そのものであるノイマンアーキテクチャを素直に表現できる言語と
目されていたわけで (i++ とか)、それこそ最初はグローバル変数も使いまくりだったのでは
また、引数で文字列を渡すにもポインタを使わざるを得ないので、それが破壊されることを
防ぐ手立てがなかった (今でもないか)
引数経由でなくても、ポインタが使えるということは、そこに任意のアドレスを設定でき、
任意の場所に書き込めるということなので、C の関数で副作用を防ぐ手立てはないわけですよ
C 界隈で副作用うんぬんが取り沙汰されるようになったのは const 引数の導入や、
グローバル変数の弊害が意識されるようになって、むしろ民度が上がってきたと見るべきかと

あと、Oracle のストアドプロシジャ PL/SQL をやったことはないですか
あの文法は Ada そのものなんだけど
305 ◆QZaw55cn4c (ワッチョイ ba60-4R1R)
2018/12/02(日) 01:24:03.02ID:xpb/M8Xl0
>>302
1966以前と1966以後では教育内容で変化があったのですか?数学に関する限り一時期は線形代数も微積分もやる、という過剰な状況だったと思っています
306デフォルトの名無しさん (ワッチョイ a7c3-lF2n)
2018/12/02(日) 01:41:19.09ID:1UGGVPSQ0
>>291
オラクル社の第一言語は、Ada言語を借用したPL/SQLだぞ。

C言語が例外処理機能を受け入れなかったのは完全な失敗。
307デフォルトの名無しさん (ワッチョイ a7c3-lF2n)
2018/12/02(日) 01:45:35.26ID:1UGGVPSQ0
>>305
そうですよね。いま働いている日本人のほとんどはゆとり教育です。

ただ昔は教科書に載っているだけでまともに教えていないと思います。

学年トップレベルだったという年配の多くが義務教育の範囲さえ、完全に忘れているか、知らなかったりします。
308デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 01:46:50.51ID:Bx+z5yQP0
>>304
> 引数経由でなくても、ポインタが使えるということは、そこに任意のアドレスを設定でき、
> 任意の場所に書き込めるということなので、C の関数で副作用を防ぐ手立てはないわけですよ
それは「副作用」ではなく「バグ」と言うんだよJava以外では。

その他諸々色々勘違いするのは自由だが、
さすがにそれだと話が通じなさすぎて煙たがられてるだろ。

> あと、Oracle のストアドプロシジャ PL/SQL をやったことはないですか
> あの文法は Ada そのものなんだけど
無いね。
ただ、Oracleがそうなら、Ada文法がまだ生き続けていることにはなる。この点は訂正しよう。

とはいえ、それが「参考にする意味があるか」とは別だよ。
本当に意味がある物は、「オブジェクト指向」や「クロージャ」のように、
ほぼ全ての言語でサポートされる事になる。
現状、procedure/function/Subを区別してない言語がメジャーで、
区別した言語(Ada/Pascal/VB)はことごとくマイナーだし、
最近のクロージャのようにC#/C++/Java等のメジャー言語が
相次いで方針を変更してサポートした、ということもない。
それは不要だった、ということで結論は出てる。
それを反例と持ち出してきても意味がないだろ。
309デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/02(日) 01:48:13.42ID:jISJOvCb0
老害がブチ切れてて草
変ったのは世の中じゃなくてお前の脳味噌やぞ老いぼれ
310デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 01:50:31.40ID:Bx+z5yQP0
>>302
> 小中学校において1980年度以降(高等学校は1982年度以降)の学習指導要領による教育を受けた世代。1966年度生まれ以降。
そういうことをするからゆとりは駄目なんだよ。
311デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 01:55:27.80ID:Bx+z5yQP0
>>306
Oracleについては308の通り。

例外についてはCで採用しなかったのはとりあえずは正解だろ。
未だに各言語で例外方式が安定しないのは、未だにいい解を見つけられてない、ってことだよ。
312デフォルトの名無しさん (ワッチョイ 769f-C0zt)
2018/12/02(日) 02:36:57.19ID:twRH93OM0
自分がゆとりであることに気付かずにだからゆとりはと言い出すやつばかり。
それが今の時代。
313デフォルトの名無しさん (ワッチョイ e3f2-r3MB)
2018/12/02(日) 07:38:01.21ID:3j0ioh6B0
>(当たり前だがグローバルは使わないとする)

副作用について議論するうえでこんな変な条件付ける人はいない。
あと当然だが、引数によって参照される関数スコープ外の値を変化させるのも副作用だ。
314デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 10:14:19.71ID:Bx+z5yQP0
>>313
> こんな変な条件付ける人はいない
君がグローバルを普段から濫用している人だとは理解した。

> あと当然だが、引数によって参照される関数スコープ外の値を変化させるのも副作用だ。
勿論。

というか、まともに議論する気があるのなら、明確に条件を確定させなければならない。
何も言わないのなら、C言語での『標準的な』コーディングを各自が想定することになる。
君が普段からグローバルを濫用しているのは理解したが、それは俺の『標準』ではないし、
君みたいな馬鹿が出てきて無駄に議論が空回りするのが嫌だから、俺は明示的にそれを除外した。
そしてこの条件付けは『標準的』であり、問題ないと俺は考えている。

君がグローバルを含めて副作用を議論したいのならそうすればいい。
俺はその議論には意味が無いと思うから参加はしない。

君の言うように、俺は「参照透過」は以下の2種類に分けて考えるべきだと思っている。
・狭義の参照透過…sin()等
・広義の参照透過…qsort()等やthis
・参照透過でない…その他全部、つまりクロージャやbindやグローバルを用いるもの
通常の文脈で言われる『副作用』はおそらく関数型()言語から来ている。
それは上記「参照透過でない」物を濫用した結果だ。
Cの場合は最初からそれが出来ないから、その議論が発生することはなかっただけ。

それとは別に、意識高い系関数型()の「『狭義の参照透過』だけでプログラミングすべき」、
というのは当たってはいるが、実際の所それは多値を返せないと厳しい。
そして多値返しよりも参照を返してそこからアクセスしろ、というのがメインストリームの言語だろ。
それの方が楽だから。
315デフォルトの名無しさん (ワッチョイ 9a33-o5Pc)
2018/12/02(日) 10:48:22.22ID:3LBO8TR+0
少なくともCにおける「副作用」はずっと昔からの規格で定義されている用語だから、
独自定義で話されるのは困る。
http://kikakurui.com/x3/X3010-2003-01.html#13
> ボラタイルオブジェクトへのアクセス,オブジェクトの変更,ファイルの変更,
> 又はこれらのいずれかの操作を行う関数の呼出しは,すべて副作用(side effect)と呼び,
> 実行環境の状態に変化を生じる。...
316デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 11:25:56.48ID:Bx+z5yQP0
>>315
FPUのフラグか。なるほどそれは正しい『副』作用だ。

というか、『副』作用というからには当然「作用」(『主』作用)と対比されるべきで、
「printfが副作用」(>>293)というのはHaskellの定義だからな。
スレチというのはごもっとも。
317デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/12/02(日) 12:58:23.54ID:mXB0v2zh0
C言語使う人ってアドレスって言ったほうがわかりやすい場合でもポインタっていうよね
ポインタの意味が多くて混乱する
318デフォルトの名無しさん (ワッチョイ 4e80-gjgg)
2018/12/02(日) 14:18:51.99ID:uIlAasYL0
副作用は、volatile とか、何かの状態を変えること

関数型のmonad とか、
Vuex, Nuxt.js みたいに、1方向のライフサイクルを作って、
状態は、Mutation からしか変えられないとか

どこかのタイミングに、絶対に変化していない、ポイントを作る

WEB+DB 106号に載っている、Flux。
状態管理のデザインパターン、単一方向のデータフロー
319デフォルトの名無しさん (ブーイモ MMba-ZETi)
2018/12/02(日) 20:00:19.47ID:nNQIp+BOM
なんだまたvoid君の無知っぷりが露呈したのか
320デフォルトの名無しさん (ワッチョイ 4e61-45aa)
2018/12/03(月) 06:04:46.06ID:9nl14toh0
C言語はファイルポインターを配列を指すようにして同じように扱うことはできませんよね。
それなので同じように扱うにはファイルポインターと配列のラッパーを自分で作らなければいけませんよね。
321デフォルトの名無しさん (ワッチョイ 5fe0-fbyJ)
2018/12/03(月) 06:13:41.09ID:MMlQh9qb0
>>320
mmapやfmemopenを調べてみ
322デフォルトの名無しさん (ワッチョイ 4e61-45aa)
2018/12/03(月) 06:53:46.78ID:9nl14toh0
>>321
調べたらわかりました
ありがとうございます
323デフォルトの名無しさん (アウアウウー Sa47-7zod)
2018/12/03(月) 10:00:18.38ID:KLYQbJ33a
fmemopenって何に使うと便利なの?
324デフォルトの名無しさん (ワッチョイ 9a9f-0gpL)
2018/12/03(月) 10:10:02.85ID:98KtjA3l0
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
325デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
2018/12/03(月) 10:44:00.29ID:7ySpxLkda
>>323
FILE * 経由の入力や出力をするように書かれているプログラムで使うと便利な場合があると思う。
326デフォルトの名無しさん (ワッチョイ 0e3f-C0zt)
2018/12/03(月) 12:19:30.10ID:dfidJp1A0
>>324
晒しage
327デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
2018/12/03(月) 12:27:39.88ID:7ySpxLkda
>>326
それはC言語を知らない初心者が前スレだったかで残した名言
328デフォルトの名無しさん (ワッチョイ 0e3f-C0zt)
2018/12/03(月) 13:14:41.09ID:dfidJp1A0
長文の連投で得意がってるあいつな
329デフォルトの名無しさん (ブーイモ MMba-6Zjp)
2018/12/03(月) 13:29:26.35ID:UG3pz1BhM
プロセスメモリエディタも初めて見たり副作用を知らなかったりする彼ね
330デフォルトの名無しさん (ワッチョイ 4e80-gjgg)
2018/12/03(月) 14:06:18.11ID:xHLM582p0
Ruby には、StringIO と言う、メモリ上だけに存在する仮想ファイルがある。
これは、IO クラスの派生クラスではなく、
文字列クラスに、IO にある関数をDuck Typing したもの(インターフェース)

StringIOインスタンス.read, puts など、ファイル操作と同名の関数を使える

テストの際に、本当のファイルを作らなくても、
メモリ上だけでファイルの振りができるので、楽
331デフォルトの名無しさん (アメ MMff-egAi)
2018/12/03(月) 14:31:36.79ID:+OGeTNm4M
へぇーっ!メモリ上だけに存在する仮想ファイル?Rubyすごぉ~い!
特許取った方がいいんじゃない?
ノーベル賞狙えるかもー!?
332デフォルトの名無しさん (アウアウウー Sa47-7zod)
2018/12/03(月) 14:38:57.12ID:KLYQbJ33a
単体テストで使った様な気もしてきた
でもまあストリームは難しいわ。fopenよりopenが好きだよ
333デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
2018/12/03(月) 16:07:39.69ID:7ySpxLkda
ノーベル仮装ファイル賞
334デフォルトの名無しさん (ワッチョイ 0e3f-C0zt)
2018/12/03(月) 17:24:12.07ID:dfidJp1A0
C++にもstringstreamがあって
メモリ内でファイルイメージが作れる
しかもcin, cout, ifstream, ofstreamの
メンバ関数・フレンドが全て使える
335デフォルトの名無しさん (アメ MMff-egAi)
2018/12/03(月) 18:30:35.22ID:+OGeTNm4M
なぁんだRubyパクリだったのか。ダッサ。
パクリRuby!
336デフォルトの名無しさん (ドコグロ MM92-TLTW)
2018/12/03(月) 19:19:41.79ID:OHB3X56LM
>>326
このスレの初心者乙
337デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/03(月) 21:56:42.64ID:r8O+Z3hZ0
>>329
プロセスメモリエディタを知ってる=Cを知ってる、になるのか。
さすがゆとり、だな。
お前らはそんなことばかりするから、お前らの居場所を無くして行ってるんだぜ。
自覚出来てないんだろうけど。

まあ、ゆとりに付ける薬はないって事だな。
三つ子の魂百まで、と同様、ゆとりの魂百まで、なのだろう。
338デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/12/04(火) 00:25:16.59ID:VVlGsdy50
void君怒りのポエム
339デフォルトの名無しさん (ワッチョイ 769f-C0zt)
2018/12/04(火) 22:17:29.21ID:YeiHZFGw0
彼は自分がゆとりであることに気付かない。超ゆとりである。
340デフォルトの名無しさん (ワッチョイ 9164-5svG)
2018/12/06(木) 08:22:58.33ID:cC0kDT7D0
勉強始めて半年くらいの初学者だけどenumの便利さに今日気が付いて震えてる
case文がシェルスクリプトとかのと比べてあんなに使いにくいものになってるのはそういうことだったのね……。
341デフォルトの名無しさん (アウアウウー Sa05-u1Zc)
2018/12/06(木) 09:11:25.93ID:mp97/YFka
なんにせよまあswitch/caseはあんまり使わない方がいいですよ。
342デフォルトの名無しさん (ワッチョイ ab3f-n9Ol)
2018/12/06(木) 10:46:35.55ID:y2fvjog80
なんで?
343デフォルトの名無しさん (アウアウウー Sa05-u1Zc)
2018/12/06(木) 11:06:46.21ID:mp97/YFka
クソコードに発展しやすいんです。
if文の方がちゃんとしてる。
344デフォルトの名無しさん (ブーイモ MMab-nAVI)
2018/12/06(木) 11:09:04.26ID:qlBG7toFM
偏見だしアホとしか思えん
345デフォルトの名無しさん (アークセー Sxcd-EBCi)
2018/12/06(木) 12:09:10.95ID:uFg4otuRx
switchは単一の変数(大抵は状態)を比較してることが一目瞭然。
case内が長くなって醜いのは全く別の問題。
346デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/06(木) 12:25:09.83ID:nzH90qpKa
まあ今となってはコンパイラが軽く最適化してくれれば全く同じコードになってしまうかも知れず、どちらで書くかは見易さの問題だけかも知れない。
ま、switchはbreakなしで下に抜けるっていうifとの違いがあるからそれ利用してたら別だけどな。
347デフォルトの名無しさん (ワッチョイ b3eb-u+MK)
2018/12/06(木) 14:08:22.67ID:CZHWXsyR0
switch~caseで、char 値の比較の場合、昔のコンパイラでも最適化した時、
条件分岐じゃなくて、テーブルジャンプにしてくれるものがあったなあ。
最近のコンパイラが if~else if~ で記述した時、どう最適化してくれるのかは知らない。
348デフォルトの名無しさん (アウアウカー Sa9d-u1Zc)
2018/12/06(木) 14:36:37.49ID:LNgus+SNa
文法に罪はない人が悪いと言って終わるならば、もうなんでもありで良いんです。
C++の方が選択肢が多い分圧倒的に優れてるとも言える。
349デフォルトの名無しさん (アウアウカー Sa9d-u1Zc)
2018/12/06(木) 14:39:02.58ID:LNgus+SNa
自分的にアホだと思う書き方はcaseの中身を{}でくくっちゃうやつです。
そんなことするなら関数呼べや。
350デフォルトの名無しさん (バットンキン MM75-EBCi)
2018/12/06(木) 14:59:28.18ID:dlLKQRwlM
case文内に関数にするほどでもない、ちょっとした処理を書きたいとき、その処理内だけで使う変数宣言は{}使ってその中に書いちゃうわ。
351デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/06(木) 15:27:35.39ID:nzH90qpKa
そういやswitchのブロックの先頭でも変数宣言できるんだよな。
今はどこでもできるから関係ないとは思うが昔は驚いた。
352デフォルトの名無しさん (ワッチョイ 9164-5svG)
2018/12/06(木) 17:17:12.54ID:cC0kDT7D0
地味に都合の良いスコープ範囲だから便利っちゃ便利だよね。
353デフォルトの名無しさん (アウアウウー Sa05-u1Zc)
2018/12/06(木) 17:23:21.26ID:8Uba5j5za
たとえば、caseではクロージャ的なもんが使えて、関数ポインタに代入。
抜けた後でそれを実行、とかできるのなら許容するかも。
354デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/06(木) 18:06:57.01ID:nzH90qpKa
それは普通にできるのでは?
355デフォルトの名無しさん (ドコグロ MMb3-KUw8)
2018/12/06(木) 18:53:53.96ID:VHVkoIH2M
>>351-352
宣言どころか文法的には実行文も書ける
もちろんまともなプログラマはそんなクソコードは書かない
https://www.jpcert.or.jp/sc-rules/c-dcl41-c.html
356デフォルトの名無しさん (アメ MMb5-FdCK)
2018/12/06(木) 19:39:02.33ID:rq0vzYZsM
初期化されないのかよ。
最初から禁止にしといてくれや…
357デフォルトの名無しさん (アウアウウー Sa05-u1Zc)
2018/12/06(木) 20:21:33.67ID:2HZFttMva
>>354
いや、クロージャ無いじゃん。
あってもいいと思うけど。
358デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/06(木) 20:25:38.15ID:nzH90qpKa
のようなもの
359デフォルトの名無しさん (ワッチョイ 31b3-EBCi)
2018/12/06(木) 20:45:48.14ID:TUEVaed40
構文やや変数キャプチャの問題はさておき、関数ポインタは原始的なクロージャっぽく使えるよね。
こんなん書いたらクロージャ原理主義者が反論しそうだけど。
360デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/06(木) 20:49:35.87ID:nzH90qpKa
苦労者
361デフォルトの名無しさん (ワッチョイ 4b23-u1Zc)
2018/12/06(木) 21:11:52.76ID:qetyDFhY0
GNU拡張だと関数の中で関数定義できたっけ。
362デフォルトの名無しさん (スププ Sdb3-BEmb)
2018/12/06(木) 22:27:01.40ID:RVfmRZI1d
C言語勉強してます。
エラーにOBJが開けませんってでるんだけど、どうしたらいいか教えてください。
コンパイラーはbcpadです
363デフォルトの名無しさん (ワッチョイ db9f-ZeM3)
2018/12/07(金) 02:34:07.16ID:4kVuFzeP0
bcpadって、懐かしい響きだな。
古すぎてなにか特別な理由がない限り使われなくなってるようなものだと思うんだが、なんでそれ使って勉強しようと思った?
364デフォルトの名無しさん (スププ Sdb3-BEmb)
2018/12/07(金) 20:07:09.75ID:S1fEuKj1d
授業で使ったからこれでいいかなーって感じ、これといった理由ないです笑
最近はどんなコンパイラーが主流なんです?
365デフォルトの名無しさん (ワッチョイ 31b3-EBCi)
2018/12/07(金) 20:26:20.52ID:RTzoABIk0
Lattice C
366デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/07(金) 20:32:40.15ID:F84vPdIda
MSのVisual Stdioに入ってるVC++か、gcc か、clangだね。

bcpad使った事ないけど、それで使えるbccも地味に生き残ってて進化してた。
(久しぶりに見に行ったらフリーのは最新じゃないけど、地味に進化してた)

エンバカデロがまだインプレス(買収される前)だったり、ボーランド(社名変更前)だったりしてた時代のbccコンパイラ環境設定記事がまんま使えるはず。
367デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/07(金) 20:55:30.39ID:qRyaIDL9a
LinuxまたはWindowsのWSLのUbuntu等やCygwinの中でもgccが動く。Macでも中はUNIXなので動く。
368デフォルトの名無しさん (ワッチョイ 899e-ZtDu)
2018/12/07(金) 21:34:48.53ID:0/x3pMw+0
windowsならmsvc
unix、unixクローンならgcc

コレで十分

windowsでいちいちgccでコンパイルする必要なんかない
たまに確認に使う程度
369デフォルトの名無しさん (ワッチョイ 2b81-n9Ol)
2018/12/07(金) 21:58:04.56ID:b95DkfHn0
Windowsでネイティブに動かせるGCCもあるし、
無理してVC使わなくても良いと思う
370デフォルトの名無しさん (スププ Sdb3-BEmb)
2018/12/07(金) 22:33:44.42ID:S1fEuKj1d
今調べたらけっこうあるんだな、、
これのここがダメ!とかここが強み!とかあったら教えて欲しい🙏
371デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/08(土) 02:14:28.50ID:5PBkTMHJa
Winならmsvc(VC++)かなぁ。。。速いしVS入れれば個人用途に限りMFC(MSのC++ライブラリ)付きで無料で使える。
ただ、最新のC/C++への対応状況は多分一番対応が悪い。

つい先月見た限りでは、bccは地味に対応状況は良いので、Win32APIが付いてて最新のC/C++使いたいってのには一番環境整え易い。(setbccで一発)

Linux/Unix系はclangかな。
gccにはconio.hが無い。(msvc、bcc、clangにはある)

最新のC/C++対応状況じゃclangとgccが2強だけど、Win用にWin32APIは最初から付いてたか分からない。
WinでGUIするのに情報少なかったから、最新のC/C++の勉強にしか使ってない。
372デフォルトの名無しさん (ワッチョイ db9f-n9Ol)
2018/12/08(土) 05:48:44.85ID:xmV4OmOO0
conio ライブラリの ncurses を使った Linux 用の互換ライブラリはあるよ(多分UNIX系OSならLinux以外でも動くような気がするが)。
https://ja.osdn.net/projects/sfnet_linux-conioh/
ていうか conio と curses ライブラリの両方が存在する状態になってから30年ぐらい経ってるので既に世界中で互換ライブラリは作られてると思う。

UNIX系OSでconioが標準的なものとして取り入れられない理由はもっと昔から curses や termios があって根付いていたからだと思う。
後から出てきた MS-DOS 画面専用ライブラリを組み込む気になる人はあまりいなかったんだろう。
373デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/08(土) 08:04:27.69ID:5PBkTMHJa
助かった。
昔読んだ入門書に環境依存と書いてたけど、互換ライブラリあるんだね。
getch関数地味に使うのよ。

調べたらバッファオフしてから普通のgetchar使ってるのか。
そのままLinux流を覚えても良いかな。

どっちにしても良い機会だった。
有り難う。
374デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
2018/12/08(土) 10:14:50.43ID:+xxwdKok0
>>371
> WinでGUIするのに情報少なかったから、最新のC/C++の勉強にしか使ってない。
MFCなんて言ってるから少ないんだよ。それ、20年前の話だし。
MFC -> .NET(Forms) -> .NET(WPF) -> UWPか?もう一つくらい有った気もしたが。

『標準』への対応という意味では遅いけど、
そもそも標準が糞な所はMS独自拡張が行われているからそれなりには困らない。
最新のならC++11にはほぼ対応してたはずだし、「どれがいいですか?」なんて聞く奴には問題にならない。
まあ、お前らは最新の文法を使えることが腕前だと勘違いしているようだから、大問題なのだろうけど。
それも含めて自由にやればいいが。

Borland Builderは一時期Cをリードしたのは事実だが、今だに開発が継続されていたのは俺も今知ったレベル。
Borland信者でなければ普通は地雷扱いで使わない。
というか、win環境ならVS以外を考える意味がない。
無料でGUIのIDEなら第一選択肢がVSで、実際それで十分で終わり、のはず。
無駄なところで苦労したくなければ、とりあえずみんなが使ってる物を使っておけ。
375デフォルトの名無しさん (ワッチョイ 81f2-Po2/)
2018/12/08(土) 10:22:20.61ID:eB2yg23l0
C/C++でFormsやWPFなんて使えないんだからしょうがないじゃん。
376デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
2018/12/08(土) 10:26:03.56ID:+xxwdKok0
普通の人やMSの定義なら「使える」わけだが。
まあどう見ても平行線だからもういいが。
377デフォルトの名無しさん (ワッチョイ 81f2-Po2/)
2018/12/08(土) 10:50:52.94ID:eB2yg23l0
C++/CLIでも持ち出す気か
378デフォルトの名無しさん (ワッチョイ 99cb-n9Ol)
2018/12/08(土) 11:51:32.86ID:PBftE5qw0
>>371
bccって揃えやすいか?
ダウンロードするのに個人的なことを根掘り葉掘り聞かれるのが
たとえば俺なんかウゼーと思うが

対応状況が良いって、C++98だぜ?
テンプレート実引数にメンバポインタを渡すとコケるあたり致命的だろ
379デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
2018/12/08(土) 12:13:07.40ID:+xxwdKok0
>>378
いやこっちだろ。一応ClangベースでC++11らしいぜ。
https://www.embarcadero.com/jp/free-tools/ccompiler

Clang標準のGUI環境としてはありなのか?
或いはVSでgccやClangを動作させている奴もいるし、そっちの方がマシなのか?
いずれにしても人柱物件だと思うぜ。勇者に期待だな。
380デフォルトの名無しさん (アウアウウー Sa05-u1Zc)
2018/12/08(土) 12:16:03.45ID:UjmNmcZda
最近はwindowsでもQt使ってくれみたいな話は多いですね
381デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
2018/12/08(土) 13:05:07.00ID:+xxwdKok0
一応訂正(補完)しておく。

× > Clang標準のGUI環境としてはありなのか?
○ Clang標準のGUI環境『のIDE』としてはありなのか?

今更CでGUIアプリを作る意味はないし、Qtも流行らないよ。
やれば分かるが、GUIに関しては今現在はHTML/CSS/JavaScriptが最強だ。
マジでそれ以前のGUIなんて全部ゴミ。
だから全部の環境がHTML/CSS/JavaScriptを追いかけているのではないかな。
WPFもGtkもまだCSS部分が出来てない。Qtも見た目その辺の感じ。
Qtはそもそも今時珍しく仕様を開示してない.。この辺が超絶イケてない。
(例:QMLのビデオを試しにみようとしたが目隠しが出る)
382デフォルトの名無しさん (ワッチョイ 4905-4bn4)
2018/12/08(土) 15:03:57.91ID:AnxWbhvF0
そうか、じゃあwebglでも使うか。
383デフォルトの名無しさん (ワッチョイ 4905-4bn4)
2018/12/08(土) 15:27:14.56ID:AnxWbhvF0
あとQtはgpl/lgpl3でもライセンスされてるぞ?ドキュメントも公開されてる。
仕様を開示してないとかどこ見て言ってるんだよ
384デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
2018/12/08(土) 15:59:03.07ID:+xxwdKok0
>>382
WebGLはGUIではなくグラ(フィックス)だし、
それ主体ならMFCでも大して変わらないと思うが。
Canvas自体はむしろ旧インタフェースをHTML側に輸入したものだし。

ただ、GUIやるならマジでHTML/CSSのお手軽さは一度試した方がいい。
今のところ他プラットフォームも同様の場所を目指しているから、無駄にはならんし。
CanvasでGUIやる気なら、背景にjpg貼ったなんちゃって仕様のHTMLの方が楽だし、見た目だけなら同じに出来る。
もちろんCanvasの上や下にHTMLを重ねてそっちでイベントだけ取り扱うことも出来る。
これらは旧来のインタフェース(Forms等)でも出来るが、それ用に設計されてないからいろいろ話が面倒になる。

が、まあ、CでGUIアプリを作ろうとすること自体が若干間違いで、
ビュワー等大きなデータを扱う(=速度がそれなりに必要)でなければ、
60fpsさえ出れば何でもいいし、Cでやる意味はないよ。

>>383
他環境と比べての話だぞ。
以前ドキュメント探してもろくなのが無かったし、
今日チュートリアルビデオを見ようとしても登録しないと目隠しが出るし。
こんなのでQtが流行るわけがないね。考え方が15年以上遅れてる。
それでもQtと心中するのも自由だけど。
385デフォルトの名無しさん (ワッチョイ 4905-4bn4)
2018/12/08(土) 17:15:39.30ID:AnxWbhvF0
>>384
開示してないって断言してるじゃん。チュートリアルは仕様じゃないよ?
意見変えるならそう言ってよ。
386デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
2018/12/08(土) 17:42:53.93ID:+xxwdKok0
>>385
変えてない。Qtはゴミだよ。
あれで公開していると思うのなら他フレームワーク等見てみろよ。
387デフォルトの名無しさん (ワッチョイ 4bbe-5svG)
2018/12/08(土) 18:40:20.20ID:hIfZgykd0
ほとんどC言語関係ないけどQtは最初,マルチプラットフォームで使えてC++バインディングが公式で提供されているっていう理由で
かなーり期待したんだけどね……。結局今はGTK+に戻ってしまった。
388デフォルトの名無しさん (ワッチョイ 4bbe-5svG)
2018/12/09(日) 09:54:16.91ID:8tZnBeFG0
Cってほんとに実行速度が速いの? 他のコンパイル式の言語に速度で勝る理由が分からん。
インタプリタならともかく。
389デフォルトの名無しさん (ワッチョイ 9312-ZtDu)
2018/12/09(日) 11:07:31.14ID:dkLieERx0
・C言語自体が単純で低水準、変換しやすい
・コンパイラの最適化とそこに投入された人月

というわけでC言語そのものじゃなくてコンパイラで生成された機械語が早い
390デフォルトの名無しさん (ワッチョイ 2b61-KVvr)
2018/12/09(日) 15:36:30.25ID:e81YHx5p0
http://www.c-tipsref.com/reference/stdlib/div.html
この辞典の作者はnumeratorを知らないらしいなwww
391デフォルトの名無しさん (ワッチョイ 93bd-xVWz)
2018/12/09(日) 15:56:34.95ID:LXVWu9Mt0
>>311
よくもまあPL/SQLを知らないのに批判できるよな。

PL/SQLの例外処理はOracle DatabaseがSQL、ビルトインパッケージの結果をうまく例外として伝播してくれる。

あなたは単に例外を作り出す方の実装が悪いものを見ているだけ。
392デフォルトの名無しさん (ワッチョイ 93bd-xVWz)
2018/12/09(日) 15:58:53.53ID:LXVWu9Mt0
>>317
アドレスを指しているアドレスがポインタ。

ポインタが指しているアドレスにポインタがあるわけではない。
393デフォルトの名無しさん (ワッチョイ 93bd-xVWz)
2018/12/09(日) 16:03:51.04ID:LXVWu9Mt0
>>388
C言語は低水準言語であるから、うまくやれば速いマシン語になるが、ちょっとしたことでむしろ遅くなるマシン語を生みやすい。

アーキテクチャの知識がない場合は、誤解したアーキテクチャを想定したコードを書いてしまい、実行速度が遅いものができあがる。
394デフォルトの名無しさん (ワッチョイ 31b3-EBCi)
2018/12/09(日) 16:59:21.16ID:c1W3T6/y0
>>392
>>393
ん??
395デフォルトの名無しさん (ワッチョイ 9321-OBpN)
2018/12/09(日) 18:56:28.62ID:+IQ+xQud0
>>392
>>393
どうやら違う世界線から紛れ込んできたと見える

なんでこういうcrazyなことを言う輩に限って自信満々に断言するんだ
396デフォルトの名無しさん (ワッチョイ 13d4-n9Ol)
2018/12/10(月) 15:01:58.63ID:Yf20pj4f0
初心者です。
>>392-393のレスを読んでちょっと混乱しているんですが、
C言語は高水準言語で、
ポインタ変数自体は「アドレスを格納できる4バイト?の変数」っていう認識で合っていますか?
397デフォルトの名無しさん (アウアウエー Sa23-u1Zc)
2018/12/10(月) 15:10:08.76ID:FyPZmeq6a
何バイトかは決まっとらん。
サイズに注意出来るようになったらあなたは中級者。
398デフォルトの名無しさん (ワッチョイ 13d4-n9Ol)
2018/12/10(月) 15:44:39.90ID:Yf20pj4f0
あーそうか、
4byte(32bit)だと0x00000000から0xFFFFFFFFまでの?4294967296通りのアドレスが保存できるんですね。
なので処理系?によって変わるってことなんですね。
ありがとうございます。
399デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/10(月) 15:58:27.14ID:4x6+51xya
この頃の64bit環境だとアドレスも64bitだと思う。
クロスコンパイルする場合や意図的に32bit用のバイナリを作るようにコンパイルする場合を除く。
400デフォルトの名無しさん (ワッチョイ 0193-IW2Q)
2018/12/10(月) 16:54:58.91ID:o+toD3xT0
ポインタ変数のサイズは32bit幅、
ただしセグメント部16bitのオフセット部16bitで
有効な全範囲はトータルで20bit。
401デフォルトの名無しさん (ワッチョイ 2b81-n9Ol)
2018/12/10(月) 16:56:42.73ID:/sc6zE4j0
いつの時代の話だろう
402デフォルトの名無しさん (ラクペッ MM7d-24dN)
2018/12/10(月) 17:03:42.11ID:Ezpzf515M
プロテクトモード
何それ美味しいの?
403デフォルトの名無しさん (JP 0Hdd-nAVI)
2018/12/10(月) 17:04:09.37ID:M7qQG5lGH
やべー
あの頃から35年も経ったのかよ
漠然と20数年かなとか思ってたよ
404デフォルトの名無しさん (ワッチョイ 13d4-n9Ol)
2018/12/10(月) 17:16:13.17ID:Yf20pj4f0
一体何の話をしているんです!?
教えてくださいおじい・・・紳士さま。
405デフォルトの名無しさん (ワッチョイ 998a-Po2/)
2018/12/10(月) 17:33:22.27ID:OF068zeT0
16bitCPU時代のアドレスの話
406デフォルトの名無しさん (ワッチョイ 9312-ZtDu)
2018/12/10(月) 19:37:12.53ID:cqLRK3I00
映画タイタニックでも「near far wherever you are」と謳われているほどポインタは面倒
407 ◆QZaw55cn4c (ワッチョイ 5360-460t)
2018/12/10(月) 20:20:50.73ID:NenbAhKQ0
>>406
…うまい

でも near far とかもう通じないんじゃないかな?
408デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/10(月) 20:29:46.12ID:4x6+51xya
>>404
昔々、8086があったとさ。
めでたしめでたし。
終わり。
409デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/10(月) 20:32:35.54ID:4x6+51xya
英語版

A long time ago,in a galaxy
far,far away....
410デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/10(月) 23:14:07.07ID:l83Jt/Qga
>>396
OSによる。
4バイトは8ビット(=1バイト)x4なので32ビット。
32ビットOSなら、それで正しい。

じゃあ16ビットOSや64ビットOSの場合は?
411デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/10(月) 23:16:39.78ID:l83Jt/Qga
>>400
セグメントは16ビット迄だよね~。
412デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
2018/12/10(月) 23:22:09.98ID:ADpwiSWg0
>>411
つPAE
413デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/10(月) 23:38:01.37ID:l83Jt/Qga
いあ、知ってるよ?
でも今でも意味あるの?
Athlon64にPCの64ビット化を先越された時代の、その苦し紛れの拡張。

64ビット標準だけで今後PCに乗り切れる時代は来ないであろうメモリ容量をサポートしてるのに。
(理論上の限界来る前に、製造技術上の限界が来る)

Winはあえて制限してるが、時代とともに緩めるだけっしょ。
414デフォルトの名無しさん (アウアウクー MM4d-xVWz)
2018/12/10(月) 23:53:27.02ID:bJUChMIiM
このスレッドは妄想コンピュータで話すやつが張り付いているね。昔は単純な話だったけどさ。
415デフォルトの名無しさん (ワッチョイ 2b81-n9Ol)
2018/12/11(火) 00:26:54.92ID:qpk98o5j0
8ビットがなつかしいね?
416デフォルトの名無しさん (ワッチョイ 93b3-KUw8)
2018/12/11(火) 07:34:54.16ID:zUaOIyWC0
>>413
> 64ビット標準だけで今後PCに乗り切れる時代は来ないであろうメモリ容量をサポートしてるのに。
32ビットになった時にもそんな話をしてたな w
417デフォルトの名無しさん (ワッチョイ 31b3-EBCi)
2018/12/11(火) 09:17:41.73ID:7sleUDEz0
プロセスルールの限界から実用的で物理的なメモリの上限はあるんだろうけど、何がどう進化するか分からないからねぇ。
単純に超多層化プロセスルールが一般化するかもしれないし、もしかするとクラウドRAMサービスとCPUアーキテクチャが融合してその限界突破なんて時代が来るかもしれん。
人間の創造力は無限と信じよう。
418デフォルトの名無しさん (ワッチョイ 2b81-n9Ol)
2018/12/11(火) 10:15:17.85ID:qpk98o5j0
4GBと言う上限は意外に早くたどり着いた
4K動画をオンメモリーで編集したいとなると
途端にぶつかる壁だな

次は誰がこの壁にたどり着くかな?
419デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 12:57:57.93ID:ZRU2RXnk0
Visual Studio 2017のC/C++コンパイラってどこのフォルダに置いてあるんですか
(もしくはファイル名、あるいは、商標名?)
調べても「VSに付属するVisual C++にC/C++コンパイラが同梱されている」程度の
情報しか出てこない・・・
そのコンパイラは何て名前でどこに置いてあるんだ・・・
420さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 13:14:43.83ID:CGbAPZXN0
>>419
スタートメニューのVSコマンドプロンプトを開いてみい。
421デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 13:42:28.53ID:ZRU2RXnk0
はい
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
422デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 13:48:36.76ID:ZRU2RXnk0
\Microsoft Visual Studio\2017\Community\VC の中を compiler で検索した結果

compiler.cpp

ん・・・?これ?
実行ファイルじゃなくてソースファイル・・・?
分からない、もうダメだ(絶望)
423デフォルトの名無しさん (ワッチョイ 01ea-fo8h)
2018/12/11(火) 13:51:50.68ID:rotYdjfa0
その昔は cl.exe に link.exe のフロントエンドで make は別途だったが今はどうなんだろう
424さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdb3-BEmb)
2018/12/11(火) 13:55:01.02ID:1cpVaJ7Sd
cl.exeとかcl64.exeなどの名であると思う。
425デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 14:00:29.46ID:ZRU2RXnk0
ありました!(なぜか4つも)
というかcl.exeってコンパイラだったんですね
コンパイラその他を呼ぶための媒介物かと思ってますた
感謝
426さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 14:18:43.44ID:CGbAPZXN0
最近はx64とかx86とかARMとかARM64とかいろんな環境があるから、コンパイラは複数必要になっている。
427デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 14:51:38.89ID:ZRU2RXnk0
>とかいろんな環境があるから、コンパイラは複数必要
なるほど 勉強になりました
428デフォルトの名無しさん (アウアウクー MM4d-xVWz)
2018/12/11(火) 20:20:15.88ID:3ovMnnL0M
CプログラマでいまのCPUを理解しているやつなんてごく僅か。わざわざC言語を作る必要がない。もっと高水準言語で作って、VMと優秀なコンパイラに任せた方がいい。
429デフォルトの名無しさん (ワッチョイ 13d4-n9Ol)
2018/12/11(火) 20:46:12.25ID:g9W94UvY0
初心者です。
>>428ののレスを読んでちょっと混乱しているんですが、

>>いまのCPUを理解
というのがまず何を指しているのか分かりません。
パーソナルコンピュータに内蔵されているCPUでしょうか、炊飯器に内蔵されているCPUでしょうか。

>>C言語を作る必要が無い
作らなくてもすでに存在していると思うのですが、自作が必要なものなのでしょうか。

>>もっと高水準言語
C言語自体が高水準言語だと思うのですが、これ以上の高水準とはどういう基準なんでしょうか。
自然言語をコンパイルするとかでしょうか。

>>VMと優秀なコンパイラ
VMというのはVirtualMachineの略でしょうか。VM上で動作するC言語というのがあるのですか?
VMを動かすほどのリソースが無いようなマシン上では何を動かすのでしょうか。
優秀なコンパイラ、ということは Cのコンパイラは優秀ではないのでしょうか。

おじい・・・紳士のみなさま、ご教授お願いいたします。
430デフォルトの名無しさん (ワッチョイ 2b80-7TzT)
2018/12/11(火) 21:55:08.95ID:ihMfYHRY0
Windows でも、ファイル操作なら、Ruby !
画面なしのツールなら、たいていのものは作れる

ポインタで時間を浪費することもない
431デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
2018/12/11(火) 23:16:54.03ID:j8P28cRB0
>>429
嘘を嘘と(ry
432さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 23:27:54.09ID:CGbAPZXN0
相手にするのが時間の無駄。悩む時間で基本情報とITパスポートの勉強するのがはるかにまし。
433さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 23:43:31.10ID:CGbAPZXN0
おじい、とか言って馬鹿にしちゃダメだよ。ワード、エクセルのエキスパートで、原子炉のタービンを設計するような「ものすごい人」も見てるんだからね。
434さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 23:50:36.12ID:CGbAPZXN0
あと補足だけど、30歳定年説は、人件費を削るための嘘だからね。
人不足の今時にこんなことを言ってるアホの取引先は排除すべし。
435さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 23:59:29.31ID:CGbAPZXN0
今時ハードディスク使ってモニターと照明費を削るようなケチ臭い企業とは取り引きしません!
436デフォルトの名無しさん (ワッチョイ 2b80-7TzT)
2018/12/12(水) 00:19:15.01ID:ysgUNYaF0
Code For Japan というイベント内でも、

PDF, Excel などの表示情報が入ったデータを、
エンジニア(住職)が供養する企画をやっているw
437デフォルトの名無しさん (ワッチョイ e18a-Po2/)
2018/12/12(水) 06:43:02.35ID:MN/7vBAt0
>基本情報とITパスポートの勉強

何のことかと思って調べてみれば情報処理技術者試験のことか
そう言えば昔に第一種と上級シスアドに合格してたこと思い出したわ
438デフォルトの名無しさん (ワッチョイ 937f-xqdQ)
2018/12/12(水) 11:11:59.11ID:Fd1X4TAb0
マシン性能の限界を突破する為に、関数型プログラミングがある。
439デフォルトの名無しさん (ワッチョイ e18a-24dN)
2018/12/12(水) 11:23:33.13ID:MN/7vBAt0
関数型は抽象表現能力は高いが実行効率を追求する様な用途向きではないぞ
生産効率も圏論などの数学的思考に慣れていないと下手すればOOPよりも悪化する可能性が高い
440デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/12(水) 12:19:40.64ID:XAdiQzbba
( ´_ゝ`)フーン
441デフォルトの名無しさん (ドコグロ MMa3-KUw8)
2018/12/12(水) 12:31:12.08ID:4PEjGm8GM
それ以前にマシン性能を言語で突破できたらノーベル賞ものかと w
442デフォルトの名無しさん (ワッチョイ 2b61-KVvr)
2018/12/12(水) 12:38:27.52ID:b75HkCZx0
CPUは関数型言語を直接実行するようにできてないから遅いでしょ。
443デフォルトの名無しさん (ワッチョイ 2b81-n9Ol)
2018/12/12(水) 12:42:36.11ID:x/hCtcVY0
フォースとともにあれ
444デフォルトの名無しさん (アークセー Sxcd-EBCi)
2018/12/12(水) 12:55:07.41ID:AGB/ZeXIx
CPUの限界を超えれる関数型言語上で関数型言語を作れば元の関数型言語の限界を突破できる。
その作った関数型言語上でまたry

んなわけねーよw
445デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/12(水) 13:11:22.57ID:XAdiQzbba
SFのスレはここですか?
446デフォルトの名無しさん (ワッチョイ 91d2-3M3s)
2018/12/12(水) 13:12:45.03ID:5HIThNOt0
【平和を実現するために】 武器調達の中止、格差拡大の抑止、労働移民の禁止、国政からのバカウヨ排除
http://2chb.net/r/liveplus/1544586377/l50
447デフォルトの名無しさん (ワッチョイ 9312-ZtDu)
2018/12/12(水) 13:15:11.92ID:SHf/dQVX0
関数型プログラミングはλ計算の時点で全く理想的だから
有限のアドレッシングで動いてる今のCPUには全くそぐわない
だから関数型と今のCPUアーキテクチャは根柢から反りが合わないんじゃねえかと

すると関数型の書法を現状の機械語に書き直すだけでロスが出てくる
理想的なモンを劣化させてるに等しいが技術上はそうするしかない

そもそも関数型を直接実行できるようなCPUを人類が作れるかどうか
無限の再帰と無限のストリームが必要になっている時点で怪しい
448デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/12(水) 13:25:42.01ID:LIx8RHBsa
昔どっかがLisp用にスタックコンピュータだか何だか作ってなかったっけ。

それはともかく、関数型言語でも結局どういうマシン語に落とすかだから、最適化技術で高速化は出来るはずなんだがな。
Cは低水準な操作も出来るから速いコード書けるとはいえ、素直なコードは最適化無しだと他の言語と変わらないし、
速度で言えば別に低水準な操作出来る訳でも無いFortranはC並みに速いわけで。
最適化への技術や時間の掛け方が違うってだけ。
449デフォルトの名無しさん (ワッチョイ 9312-ZtDu)
2018/12/12(水) 13:28:27.57ID:SHf/dQVX0
シンボリクスだ
450さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdb3-BEmb)
2018/12/12(水) 14:37:12.07ID:duFENGTGd
理論的限界を超えたら、その理論のモデルが事実に反する訳だから、理論の反例になってしまう。
451デフォルトの名無しさん (アメ MMb5-FdCK)
2018/12/12(水) 15:28:39.64ID:02Irmhu2M
ループに展開されることを期待して末尾再起化にハゲむってギャグだよな。
最初からループ書けよw
452デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/12(水) 15:38:07.68ID:LIx8RHBsa
ループだと関数渡せないから。
あとはリストを受け取ってリスト返す関数とか、IOモナドとかは
再帰関数がそのままループになる。
(リストもモナドなので、モナドを返す再帰関数がループになると言える)
453デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/13(木) 14:18:51.88ID:oii7E7F70
初心者です。

inline指定子について教えて頂きたいのですが、
関数ポインタからinline関数を呼び出す場合、どのように展開されるのでしょうか。
また、関数ポインタを格納する配列から呼び出すような場合はどのように展開されるのでしょうか。
454デフォルトの名無しさん (ラクペッ MM9b-8Y2+)
2018/12/13(木) 14:32:27.38ID:1m7XwvCgM
inline関数の展開は環境依存
呼び出し方が如何なる方法であれ関数の構造によってはインライン展開される保証はない
ループ構造を含んでいると殆ど期待できない
455デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/13(木) 14:56:19.82ID:oii7E7F70
なるほど、ありがとうございます。
まさに、
for (i = 0; i < length; i++) {
 func_ptrs[i](hoge);
}
みたいなことを試そうとしているところでした。
こういう場合は展開は期待できないということですね。

今回も勉強になりました。
456デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/13(木) 17:31:05.02ID:jSkPpV300
>>418
次は16EBの壁だな
457デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/13(木) 18:29:51.36ID:Bj9kGxVc0
gccもclangも最適化を-O3にしても
if(a=='a'||a=='b'||a=='c'||a=='d'||a=='e'||a=='f')
をif('a'<=a&&a<='f')に置き換えてくれないのな
458デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 18:40:11.12ID:Fv0+Omexa
Tではないと
459デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 18:48:07.23ID:Fv0+Omexa
>>457
え?gccで -O -S で置き換えられたように見えるアセンブリ言語出力したぞ。(97引いて5以下かどうか見ているやうなやつ)。
-Oなしだと一つ一つ比較していて明らかに違う。
460デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/13(木) 18:48:36.88ID:Gz5l93Ou0
GCCの動作環境は特定OSだけではないと思う
461デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 18:51:31.61ID:Fv0+Omexa
CPUによっては一つ一つ比較するように書いた方が速いなんてこともあるのかも知れないが、普通はそうならないように思う。
462デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/13(木) 19:07:27.96ID:oii7E7F70
ソース全体で見たときに(a < 'a') や (a > 'f')の可能性もあるから最適化されないということでしょうか?
463デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/13(木) 19:08:30.18ID:y280e6J90
>>457
>>461
a=='a'のときにべたの方が速いからだろ。
a-fが均等な確率だ、というのをコンパイラに対して教えてないし、教える方法もない。
だからコンパイラが勝手にそこを改変するようでは困るだろ。
(大半がa=='a'と分かっていて最速コードが欲しいときに記述出来なくなる)

C言語はそういう言語なんだよ。自動的に勝手にやってくれる言語ではない。
細部まで自分で指定できるからこそ極限までチューニング出来る。
最速コードが欲しければ、a-fの確率まで考えて、自分で指定しろ、でしかない。
464デフォルトの名無しさん (ワッチョイ 2b93-eQ7e)
2018/12/13(木) 19:28:54.20ID:VenLBJVu0
ワシのとこでも -O で「即値97を引いて即値5と比較…」が出たわ。
-O なしだと真っ正直に即値との比較が6回。

>>457 に書かれた通りの ('a'<=a&&a<='f') にならないと言っても、
'a'以上か? 'f'以下か? の判定2回よりもっと効率的になってるでしょ。

もちろん gcc のバージョンによる違いかも知れんが。
465 ◆QZaw55cn4c (ワッチョイ aa60-D8NS)
2018/12/13(木) 19:56:57.11ID:mMIcaeGH0
>>454
ときどき夢にみます、inline 指定がどんな場合にも百発百中 inline になるコンパイラがあればどんなに嬉しいか…
466デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 19:58:30.01ID:Fv0+Omexa
>>463
あー。なるほど。

かといって言語の規格として最適化についてまで決まってたっけ?
その辺は決まってなくてコンパイラしだいのような気がするが。
467デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 20:01:00.67ID:Fv0+Omexa
>>465
しかし関数へのポインタが作れてしまう時点でそれはもう inline ではなくなっているように思うのだが。
468デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/13(木) 20:23:30.62ID:y280e6J90
>>466
規格云々以前に、適用ヶ所と文化の問題。
C言語がガチで使われている領域はそういうところだから、「書いたとおりのコードを吐け」でないと困るし使えない。
だから適当に改変するコンパイラは嫌われる。

対してC++は「出来るだけコンパイラにやらせる」思想だし、そもそもCほど掘り下げる使い方はされないから、
「可能な限り自動的に最適化しろ」な気はするが。
469デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/13(木) 21:03:29.67ID:Bj9kGxVc0
C言語のアセンブリがすぐ確認できるサイトで調べてみたんだけど、
違うみたいだね。
470 ◆QZaw55cn4c (ワッチョイ aa60-D8NS)
2018/12/13(木) 21:27:21.48ID:mMIcaeGH0
>>467
なるほど…
そういうときは、call されたときは inline に展開するけれども、関数のポインタとして渡されたときに動かすためだけに(実際にポインタから呼ばれるかどうかは考えずに)inline の関数を別にバイナリーに展開しておくっていうのはどうですか?
471デフォルトの名無しさん (ドコグロ MMaa-skpA)
2018/12/13(木) 21:28:48.05ID:k+IaCMCPM
>>468
この人何言ってるんだろう…
472デフォルトの名無しさん (ワッチョイ d3b3-JU2d)
2018/12/13(木) 21:30:50.24ID:Pd0B4/Sw0
>>468
ん??
473デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/13(木) 21:53:47.05ID:y280e6J90
>>471
>>472
お前がな
474デフォルトの名無しさん (アウアウウー Sa4f-fk3u)
2018/12/13(木) 22:39:39.76ID:fVy8DFiFa
>>470
関数内でstaticの変数が宣言されるケースも忘れずに。
475デフォルトの名無しさん (ドコグロ MMaa-skpA)
2018/12/13(木) 23:12:49.49ID:k+IaCMCPM
ガイジかな? w ⇒ ID:y280e6J90
476デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/13(木) 23:49:06.95ID:y280e6J90
>>475
まずお前がガイジじゃないことを示せよ
ゆとりなら死ね
477デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/13(木) 23:54:03.07ID:Gz5l93Ou0
踏まないように気をつけて歩こう
478デフォルトの名無しさん (ワッチョイ 8ab3-skpA)
2018/12/14(金) 05:40:44.32ID:yDEitqc60
うわっ、ガイジと言うよりマジキチやん ⇒ ID:y280e6J90
>>477が意味深になってて笑うわ
479デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 06:20:30.12ID:lAbDnTGa0
>>464
どうやったらそんなコードされるの?
なにをやっても全部比較しかでないのだが
480デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 06:26:32.39ID:lAbDnTGa0
いまやったら引き算と比較一回になった。
別の関数の中に比較を入れないと駄目みたいだった。
一個ずつ比較させたいときはvolatileを使えばいいんだな。
481デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 06:30:05.99ID:lAbDnTGa0
最適化をいれるとaが定数だとaが消されるからaを別の関数の引数にすることで
消されないようにできる。
volatileで消さないようにするとなぜか比較が最適されない。
482デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/14(金) 06:46:52.77ID:gWmPrUHE0
>>480-481
それはvolatileの間違った使い方だから止めとけ。
最近そういう投稿も多いが。
483デフォルトの名無しさん (バットンキン MM33-JU2d)
2018/12/14(金) 06:52:31.89ID:TYVfP/dyM
最適化は処理の最中に使う変数が外部(別スレッドや割り込みハンドラ)から変更されないということを前提としてるから、volatileつけるとaの比較途中でaそのものが変更されるかもしれないので逐一比較になる。
まぁスタック上のローカル変数aが外部から変更されるってのは通常は単なるスタック破壊のバグだけどね。
484デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/14(金) 06:53:45.77ID:8u55nHdC0
>>468
おまえ4.3BSDのccとかまだ使ってるのか?
485464 (ワッチョイ 2b93-eQ7e)
2018/12/14(金) 07:50:49.15ID:FIv/Q2MJ0
>>479-480
素直なコードで出るはずだけどなぁ。

サンプル abcdef.c
第1引数の最初の文字が [a-f] なら yes, それ以外なら no と表示
(引数が与えられなかった場合は no を表示)

$ cat abcdef.c
#include <stdio.h>

int main(int argc, char *argv[]) {
  int a;

  a = (argc>1) ? argv[1][0] : 'z';

  if (a=='a'||a=='b'||a=='c'||a=='d'||a=='e'||a=='f') printf("yes\n");
  else printf("no\n");

  return 0;
}

$ gcc -S abcdef.c
最適化なし 比較6回

$ gcc -O -S abcdef.c
最適化 97引いて5と比較
486デフォルトの名無しさん (ワッチョイ 0a12-rp3U)
2018/12/14(金) 09:57:08.83ID:v3sklYn80
volatileは磁気コアメモリ時代の命令じゃねえのか
487デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 10:14:56.92ID:lAbDnTGa0
>>485
mainで未定の値を作るのがむずかしいんだよ
aを初期化しなければ未定の値になると普通おもうんだけど
何故か何かの値に決められて最適化でaが消えちゃうのよね
488デフォルトの名無しさん (ワッチョイ 3b8a-8Y2+)
2018/12/14(金) 10:15:15.85ID:QZB89f550
現在でも組み込み開発でSFRを弄るにはvolatile宣言は必須
489デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 10:28:42.01ID:lAbDnTGa0
結論を言うとvolatile で最適化を調べるために最適化を抑制したのが間違いの原因だっと
ということだな。
490デフォルトの名無しさん (ワッチョイ 3fe3-3flP)
2018/12/14(金) 12:14:57.88ID:E1rpoA/W0
volatileは変数がI/Oポートにマッピングされてることを想定した仕様
コンパイラによる省略とかを許さず書いてある通りにアクセスする
491デフォルトの名無しさん (アークセー Sxa3-JU2d)
2018/12/14(金) 12:47:24.45ID:TZB/LQMkx
>>490
I/Oだけじゃないよ。
別スレッドなど異なる実行コンテキスト間で共有する領域へのアクセスはvolatileをつけないといけない。
SFRへのアクセスもソフトとハードという実行コンテキストが異なる。
492デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/14(金) 14:14:04.61ID:7OLXAkOEa
静的変数は全部つけないといかんのだろうね。
利用の趣旨としては。
493デフォルトの名無しさん (ワッチョイ 8a9f-+gtp)
2018/12/14(金) 15:46:34.42ID:FWw1nr6R0
ID:y280e6J90はvoid君だろ
494デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/14(金) 16:07:06.94ID:cCP3RgWTa
volatile の使い所

1. マルチスレッドで他スレッドと共有される変数(ただし、別途ロックも掛けた方が良い)。

2. シグナルハンドラとその他の処理で共有する変数。

3. longjmp() 使う時。
495デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/14(金) 16:08:45.11ID:cCP3RgWTa
これ書き忘れてた。

4. 指している先の内容が本当に揮発性の場合(I/Oポート等)
496デフォルトの名無しさん (ワッチョイ 2bea-GDnO)
2018/12/14(金) 16:22:16.94ID:lsnrrwE80
記述された手続き以外の要素によって変数値が変わるなら
497デフォルトの名無しさん (ワッチョイ 8a7f-Xq6B)
2018/12/14(金) 19:01:54.99ID:RfUJ40dd0
>>494
volatile変数をマルチスレッドに使うとかいう誤った知識を流布しないでくれ
volatileに指定してもマルチスレッド共有変数に求められる

* メモリフェンス
* 演算の原子性

は確保できない

https://stackoverflow.com/questions/4557979/when-to-use-volatile-with-multi-threading
498デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/14(金) 19:20:00.03ID:td3PjTJAa
原子性って全然直交した概念ちゃうか。
確保できるとかできないとかいう話になるのがおかしい。
499デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/14(金) 19:41:07.95ID:gWmPrUHE0
>>494-495
×××○
知らない人が見たらマジ議論と勘違いするのも無理はないが、
2chでのlongjmpなんてネタだから無視でいい。

>>497
全くだ。


というかマジな話、何をどこに使うべきかイマイチ分かってないのなら、
とりあえずいわゆる「正しいプログラミング」を目指した方がいい。
ここでの与太話は、ネタをネタと(ry、でしかない。
500デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/14(金) 20:47:21.99ID:8u55nHdC0
>>494
マルチスレッドは断じて関係ない

アフォwヴァカwww
501 ◆QZaw55cn4c (ワッチョイ aa60-D8NS)
2018/12/14(金) 21:07:51.74ID:+oZBuxlP0
volatile なんか忘れて素直に pthread とか C++11 とか使っていればいいと思うのです…
502497 (ワッチョイ 0a21-8Bx+)
2018/12/14(金) 21:15:41.90ID:6hfmhPbO0
>>498
そのはずなのに使えるなんて言う妄言痴言が飛び交っていたんだから重症だよ

>>499
シグナルハンドラに関してはvolatileが必要じゃない?もちろんその変数に対するatomicityも要求されるけど
503デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/14(金) 22:13:48.43ID:gWmPrUHE0
>>502
知らんよ、俺はLinuxのsignalなんて使って無いし。
そのページには必要だと書いてあるし、そうなんだろうさ。

が、そもそも、俺に言わせれば
・volataileで実装出来る=ポーリングループ&せいぜいハンドシェーク=糞
・プロセス間通信する意味がない
スレッド間通信でsleep/wakeupで何も問題ないし、その方が自然だ。
この場合に自前でvolatileなんて書くことはない。
ハードウェアを直接叩かないのにvolatileとか、設計を見直した方がいいと思うぜ。
504デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/15(土) 00:19:10.79ID:MJLVMCBK0
>>429
Cのコンパイラは環境依存になるため、コンパイラの出来、不出来がある。
505デフォルトの名無しさん (ワッチョイ d3b3-JU2d)
2018/12/15(土) 01:44:33.10ID:USiGJg2x0
必要条件と十分条件の違いが分かってないやつがいるな。
506デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 09:51:27.56ID:hAY8T09E0
>>503
フェンスがないのにハンドシェークとは、これいかに
507デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 11:50:06.13ID:nIs3KSLY0
>>506
> 標準シグナルの場合、そのシグナルがブロックされている間に 同じシグナルの複数のインスタンスが配送されても、 1 つだけがキューに入れられる。
> https://linuxjm.osdn.jp/html/LDP_man-pages/man7/signal.7.html
しかし実際ハンドシェークだと思うぜこれは。

意識高い系()ゆとり()がCをやるとfenceという『CPU命令』が必要だと思っちゃうのか?
まあ無理も無いとも思えるが。
508デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/15(土) 11:53:03.04ID:qrRqm5Rq0
それはC言語の話なのか、OSの話なのか、CPUの話なのか
509デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 12:22:47.52ID:nIs3KSLY0
フェンスが必要になったのはコンパイラ側の都合だから、C言語の話だね。
これが理解出来ないのはお前がゆとりの馬鹿だからだ。

マジな話、馬鹿の癖に煽るゆとりは死んで欲しいね。
お互いに何も得る物がない。
510デフォルトの名無しさん (バットンキン MM33-JU2d)
2018/12/15(土) 16:08:16.17ID:uiukVmhyM
>>509
511デフォルトの名無しさん (ブーイモ MM6f-DFdf)
2018/12/15(土) 16:24:43.93ID:tkQQweukM
フェンスが必要なのはCPUとコンパイラ双方のためだ。やっぱvoid君は馬鹿だね。
512デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 17:21:35.13ID:hAY8T09E0
>>507
ほうほう、fenceはCPU命令ではないんだな
それでそれで? volatileとどういう関係があるんだw
513デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 18:37:35.51ID:nIs3KSLY0
>>510-512
ゆとりは死ななきゃ直らないと再認識した。
ゆとりが馬鹿であり続ける権利を尊重し、教えてやらないことにする。


つっても、ググればいくらでも出てくるし、ゆとり以外には実害はないはず。
マジな話、上達したい奴は、ググっても疑問が解消しないときのみ、掲示板等に頼るようにした方がいい。
自力で勝手に進んでいけるか、いちいち構ってちゃん状態になるかでは、上達速度に雲泥の差が出る。
こんなところで下らない煽り合いに興じてるから、ゆとりはゆとりのままなのだと思うし。

StackOverflow(英語版)はかなりオススメだ。迷ったらそこを頼れ。
514デフォルトの名無しさん (ブーイモ MM6f-DFdf)
2018/12/15(土) 19:04:30.55ID:/O2tQ50qM
void君は謎の捨て台詞好きだよね。かっこ悪いよ。
515デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/15(土) 19:15:51.64ID:qrRqm5Rq0
ここにはお前に用がある人はいないそうだ
516デフォルトの名無しさん (アメ MM47-KgdI)
2018/12/15(土) 19:17:41.02ID:CVS0UY4MM
霊界は存在するよね。ググればいくらでも出てくるしww
517デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 19:40:59.06ID:nIs3KSLY0
以下、C言語について詳しいつもりの、格好いいつもりの粘着君が教えてくれます。ご安心を。
(レベルはあのコードを糞コードと認識出来ないようなので推して知るべし)


マジな話、volatileをスレッド同期に使え、なんてのは世界中の誰も言ってないだろ。
勿論longjmpもgotoもその類だ。
ここはそれを分かってるロートル連中が与太話をするところであって、
マジの初心者が来るのは危険だと思うがな。ネタをネタと(ry
初心者なら、まずは正しいプログラミングを目指すべきだと思うぜ。
本来はリアルで先輩/上司/先生に教えを請えるのが一番いいが、
駄目ならStackOverflow(英語版)を俺はオススメするが。

最近は知恵遅れも知恵袋と化してきていて、例えば以下(PHPのスレより、ただし削除済み)
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10199147355
そこで焼け出された知恵遅れゆとりがこちらに押し寄せてきているのだと推測しているが、
お互いにとって不幸なことになってる。
ただし知恵袋が機能するなら、本来はIDがある分向こうの方がましだから、向こうを使った方がいいと思うが。

知恵遅れゆとりがスクラム組んで押し寄せることに対して、2chは防御手段がない。
実際、こいつらが役に立つことを一回も言ったことがないのも事実でさ。
こいつらは死ぬまでイナゴし続けるんだろうな、って思う。
518デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 21:18:31.36ID:hAY8T09E0
ニヤニヤ
519デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/15(土) 21:37:43.77ID:VC87camXa
C言語について詳しいつもりの、格好いいつもりの粘着君ってこんな名言残した人の事ですか?

>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
520デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 22:00:05.11ID:nIs3KSLY0
>>519
お前らがその30年前に解決した話に異常に固執するのも意味不明だがな。
それはお前らのレベルではそれが全てだ、と言っているに等しいわけだが、それについては恥ずかしくないのか?
521デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 22:03:06.74ID:hAY8T09E0
ぐうの音も出ねえって
こいつのためにあるような言葉だなw
522デフォルトの名無しさん (ワッチョイ aaf9-fk3u)
2018/12/15(土) 22:33:19.53ID:3LFJSGA60
void君て、半角カナ君とかなり似た匂いがするけど、亜種か別設定キャラだったりするのだろうか?
523デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/15(土) 22:35:12.80ID:MJLVMCBK0
C言語はあとから標準化されたのと、コンパイラの実装はUNIXを想定しているため、OSが異なるとコードの意味まで変わる。
524デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/15(土) 22:44:04.38ID:8aRCy95z0
オレは要点を簡潔明瞭にレスしてるからな
あったま悪い低学歴底辺のキミラの生きうつしになるvoid君と一緒にされたら困るワケ

キミラにとってvoid君はただの同族嫌悪
525デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/15(土) 23:22:08.85ID:BLCVn7NJ0
初心者です。

ソートとコンパイラの最適化について教えて頂きたいのですが、
挿入ソートを書いてその実行時間を計測しました。
動的に確保した10000の要素数を持つ配列に、rand()関数でランダムな値を入れて、
clock()関数でソート時間を計測しています。

コンパイラはMinGWから入れたGCC6.3.0で、-O1と-O無しで実行時間にかなりの差が出ます。
バブルソートや選択ソートでは極端に大きな差が出ないのですが、挿入ソートだけはかなり差が出ます。
-O無しだと7秒前後、-O1だと1.7秒ほどで完了します。

自分が書いた挿入ソートが正しい内容になっているかと、
このプログラムでの最適化でどのようなことが行われているのかおおまかに教えて頂きたいです。

挿入ソートは以下の様に書きました。
void insersion_sort(unsigned array[], unsigned length)
{
 register unsigned *start = &array[0];
 register unsigned *sorted = start;
 register unsigned *end = &array[length - 1];

 while (sorted < end) {
  register unsigned *crnt = sorted + 1;
  while (crnt > start && *crnt < *(crnt - 1)) {
   swap(crnt, crnt - 1);
   crnt--;
  }
  sorted++;
 }
}
526デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 23:41:43.90ID:nIs3KSLY0
>>525
> コンパイラはMinGWから入れたGCC6.3.0で
そのレベルならVS使えってマジで。
GUIでグレークポイント貼って追跡出来るだけで全然違うから。

> 自分が書いた挿入ソートが正しい内容になっているかと、
自分でデバッグしろドアホ。
自前でチェックすれば済むんだから、簡単に出来るだろ。
for (int i=0;i<10000-1;i++) if (array[i]>array[i+1]) printf("BUG: %d, %d, %d, %d\n",i,i+1,array[i],array[i+1]);
とか。

> register
使うな。
ってかおまえ、何を参考にして学んでる?

> void insersion_sort(unsigned array[], unsigned length)
> unsigned array[]
これもあんまりやらないと思うけど。

> 最適化でどのようなことが行われているのかおおまかに教えて頂きたい
それをマジで聞きたいならオブジェクトコード(逆アセンブルコード)を貼る必要があるわけだが。
527デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/15(土) 23:50:10.65ID:BLCVn7NJ0
>>526
レスありがとうございます。

VSなら使っています。VSCodeですがw
ちなみにGUIでデバッグも出来ますね。
バグは出ていないのにデバッグする意味ってあるんですか?
質問の意図としては、「ちゃんと正しいアルゴリズムで実装できているか」という質問をしているのです。
「動かないからおかしいところ教えてください」という意味ではありません。

register指定子を付けるだけで、付けていないときに比べて2倍ほど変わるのですが、
付けないほうが良い理由を教えて頂けますでしょうか。

unsignedもあまりやらない意味を教えてください。
今はrand()から帰ってくる値が入っているだけですので意味ないのは確かですが。
528デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/15(土) 23:53:27.39ID:BLCVn7NJ0
× 2倍ほど変わる
〇 ソート時間が2倍ほど変わる
連レス失礼
529デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/16(日) 00:07:00.48ID:w2yggEy4a
引数voidにすると魔除けになるかもな
530デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:10:07.53ID:GOuL0+IB0
度々ごめんなさい。配列の桁数を間違えていました。
×10000
〇100000
です。
531デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 00:11:33.51ID:nrAiyUBx0
>>527
C言語に詳しくない俺でもわかるが、CPUは正と負の数を扱っているから、正の数と指定されると余計な処理が挟まる。
532デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:13:46.60ID:+TcxNu6P0
>>527
> ちなみにGUIでデバッグも出来ますね。
それならいい。

> ちゃんと正しいアルゴリズムで実装できているか
ならwikiでもどうぞ。いちいち聞くんじゃなくてさ。
https://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5%E3%82%BD%E3%83%BC%E3%83%88

> register指定子を付けるだけで、付けていないときに比べて2倍ほど変わるのですが、
マジで?

> 付けないほうが良い理由を教えて頂けますでしょうか。
https://cpprefjp.github.io/lang/cpp11/deprecation_of_the_register_keyword.html
つかマジで、お前が参考にしている本なりサイトはかなりヤバいと思うぜ。
(Cでも同じはずだが、実際効いているのであれば違うのか?)

> unsignedもあまりやらない意味を教えてください。
いや、書き方が曖昧だったが、[]をやらない。大概は、 unsigned *array だと思う。


つか、全般的にコードが妙な書き方になってるから、直した方がいい。
初心者なら、単に教科書かその類に問題があるだけだと思うし。


>>528
この文脈でそこを誤解することはあり得ないから大丈夫。
(なのはリアルだけで、2chでは信じられないレベルのコミュ障がいるのもまた事実だが)
533デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:15:38.43ID:GOuL0+IB0
>>531
なるほど、ありがとうございます。

書き始めたときは何も考えていなくて、とりあえず大きい値が入れられるようにunsignedにしていましたw
今後正負で大きい値も扱える型の配列に直そうと思います。
534デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:24:06.30ID:GOuL0+IB0
>>532
レスありがとうございます。

ちなみにそのwikiの説明文を見て挿入ソートを書いています。
ソースの部分は読んでいませんが。

GCCは最適化を有効にしなければregisterが効くなんてのは結構有名だと思っていたんですがそうでもないんですかね。

配列引数に[]を書かないというのは、別に個人の趣味みたいなもんだと思うので良いんじゃないでしょうか。
他の人とコーディングするなら規約などに従いますが、今は自分一人で書いているだけなので。
[]が書いてあれば配列を渡すというのが一目瞭然であるから付けているだけです。(arrayという名前や、lengthが必要な時点で分かりますが)
*start = &array[0];としているのも同じ理由です。
*start = arrayと書くより分かりやすいと思うからそうしているだけです。

別にコーディング規約の話をしているわけではないのでこの辺でよろしいでしょうか?
535デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:25:21.59ID:+TcxNu6P0
>>531
まあそれはあるが、細かすぎるからいいかな、って思ってた。

>>533
あとな、多分、 unsigned ではなくて、 unsigned int の方が主流のような気がするが。
まあそれ以前に531の指摘通り、intでやれ、ということではあるが。
536デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:28:37.95ID:GOuL0+IB0
あとちなみに、registerが非推奨になっているのはC++の話ではないんですかね?
その辺も詳しい方いましたら教えてください。
537デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:29:37.27ID:GOuL0+IB0
>>535
unsigned intの省略型がunsignedだと思っていたのですが違うのでしょうか?
538デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:33:29.78ID:+TcxNu6P0
>>534
> GCCは最適化を有効にしなければregisterが効くなんてのは結構有名だと思っていたんですが
知らん。
というかそのそも最適化無効で使うことがほぼあり得ない。
さらに言えば、-O1ってのも奇妙で、普通は-O2か最近は-O3。

マジで君、全般的に色々おかしいんだよ。

> 別にコーディング規約の話をしているわけではないのでこの辺でよろしいでしょうか?
好きなように書けばいいんだが、上達速度を上げたいなら、『他人と同じコーディングルール』で書いとけ。
それで損はしない。
慣れてる書き方の方が速く読めるから、
他人のコードを読むときに同じ時間でより沢山のコードを読めるようになり、上達しやすくなる。
539デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:40:59.45ID:GOuL0+IB0
>>538
ちなみにO2とO3も試しましたが、O1と変わらないですね。
-O無しだとこの速度で、一体どこから速くなるんだろうと-O1を試したら速くなっていた、というだけの話です。
最適化無効で使うことがあり得ない、というのも今初めて知りました。ありがとうございます。

私から逆に言わせてもらうと、あなたも全般的におかしいと思います。
まず、質問に対する回答に全くなっていないという点。
あと、「上達速度を上げたい」などと一言も書いていないのですが、
一体どこからそう読み取って、「他人と同じコーディングルールで書け」などと余計なお世話を押し付けてきているのでしょうか。
先にも書きましたが、「今は自分一人で書いているだけ」なので勝手にさせていただきます。

あと万人に共通しうる「他人と同じコーディングルール」とやらのご教授もできたらお願いします。
できたらで結構ですが。
540デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:41:28.75ID:+TcxNu6P0
>>537
> 通常は、unsignedの後にintやlongなどと記述して用いるが、これを省略しunsignedとだけ記述した場合はunsigned intであるとして処理される。
> https://www.wdic.org/w/TECH/unsigned
そのようだが、ほぼ見ないと思うぞ。
まあ俺は仕様に詳しいわけではないし、俺の揚げ足取りをしたがっている粘着君に期待しよう。
彼は喜々としてヒャッハーしてくれるだろうし。


ただ何度も言ってるが、全般的に色々標準的ではないので、教科書なり参考サイトを見直した方がいい。
そこで意固地になられる理由も俺には分からないが。
541デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 00:46:03.68ID:Q57qqdXG0
> 自分が書いた挿入ソートが正しい内容になっているかと、

じゃあまずチェックプログラムを作りなさい

 ①入力の列の値がすべて出力の列の値に含まれているかチェックする関数
 ②出力の列の大小関係が適切になっているかチェックする関数

①、②が面倒だったら、同じ入力の列の値を使って
qsort()の結果と出力の列の結果が同一になっているかチェックする関数
いろんな大量の乱数列使って問題がおきなかったらとりあえず誤りは検出されなかったことにすればいい

で、その前に
こういった試験するためのテストドライバをまず作ってみなさい
試験するためにはこういった機能があるテストドライバ用の関数が必要になると考えられるからな

 ①擬似乱数を生成する
 ②n個の乱数列を生成する
 ③n個の列を複製する
 ④n個の列をダンプする

というわけで作業に戻りなさい
542デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:46:05.25ID:+TcxNu6P0
>>539
前後したが>>540がそのまま当てはまる。

とはいえ、まあ分かった、俺は君には今後回答しないことにする。
それがお互いの為のようだし。
543デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 00:47:26.92ID:Q57qqdXG0
低学歴底辺ドカタのアドバイスなんか
聞く必要ないからな
544デフォルトの名無しさん (ワッチョイ a77b-KgdI)
2018/12/16(日) 00:50:09.46ID:JR5j914d0
半角まで出てきたwww
545デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 00:50:43.18ID:Q57qqdXG0
低学歴底辺ドカタ内部のオキテの話なんか
どうでもいいワケ
どうみても質問ではそんなどうでもいい話なんか書かれてないからな
546デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:54:38.84ID:GOuL0+IB0
>>540
「unsigned int」と書くか「unsigned」と書くか、や、
「あなたがどう書いているかを見かけるか」なんて正直、本当にどうでも良い話です。本当にありがとうございました。
「あなたが思う『標準的』」とかも本当にどうでも良い話です。

揚げ足取りを従っている粘着君に期待するのは勝手なんですが、私を出しに使うのはご遠慮願いたいです。
もっというと他所でやってほしいです。どうでも良いので。
547デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 01:00:00.06ID:GOuL0+IB0
>>541
レスありがとうございます。

①入力の列の値がすべて出力の列の値に含まれているかチェックする関数
少ない要素数の配列では目でチェックしましたが、
100000の要素数の場合、これは行っていないので作ってみようと思います。
548デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 01:12:48.33ID:+TcxNu6P0
>>546
なるほど君も別の方向にコミュ障だから、>>528な訳か。
俺は別に君をダシにしたわけではなくて、
君の質問の>>536-537に関しては粘着君が喜々として答えてくれ、それが君の為にもなるだろう、と言っているだけ。

ちなみに君が欲しがっている回答は、現時点では情報不足で誰も正確には答えられないんだよ。
それも最初に言ったろ。

なんつーか、ゆとりはマジでこのパターン多過ぎ。
表面だけ丁寧で、中身がものすごく無礼、というか。
お前はお姫様/王子様ではないんだぜ。


逆に半角君も俺にはよく分からんが。
表面だけやたら人を罵倒しているが、実際はいちいちシコシコ回答してるから、手間はかかっている。
コンプレックスの固まりで他人を馬鹿にしたいだけなら粘着君みたいになるはずだし、
(馬鹿にするだけで一切自分の意見を言わない
=意見を言うとそこに反論される可能性が発生するから怖くて出来ない)
何がどうなると半角君になるのかよく分からん。
549デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 01:20:36.44ID:GOuL0+IB0
>>548
>>542

あとあなたも大概「無礼」ですよ。人を侮辱する前にご自身の発言を読み直したらいかがですか?
いきなり「ドアホ」言う人は中々私の周りにはいないです。
きっと「コミュ障」だからかもしれませんねw
550デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 01:26:00.46ID:+TcxNu6P0
>>549
そのレス自体が俺の方が数段上手なことを示しているわけだが、それも理解出来ないのだろ?
だから君はコミュ障なんだよ。まあいいが。

ま、きみは2chには向いて無いと思うぜ。
551デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 01:32:48.16ID:GOuL0+IB0
>>550
>>542

「どちらが上手か」や「コミュ障かどうか」や「2chに向いているか」を議論するスレでは無いのは理解できておられますか?
なんにせよ私にとってあなたは、全く理解の足しにならない人間だということは、低能コミュ障な私にもよく理解できましたので、更に数段上を目指してご邁進くださいませ。
かしこ。
552デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 01:35:58.25ID:nrAiyUBx0
>>534
C言語というよりコンピュータの基本を勉強した方がいい。CPUのレジストリは限られているから、本当にレジストリを使うマシン語がはかれたらOS、他のソフトウェアを阻害しかねない。

マルチプロセスではない昔のコンピュータならまだわかるが、CPUを占拠するようなコードを書くのは尋常ではない。
553デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 01:37:47.75ID:nrAiyUBx0
>>537
省略してはならない。これ基本。
可読性も落ちる。

ふざけているのか?
554デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 01:44:53.73ID:nrAiyUBx0
>>551
ネット上に転がっているサンプルはデタラメ、悪い例のオンパレードだったりする。

ちゃんと信用できるところを見ろ。

だいたいint型が何バイトで、CPUのレジスタ長が何ビットかわかってる?
555デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 01:53:47.94ID:nrAiyUBx0
コーディングスタイルは個人の好みで、できればよい、動けばよいなどと言う人間がこのようなソート処理を作るはずがない。

速い遅いのこだわりもどこから出てくるのかわからない。
556デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 01:57:29.82ID:GOuL0+IB0
>>552
メモリ周りの理解が深まると思い、C言語を学習してます。
レジストリ、というのはレジスタのことでしょうか?
register指定子ついてですが、
それをそのまま適用するどうかはコンパイラ依存だと認識しているのですが違うのでしょうか。
これら以外にレジスタを必要とする値や演算があったならば、それを采配するのはこのソートを行うプログラムではなくてOSではないでしょうか。
そもそも、たった3個のポインタ変数がCPUのレジスタを占拠してしまうほどのサイズを持っている変数とは思えません。

>>553
ふざけていませんし、そもそもここで質問する前提にコーディングしていませんでしたので、
「自分の分かりやすいように」記述していました。
つまり「可読性」は「自分にとって可読」であるものです。読みにくければ申し訳ないですね。
まぁこの数行程度のソースで読みにくいと騒ぐ上級者様がいるとは思えませんが。

あとさっきも書きましたが「コーディング規約」について質問しているのではありません。
この数行が読みにくくてしょうがない!というのであれば読んでいただかなくて結構です。
読んでくださる方に聞いているので。

確かに省略しすぎるのは自分もどうかと思っていますよ。
初めて「printf」なんて見たときは「なんのfやねん」って思いましたから。
557デフォルトの名無しさん (ワッチョイ a705-DFdf)
2018/12/16(日) 02:02:53.44ID:zisHaYIc0
voidはまた質問者の気分を害して悦に浸ってるのか。こいつマジでスレの害悪だわ。
558デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 02:04:29.37ID:GOuL0+IB0
>>554
良いも悪いも、そもそもサンプルなんて読んでいませんし、挿入ソートがどういうモノか、というのだけを読んで書いていますので。
そもそも、ここもそのネット上なわけで。私が書いている関数の内容が正しく動くかや、あなたが今書いていることも信用していいんですかね?
疑い始めたらきりがありませんよ。
くだらない議論なので無価値ですね。

>>555
作るはずがない、と言われても作りました。何の根拠が?w
速い遅いのこだわり、とか書いていますが、そもそもこだわっていません。
「なんで自分の書いた挿入ソートのコンパイルが、最適化の有無でこんなに速度が変わるんだろう」というふとした疑問を書いているだけです。
私が、「速い挿入ソートが書きたい」なんて一言でも書いたでしょうか?
559デフォルトの名無しさん (ワッチョイ a77b-KgdI)
2018/12/16(日) 02:11:16.40ID:JR5j914d0
レジストリwwwww
560デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 02:14:08.51ID:GOuL0+IB0
さて、夜はふけてきましたが、
一部やかましいだけで有用な情報も得られなさそうなので、そろそろ休みます。
私が原因でスレをお騒がせしてしまって申し訳ございませんでした。

もし、挿入ソートが速くなる理由等分かるかたいましたら、また別の日にご教授頂けると嬉しいです。
ひとまずはテスト用のドライバ関数を作ってみたいと思います。
>>541さんありがとうございました。

みなさまおやすみなさい。
561デフォルトの名無しさん (アメ MM47-KgdI)
2018/12/16(日) 02:26:17.39ID:cTh7msTfM
自演お疲れさまでした
562デフォルトの名無しさん (アウアウカー Sa6b-8Py6)
2018/12/16(日) 02:31:39.01ID:GdI2y+/Wa
おやすみなさい
563デフォルトの名無しさん (アウアウカー Sa6b-8Py6)
2018/12/16(日) 02:44:07.72ID:GdI2y+/Wa
経験としては、O3にするとバクが顕在化するんであんまり使わないですね。
自分だけなら対応できるけど100人で作ってるプログラムはなかなか難しい。
564デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/16(日) 04:45:04.91ID:lv3vm4Nk0
逆だろ
バグを顕在化させやすい条件を故意に作るんだよ
ストレステストとかそういうのだし
565デフォルトの名無しさん (ワッチョイ 9f2a-UKyl)
2018/12/16(日) 08:41:25.08ID:+JTyra3G0
>>525
一般に最適化は、常に同じ結果を出力する最短の計算に変換される。
ソートと書いてあるが、コードに特に比較条件がないので、これは単に
例えば(1 2 3 4 5)->(5 4 3 2 1)と入れ替えている。
元のコードは4+3+2+1=10の入れ替えが発生するが、単に入れ替えるだけなら、
5を1と4を2と、・・・と入れ替えればいい。計算数は2となる。
大小関係の確認を正しく入れれば、他のソートと同様なるかもしれない。
と、以上のように、俺が思っているだけなので、確認した方がいい。
566デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 09:54:31.21ID:+TcxNu6P0
おーい粘着!生きてるか!

折角俺様が「registerなんて見ねえ!」なノリなんだから、
一生懸命仕様を調べて突っ込みに来いよ!
お前の存在価値なんてそれくらいしかないんだし。


>>557
ゆとりなお前らはそれが駄目なんだよ。話が全く進まないだろ。
俺が間違っていることを言っていると思うのなら、ズバッと突っ込みに来るべきなのさ。
お前らはそれをする度胸もないまま、文句しか言えないわけでさ。
ゆとりが何万人いても何も作れなかったのはそれが根本的原因だよ。

少なくとも半角君は前に進むレスをしてるだろ。
彼が10人いれば確実に事態は進展する。
纏まることはないと思うが、それでも烏合の衆でしかないお前らより数段マシだ。

その言い方だと、お前も>>525のコードのやばさが分かってないだろ。
その他ゆとりも大概そんな感じだが。
それで粘着するのはお前らが全員馬鹿だと自身で証明しているようなものなのだが、
それも理解出来ないのだろ?

導くつもりなら、本当に見てやらないといけないのは「根本的に方向性を間違ってないか」であって、
完全にずれていると分かっている初心者の質問にも優しく答えてあげることではないんだよ。
それは逆に迷惑だと俺は思うがな。本人の為にならない。

とはいえ、どういうレスをするかは本人の自由だし、お前らなりのポリシーがあればやればいい。
それで「ゆとり専用:ぼくにやさしいすれ」が成立するのならそれもありだろう。
問題は、お前らゆとりは何もしない/出来ない癖に文句ばかり言ってるわけでさ。
それが本当にいけない。
567デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/16(日) 10:01:21.28ID:aG56rBWDa
>>565
シェルソートとかコムソートじゃねえかなそれは
568デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/16(日) 10:11:10.20ID:lv3vm4Nk0
>>566
525のコードのやばさが一番わかってないのはおまえだ
registerだあ? 全然関係ねえよ、おまえ上っ面しか見てねえ証拠だ
569デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 10:18:48.77ID:+TcxNu6P0
>>568
それで、お前は525のコードに

・問題がない、のか、
・俺が指摘してないもっと大きな問題がある、のか

を言えない/意図的に言ってないだろ。
それがお前らの最悪なところだよ。
突っ込まれるのが怖くて言えないのだとは思うが、
だからゆとりは死ななければ直らない、と言ってるわけでさ。

で?どっちなんだ?
後者なら堂々とマウント取りに来いよ。
570デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/16(日) 11:10:40.38ID:lv3vm4Nk0
>>569
ほらな、何がやばいのか他人に聞かなきゃわからないだろ
煽れば教えて貰えると思っている甘ったれ野郎
571デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 11:39:09.26ID:Q57qqdXG0
というワケで評価用のテストドライバをテキトーにさくっとオレが書いてやったぞ

 https://ideone.com/FwRQ0E

あとはテキトーにやりなさい
オレのエレガントなテストドライバ関数群を使えば
いろんな整列アルゴリズムをバカでもチョンでも簡単に評価できる

 ①乱数列生成 :aho_malloc_random_data()
 ②列複製   :aho_malloc_clone_data()
 ③大小関係チェック:aho_check_seq1()
 ④要素存在チェック:aho_check_seq2()

リファレンス評価用に標準ライブラリqsort()もあわせて評価した
100,000件辺りの秒数で件数増加に伴うゴミっぷりの程度も評価している

このスレの低学歴知恵遅れたちが騒いでるようなコードについての問題は一切ない
vs2017でも適切に期待通りに動作することは確認した

評価する前から予見できてたことだが
挿入ソートがゴミすぎて困ることだけは改めて分かる

それ以外一切問題ない

低学歴知恵遅れが騒ぐコトはいつも的外れなワケ
572デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 11:49:03.98ID:+TcxNu6P0
>>570
それはお前のことだよゆとり。
そしてだからこそお前らは全く進歩せず、今でも池沼ゆとりのままな訳だ。

お前らは本当にワンパターンで、コミュ障も酷い。
それをパターン暗記で誤魔化そうとしているわけだが、そりゃ無理だ。
実際、それはお前にとって何ももたらさないし、その積み重ねが今な訳でさ。

少なくとも俺は何ヶ所も訂正すべき点を具体的に指摘している。
それに対してマウントを取るつもりなら、もっと重大なことを具体的に指摘せねばならない。
それをお前は出来ないから、どこかで見たフレーズで誤魔化そうとしているわけでさ。

ゆとりはマジでこれが酷い。
非ゆとりは、基本的には、自分で調べて理論武装し、挑んでくる。
この過程で成長する。だから、その後で紛糾しても、少なくとも当人には利益があるし、
当然勘違いしてたらぶっ叩かれるので修正もされる。つまり確実に本人は前進する。
お前らはこの過程をやろうとしないから、全く成長しないし、実際、してない。
だから今のお前が具体的に何も言えないわけでさ。
それを認めるのならまだしも、それをコピペフレーズで誤魔化そうとしているのだから重傷だよ。

聞くは一時の恥、聞かぬは一生の恥、って奴だよ。

リアルやID制のサイトならまだしも、
匿名掲示板ですら『恥』と思って聞けないその虚栄心では、リアルでは全く聞けてないだろ。
だからお前らは相変わらず池沼な訳でさ。
573デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 11:54:04.82ID:Q57qqdXG0
コレで挿入ソートがゴミ同然なのが
一目瞭然で分かる


 sort(>>525のコード)
 C言語なら俺に聞け 149 	->画像>6枚

 qsort
 C言語なら俺に聞け 149 	->画像>6枚

つまりもともとこんなゴミみたいなシロモノを
時間かけて最適化するのはムダ
574デフォルトの名無しさん (ワッチョイ d3b3-JU2d)
2018/12/16(日) 11:54:37.67ID:W0MJyJGm0
>>571
お前、口が悪くて思い込みは激しいがここまでちゃんとフォローしてやるってのは偉いな。
下手に外野から評論ばっかりしてる奴らよりよほどこのスレでは役に立ってるわ。
575デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/16(日) 12:07:06.08ID:fTV/MXSFa
ソートの性能は机上でわかるから、最適化について教えてくれや。
あとスーパースカラーの効き方とか絡めて語ってくれると助かるわ。
576デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 12:24:14.24ID:+TcxNu6P0
>>575
× 教えてくれや
× 助かるわ
お前らゆとりが駄目なのはそこなんだよ。他力本願過ぎ。
そして指摘しても糞女と同様開き直るし、救いようがない。

お前がどういう風に分かってないかなんて誰も知らないのだから、
お前自身がいろいろ調べて、

○ 俺的にはこう思うんだが、どうかな?

とやらないと駄目なんだよ。
具体的に上手くやったのは497で、497-499-502-503とならざるを得ない。
そのサイトには「シグナルでは使う」と書いていたから、それを否定する俺の見解を質してきたわけだ。
このやりとりは少なくとも彼には利益があっただろう。
そしてこの積み重ねが差になっていく。

お前も含めて、粘着共は何一つ意見を言えない。言う知能すらないからだ。
その差がどうして生じたのか、いちいち教えてやってんだからよく考えろよマジで。
577デフォルトの名無しさん (ワッチョイ 06f3-3flP)
2018/12/16(日) 12:25:29.13ID:XNrlNwMM0
>>525
挿入ソートの場合は、挿入すべき場所に直接挿入すればよいので、
swapで何度も入れ替えないようにして、必要なところに直接挿入するのがいいかもしれません。
一瞬バブルソートのように見えて、挿入ソートってこんなのだっけ?と思いました。

最適化についてはこのコードだけではなんともいえませんが、
大まかでよいのであれば、全体をclock関数で時間計測したように
この関数の中で経過時間を計測してみるのもよいと思います。
効果のある場所が限定できると推測もしやすくなりますので。
578デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 12:47:37.29ID:GOuL0+IB0
>>571
おおお、私の挿入ソートの為にありがとうござます。お手数おかけしました。
ちゃんと内容を読めていないので、時間を取ってテストドライバのソースを読んでみたいと思います。

一旦ひとまとめすると、
一応私の書いたソートは動いていて、ちゃんと「挿入ソート」になっているという感じでしょうか。
やはり、>>575さんもおっしゃる通り、なぜ-O無しと-O1の最適化の有無で、ソート時間が大幅に変わるのかが気になります。
コンパイラって不思議ですね。

>>577さん、ありがとうございます。
挿入ソート内での時間計測もやってみたいと思います。
この挿入ソートを作る前にバブルソートも作ったのですが、
以下の様に書きました。
void bubble_sort(unsigned array[], unsigned length)
{
 register unsigned *l = &array[0];
 register unsigned *r = &array[length - 1];

 while (r > l) {
  while (l < r) {
   if (*l > *r) {
    swap(l, r);
   }
   l++;
  }
  l = &array[0];
  r--;
 }
}

これに関しては、最適化の有無で極端にソート時間が変わる、というのはありませんでした。
と言っても最適化有効の方が速くはなっていましたが。
579デフォルトの名無しさん (ワッチョイ a77f-3flP)
2018/12/16(日) 13:49:55.21ID:1E8BbQgX0
乱数で特定のデータを作って、それがソートされてるっぽいから
アルゴリズムは正しい・・・って正しいのか?
580デフォルトの名無しさん (ワッチョイ da80-Da8q)
2018/12/16(日) 14:02:59.03ID:YrIrW4/W0
ほぼ整列済みのにデータに対してだけ速い挿入ソートがランダムなデータにはクッソ弱いのなんて当たり前じゃん
581デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 14:11:58.83ID:Q57qqdXG0
https://ideone.com/g3SF36
C言語なら俺に聞け 149 	->画像>6枚

忠実に書いてみて試してみたが
そういうほど効果はなかった

void insersion_sort2(aho_type_t* au_A, size_t n_A_length) {

  const aho_type_t const* cu_end_of_data = au_A + n_A_length;
  aho_type_t* au_j;

  for (aho_type_t* au_i = au_A + 1; au_i < cu_end_of_data; ++au_i) { // ①
    aho_type_t u_x = *au_i; // ②
    au_j = au_i - 1; // ③
    for ( ; au_j >= au_A && *au_j >= u_x; --au_j) { // ④
      *(au_j + 1) = *(au_j); // ⑤
    } // ⑥
    *(au_j + 1) = u_x; // ⑦
  }
}
582デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 14:12:26.99ID:Q57qqdXG0
  /*
  ① i ← 1
  ① while i < length(A)
  ②  x ← A[i]
  ③  j ← i - 1
  ④  while j >= 0 and A[j] > x
  ⑤   A[j+1] ← A[j]
  ④   j ← j - 1
  ⑥  end while
  ⑦  A[j+1] ← x
  ①  i ← i + 1
  ① end while
  */
583デフォルトの名無しさん (ワッチョイ 8a9f-5grR)
2018/12/16(日) 14:19:33.35ID:MKia07Gc0
またvoid君が暴れてたのかw
584デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 14:21:40.72ID:Q57qqdXG0
ちなみに乱数シードを変更して自動的に1000パターンのセルフチェックもやってみたが
>>525のコードの誤りは一度も検出されてない
種類を減らして重複を増やして試してみたりもしてる
コレでも>>525のコードの誤りは一度も検出されてない

 出力された要素に入力された要素が含まれること
 出力された要素の大小関係が適切であること

コレがひたすらプログラムでセルフチェックされてる
585デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/16(日) 14:23:51.69ID:lv3vm4Nk0
>>572
さっきからマウントマウントって
盛りのついたサルみたいなのはおまえだけだ

registerと書いてあったら何がやばいのか
仮引数に[]と書いてあったら何がやばいのか
やばいといった張本人=おまえが説明することだ
こればかりはググれで逃げることはできないぜ

失言でマウント取り損なって真っ赤になってるサルめ
586デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 17:18:28.63ID:+TcxNu6P0
>>585
じつはぼく、やばさがわかりません、まで読んだ
587デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/16(日) 17:23:33.91ID:lv3vm4Nk0
>>586
うん、おまえが言ったことがどうやばいのかは全然わかんねえ

525のコードに限らずとも
registerと書いたらどうやばいのか
仮引数に[]と書いたらどうやばいのか

早く言えよ脂ハゲ
それとも撤回か?
588デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 17:56:55.46ID:Q57qqdXG0
今回の最終コード(メモリ解放を忘れてた箇所を修正した)
 https://ideone.com/sylJTW

実行結果(挿入ソートの修正前後)
 ideone
  C言語なら俺に聞け 149 	->画像>6枚
 オレのPC
  C言語なら俺に聞け 149 	->画像>6枚

proc      elms   cts   cts/100000elms
sort(修正前) 524288 34.736 6.625366
sort(修正後) 524288 21.109 4.026222
qsort      524288 0.074  0.014114

結論:挿入ソートを使うのは徒労
    >>525のコード自体は一切問題ない
    そして、コードの誤りは一切なかった
     ⇒ つまり、この板には低学歴知恵遅れしかいないことがまた実証された
        つまり、低学歴知恵遅れがテキトーなことばっかりいってることがまた実証された
589デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/16(日) 18:41:12.85ID:lv3vm4Nk0
撤回でいいんだな? おい脂ハゲ
590デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 19:16:02.98ID:+TcxNu6P0
>>587
>>589
>>570
まずはお前自身の論理に一貫性を持たせようか。
>>570なんて全く今のお前自身だろ。

ゆとりは本当にこれが酷い。
お前らが『失敗作』扱いされるのも当たり前。
591デフォルトの名無しさん (ワッチョイ 8a9f-+gtp)
2018/12/16(日) 19:55:13.86ID:MKia07Gc0
void君と半角君がいるw
592デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 20:22:05.70ID:+TcxNu6P0
>>591
お前も味方の>>589に何か教えてやったらどうだ?
お前も自分の意見すら表明出来ないヘタレだし、そもそも問題を理解出来ないから無理か?

まあこれがゆとりが『失敗作』扱いされる理由だ。
本当によく考えろ。
593デフォルトの名無しさん (スフッ Sdaa-5grR)
2018/12/16(日) 21:11:35.54ID:78j4CJdmd
んで引数voidの件にはダンマリかよ
Cの基礎も知らずによく上から目線でゆとりをバカに出来るよな
上司や部下から陰で笑われてるだろお前
594デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 21:47:08.64ID:+TcxNu6P0
>>593
このスレ&過去スレ読んでそれ言ってるのか?
なら重傷だな

ゆとりって、本当に連呼リアンと知能もモラルも同程度だな
どうもお前らは連呼すれば既成事実が出来上がると本気で思っているようだが、そんなことはないから
595デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 21:55:54.72ID:GOuL0+IB0
>>588
本当に検証ありがとうございました。
今テストドライバのソースを眺め始めたところで、まだ読み終わっていないのですが、
10行目のマクロが do {} while (0) で囲ってあるのには何か理由や慣例のようなものがあるのでしょうか。
合わせて教えて頂けると嬉しいです。
596デフォルトの名無しさん (ワッチョイ 8a9f-+gtp)
2018/12/16(日) 22:00:32.41ID:MKia07Gc0
void君絶好調だなw
ゆとりを馬鹿にしているみたいだけどまだ若い分潰しが効く
それに引き換えvoid君は老害の一言に尽きる
引数voidって何だ?と書き込んだ時点でお前のレスの信憑性はお前の頭と一緒で限りなく薄いんだよ禿w
597デフォルトの名無しさん (ブーイモ MMb6-LjuL)
2018/12/16(日) 22:04:09.68ID:hxwpEJ+zM
引数void君の日曜日
598デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 22:14:09.84ID:+TcxNu6P0
>>596
ゆとりは知恵遅れすぎて整合性という概念がない。

王道と王道と(ryだ。
俺を信用しないのは自由だが、世界中の誰もそれをしないのには理由がある。
ゆとりはこのことすら認識出来ない。

だからゆとりは『失敗作』なんだよ。
なんつーか、普通に考えれば分かるだろ、が通じない。
そして無駄に議論が紛糾する。
お前らの足もお前らが引っ張ってるんだと思うぜ。
599デフォルトの名無しさん (アウアウカー Sa6b-8Py6)
2018/12/16(日) 22:17:44.41ID:A7Qua2Dpa
>>595
1文での表現で、かつ、セミコロンない場合のエラーを実現するためだね。
600 ◆QZaw55cn4c (ワッチョイ aa60-D8NS)
2018/12/16(日) 22:39:13.74ID:IjCemHtZ0
>>596
>10行目のマクロが do {} while (0) で囲ってあるのには何か理由や慣例のようなものがあるのでしょうか。
もう覚えなくともよい古代の小技でしかありません、気にしたら負け
601デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 22:40:10.46ID:GOuL0+IB0
なるほど、
if (a > b)
 swap(a, b);
などを置き換えられたときにエラーが発生しなくなるのですね。
勉強になりました。ありがとうございます。
602デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 22:41:05.38ID:GOuL0+IB0
×などを
〇などが
603デフォルトの名無しさん (ワッチョイ 069f-UKyl)
2018/12/17(月) 03:25:30.31ID:SLvNUvmN0
>>596
引数に void を知らないのはかなりの初心者だと思うよ。

まあ、大昔のC言語にはなかったんだけど、その大昔からずっと使っているなら引数に void を入れておけば
引数なしを表すという規格になって、そしてあらゆる標準的なヘッダファイルの中で使われ始めて
man getchar なんてやって man ページ出すと int getchar(void); なんてのが出て来て、試しに引数に何か
セットして呼ぶように書いたらエラーが出たりして、ああこりゃ便利になったなあなんてことを体験したりして、
まず忘れる事はないだろうから。
604デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/17(月) 06:30:07.34ID:QzDaCAv50
voidを知らないのは、K&R Cのまま更新が止まったボケ老人だ
若かった頃から不勉強の傾向が強かったやつね
605デフォルトの名無しさん (ワッチョイ 8e23-UKyl)
2018/12/17(月) 09:37:10.86ID:nW56DxVi0
>>497
それは別のところで確保すべき話ではないの?
606デフォルトの名無しさん (ワッチョイ 0a61-3flP)
2018/12/17(月) 12:43:01.45ID:FuitD2SD0
VOIDと書いてスタークルーザーを思い出す。
607デフォルトの名無しさん (ラクッペ MMb3-ppkv)
2018/12/17(月) 12:47:32.91ID:I/0A0iGaM
今Cやってる人はなに作ってるんですか?
608デフォルトの名無しさん (ワッチョイ 0a12-rp3U)
2018/12/17(月) 16:55:11.83ID:CFStKxet0
Javaのスキルが低すぎて干された人物でしょう
すると引数voidを初めて見たというセリフの整合性がつく
C言語ならマウンティングできると思ったんでしょ
609デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/17(月) 17:08:16.23ID:epqh6mY00
オレは単なるジョークだと思ってたんだが、本気だったとは
610 ◆QZaw55cn4c (ワッチョイ aa60-D8NS)
2018/12/17(月) 20:55:39.65ID:TMWWsAye0
>>604
K&R2 には、すでにして void は存在しましたけれども、K&R1 にはなかったのでしょうか?
個人的には void よりも void * の方が好きです、今でも何にでも使える最強アイテムだと思ってバンバン使っています…
611デフォルトの名無しさん (ワッチョイ ebf2-2dqZ)
2018/12/17(月) 21:11:40.45ID:WCs/11MM0
void*は一旦char*なりにキャストしてやらないと演算できないのが惜しい。
612デフォルトの名無しさん (ワッチョイ 3b61-IP3Y)
2018/12/17(月) 21:18:03.63ID:ddAMIqrq0
演算だって???
613デフォルトの名無しさん (ワッチョイ ebf2-2dqZ)
2018/12/17(月) 21:26:23.72ID:WCs/11MM0

ポインタ演算知らない人?
614デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/17(月) 21:51:10.09ID:epqh6mY00
分かるけど、省略はしない方が良い
615デフォルトの名無しさん (アウアウカー Sa6b-8Py6)
2018/12/17(月) 21:57:32.13ID:tIzZYkqxa
mallocの戻り値がchar *みたいな
616デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/17(月) 21:58:37.52ID:4lEE+Jgc0
惜しいもくそもない
キャストで演算結果がかわるから当たり前

↓もしかしてpとqは同じ結果になるとか思ってんの
void* p_aho;
void* p = (char*)aho+1;
void* q = (short*)aho+1;


まずポインタがなんなのか分かってない
頭わるう
617デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/17(月) 22:06:29.28ID:4lEE+Jgc0
ジェネリックポインターがどういうもんかすら分かってない低学歴知恵遅れが
低学歴知恵遅れのvoid君をバカにしてんのか

コレは滑稽
618デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/17(月) 22:08:35.85ID:epqh6mY00
void君かな?
619デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/17(月) 22:09:18.40ID:4lEE+Jgc0
顔真っ赤にしてるし
620デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/17(月) 22:10:03.38ID:4lEE+Jgc0
省略可能()だって
コレは面白いことをおっしゃる
621デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/17(月) 22:40:03.34ID:kePHxvF20
初心者です。
voidが存在しない時代のC言語では、関数の戻り値などはどのように記述していたのでしょうか。
良かったら教えてください。
622デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/17(月) 22:44:15.58ID:P/jTcJUAa
最初は戻り値はintのみのはず。
623デフォルトの名無しさん (JP 0H8b-O0Yg)
2018/12/17(月) 22:45:59.53ID:5htGqSBWH
何も書かないとint
624デフォルトの名無しさん (ブーイモ MM47-LjuL)
2018/12/17(月) 22:46:17.04ID:YSKVu3hZM
>>607
Linuxのデバイスドライバ
625デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/17(月) 22:53:04.98ID:kePHxvF20
>>622,623
なるほど何も書かずにいきなり関数名とかだったんですね。
そうすると自然に戻り値はint型として扱われる感じなんですね。
ありがとうございます。
626デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/17(月) 23:10:51.39ID:m222wRI70
>>603-604
結局連呼しか出来ないのか。
そしてそれがお前自身初心者で老害な証明であることにも気づけないんだろ。
お前ら本当に終わってる。


が、まあ、それはさておき、他人を追い落としたいのなら、
ネガティブキャンペーンではなく、ポジティブな競争を仕掛けろ。
つまり、俺よりもっと的確なアドバイスが出来れば、当然俺より上だというわけだ。
半角君がいいとは思わないが、少なくとも彼はこれをやってるだけマシだ。

東亜板の連中なんて馬鹿が大半で、本質が見えてない。
だから非韓三原則や法則

韓国人は、助けない、教えない、関わらない
韓国人と関わると不幸になる

なんてのを「韓国人」属性に結びつけているが、実際はそうじゃない。
(理由は他にもあるが、一つには)連中はネガティブキャンペーン『しか』やらないから、
結果的にそれに巻き込まれ、不幸になるだけだ。
そしてそれは今のお前ら池沼ゆとりにも当てはまる。
ゆとりなんて叩きたがっている奴はいくらでもいる。
馬鹿共がそれに気づいたら、お前らもっと終わるぞ。
その癖はマジでさっさと直せ。

ウンコを投げ合っていたとしても、それがポジティブ方向への競争なら、
だんだんマシにはなるんだよ。
お前らもちゃんとそれに参加しろ。
627デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/17(月) 23:38:18.98ID:4lEE+Jgc0
void君の場合、キミラみたいにとてつもなく頭悪いワケでない
void君は、頭おかしい

頭おかしいから無罪
責任能力がない
628 ◆QZaw55cn4c (ワッチョイ aa60-D8NS)
2018/12/17(月) 23:58:26.51ID:TMWWsAye0
>>627
私とおんなじ刑法39条適用組ですね!
629デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/18(火) 00:26:04.62ID:qkRcBu1Pa
みんな仲間さ
630デフォルトの名無しさん (ワッチョイ aaf9-fk3u)
2018/12/18(火) 00:28:28.60ID:RutBA2Qm0
>>626
そもそもウンコだって分かってるのに投げるなよ
631デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/18(火) 00:54:59.12ID:GicIxRpF0
>>630
> ワッチョイ aaf9-fk3u
死ね

つーか、お前みたいな奴しかいないからゆとりは駄目なんだよ。
文句言う前に何でもいいから知ってる範囲で何か言え。
そしてそれが有効打かどうかを競うんだよ。
それすらしない奴には文句を言う権利すらないんだよ。

お前らは分かってないんだろうが、マジな話、
「ゆとり★ちゃんねる(仮称)」が未だに存在しないのもおかしな話なんだよ。
お前らゆとりはゆとり内で確実に内ゲバしてる。(自覚症状はないのだと思うが)
原因はお前らのその態度だと思うぞ。足を引っ張り合ってる。
632デフォルトの名無しさん (ワッチョイ 069f-ez/E)
2018/12/18(火) 01:29:36.53ID:HuP+yDtL0
おだいじに
633デフォルトの名無しさん (ワッチョイ 8bb3-GDnO)
2018/12/18(火) 01:42:38.54ID:AChTjxH60
void* を大きさ1として演算できちゃう gcc 拡張がキモイ
634デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/18(火) 06:36:55.66ID:xgHv4hiI0
> f34f-rp3U

効いてる効いてるw
635デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/18(火) 09:31:46.74ID:92SsvGE7a
>>633
俺も最初知った時は驚いた。
636デフォルトの名無しさん (ブーイモ MMaa-DFdf)
2018/12/18(火) 09:36:54.35ID:6efkgyQbM
>>626
的確なアドバイスとかどこの口が言ってんだよwww
voidもunsignedも知らないレベルなのに初心者をとっちめて追い返してるだけじゃん。ホント屑
637デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/18(火) 09:40:18.56ID:xgHv4hiI0
registerと書いたら何がまずいのか説明マダー?(tntn
638デフォルトの名無しさん (JP 0Hd7-GyNv)
2018/12/18(火) 17:11:09.05ID:272sPWG0H
#include<stdio.h>
#define N 5

int sum(int *p){

int wa=*p,i,a[N],k;

for(i=1;i<N;++i){
wa=wa+*(p+i);
}
return(wa);
}

main(){
int a[N];
int i;

for(i=0;i<N;++i){
scanf("%d",&a[i]);
}
printf("%d\n",sum(a));
}
639デフォルトの名無しさん (JP 0Hd7-GyNv)
2018/12/18(火) 17:11:45.38ID:272sPWG0H
#include<stdio.h>
#define N 5

int sum(int p[]){

int wa=p[0],i,a[N],k;

for(i=1;i<N;++i){
wa=wa+p[i];
}
return(wa);
}

main(){
int a[N];
int i;

for(i=0;i<N;++i){
scanf("%d",&a[i]);
}
printf("%d\n",sum(a));
}
640デフォルトの名無しさん (JP 0Hd7-GyNv)
2018/12/18(火) 17:12:09.11ID:272sPWG0H
#include<stdio.h>
#define N 5
#include<math.h>

float vecNorm(int *p){

int wa=*p**p,i;
float ans=0;
wa=0;

for(i=1;i<N;++i){
wa=wa+*(p+i)**(p+i);
}

ans=sqrt(wa);
return(ans);

}


main(){

int a[N];
int i;

printf("enter vec:");
for(i=0;i<N;++i){
scanf("%d",&a[i]);
}
printf("norm=%f\n",vecNorm(a));
}
641デフォルトの名無しさん (ワッチョイ 6d61-u3CH)
2018/12/20(木) 01:12:02.01ID:PGlfyh8s0
PARI/GPでの多項式の割り算について
例えば Mod(x^5,x^2-x-1) と入力すると
Mod(5*x+3,x^2-x-1)
と出力されます。
この剰余類 5*x+3 を多項式として次に使いたいのですが
一度コピペして貼りつける以外の方法はありますか?
642デフォルトの名無しさん (JP 0H4b-stut)
2018/12/20(木) 14:46:32.32ID:dwI07DhgH
うちの大学の線形リストのノードの削除方法が異端なんだけど、本当にあってるのか教えて
コードはコレ
http://www.cc.kyoto-su.ac.jp/~yamada/ap/list.html#delete
次ノードの繋ぎ変えしてないしワケわからん
643デフォルトの名無しさん (JP 0H4b-stut)
2018/12/20(木) 14:49:53.65ID:dwI07DhgH
if文の中でやってるところが意味不明で
644デフォルトの名無しさん (アークセー Sx61-o/Td)
2018/12/20(木) 15:23:58.12ID:HJafH88zx
ヒント
ndPtrPtrは次のノードを示すアドレスが格納されている変数のアドレス、言い換えるとnextメンバのアドレス。
645デフォルトの名無しさん (ブーイモ MMeb-SnKH)
2018/12/20(木) 15:23:59.11ID:pLjZUA4qM
あってる。異端でもなんでもない
646デフォルトの名無しさん (アウアウカー Sa51-4Q7E)
2018/12/20(木) 15:33:59.42ID:mvSJol6Sa
>>642
それ以外の方法あるか?
まあ変数の使い方はいろいろあると思うけど
647デフォルトの名無しさん (ワッチョイ 2361-pJxC)
2018/12/20(木) 15:56:04.93ID:7Qt44qX50
>free(*ndPtrPtr);
これを
free(ndPtrPtr);
と誤読してちょっと頭抱えた。
648デフォルトの名無しさん (ワッチョイ 4593-AeXI)
2018/12/20(木) 16:20:36.96ID:HdfUNn3W0
int nodeDelete(node_t **ndPtrPtr, int n) 内の
if (*ndPtrPtr != NULL) ...
が分からんとすれば、その前のwhileブロックから抜ける条件・
抜けたときの状態を把握できてないんだと思うぞ。

whileブロックの動作を再考する方が早いかも知れん。
n == 0 の場合
0 < n, n < リストのノード数 の場合
n >= リストのノード数 の場合
649デフォルトの名無しさん (スプッッ Sd03-stut)
2018/12/20(木) 16:27:02.34ID:ebMind6hd
理解したわ
ポインタがなに指してるか理解不足だったわ
650デフォルトの名無しさん (アメ MM59-lxyq)
2018/12/20(木) 16:50:21.12ID:+Bqr0ubdM
自分の理解不足を棚に上げて人様の正統なコードを異端呼ばわりしたことについて一言。
651デフォルトの名無しさん (ドコグロ MM69-ls00)
2018/12/20(木) 18:53:47.26ID:As7dWUw1M
まあ初心者にはありがちだし正直に理解不足認めてるんだからくだらんことで話引っ張るなよ
652デフォルトの名無しさん (ブーイモ MM43-6EUo)
2018/12/20(木) 20:34:36.71ID:RsFs7LFZM
>>642
異端じゃないがセンスはない
線形リストなんてlist_headが決定版なんだからそれだけ覚えておけばいい
653デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/20(木) 23:55:08.25ID:y9sbY0Ic0
>>642
異端っちゃ異端。普通は以下。
typedef struct nodetag {
struct nodetag *next; // 走査を速める為に先頭、と言うか本質部分は前側に
data_t data; // dataが最後、と言うかオマケ類は全部最後、そうじゃないと継承出来ないし
};
int nodeDelete(node_t **ndPtrPtr, node_t *ndPtr); // n番目を指定とかありえん、リストはそういう使い方はしない
int nodeDelete(node_t **ndPtrPtr, data_t data); // またはこれ

コンテナ類なんてOOPがドフィットするんだから、OOP的に書かないと駄目なんだよ。
こいつはそれが出来ていない。
リストを使ったこと無い奴がとりあえず書いてみました、というコードであり、良いコードではない。


池沼ゆとりが多いようなので明記しておくが、
お前らは『老害』に『年齢条項』を入れてゆとり≒20代は該当しない、ということにしたがるが、それは間違いだ。
老害の定義は、公平には、

・その問題に、より効率的に対処できる新しい方法があるにも関わらず、
古い方法しか使わない/使えない馬鹿

の事だ。
OOPなんて30年前にC++により再定義され、大変素晴らしかったからほぼ全部の言語に採用されてる。
今時OOPを理解してないのも、またコンテナ等OOPに最適なものにOOPを適用しないのも老害だ。
そしてこの老害コードで学ぶ>>642もまた、最初から「老害」となる。
(642が悪いわけではないが、教科書のコードに問題があり、「老害」からのスタートになる)

分かるか?
老害の十分条件には「知っているけど使わない」のみならず、単に「知らない」も入るんだよ。
このコードに問題を検出出来ないのなら、その時点で老害だ。
それはOOPを知らない、ということだから。
重ねて言うが、老害に年齢は関係ない。実際、池沼ゆとりの大半が既に老害になってるだろ。
654デフォルトの名無しさん (ワッチョイ bd7b-wUZI)
2018/12/21(金) 00:27:52.80ID:pse73zvs0
「そうじゃないと継承できないし」
見事に手段が目的化してるな。
OOPがクソ宗教ってはっきり分かんだね。
655デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/21(金) 00:46:55.39ID:e7/cJrp90
>>654
絵に描いたような老害乙

Javaみたいに全部無理矢理OOPは問題があるとして、
C++の範囲で普通に使う分には問題ないし、今更OOPに文句言うのも老害だろ。
第一世代はCが制覇したが、第二世代はOOPが制覇してる。
その理由を考えろ。
656デフォルトの名無しさん (アウアウカー Sa51-TLad)
2018/12/21(金) 01:00:18.07ID:hN5N0o1Ma
リストは順序あるでしょ。
657デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/21(金) 01:08:54.29ID:j37Ohb1y0
普通にほとんどのOSはCで書かれてる
いまでもCが天下
658デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/21(金) 01:11:08.64ID:j37Ohb1y0
OSのアプリケーションインターフェースは
ほぼすべてC

Cのインターフェースをそのまま使えないウンコ言語なんか
使い物にならない
659デフォルトの名無しさん (ワッチョイ bd05-aZCD)
2018/12/21(金) 01:27:10.71ID:+b5aVjIs0
>>653
痛いなー。もういろいろ悔しくて仕方ないってことは伝わったよ
660デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/21(金) 01:52:35.34ID:e7/cJrp90
>>656
お前もリスト使った事無いのに、何故文句だけ言うの?
それがゆとりが駄目なところだ。死ね。

ていうかマジな話、ゆとりが未だにゆとりなのはこれが原因だと思うぜ。
お前ら自身がおかしな方向に誘導しまくってる結果、
ゆとり『だけ』のコミュニティでは収拾がつかず、コミュニティを保てない。
だからお前らは年齢層が高くて居心地が悪いと分かり切っているここ2chに出張ってくるしかないわけでさ。
これは俺らにとっても迷惑だし、お前らにとっても不幸な話だぞ。

インタフェース自体は、実際使えば「これは間違いだ」とすぐ分かる。
n番目、でリストを管理するなんてあり得ないから。
ただ、使ったことが無くとも、C++等参考にすれば、正しい方向には進めるだろ。
それもせず、とりあえず文句を言うその癖はマジで早く直せ。
お前ら自身がそれで被害を被っている。(自覚出来ていないようだが)

https://ja.cppreference.com/w/cpp/container/list/erase
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.linkedlist-1.remove?view=netframework-4.7.2

C++は「イテレータ()」とかアホなことやってるから余計に分かりにくくなってるが、この場合は「ポインタ」だと思っていい。
(というか、OOPのイテレータは糞だ。これは認める。あれはおそらくJavaが元凶だが)
.NETはまんまだが、Node<T>は参照渡しになるからこれも「ポインタ」だと思っていい。

ここら辺も調べればすぐ分かる話でさ、この意味ではその京産大の先公は「老害」だと断定出来る。
過去スレで東工大のリストが出てたろ。あっち見た方がいいと思うぜ。


>>659
お前がな。
だだこねれば受け入れられるのはゆとりコミュニティ内だけの話であって、マジで迷惑だから止めろ。
上記の通り、そのコードは一般的に見て「かなり間違った」事をやってる。
それを見分ける能力もないのに文句だけ言うなゴミゆとり。
661デフォルトの名無しさん (アウアウウー Sac9-TLad)
2018/12/21(金) 02:19:18.24ID:lfxw1L5ka
リストは順序あるよ
662デフォルトの名無しさん (ワッチョイ 9b9f-t5R+)
2018/12/21(金) 02:30:30.08ID:UIMsFVlQ0
あるある。
663デフォルトの名無しさん (ワッチョイ a3d4-q1e7)
2018/12/21(金) 05:32:19.37ID:lsetsG4i0
C言語で継承とか意識しなくちゃいけないんですか?
664デフォルトの名無しさん (ワッチョイ 236e-q1e7)
2018/12/21(金) 05:50:21.94ID:FGbnqlsP0
>>653
1つの方法が絶対と思い込んでるおまえこそ老害の典型だ
頭固すぎ
665デフォルトの名無しさん (ワッチョイ 236e-q1e7)
2018/12/21(金) 05:51:36.03ID:FGbnqlsP0
>>663
そもそもだよな
666デフォルトの名無しさん (ワッチョイ 23b3-ckn8)
2018/12/21(金) 06:29:14.35ID:PkTs+Gix0
最近継承とか覚えたから誰かに話したくてしょうがないんだろ w
まあ気持ちはわかるが
667デフォルトの名無しさん (ワッチョイ 9b9f-t5R+)
2018/12/21(金) 08:37:47.92ID:UIMsFVlQ0
そう言えばそうじゃないと継承できないって、もしやC++特有の決まりなのかな?
クラスが作れる言語でクラス変数の宣言の順序が関係する言語を知らんのだけど。
668デフォルトの名無しさん (アメ MM59-wUZI)
2018/12/21(金) 08:51:45.23ID:9Mj5/4cfM
継承って、OOP三本柱、継承・多態・カプセル化のうち最も早く信用を失った要素じゃん。
今じゃ当のOOP界隈自身が継承より委譲とか言っちゃってる。
669デフォルトの名無しさん (ワッチョイ ab23-q1e7)
2018/12/21(金) 09:43:00.98ID:C5YB7rUV0
多態こそがOOPの本質だと思っているので
それ以外はオマケ程度にしか見てないです
670デフォルトの名無しさん (ワッチョイ 236e-q1e7)
2018/12/21(金) 12:03:47.45ID:FGbnqlsP0
スレチ
C++スレでやれ
671デフォルトの名無しさん (アウアウカー Sa51-TLad)
2018/12/21(金) 12:08:33.02ID:coLyQ5Vra
メッセージングです
672デフォルトの名無しさん (ワッチョイ 4b30-q1e7)
2018/12/21(金) 12:14:41.72ID:PRxQR0TH0
664 名前:デフォルトの名無しさん (ワッチョイ 236e-q1e7)[sage] 投稿日:2018/12/21(金) 05:50:21.94 ID:FGbnqlsP0 [1/3]
>>653
1つの方法が絶対と思い込んでるおまえこそ老害の典型だ
頭固すぎ

665 名前:デフォルトの名無しさん (ワッチョイ 236e-q1e7)[sage] 投稿日:2018/12/21(金) 05:51:36.03 ID:FGbnqlsP0 [2/3]
>>663
そもそもだよな

670 名前:デフォルトの名無しさん (ワッチョイ 236e-q1e7)[sage] 投稿日:2018/12/21(金) 12:03:47.45 ID:FGbnqlsP0 [3/3]
スレチ
C++スレでやれ
673デフォルトの名無しさん (ドコグロ MM41-ckn8)
2018/12/21(金) 12:30:50.77ID:choQhZIjM
>>667
> そう言えばそうじゃないと継承できないって、もしやC++特有の決まりなのかな?
そんなわけあるか w
そもそも>>653の奴を継承って言うこと自体がちょっとおかしい
674デフォルトの名無しさん (ワッチョイ 236e-q1e7)
2018/12/21(金) 12:39:24.63ID:FGbnqlsP0
>>672
何か用か?
675デフォルトの名無しさん (アウアウウー Sac9-TLad)
2018/12/21(金) 12:52:04.69ID:lfxw1L5ka
継承を頑張ったプログラムって、疎結合・高凝集からどんどん外れていく運命にあるんだよね。
676デフォルトの名無しさん (ドコグロ MM41-ckn8)
2018/12/21(金) 12:56:17.53ID:choQhZIjM
そりゃ継承ごときで頑張らないといけない>>675ならそうなるだろうよ w
677デフォルトの名無しさん (アークセー Sx61-o5ET)
2018/12/21(金) 12:56:53.99ID:eqYC63Aux
継承はそのうち親子関係に矛盾が生じ、親クラスのメソッドやブロパティを隠したくなる。
678デフォルトの名無しさん (ワッチョイ 236e-q1e7)
2018/12/21(金) 13:48:48.03ID:FGbnqlsP0
下手な継承休むに似たりというだけ
継承そのものの是非とは無関係

その昔、多重継承をまず否定ありきで喚いていた連中とお前ら同じだ
679デフォルトの名無しさん (ワッチョイ 7d8a-1vVt)
2018/12/21(金) 13:52:55.77ID:Vi7rbNdd0
C++亡者はなんでCのスレで延々と雑談するんだろう
680デフォルトの名無しさん (アメ MM59-wUZI)
2018/12/21(金) 14:11:28.71ID:PiZ4lBZmM
継承より委譲。継承は間違いだったby OOPコミュニティ一同
https://refactoring.guru/replace-inheritance-with-delegation
681デフォルトの名無しさん (アウアウウー Sac9-0FqV)
2018/12/21(金) 15:27:16.62ID:mfb3XB1ua
>>673
そうだよな。普通のオブジェクト指向言語は順序に関わらず継承できるよな。
とすると普通でない言語での話かまたは彼が何かを誤解しているということかな。
682デフォルトの名無しさん (アウアウウー Sac9-TLad)
2018/12/21(金) 15:50:13.39ID:lfxw1L5ka
継承とはキャストと見つけたり
683デフォルトの名無しさん (ワッチョイ 236e-q1e7)
2018/12/21(金) 16:19:17.16ID:FGbnqlsP0
>>680
継承より委譲を使うべき事例を挙げているにすぎない
684デフォルトの名無しさん (アメ MM59-wUZI)
2018/12/21(金) 16:31:46.47ID:PiZ4lBZmM
継承より委譲を使うべきかは「あとで」発覚する。
犬クラスや猫クラスを哺乳類クラスから継承させて喜んでいるところに、問題(カモノハシ)は突然やって来るのだ。
そうなってからあわてるよりも、常に委譲を使い、継承のことなど忘れさるべきだ。
685デフォルトの名無しさん (ワッチョイ 95b3-5YD5)
2018/12/21(金) 17:02:28.85ID:vKEYTKwK0
そういやgolangは継承捨てちゃったんだよな
686デフォルトの名無しさん (ワッチョイ 236e-q1e7)
2018/12/21(金) 17:07:16.46ID:FGbnqlsP0
>>684
1行目と2行目以後、言ってることが矛盾してるぞ
「あとで」か「常に」か、どっちなんだ
687デフォルトの名無しさん (バッミングク MM2b-o5ET)
2018/12/21(金) 17:16:20.54ID:QpLg2mIsM
>>686
横からだけど、全く矛盾してないぞ?
どこが矛盾してるんだ?
688デフォルトの名無しさん (アウアウウー Sac9-0FqV)
2018/12/21(金) 17:31:07.39ID:mfb3XB1ua
うん。矛盾してない。
日本語よくわからない人かな?
689デフォルトの名無しさん (ワッチョイ a3d4-q1e7)
2018/12/21(金) 20:19:10.57ID:lsetsG4i0
初心者です。

カモノハシは哺乳類ですが、哺乳類クラスを継承することでどのような問題が発生するのでしょうか?
よろしければ教えてください。
690デフォルトの名無しさん (ワッチョイ 3564-Xnhl)
2018/12/21(金) 20:44:04.05ID:QZspeJhP0
妊娠メソッドが規約に違反してしまいます。
691デフォルトの名無しさん (ドコグロ MM41-ckn8)
2018/12/21(金) 20:45:30.64ID:choQhZIjM
>>681
だから継承でもなんでもなくて構造体の最後の要素の長さを可変長にしてるだけ
99.9%問題ないけど厳密には規格違反だったと思う
692デフォルトの名無しさん (アウアウカー Sa51-TLad)
2018/12/21(金) 20:47:05.89ID:b6qAhl4Oa
>>689
いつ哺乳類と分類できたんだという話だよな。
その分類もいろんな切り口があるわけだし。
693デフォルトの名無しさん (ワッチョイ a3d4-ygkw)
2018/12/21(金) 20:57:17.23ID:lsetsG4i0
なるほど、カモノハシは胎生ではなくて産卵するので問題になりうる、ということですね。
ありがとうございます。
694デフォルトの名無しさん (ワッチョイ f54e-Wbbf)
2018/12/21(金) 21:37:11.59ID:81A29Thc0
オライリーのアルゴリズムクイックリファレンス持ってる人居ませんか?
アルゴリズムを勉強したいんですけど、結構ソースコードがあって分からないです
695デフォルトの名無しさん (ワッチョイ 9b7f-pJxC)
2018/12/21(金) 22:40:36.57ID:HoIQMu/H0
あれ肝心なところは「ここでC++のテンプレートを使って・・」とか
「○○ライブラリを使って・・」となってて、結局よく分からんかった。
696デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/21(金) 22:46:23.26ID:e7/cJrp90
本当にゆとりはどうしようもないな。

初心者は絶対的な知識量が足りてないから、やってることは結果的に「老害」と一致する。
C言語なんて20年ほぼ変更無し=ここ20年の進歩を「文法的には」取り込めてないのだから、
文法から入るお前らみたいな奴は必ず「老害」からのスタートになってしまうし、実際そうなってるだろ。

この点、やはり初心者は新しい言語からやるべきなのさ。
そうすれば、少なくともお前らのような「古くて非効率な手法しか使えない馬鹿=『老害』」にはならずに、
「新しくて効率的な方法しか使えない新人」になるが、こっちの方がずいぶんマシだ。
とはいえ、新しすぎて評価が固まってない言語も危険ではあるが。(具体的にはGoがゴミ)

「継承」に粘着している馬鹿は継承の実装を考えてみるといい。
C++は当初はトランスパイラ=C++文法をC言語に変換してCコンパイラを通すもの、だったと聞く。
同様に、C++でのOOPをC言語で実装する際、どう変換するか考えてみるといい。
正解は、他言語のOOPの実装をググれば得られるだろう。

継承については色々議論があるが、今回のようにコンテナの場合は、
ListBaseクラスを継承しテンプレートでデータ構造に幅を持たせるのがとりあえずの正解だよ。
おそらくstd::list<T>もそうなってると思うぜ。(ただし速度重視で全テンプレート展開もあり得るが)
そしてC言語においても同等のオブジェクトコードが得られるソースコードを記述しろ、という話であってさ。
(それ以前にコンテナが欲しければ素直にC++使った方がいいと思うが)

というか、C++は改良版Cなんだから、C++を食わず嫌いするのも典型的な老害なんだよ。
当然だがC言語が抱えていた問題点は修正されてる。
コンテナ等も完全に整備されてる。
スマポ()とかやってるC++erは馬鹿だから無視でいいが、
Cの問題点に直面してるのにC++を試してない奴は定義通りの老害だよ。
Cが出現した頃とはずいぶん状況が変わっているわけでさ。
https://cpplover.blogspot.com/2016/05/mitsicp.html
697デフォルトの名無しさん (ワッチョイ bd7b-wUZI)
2018/12/21(金) 23:15:48.04ID:pse73zvs0
だったらC++スレ行けば?
PythonやJSのスレでRubyのウンコード貼り付けて宣伝する糞キチガイと同じ臭いすんだわお前。クサい。
698デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/21(金) 23:43:53.69ID:e7/cJrp90
>>697
文句言う前にOOPを理解しろよ。お前は完全に「老害」だぞ。
そしてCでもOOPに準じてコードを書け、という話であってさ。

ゆとりは幼稚すぎる。
もうちょっとましな反論は出来ないのか?

○○と同じ臭いがする、というのもまたお前らのパターンのようだが、
結局の所、当たってる奴がいないだろ。
それは、ゆとりの脳は1bitの容量しかなく、
「ぼくのすきなひと」「ぼくのきらいなひと」しか解像度がないからだ。
そんなことやり続けてるからお前らは幼稚園児のままなんだよ。

が、マジな話、C言語でもOOPを理解してコーディングするのとデタラメにやるのではずいぶん違うから、
OOPはマジで理解しとけ。
むしろC言語(というか各言語)は方言でしかなく、
プログラミングパラダイムとしてのOOPの方がつぶしが利くし、有用だ。
699デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/21(金) 23:46:17.30ID:j37Ohb1y0
https://ideone.com/WQ3pQP

animal
┣platypus
┗bird━penguin

普通にCでも継承はできる
低学歴知恵遅れだとCではできない

もともと継承なんか使ってもいいことなんかないからな
低学歴知恵遅れほど嬉しがって継承使う
700デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/21(金) 23:58:01.00ID:j37Ohb1y0
何度もいうが
オレレベルぐらいでないとオブジェクト指向はムリ

何度もいうが
低学歴知恵遅れにオブジェクト指向は
キチガイに刃物

何度もいうが
この板にいるような低学歴知恵遅れに
オブジェクト指向はムリ
701デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/22(土) 00:14:40.06ID:ruBkeT7Z0
>>699
毎回お前のその無駄な情熱はどこから来るのか謎だが。

一応言っておくと、parentを持つその方法は「包含」であって、「継承」ではないぞ。
この際大した問題ではないが。
702デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/22(土) 00:18:09.34ID:b6CiPLFa0
低学歴知恵遅れは
vtableも知らないのか

レスから頭の悪さがにじみ出てtる
703デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/22(土) 00:20:00.60ID:b6CiPLFa0
仮想関数でないメンバ関数は
はっきりいって普通のCの関数と同じだからな

まず低学歴知恵遅れは基本的なことがわかってない

こんなのがC++つかうとかムリ
704デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/22(土) 00:22:20.24ID:ruBkeT7Z0
あとついでに言っておくと、リストについては、

・おそらくポインタに不慣れだから無駄に引っかかってるだけ
・どうせリストなんて使わない
 (=事実としてその京産大の先生は使ったことがないから間抜けなインタフェースになってる)
・そもそもコンテナが必要ならC言語以外では普通に標準orフレームワークで整備されてる
 (=ただ単に再開発してるだけ)

だから、引っかかった場合はとりあえず無視でいいと思うが。
705デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/22(土) 00:23:04.93ID:b6CiPLFa0
もうな低学歴知恵遅れはレスすればするほど
低学歴知恵遅れなのを自白することになるからな

レスしないほうがいい
706デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/22(土) 00:34:25.01ID:ruBkeT7Z0
>>702
vtableはフラットに構成されてるものなんだよ。
お前のは階層構成になってるし、実際、直接呼び出せてないだろ。(無駄にオーバーヘッドがある)
それは「継承」ではない。

まあ正直そこら辺は割とどうでもいいのも確かだが。
707デフォルトの名無しさん (ワッチョイ 2312-OVaG)
2018/12/22(土) 00:35:32.56ID:mRtO7h8x0
>>696
C言語なら俺に聞け 148
http://2chb.net/r/tech/1537347410/37
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
708デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/22(土) 00:36:02.90ID:b6CiPLFa0
また低学歴知恵遅れが
もっと頭悪いこといいだしてるわ
709デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/22(土) 00:38:18.48ID:b6CiPLFa0
もうね
支離滅裂すぎて
コメントしようがない

それぐらいめちゃくなこと書いてる自覚が
低学歴知恵遅れにはない
710デフォルトの名無しさん (ワッチョイ cb80-5YD5)
2018/12/22(土) 00:41:48.52ID:b6CiPLFa0
頭悪すぎると
自己防衛本能が働くのかもしれないが
脳みそが空想の世界にいくらしいな

どうやったらそんな頭悪いええ加減なレスを
自信満々に淡々と書けるのか不思議でならないわ
711デフォルトの名無しさん (ワッチョイ 236e-q1e7)
2018/12/22(土) 01:48:01.62ID:ghZDfTzQ0
>>696
20年て、どこから出てきたマジックナンバーだ?
それを言うなら29年なんだが
712デフォルトの名無しさん (ブーイモ MM43-6EUo)
2018/12/22(土) 07:52:56.06ID:gJp1vt+rM
Linusがcppを排したのは正解だったんだな
713デフォルトの名無しさん (ワッチョイ 03eb-549A)
2018/12/22(土) 08:27:41.36ID:LEZtop+80
低学歴知恵遅れ&お前ら連呼の人が、引数 void って初めて見たぞ
の人と同一人物だったとは
714デフォルトの名無しさん (ワッチョイ cb81-q1e7)
2018/12/22(土) 10:05:42.90ID:Ym27DU080
C言語のスレだから、そろそろ話をC言語に戻そうよ
C++の話は専用スレでも立ててそこで継続してくれ
715デフォルトの名無しさん (ワッチョイ 9be7-omPw)
2018/12/22(土) 10:15:17.63ID:j02wAUXX0
iZ-Cは魅力的なAPIがいっぱいだよ。
716デフォルトの名無しさん (ワッチョイ 4593-AeXI)
2018/12/22(土) 11:12:54.97ID:BR4LVxYj0
新設するまでもなくC++のスレッドも複数あるからなぁ。
濃いネタばっかりで「C++はいいぞ、早くCから移行しろ」程度じゃ
相手にしてもらえないレベルだと思うけど。

…いや、俺も理解できてるわけじゃないがな。
717デフォルトの名無しさん (アウアウカー Sa51-TLad)
2018/12/22(土) 11:51:34.32ID:aSH6WKCWa
Cでオブジェクト指向っぽく書くと継承しなくていいのがいいよね。
冗長にはなるけど。
718デフォルトの名無しさん (ワッチョイ bd7b-wUZI)
2018/12/22(土) 12:11:28.34ID:q6a6sTJo0
OOP自体が間違い。OOP書きたいのにC使うのは間違い中の間違い。
719デフォルトの名無しさん (アウアウカー Sa51-TLad)
2018/12/22(土) 12:26:28.69ID:1IcOSx0Ja
>>718
じゃあどう書くわけ?
デザインパターンを常に排除すんの?
720デフォルトの名無しさん (ワッチョイ 2361-9KOk)
2018/12/22(土) 12:55:54.08ID:FB4FQRnX0
関数の第一引数を構造体にするならファイルポインターもオブジェクト指向に
なっちゃうからな。
仮想関数テーブルとかつくっちゃってるのかな?
721デフォルトの名無しさん (ワッチョイ c5f2-5YD5)
2018/12/22(土) 13:17:52.98ID:GdiBSH+o0
昔CでのOOPが流行った頃は「オブジェクト指向=継承」みたいな捉え方が主流だったから
構造体にvtable持ってピギーバックで継承して、って感じだったな。
722デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/22(土) 13:20:28.89ID:ruBkeT7Z0
>>717
それは一理ある。

俺自身はCもclass構文を取り入れるべきだと思っているが、実際そうならないのは、

・分かっている奴が書けば何とかなる

からなのも事実だ。
そして「継承」が無駄に嫌われているのは、Javaでは関数ポインタを提供しなかった為、
継承を使うべきでない局面で使われまくり、余計に意味不明になる事が多かったからだ。
デザインパターン自体がバッドプラクティス集なのもそのせいだ。
あれも本来は「第一級関数」を持つ言語で書き直し、
既存のJavaで書かれたデザインパターンは老害ゴミとして捨て去られるべきなのさ。

ただ、本来「継承」を用いるべき局面については当然「継承」の方がフィットするわけで、
Goみたいに

× 継承に代わる便利なものを用意したから継承が不要となった
○ ただ単に継承/仮想関数を排除しただけ

の言語は完全に乗り遅れてる。あれならCで書いても同じだし。
(Goは元から80年代の言語だと揶揄されていたが、全くその通りだった)

とはいえ、Goを作った連中は君と同じ感覚なのだろうとは思う。
君はGoを気に入るかもね。
723デフォルトの名無しさん (アメ MM59-wUZI)
2018/12/22(土) 13:27:38.05ID:nwnvhQAlM
> 本来「継承」を用いるべき局面については当然「継承」の方がフィットする

設計時どれだけそう思い込んでいても、のちに覆され得る。それは設計時には知り得ない。
単純に継承のことは完全に忘れ去ってしまうべきである。
そんなものは無かった。
724デフォルトの名無しさん (ブーイモ MM89-Lq2G)
2018/12/22(土) 13:50:48.44ID:Hmvw7Yp+M
老害ゆとりのvoid君
相変わらず言ってる事が支離滅裂で草
725デフォルトの名無しさん (ワイモマー MM43-ESEE)
2018/12/22(土) 13:56:16.04ID:BEf9L/k+M
void君がよく「ゆとり」連呼してるけど
彼本人はどうなん?
発言内容からはキャリアを感じさせないし
そもそも年齢もせいぜい35くらいじゃないの?
726デフォルトの名無しさん (ワッチョイ cb81-q1e7)
2018/12/22(土) 13:59:01.93ID:Ym27DU080
カサブランカの世界だな
727デフォルトの名無しさん (アウアウカー Sa51-TLad)
2018/12/22(土) 14:00:34.13ID:IG9dO8ZOa
>>721
そうね。便利なマクロ用意したら結局それC++じゃんみたいな。
無遅刻無欠勤がとりえでコピペの手間を厭わないsubversion大好きかつ注意深い人達が作った、再利用を全く考えないワンオフ物の超巨大クラス構造みたいなの見ると、継承は初めから無い方がいいなと思うよ。ほんとつらい。
728デフォルトの名無しさん (ワッチョイ d54f-OVaG)
2018/12/22(土) 14:03:16.29ID:ruBkeT7Z0
>>723
まあ実際それをやったのがGoな訳で。そう思う人がいるのも事実だろうさ。
(俺はGoはポシャると思っているけど)
729デフォルトの名無しさん (ワッチョイ bd05-n0lc)
2018/12/22(土) 14:26:09.40ID:9V9oS+990
>>717
書き方次第だよ。linuxで最も有名なライブラリの一つであるglibは継承してるし
730デフォルトの名無しさん (ワッチョイ 236e-q1e7)
2018/12/22(土) 15:34:01.41ID:ghZDfTzQ0
空想論の域を出てないなあ
731デフォルトの名無しさん (ワッチョイ 35d2-7Qhd)
2018/12/22(土) 21:50:01.34ID:H4+WRP2A0
死にたい
732さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd43-NaUf)
2018/12/22(土) 21:56:40.29ID:Op/4E6E/d
死にたいのは何かが足りないから。

その何かを探しに旅行へ行こう。

旅人は旅に旅立つ。
733デフォルトの名無しさん (ワッチョイ cb81-q1e7)
2018/12/22(土) 22:42:35.80ID:Ym27DU080
片道切符に誘うのやめろ!
734デフォルトの名無しさん (ブーイモ MMeb-6EUo)
2018/12/23(日) 01:05:41.98ID:vlmCWjWkM
Cの世界へ逝こう
735デフォルトの名無しさん (ワッチョイ 9b9f-t5R+)
2018/12/23(日) 11:39:57.84ID:nNQ759QC0
>>731
Cぬな
736デフォルトの名無しさん (ワッチョイ 9b7f-pJxC)
2018/12/23(日) 12:16:27.31ID:qYRfL2gu0
全てがCになる
737デフォルトの名無しさん (ワッチョイ 9b9f-q1e7)
2018/12/23(日) 12:39:52.20ID:nNQ759QC0
С
738デフォルトの名無しさん (ワッチョイ 95b3-4fyn)
2018/12/27(木) 23:00:48.46ID:1iKhYige0
全てがFになる
739デフォルトの名無しさん (ワッチョイ 7681-SF4R)
2018/12/27(木) 23:16:13.58ID:fn4IYFyt0
そして、全てはぬるぽ
740 ◆QZaw55cn4c (ワッチョイ 3a60-I/qK)
2018/12/27(木) 23:48:52.00ID:59YrudQc0
>>738
冷密=「冷たい密室と博士たち」の方が好きです他は雰囲気ワードを散りばめただけのどちらかというと駄作に見えてしまうのですが、唯一これは極上のロジックだと思うのです
741デフォルトの名無しさん (ワッチョイ b6d7-SF4R)
2018/12/28(金) 06:05:14.46ID:4iocbykD0
このスレで全てがFつーたら、-1のことだろ
742デフォルトの名無しさん (アウアウウー Sa39-Z33a)
2018/12/28(金) 09:26:28.29ID:Bx5qAOnaa
255もよろしく
743デフォルトの名無しさん (ワッチョイ 5a68-5EXd)
2018/12/28(金) 17:38:41.28ID:SNiJRt+t0
#defineを使って関数を定義するテクニックがあります

#define kansuu() (ここに関数の内容を書く)

一時的にその関数を無効にしたいときはどうしたらいいでしょうか?

#dfine kansuu()

こんな感じにkansuu()以降を空白にしておくのがいいですか?
744デフォルトの名無しさん (ワッチョイ 75b3-ezLB)
2018/12/28(金) 17:40:24.93ID:FW6v28vq0
#define kansuu() (いっぱい書いてる)

#undef kansuu
#define kansuu()
745デフォルトの名無しさん (ワッチョイ b6d7-SF4R)
2018/12/28(金) 17:54:33.91ID:4iocbykD0
void kansuu(void)
{
ここに関数の内容を書く
}

#define kansuu() (ここに関数の内容を書く)

int main(void)
{
kansuu(); //マクロ
(kansuu)(); //関数
}
746デフォルトの名無しさん (ワッチョイ 5a12-V34k)
2018/12/28(金) 23:36:56.58ID:le4HGTEI0
よくあるdebug printfのアレじゃね
747デフォルトの名無しさん (ワッチョイ 5a68-5EXd)
2018/12/29(土) 00:42:29.78ID:bhEXf4Rq0
>>744
> #define kansuu()

kansuu()の後には何も記述しないのが正しいスタイルってことですね

>>745
関数とマクロ、そういう使い分けができたんですか・・・
748デフォルトの名無しさん (アウアウウー Sa39-sSsZ)
2018/12/29(土) 10:25:00.95ID:PBX00OFRa
-Dじゃあかんのか?
749デフォルトの名無しさん (アウアウウー Sa39-Z33a)
2018/12/30(日) 17:16:13.69ID:i7KTb38La
いいんじゃないか?
コンパイラのコマンドがどう解釈するかに掛かってはいるが。
750デフォルトの名無しさん (ワッチョイ 0d01-03bl)
2018/12/31(月) 21:39:38.58ID:MpZmteVw0
よくやるのは
#ifdef HOGE
#define func() ここに処理
#else
#define func()
#endif
で、-DオプションでHOGEの定義を切り替える。
好みや宗教により#ifdefを#if definedにしたり、HOGEの値により分けたり、プリプロセッサを使わず処理のifで分岐したり。
751デフォルトの名無しさん (ワッチョイ 9af1-SF4R)
2019/01/01(火) 01:03:53.24ID:JA4reBf90
初心者です。
あけましておめでとうございます。
本年もよろしくお願いいたします。
752デフォルトの名無しさん (ワッチョイ ee8c-+vhK)
2019/01/02(水) 20:01:12.90ID:RordgnsG0
かっぱらいプログラム言語と言うのが出来そうな予感がした。
753デフォルトの名無しさん (ワッチョイ a97c-88M8)
2019/01/03(木) 09:41:01.80ID:MUpMksOg0
Linux環境のデバドラと組み込みの違いって何ですか?
754デフォルトの名無しさん (ワッチョイ 49e9-khkO)
2019/01/03(木) 10:32:23.68ID:H9RYMXki0
デバイスドライバというのはデバイスをドライブするプログラムである。
組み込みというのはまあ特定の製品を制御するための専用のシステムである。専用というのはつまり汎用ではないということで、要はPC向けではないということである。
755デフォルトの名無しさん (ワッチョイ a97c-88M8)
2019/01/03(木) 10:38:18.81ID:MUpMksOg0
>>754
ありがとうございます!
756デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
2019/01/03(木) 16:57:06.44ID:38Nc8DQPa
LinuxならLinuxに合わせた形でデバイスとのやりとりを作る必要があるが、そうでないならその辺は自由になる。
757デフォルトの名無しさん (ワッチョイ a97c-88M8)
2019/01/03(木) 17:09:14.18ID:MUpMksOg0
>>756
なるほど
自分はLinuxに合わせて作ろうと思ってます
758デフォルトの名無しさん (ワッチョイ 1301-4rLr)
2019/01/03(木) 19:27:30.38ID:Gl0+wAUb0
そもそも組込み機器でLinux使うこともあるから>>753の質問自体がイミフなんだが
759デフォルトの名無しさん (ワッチョイ fb02-xhm2)
2019/01/03(木) 23:20:49.06ID:x5GCx+Ws0
まあ、組み込みとだけ言ってしまうとなんでもありになってしまうな。
Windows Embedded なんてのもあるし。組み込みだからといってOSがないとは限らない。
というか今となっては何も入ってない方が珍しいかな?
760デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/04(金) 07:14:05.80ID:w3lkHMGF0
わざわざ「組み込み」と言う意味があるかどうかだな
ノートPCをロボットの脳として搭載することもできるが
OSがWindows10 Homeじゃ組み込みとは言えないのか
761デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
2019/01/05(土) 18:26:16.82ID:pJbMq/2ja
今じゃ小さいの幾らでもあるからなんでも組み込みにできるな。
コストと耐久性の問題はあるが。
762デフォルトの名無しさん (ワッチョイ 8901-ahzL)
2019/01/06(日) 21:17:49.87ID:LPav389N0
一時はECUなど特定の分野を除いて組み込みもLinuxに席巻されそうになっていたけど、最近のIoTブームのせいか超小型超低消費電力のマイコンのニーズが高くなり昔ながらの職人芸的組み込みソフトが復権してきてるイメージあるわ。
763デフォルトの名無しさん (アウアウウー Sa9d-khkO)
2019/01/06(日) 21:36:48.83ID:rMmabB99a
まあプログラムはむしろ楽だね。
貧弱なプラットフォームの方が。
764デフォルトの名無しさん (ワッチョイ 997b-2hSR)
2019/01/07(月) 06:58:10.64ID:k1Vvc+OE0
PICなんかを使った、電子工作の延長みたいな
「Cでもプログラムできるワンチップ」ていうジャンルも
盛んになってるみたいだし。

あそこまで小さくなると、直接マシン語で考える方が
手っ取り早いような気がするわ。
765デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/07(月) 17:11:01.86ID:Cio2TleD0
気がするんではなく実際そうだ
あれはアセンブラで使うもの
766デフォルトの名無しさん (ワッチョイ 0beb-xhm2)
2019/01/07(月) 17:19:52.92ID:YLZmdTQx0
アセンブラで出来てC言語で出来ないことがイマイチわからないです。
なんか具体的な例などあれば・・・
767デフォルトの名無しさん (ワッチョイ 8b63-xhm2)
2019/01/07(月) 17:22:48.61ID:ArcgbVcT0
C言語使う為には最低限コンパイラが動く環境を
用意しないと行けないが
アセンブラは比較的簡単に実装できる
いざとなったら16進で入力すれば良いし
768デフォルトの名無しさん (ワッチョイ 0beb-xhm2)
2019/01/07(月) 18:58:49.76ID:YLZmdTQx0
>>767
なーるほど!コンパイラがいらずでCPUやメモリ使えるってことですね!
それは確かに便利だありがとうございます。初めてアセンブラの利用価値に合点がいきました。アセンブラわからないですが(´・ω・`)
769 ◆QZaw55cn4c (ワッチョイ d347-5am+)
2019/01/07(月) 19:01:38.90ID:c5u8F3uW0
>>766
自己書き換えプログラム、とかはどうですか?
770デフォルトの名無しさん (ワッチョイ 8b63-xhm2)
2019/01/07(月) 19:06:52.70ID:ArcgbVcT0
8ビットCPUの頃はやった事あるけど
今のCPUだと難しいのではないかな
771デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/07(月) 19:13:29.39ID:Cio2TleD0
真のハーバードアーキテクチャだとな
772デフォルトの名無しさん (ワッチョイ 93f1-xhm2)
2019/01/07(月) 19:20:28.86ID:aW5a0RDY0
コンパイラが要らなくてもアセンブラは必要なものじゃないの?
773デフォルトの名無しさん (ワッチョイ 2b7c-xhm2)
2019/01/07(月) 19:34:19.06ID:VIu/Fipc0
>>772
8bit時代、サブルーチン程度ならニーモニックどころかダンプ直打ちしてた基地外もいた
774デフォルトの名無しさん (ワッチョイ 8901-ahzL)
2019/01/07(月) 19:41:40.02ID:0y/PgDfv0
おっさん世代はZ80ぐらいなら主要なニーモニックは未だにヘキサで覚えてる。
775デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/07(月) 21:33:52.93ID:Cio2TleD0
>>773
ごめんな
コーディング用紙つかってた
I/Oの鬼ダンプとか今でも思い出すよ
776デフォルトの名無しさん (ワッチョイ 6900-DsDM)
2019/01/07(月) 21:46:22.29ID:E11lC+b50
このスレの平均年齢いくつなの……w
777デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
2019/01/07(月) 21:58:59.48ID:fnTlHl64a
>>768
それだけでなく本当にCだけではできない事があるのが普通だ。CPUにもよるけどね。

何か特定のレジスタに値をセットしないと何かの機能が使えないみたいな場合はCではレジスタの指定をして値をセットすることができないので最低でもその部分だけインラインアセンブラにしたり全部アセンブラで書いたりする(またはそれ用に拡張がされたCコンパイラを使う)。

その他、80系やx86系ってI/Oポートあるが、あれはCからはアクセスできないのでその部分はアセンブラにする。

まあしかしそういうのはほとんどデバイスドライバの中で必要になる事なので普通は一般ユーザは考えなくてもよくなっている。
778デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
2019/01/07(月) 22:02:17.91ID:fnTlHl64a
>>773
それ昔は普通に居た。何せアセンブラなかったりあっても高かったりで使えないことが多かったからな。

>>774
3E 00   LD A,0

のような。
779デフォルトの名無しさん (ワッチョイ 2b7c-xhm2)
2019/01/07(月) 22:31:49.44ID:VIu/Fipc0
>>778
XOR使おうぜ
780 ◆QZaw55cn4c (ワッチョイ d347-5am+)
2019/01/07(月) 22:37:49.75ID:c5u8F3uW0
>>777
思い出した!たしか 386 にて real mode から protected mode に移る命令は C では書けませんね…
他にもなにか面白い話があったような気がしましたが、もう思い出せない…実は 286 はリアルモードに戻れるとか…

>>774
HALT を言ってみよ
781デフォルトの名無しさん (ワッチョイ d901-b7+Q)
2019/01/07(月) 23:02:03.29ID:HO7xoVU80
LD は ゼロやキャリーフラグ変化するんだっけ?
782デフォルトの名無しさん (ワッチョイ 6992-4tJW)
2019/01/07(月) 23:06:04.57ID:JlpUfKel0
オムニバースを解析するソフトウェアを開発するにはどうすれば良いですか?
783デフォルトの名無しさん (ワッチョイ 8b63-xhm2)
2019/01/07(月) 23:11:49.25ID:ArcgbVcT0
>>780
逆じゃないか?
286では戻れずに、不便だったけど
386では戻れるようにしたとか
784デフォルトの名無しさん (ワッチョイ 8bf2-NR1r)
2019/01/07(月) 23:51:44.52ID:4vLmnBNE0
>>780
76
785 ◆QZaw55cn4c (ワッチョイ d347-5am+)
2019/01/07(月) 23:54:17.89ID:c5u8F3uW0
>>783
>286では戻れずに、不便だったけど
通説ではそうなんですが、「実は…」という話があった気がします、そのため「だけ」に 286機を確保していたつもりだったのですが、うっかり捨ててしまった、やりたかったことを今思い出してしまった…
786デフォルトの名無しさん (ワッチョイ 8b63-xhm2)
2019/01/08(火) 00:17:51.75ID:oEiIhl5B0
NECのPC98での話ですが、プロテクトモードとリアルモードを行き来するのに
リセットで実装していたと聞きました(死中に活ありみたいな感じ)。

「実は・・・」って話は知らないw
787デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/08(火) 07:38:36.71ID:iKVSkTiF0
>>785
0F 05 LOADALL
788デフォルトの名無しさん (ワッチョイ 13d2-mHCk)
2019/01/08(火) 07:56:15.99ID:hvlZBAYo0
なんか286はPC用じゃなく工業製品用を想定して設計されてたって記事読んだ記憶が。
789デフォルトの名無しさん (ワッチョイ d352-JBiS)
2019/01/08(火) 08:00:10.01ID:3ZWgvjCS0
さあ、C言語の話をしようか。
790デフォルトの名無しさん (アークセー Sxc5-mE+R)
2019/01/08(火) 10:13:36.31ID:qFTAFG9Fx
昔から疑問なんだけど、マップドIO制御を除いてC言語だけでRTOSのカーネルは書けるのだろうか?
タスク同士のシステムコール発行によるプリエンプトはsetjmp/longjmpで何とかなりそうだけど、割り込みハンドラからのシステムコールによるタスクディスパッチは何をどうあがいてもスタックポインタの直接書き換えが必要な気がしてならない。
791デフォルトの名無しさん (JP 0H95-OLjn)
2019/01/08(火) 10:40:29.19ID:qjoMs7mdH
ハンドラ内でsetjmpしたらどうなるんだろう
792デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/08(火) 11:39:30.49ID:iKVSkTiF0
CだけでOSなんて、Cは元々そういう使い方を想定していない
実際UNIXは5%がアセンブラだった

特権命令は誰か言っていたとおりだし
PCとSPのようなCが前提にしているものの初期化をCでは絶対に書けない
793デフォルトの名無しさん (ワッチョイ 6900-DsDM)
2019/01/08(火) 13:48:48.48ID:we27gJDs0
でも最近のUEFIとかなら全部Cで書かれたOSでも起動できそうだけどね。
794デフォルトの名無しさん (オイコラミネオ MM95-hx//)
2019/01/08(火) 16:18:38.83ID:rMmlRXYeM
C言語を一番最初に学んで、C++、ほかスクリプト言語と使っているが、C言語で文字列処理ライブラリーってみんなどうしてる?
C++ だとboost C++ とかいろいろなライブラリがあって、オープンソースだったり商用利用できたり、物によってはGPLだったりするけど、そういうのに相当するC言語の文字列処理ライブラリってある?
各自で作りためたオレオレライブラリをみんな使ってるの??
7950794 (オイコラミネオ MM95-hx//)
2019/01/08(火) 16:22:15.64ID:rMmlRXYeM
つまり今から俺が自分用に文字列処理ライブラリ(独りよがりのオレオレライブラリ)を作る意味があるのか、俺が知らないだけでboostみたいに出来合いの洗練されたライブラリがあるのか…な…?
Pythonとかは言語仕様で十分複雑なことが出来るし、ホントC言語だけなんでこんな毎回面倒な目に合うのだろう。
796デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/08(火) 16:37:12.54ID:iKVSkTiF0
Cを修行中ならオレオレライブラリを作ることにも充分に意味がある
既製品を使うことしかできないくせに天狗になってるやつが時々いる
使っているライブラリがオレオレか既製品かといった手段ではなく
知的な旅でどこへ行けたかが問題であることを見失うな
797デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
2019/01/08(火) 16:56:52.52ID:LJT6VvGba
俺はboostを知らない。
Cではあまり複雑な文字列処理を書かないしな。
複雑なのはPerl使ったりする。
798デフォルトの名無しさん (オイコラミネオ MM95-hx//)
2019/01/08(火) 18:11:31.32ID:rMmlRXYeM
みんなありがとう

Cは全然修行中なわけではなく、別に必要にも迫られてない(C++もPythonも使える恵まれた環境)
ただ必要になったとき、みんなどーしてんだろうと。
C言語で文字列処理なんてするシチュエーションが少ない、とかかな。

初めてPython使ったときは感動した。簡単すぎて。C++では修行中に文字列処理ライブラリとかオレオレライブラリ作成やってみたけど、できあがった物がどう見てもboostの下位互換で悲しかった。
だからC言語で良いライブラリがあったら知っておきたいと思ったんだ。
799デフォルトの名無しさん (ワッチョイ 2b7c-xhm2)
2019/01/08(火) 18:41:54.19ID:MwaFnBBQ0
>>792
頑張れば書けるよ!

Cというよりは Cの文法を使った何か になったけどな・・・
800デフォルトの名無しさん (JP 0H95-OLjn)
2019/01/08(火) 19:47:06.06ID:qjoMs7mdH
>>795
glibとか?
801デフォルトの名無しさん (ワッチョイ 7be9-uFMA)
2019/01/08(火) 22:16:50.19ID:BZbwJw/70
ちょっとすみません
gccの最適化オプションの-O2を使った場合に動作がおかしくなったりすることはありますか?
802デフォルトの名無しさん (ワッチョイ 8b63-xhm2)
2019/01/08(火) 22:19:56.62ID:oEiIhl5B0
あるかもしれないし、ないかも知れない
そういうソースがあるなら、晒して皆に確かめてもらえ
803デフォルトの名無しさん (アウアウカー Sa55-khkO)
2019/01/08(火) 23:00:38.10ID:E9NMc6wba
>>801
ある。
多分これからvolatileに関するやりとりが始まる。
804デフォルトの名無しさん (ワッチョイ 7be9-uFMA)
2019/01/08(火) 23:28:52.41ID:BZbwJw/70
>>802
最適化したことでおかしくなったと言うわけではないんですが
どうなのかなと気になったもので
具体的にはO2の中のどの最適化でバグが出ることがありますか?
あとgccではなくg++でした
805デフォルトの名無しさん (ワッチョイ 7be9-uFMA)
2019/01/08(火) 23:31:24.43ID:BZbwJw/70
>>803
volatileというものに気を付けないといけないわけですか
806デフォルトの名無しさん (ワッチョイ d352-JBiS)
2019/01/08(火) 23:45:28.12ID:3ZWgvjCS0
>>804
仕様上規定されていない部分は最適化によって挙動が変わることがある。だから不確定な処理や誤った処理を書いていた場合に、これまでたまたま上手く動くコードが生成されていただけで、最適化によって挙動が変わってバグが顕在化することがある。
例えば、評価順序が不確定な処理を書いていたのがたまたま期待通りの順序で実行するコードになっていただけとか、不正なアドレスのメモリを参照や更新してしまっていたがたまたま問題がなかっただけだったとか。
807 ◆QZaw55cn4c (ワッチョイ d347-5am+)
2019/01/09(水) 00:17:56.61ID:BRCoi/pn0
>>803
volatile は一切使わないことにしました…
808デフォルトの名無しさん (ブーイモ MMdd-OLjn)
2019/01/09(水) 00:28:20.37ID:QEOONCVCM
volatileにすべきところでしないから最適化でバグるんだよ
809 ◆QZaw55cn4c (ワッチョイ d347-5am+)
2019/01/09(水) 00:40:32.88ID:BRCoi/pn0
>>808
volatile すべきところ、って具体的にどういうところですか?それは本当に volatile にする必要があるのですか?
810デフォルトの名無しさん (ブーイモ MMdd-OLjn)
2019/01/09(水) 01:08:46.29ID:QEOONCVCM
>>809
メモリマップドIOと
共有メモリマルチプログラミングで
最適化時のアクセス省略防止。
811デフォルトの名無しさん (ワッチョイ 7be9-uFMA)
2019/01/09(水) 02:45:48.52ID:cump+mlU0
>>806
ありがとうございます
そうであれば不確定な部分がなければバグはでないということですね
最適化用にプログラムの書き方も変える必要があるのかと思っていました

volatileはライブラリの中で使っていそうですがきっと大丈夫でしょう
812 ◆QZaw55cn4c (ワッチョイ d347-5am+)
2019/01/09(水) 03:15:23.18ID:BRCoi/pn0
>>810
個人的には、memory-maped な世界はよくしらない(インテル系しかしらない…).
shared memory って、特別なことはありましたっけ?マルチスレッドなら排他処理用のオブジェクト(pthread-mutex/cond)を使っておれば問題ないし、fork() の中と外で同じ変数をつつくときは…はて、どうしてたっけ?
813デフォルトの名無しさん (ワッチョイ fb02-cuFO)
2019/01/09(水) 03:28:53.85ID:T8HUoC+c0
そういやvolatileってC言語の場合CPUによってはうまく行かない事がありうるのな。
例えば4バイトの整数にアクセスするとして、そのCPUが2バイトづつしか読み書きできなかったら必ず2回のアクセスになる。
すると上位バイトと下位バイトで取得した時間が違っていたり一度に4バイト全体の内容を書き換えられない。
814 ◆QZaw55cn4c (ワッチョイ d347-5am+)
2019/01/09(水) 04:25:49.36ID:BRCoi/pn0
>>813
そういうのは >>812 のとおり、そのためのカラクリ(pthread等)を使用してアクセスするべきだと思います、裸で触ること自体が発想としてイカレているのではないでしょうか?
815デフォルトの名無しさん (ワッチョイ 8b2c-otaJ)
2019/01/09(水) 04:49:03.78ID:/QFmT4Vc0
マイコンなどのIO アドレスを、PC 側のメモリのアドレスに関連付けているのだろう(Memory-mapped I/O)。
これで、PC側のアプリでは、PCのメモリを読み書きするだけで、マイコンの操作ができる

PC側のメモリを読むと、マイコン側のメモリから読み込む。
読み込むと、マイコンの電圧が変わって、値が不定か逆などになる

通常は、pull up, pull down 抵抗などで、5V・0V にしているけど、
閾(しきい)値(Threshold)があって、
例えば、1V以下なら0V、4V以上なら5Vと判定される場合、1~4Vは、不定になる

まあとにかく、読み込むだけで電圧が変わる・リセットされるから、
読み込むだけでも、電圧の状態が変わる

だから、IOアドレスを読むだけでも意味がある・状態を変えているので、
コンパイラで最適化・省略してほしくない!
816デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/09(水) 05:40:56.66ID:4Rn8lGBj0
>>815
volatileと一切何の関係もねえし
817デフォルトの名無しさん (ワッチョイ 997b-2hSR)
2019/01/09(水) 07:03:03.74ID:nmJLIVr10
いや、「Cのプログラムで変数(あるアドレス)を読むことが、
ハードウェア的には状態リセットの操作になっているから、
読めと指示した場所で必ず読み取り動作を行って欲しい」だから、
volatileの使い方のひとつとして正当でしょ。

ハードウェア的な内幕の説明が少々ぎごちない気がするけどね。
818デフォルトの名無しさん (アークセー Sxc5-mE+R)
2019/01/09(水) 07:55:50.33ID:YaNn8N94x
>>813
多バイトアクセスがatomicに行われないのはvolatileの守備範囲ではなくinterlockの守備範囲。
なのでCPUによってはvolatileがうまく行われないってのはvolatileに対する名誉毀損になる。
819815 (ワッチョイ 8b2c-otaJ)
2019/01/09(水) 08:02:53.56ID:/QFmT4Vc0
マイコンなどのIO アドレス(port)を読み書きするには、その装置の手順が決まっている

まず、制御ポートに、読み込むポート番号を教える。
そこで装置を制御できるようにするために、例えば、50μ秒待つ

次に、ポートから読み込む。
読み込まれたポートは、電圧の状態を変える

電気電子的動作の要件・時間が、厳密に決まっている。
ある回路を動作させるときに、回路を切り替えないといけない

電圧の高低で、ある回路の部分を止めて、異なる部分を動作させる(電流を流す)。
そのため、規定の時間よりも、速くアクセスできない
820デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/09(水) 11:29:26.49ID:4Rn8lGBj0
電流を流すってのはバイポーラの場合だね
今ほとんどのコンピュータがCMOSで電流はゼロアンペアだ
寄生容量で交流成分が漏れたり貫通電流の問題はあるが
それは信号が電流表現ということではない
821デフォルトの名無しさん (ササクッテロレ Spc5-W220)
2019/01/09(水) 18:32:34.88ID:ur1geU61p
>>804
最適化でおかしくなる場合の例としては潜在的バクがある。そしてよく見るのは組み込み系。volatileもそうだがprintfいれたり-O0にすると動作が正常化するってのがある。

volatileの例だと
int* fifo=0x0001;
int data=*fifo;
のようなコードはvolatileつけないと順番入れ替えられたりコードそのものがなくなったりする。

-O0やprintf入れると直る系はキャッシュ周りのこともある。キャッシュを積極的に使うかどうかで、キャッシュを使わない場合に安定する。キャッシュをたくさん使うprintfのような関数を入れると再度積み直しになって安定する。

後者は潜在的なバグで発見が難しいことが多い。プログラミングはわかるけど組み込みを知らない人がやらかすバグの一つ。
822デフォルトの名無しさん (ワッチョイ 8901-ahzL)
2019/01/09(水) 19:37:23.10ID:pHvZAha70
キャッシュ絡みの潜在的なソフトのバグってのは経験ないなぁ。キャッシュが化けるハードのバグなら経験あるけど。
キャッシュ絡みってシノニム問題のこと?
823デフォルトの名無しさん (ワッチョイ 8b63-xhm2)
2019/01/09(水) 19:41:27.69ID:G9k7j+QI0
キャシュの話はC言語にかぎらずどの言語でも起こりそう
824デフォルトの名無しさん (ワッチョイ 8901-ahzL)
2019/01/09(水) 20:19:35.23ID:pHvZAha70
ああ、キャッシュ絡みのソフトバグ思い出した。
動的にプログラム入れ替えるソフト作ったときにIキャッシュをクリアし忘れてて誤動作したことあるわ。
Dキャッシュと分離されてる拡張ハーバードアーキテクチャの良い勉強になった思い出。
825デフォルトの名無しさん (ワッチョイ 4d00-XG35)
2019/01/13(日) 00:46:58.72ID:Yl3ShYz90
IMCCOやTecConfのエントリー作品を見る限り、
Cのコードゴルフって10年くらい前と短かさとかが変っていないように思えるんだけど
これはCが成熟しきった(所謂「枯れた」)言語である程度の成長限界があるからなのかな。
それとも凄腕プログラマの興味がPythonやらRubyなんかに移っちゃったのかな。
826デフォルトの名無しさん (ワッチョイ 3d7b-rp4P)
2019/01/13(日) 01:10:46.51ID:/M42Y9uV0
> コードゴルフ
意味無いから誰も参加しないだけでは
827デフォルトの名無しさん (ワッチョイ 715f-tbRK)
2019/01/13(日) 01:20:23.99ID:zp78LtJW0
>>766
アセンブラとC言語はまったく違うのに何を言っているのか?
828デフォルトの名無しさん (ワッチョイ 715f-tbRK)
2019/01/13(日) 01:23:29.53ID:zp78LtJW0
>>798
あのな、コンピータには文字列という概念がないのだよ。
829デフォルトの名無しさん (ワッチョイ f94e-45a3)
2019/01/13(日) 01:50:41.81ID:IM9k4xNE0
> それとも凄腕プログラマの興味がPythonやらRubyなんかに移っちゃったのかな。

ハハッ、ナイスジョーク
830デフォルトの名無しさん (ワッチョイ a67c-VK1S)
2019/01/13(日) 10:13:49.80ID:yABfrIyE0
>>828
それを言ったら数値という概念もないよね
人間から見たら数値として扱えるように演算しているだけで
コンピュータにはビットのオンオフしかないよ
831デフォルトの名無しさん (ワッチョイ da52-I3rR)
2019/01/13(日) 10:20:29.78ID:7BHWGbvy0
>>830
CPUがビット演算しか備えていないならそうかも知れないけど、整数や浮動小数点数の演算を備えているのだから数値の概念はあるだろう。
832デフォルトの名無しさん (アウアウウー Sa89-/Mri)
2019/01/13(日) 10:59:24.10ID:EaFLGn72a
それいったらあるのはせいぜい、アルファベットとか…
833デフォルトの名無しさん (アウアウクー MM45-tbRK)
2019/01/13(日) 11:17:20.34ID:IIjq691iM
>>830
むしろ数値しかない
834デフォルトの名無しさん (アウアウウー Sa89-/Mri)
2019/01/13(日) 11:26:53.62ID:EaFLGn72a
チューリングマシンの説明に数値なんて出てこないでしょ
835デフォルトの名無しさん (アウアウウー Sa89-I3rR)
2019/01/13(日) 11:49:52.93ID:Mw9Ec3URa
>>834
チューリングマシンは計算機のひとつの仮想モデルだけど、いつからそれに限定した話になったの?
そもそもスレ違いだからこれ以上議論する必要はないけど。
836デフォルトの名無しさん (アウアウウー Sa89-/Mri)
2019/01/13(日) 11:56:05.87ID:EaFLGn72a
チューリングマシンでもコンピュータでもなんでもいいけど、記号操作をやってるんです。
数値なんてのはかなり抽象化した話です。
837デフォルトの名無しさん (ブーイモ MM9a-7G8+)
2019/01/13(日) 12:02:55.92ID:QSfXhXiJM
CPU の数値演算はビット列をAND、OR、 NOTの組み合わせで変換してるだけだしね
838デフォルトの名無しさん (ワッチョイ 3af1-goYb)
2019/01/13(日) 12:27:42.01ID:Ov2pIYHC0
まぁ根本的に機械にはビットも数値も文字も文字列も無いわな。電気的にHiかLowかって話だから。
そういう話するスレではないと思うが。
839デフォルトの名無しさん (ワッチョイ e5f2-Fjw0)
2019/01/13(日) 12:51:37.79ID:gz3n+4+q0
演算器を構成するゲートレベルなら話は別だが、CPUレベルなら整数の加算てのは
ひとつのプリミティブな操作だろう。
840デフォルトの名無しさん (ワッチョイ d663-VK1S)
2019/01/13(日) 12:52:03.33ID:+ibs1ZYS0
C言語以外の話題になると、俄然盛況になるスレ
841 ◆QZaw55cn4c (ワッチョイ da47-jEXV)
2019/01/13(日) 13:19:44.44ID:QvV+lMh50
>>837
3種類もあるのかなあ… NAND または NOR どちらか一方だけじゃない?
842デフォルトの名無しさん (ワッチョイ dd01-oec2)
2019/01/13(日) 13:37:24.61ID:Gq5QlaCR0
今どきはHDLで書いてLUTベースになってるんじゃないのん?
843デフォルトの名無しさん (ワッチョイ fad2-kZrb)
2019/01/13(日) 13:53:19.28ID:mc4jTf550
原子/分子に文字の概(ry
844デフォルトの名無しさん (ワッチョイ 7a01-CymP)
2019/01/13(日) 17:00:14.26ID:T8nAK+of0
>>841
NAND だけで全ての論理回路を構成できるけど NAND だけで構成されてるかどうかはわからん
845デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/13(日) 17:43:49.41ID:kE5YqrGT0
基本回路はNOTで、その出力で駆動する
スイッチング素子を直列に置くか並列に置くかでAND/ORにしてるだけ
出力を負論理にするのはIOL>IOHだったTTL時代の名残
846デフォルトの名無しさん (ワッチョイ ce8c-5iom)
2019/01/15(火) 07:09:12.36ID:nk6JBEGL0
根本は電子とホールの移動度の差
847デフォルトの名無しさん (アウアウウー Sa89-/Mri)
2019/01/15(火) 07:18:28.73ID:P3RuPPdOa
たとえば水流で動作するコンピュータがあったらと考えると電子とホールは全然本質じゃない
848デフォルトの名無しさん (ワッチョイ a57b-dZ8/)
2019/01/15(火) 08:01:36.67ID:c3MJrubW0
そういや、スマートボール(まぁパチンコ台みたいなものと思ってくれ)式に
上の投入口からボールを落とすと、台に仕組まれたシーソーの傾きが変わって
後から入れるボールの流れも変わる、ていう「機械式計算機」の
モデルもあったな。
シーソーにラッチがついてて「メモリ機能」を持たせたり、
ボールを何個か積み上げるとラッチが解除される仕掛けで変更したり。

>>846 は半導体素子の原理説明だったかな。
P型、N型それぞれの中でも、電子と正孔の両方があったはず、だよね。
849デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/15(火) 08:06:38.17ID:O800IQzp0
正孔なんてものは存在しない
あるはずの電子がない状態というだけ

電流の向きと電子の移動方向が逆ということを
どうしても受け入れられない石頭のための説明だ
850デフォルトの名無しさん (アークセー Sx85-rXi3)
2019/01/15(火) 09:33:53.56ID:biAsBETNx
>>849
あるはずの電子がない状態を「正孔」と定義してるのでは?
正孔が存在しないってのは定義を否定することになる。
851デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/15(火) 10:10:49.40ID:O800IQzp0
>>850
ならない
おまえ個人のオレ様ルールで否定ということにしたいだけだ
852デフォルトの名無しさん (ワッチョイ ce78-OQTP)
2019/01/15(火) 10:24:18.70ID:ymCyYm1q0
つまり電子が無くなることなんて無かった…?
853デフォルトの名無しさん (ワッチョイ a67c-VK1S)
2019/01/15(火) 10:36:11.91ID:xc4OhZdf0
>>849
「あるはずの電子が無い状態」のことを性行っていうんよ
854デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/15(火) 11:02:13.55ID:O800IQzp0
846みたいに陽電子と勘違するやつがいるから指摘しといたんだ
855デフォルトの名無しさん (ブーイモ MM71-1nak)
2019/01/15(火) 11:06:00.20ID:TmM1XKX0M
誤「あるはずの電子がない」
正「電子がある方が結合が安定する(けど陽子数と合わない)」
856デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/15(火) 11:19:45.08ID:O800IQzp0
>>855
ほほう それでそれで?
      ____
     /:::::::ヽ
    f::/" ̄ ̄ヾi
    |:リ _ _|
    |r==( o)( o)
    ( ヽ  _) i
  __/ヽ ー== イ
 /ヽ ヽ \__ノ
`/ i  \_/、
/ r-、    ハ
レ⌒ヾi /  / |
i   ̄`ー―-ヘ |
ヽ_____ノーイ
| \    ノ
    ̄ ̄ ̄ ̄
857デフォルトの名無しさん (アウアウウー Sa89-/Mri)
2019/01/15(火) 12:02:58.73ID:P3RuPPdOa
ホールはあるぞ。
電子も実はないんだとか言うならまだわかるが。
858デフォルトの名無しさん (バットンキン MM99-rXi3)
2019/01/15(火) 12:03:00.19ID:+hPQnyk+M
>>851
じゃあ、逆に聞くが正孔って何?
859デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/15(火) 12:12:57.27ID:O800IQzp0
ブツではなく状態ということだ
860デフォルトの名無しさん (アークセー Sx85-rXi3)
2019/01/15(火) 12:46:21.45ID:biAsBETNx
なんだ、やっぱりその状態があるって認めてるじゃん。正孔(という状態)は存在する、と。
てか誰も「正孔というモノ」の話なんかしてなくて一人だけ勘違いしてるw
861デフォルトの名無しさん (アメ MM71-45a3)
2019/01/15(火) 12:53:56.34ID:XHhYs/N9M
いや俺も勘違いしてるから二人にしとけ。
862デフォルトの名無しさん (ワッチョイ 3af1-VK1S)
2019/01/15(火) 12:59:09.57ID:adxfbmcy0
じゃあ俺も俺も
863デフォルトの名無しさん (アウアウウー Sa89-JzEj)
2019/01/15(火) 12:59:28.21ID:uoTEW6ZSa
ところで何の話をしているのかね?
864デフォルトの名無しさん (ワッチョイ 3af1-VK1S)
2019/01/15(火) 13:10:35.80ID:adxfbmcy0
過去レス読めばいい
865デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/15(火) 15:48:52.44ID:O800IQzp0
>>860
絡んできたくせに結局849の日本語が通じてないだけかよ
相手して損した
866デフォルトの名無しさん (ワッチョイ 16eb-Fjw0)
2019/01/15(火) 16:17:51.71ID:Q775hXRk0
トムとジェリー 仲良くけんかしな
トムトムトムにゃーご
ジェリージェリージェリーちゅう
867デフォルトの名無しさん (アークセー Sx85-rXi3)
2019/01/15(火) 17:18:14.06ID:biAsBETNx
>>865
もうこの話題も飽きたので相手しないだけ。
868デフォルトの名無しさん (ワッチョイ d663-VK1S)
2019/01/15(火) 17:23:42.61ID:TYEZC8N+0
昭和の香り
869デフォルトの名無しさん (アウアウウー Sa89-JzEj)
2019/01/15(火) 20:58:52.03ID:uoTEW6ZSa
昭和は遠くなりにけり
870デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/15(火) 21:44:31.19ID:O800IQzp0
>>867
バイバイ、イソップのキツネ君w
871 ◆QZaw55cn4c (JP 0H62-jEXV)
2019/01/15(火) 22:02:49.14ID:niK8DUcQH
>>866
猫にねずみが噛み付いた
あべこべだ猫たたき
ねずみっていきものさ!
猫だっていきものさ!
872デフォルトの名無しさん (ワッチョイ ce02-H432)
2019/01/16(水) 17:45:04.86ID:ECRqnYoc0
そういやトムジェリって一作目が作られたのが1940年なのな。戦前だ。
それで延々と続いて2017年にもOVAのDVDが出ている。恐ろしく長寿だ。
まあディズニー関係が一番長寿なんだろうけどね。
873デフォルトの名無しさん (アウアウウー Sa89-/Mri)
2019/01/16(水) 17:49:16.09ID:ryLt0Gqla
スーパーマンの1941年のアニメなんてすごいレベル高いよ
874デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/16(水) 22:19:46.42ID:+bYxL46c0
ENIACの頃か
875デフォルトの名無しさん (ワッチョイ c101-DeFq)
2019/01/17(木) 23:04:44.74ID:KvO4PGbE0
フラッグの状態によって引数を変更する必要があるのですが
どのやり方がベストでしょうか?

//A:冗長だけど単純で解りやすいと思う
if ( flag )
{
func(PARAM1, PARAM2, 1, "hoge1", 2, "hoge2", 3, "hoge3");
}
else
{
func(PARAM1, PARAM2, 2, "hoge2", 3, "hoge3", 1, "hoge1");
}

//B:いったん変数に入れてから function call
if ( flag )
{
n[0] = 1; n[1] = 2; n[2] = 3;
str[0] = "hoge1"; str[1] = "hoge2"; str[2] = "hoge3";
}
else
{
n[0] = 2; n[1] = 3; n[2] = 1;
str[0] = "hoge2"; str[1] = "hoge3"; str[2] = "hoge1";
}
func(PARAM1, PARAM2, n[0], str[0], n[1], str[1], n[2], str[2]);
876デフォルトの名無しさん (ワッチョイ c101-DeFq)
2019/01/17(木) 23:05:39.65ID:KvO4PGbE0
//続き
//C:テーブルその1
const int table[2][3] = {{1,2,3},{2,3,1},};
const char *stbl[2][3] = {{"hoge1","hoge2","hoge3"},{"hoge2","hoge3","hoge1"}};
i = flag ? 0: 1;
func(PARAM1, PARAM2, table[i][0], stbl[i][0],table[i][1], stbl[i][1],table[i][2], stbl[i][2]);

//D:テーブルその2 順番が違うだけの場合だったらこれでもいける
const int table[3] = {1,2,3};
const char *stbl[3] = {"hoge1","hoge2","hoge3"};
int order[2][3] = {{0,1,2},{1,2,0}};
i = flag ? 0: 1;
func(PARAM1, PARAM2, table[order[i][0]], stbl[order[i][0]],table[order[i][1]], stbl[order[i][1]],table[order[i][2]], stbl[order[i][2]]);

//E:三項演算子 これは無駄に比較が多くなるから無しかも
func(PARAM1, PARAM2, flag?1:2, flag?"hoge1":"hoge2",flag?2:3, flag?"hoge2":"hoge3",flag?3:1, flag?"hoge3":"hoge1");
877デフォルトの名無しさん (ワッチョイ d352-nkt9)
2019/01/17(木) 23:16:19.13ID:lB4jgDBk0
>>875
ケースバイケース
878デフォルトの名無しさん (アウアウカー Sa6d-qoFL)
2019/01/18(金) 00:27:39.99ID:mQ1FzYrGa
引数が5個あるのはすでにおかしいという気もあ
879デフォルトの名無しさん (ワッチョイ c101-DeFq)
2019/01/18(金) 00:39:40.92ID:2Bf08m/t0
個人的にはAが好きだけど
こういうの馬鹿にする人いそうなのが困る
880デフォルトの名無しさん (ワッチョイ 2945-QFgl)
2019/01/18(金) 01:55:40.31ID:b8LPMN8g0
引数でやりとりせず大域変数に渡したくなる
881デフォルトの名無しさん (ブーイモ MM33-YJMU)
2019/01/18(金) 01:59:06.15ID:9Rl7pqwkM
配列に入れてnとstr丸ごと渡せよ
882デフォルトの名無しさん (ブーイモ MMeb-yzLG)
2019/01/18(金) 02:04:58.72ID:4oORRjeGM
構造体に入れてポインタ渡さない?
883デフォルトの名無しさん (ワッチョイ 117b-g8bx)
2019/01/18(金) 05:44:13.01ID:APqq2jRu0
この範囲だけで言えば A が見通しが良くて分かりやすいんじゃないかな。

1, 2, 3 の並び方が(順列で)6通り存在するとか、
1 と "hoge1"... だけでなく、1 と "hoge2" の組み合わせも発生しうるとか、
func()の呼び出しパターンがもっと複雑だったら、
「flagの値に応じて適切な引数でfunc()を呼び出す関数」を作ると思う。
call_func(int flag, [func()に渡す引数]); みたいな感じ。

[func()に渡す引数] の部分を、カンマで区切った引数群にするか、
構造体にまとめるかは、別の要素が絡むので、強く主張できない。
884デフォルトの名無しさん (ワッチョイ 13d2-5Edq)
2019/01/18(金) 06:01:14.41ID:5rrYPQ5i0
俺なら次のようにする。
void *a[]={1,&"hoge1",2,&"hoge2",3,&"hoge3",2,&"hoge2",3,&"hoge3",1,&"hoge1"};
func(flag?a:a+6);
885デフォルトの名無しさん (アウアウウー Sa15-4KIe)
2019/01/18(金) 15:49:59.44ID:dETdnGdxa
>>875
その flag が 0 か 0 以外の値にしかならず 1 や 2 で違う動作になる事は未来永劫ない場合と、将来的になる可能性がある場合とでやり方は変えるかも知れない。

でも最初のやり方で良いんじゃないかな。あまり捻ると分かりづらくなるし。
flagの値によって何十通りもの違う呼び出しになるとかいうなら色々考えた方が後々良いのかも知れないが。
886デフォルトの名無しさん (ワッチョイ 19ff-fAiL)
2019/01/18(金) 16:33:30.33ID:qQDJcXFa0
flagに1も2もあるかよ
Win32のGetMessageみたいなアホなケースはあるが
887デフォルトの名無しさん (ワッチョイ 2100-b/bA)
2019/01/22(火) 14:42:25.83ID:Um5Ij+zI0
突然のステマ(OSSについてだけど)
LuaTeXっていうTeXのLua拡張?(よく分からん)に付いてくる
pplibっていうPDFライブラリおすすめ。
ドキュメント↓
https://serveur-svn.lri.fr/svn/modhel/luatex/trunk/source/texk/web2c/luatexdir/luapplib/html/ppapi.html#c-api
C向けのAPIでかなり最近に開発されたおかげか挙動が素直
888デフォルトの名無しさん (ワッチョイ d347-hFsF)
2019/01/22(火) 15:04:03.04ID:zFHfz07h0
>>887
みえない
889デフォルトの名無しさん (ワッチョイ 117b-g8bx)
2019/01/22(火) 15:24:29.26ID:rPWXpeN+0
Username for Subversion luatex repository

とか入力を求められるけど、何やら登録が必要?
890デフォルトの名無しさん (ワッチョイ 2100-b/bA)
2019/01/22(火) 15:34:39.22ID:Um5Ij+zI0
>>889
ユーザー名: anonsvn
パスワード: anonsvn
891デフォルトの名無しさん (ワッチョイ 2100-b/bA)
2019/01/22(火) 15:35:11.14ID:Um5Ij+zI0
ていうかごめん。普通に匿名SVNであることを書き忘れてたわw
892デフォルトの名無しさん (ワッチョイ 117b-g8bx)
2019/01/22(火) 15:47:59.14ID:rPWXpeN+0
こちらも Subversion の公開レポジトリでは anonsvn が一般的と知らなかった。

案内ページも表示されないんで完全会員制の秘密クラブの扉でも
ウッカリ開いてしまったのかと、少々慌ててしまった部分もある。
893デフォルトの名無しさん (アウアウウー Sa15-4KIe)
2019/01/22(火) 16:00:45.48ID:J1mDHp9Ya
バカには見えないプログラムでございます。
894デフォルトの名無しさん (ワッチョイ 4900-MosH)
2019/01/24(木) 09:31:07.67ID:0uzJSPSp0
確かにAPIはスッキリしてるけど機能が少なすぎるね>>887
Poppler使うわ。
895デフォルトの名無しさん (ワッチョイ 06ad-5jav)
2019/01/27(日) 17:56:04.26ID:dmqtxJI00
てす
896デフォルトの名無しさん (ワッチョイ 06ad-5jav)
2019/01/30(水) 19:18:19.67ID:lQux7EEV0
この板ってPCの書き込みは見れない仕様なの?
897デフォルトの名無しさん (ワッチョイ 3152-FxQn)
2019/01/30(水) 20:09:31.10ID:5GzTmkIQ0
は?
898デフォルトの名無しさん (ワッチョイ 06ad-5jav)
2019/01/30(水) 21:15:29.41ID:lQux7EEV0
>>897
この板をPCのクロームで見てみて
レス数が903なのに、メイトでは897なんよね
899デフォルトの名無しさん (ワッチョイ 4900-MosH)
2019/01/30(水) 21:22:29.10ID:yhwdEVRM0
>>898
なんかNGしてるワッチョイでもあるんでは?
900デフォルトの名無しさん (ワッチョイ 4900-MosH)
2019/01/30(水) 21:25:54.58ID:yhwdEVRM0
あ,なんかしょーもないレスの仕様だけ書き込むのもアレだから
ちょっとしたことだけど……
C99の仕様だとfor文の条件の中で新しい変数が宣言できるけど
(新規のプロジェクトでは)積極的に使っていいと思う?
for (int8_t __cnt_foo; __cnt_foo < 42; __cnt_foo++) {
...
}
↑こういうの。
901デフォルトの名無しさん (ブーイモ MM6d-eqdx)
2019/01/30(水) 21:33:33.88ID:uDOSlsoAM
>>898
2cH.scか2ch.Netみてるんでしょ
902デフォルトの名無しさん (ワッチョイ 06ad-5jav)
2019/01/30(水) 21:35:32.25ID:lQux7EEV0
LINEの入社試験でC選んだけど
forの中などで宣言できる仕様になってた
cppやjavaでも使えるし使っていってええんじゃ

それにi,j,kってどうでもええ変数やから頭でも書く必要もないような
903デフォルトの名無しさん (ワッチョイ 3152-FxQn)
2019/01/30(水) 21:43:46.06ID:5GzTmkIQ0
反復文のブロック外で使わない変数を、反復文の外で宣言しなければならない今までの仕様がむしろおかしい。
あと中で宣言すれば変数名ijklmn,,,なんて自体も避けれる。多重ループでなければ。
904デフォルトの名無しさん (ワッチョイ 417b-/DDN)
2019/01/30(水) 21:53:53.32ID:fRt/VtGE0
for での変数宣言は // の単一行コメントと同じ程度には使うかな。

むしろ変数名が __cnt_foo なのが気になる。2つの下線で始まってる部分。

__cnt_foo を宣言だけして、初期化してないのも怖いなぁ。
でも、今お手元のgccで試したところ、エラーも警告も出ないんだね。


あと、これは投稿番号904になるつもりだが、実際どうかな?
905デフォルトの名無しさん (ワッチョイ 4900-MosH)
2019/01/30(水) 22:37:01.37ID:yhwdEVRM0
>>904
ブラウザで見てるが,レス番号は904だ。
あと初期化は単に書き忘れただけw

「2つの下線で始まる函数や変数は局所使用」
って結構いろんなプロジェクトで(OSSでもたまに)
みかけるんだけど,変かしら。
906デフォルトの名無しさん (アウアウウー Saa5-6br4)
2019/01/30(水) 22:48:12.86ID:HCwEhiL7a
>>905
処理系で予約されてるんじゃなかったかな
907デフォルトの名無しさん (ワッチョイ e95f-3XAZ)
2019/01/30(水) 23:09:19.54ID:TJoXpOJw0
>>905
_で始まる変数やマクロは原則予約語で使う表記になるから控えた方が良いって話だったような
908デフォルトの名無しさん (ワッチョイ ff33-vS77)
2019/01/31(木) 04:33:42.98ID:9oWu7LhB0
>>905
うん、変だ
下線2つで始めるのは衝突を最高レベルに警戒する場合の不自然なスタイルで
たいていはスコープが効かないマクロやビルトインで何かするときだ

何の変哲もない局所変数でそんなことするのはひねくれ者だ
909デフォルトの名無しさん (ワッチョイ df01-vS77)
2019/01/31(木) 04:59:33.42ID:aHTkbrhz0
素直にこう書けばいいんだよ

for (int i = 0; i < 42; i++) {
910デフォルトの名無しさん (ワッチョイ ff33-vS77)
2019/01/31(木) 07:35:09.17ID:9oWu7LhB0
衝突を避けている識別子たちを、わざわざ追いかけていく、当たり屋みたいな奇行はよせ
911デフォルトの名無しさん (ブーイモ MM03-4dUu)
2019/01/31(木) 08:34:51.69ID:ANKnOfTnM
>>905
それはコンパイラやライブラリのソースコードだったか目が霞んでたんじゃないか?
アンダースコア2つはどんな場所でも予約されている
912デフォルトの名無しさん (ワッチョイ 7fa5-se+6)
2019/01/31(木) 10:01:39.25ID:2IY59Hh/0
わたしがスペシャル変数と呼んでる一連のアンダーバー付きの変数はプログラミング業界で取り返しのつかないほど広まってる
913デフォルトの名無しさん (アメ MM03-5/sk)
2019/01/31(木) 13:13:58.47ID:JEItRzDdM
Python「……」
914デフォルトの名無しさん (ワッチョイ ff8c-ZhXv)
2019/01/31(木) 16:20:12.34ID:2v9wwy3D0
世界統一変数名が必要なんだよね。でもあそこと、あそそこが悪さする。
915デフォルトの名無しさん (ワッチョイ df52-S1Ul)
2019/01/31(木) 16:52:59.91ID:hLsI8bIs0
スーパーグローバル変数「___________________GET!!!!!」
916デフォルトの名無しさん (ワッチョイ df52-S1Ul)
2019/01/31(木) 16:54:01.34ID:hLsI8bIs0
すまん$が抜けてた
917デフォルトの名無しさん (ワッチョイ 5f45-Wpr0)
2019/02/02(土) 19:10:56.37ID:6Psw+wcJ0
汎用大域ループカウンタを宣言しておけばええんや
918デフォルトの名無しさん (ワッチョイ 7f1e-3UzO)
2019/02/02(土) 22:15:48.72ID:5ka5WtNb0
CX
919デフォルトの名無しさん (ワッチョイ df7b-Z3mi)
2019/02/03(日) 16:08:26.01ID:Z/smOlQY0
じゃぁ、変数名が I ~ N で始まる場合は自動的に整数変数と見て、
宣言せずに使えるようにしよう。
920デフォルトの名無しさん (ワッチョイ ff28-/DTb)
2019/02/03(日) 17:48:04.65ID:JQdPtia00
もうちょっとボカしてくれれば面白いものを。
921デフォルトの名無しさん (ワッチョイ ff02-lvwX)
2019/02/03(日) 17:56:15.17ID:DVXBklBr0
>>919
昔そんな言語なかったっけ?言語と言うよりはそういう特殊仕様が実装された実行環境かな。なんとなくBASICとかであったような気がするんだが。
(もしかすると40年ぐらい前のマイコン用に作られた言語かも知れない。こういうのはバイト数減らすのに都合が良いから)
922デフォルトの名無しさん (ワッチョイ df01-45Wg)
2019/02/03(日) 18:04:56.82ID:UmkqfD+A0
由緒正しきBASICはそもそも変数宣言なんていらん。
923デフォルトの名無しさん (ワッチョイ ff63-S1Ul)
2019/02/03(日) 18:09:15.27ID:RfDSwLa60
BasicだとDEFINTなんてあったな
宣言無しで型が決まるのはもう少し古い言語だな
924 ◆QZaw55cn4c (JP 0H7f-UFcY)
2019/02/03(日) 18:18:49.02ID:t4xt++QjH
>>922
DIM
925デフォルトの名無しさん (ワッチョイ df01-C3+4)
2019/02/03(日) 18:42:43.82ID:v3/qMBNz0
>>921
Fortran だね
Cが教育課程に採用される前の言語
926デフォルトの名無しさん (ワッチョイ ff63-S1Ul)
2019/02/03(日) 18:56:42.51ID:RfDSwLa60
I、J、Kをループ変数に使うというのは
その辺りからの伝統というかしきたりだったね
927デフォルトの名無しさん (ワッチョイ 7f01-I5Ub)
2019/02/03(日) 18:58:36.52ID:Q6V8DKqV0
>>921
FORTRANだろ
928デフォルトの名無しさん (ワッチョイ df52-S1Ul)
2019/02/03(日) 19:11:35.29ID:fibfEOKo0
ここの住民が言語作ったら良い言語できそうだな
あ、グローバル変数とvarとletは無しでお願いしますね
929デフォルトの名無しさん (ワッチョイ ff63-S1Ul)
2019/02/03(日) 19:17:13.15ID:RfDSwLa60
変数使わない言語がいいな
930デフォルトの名無しさん (ワッチョイ ff02-lvwX)
2019/02/03(日) 19:22:06.40ID:DVXBklBr0
>>925>>927
あ、そうか。そういやそうだったね。すっかり忘れてた。
931デフォルトの名無しさん (ワッチョイ ff63-S1Ul)
2019/02/03(日) 19:23:53.89ID:RfDSwLa60
「Fortran、再起動!」
「出撃!」
932デフォルトの名無しさん (アメ MM03-5/sk)
2019/02/03(日) 19:27:53.77ID:DdA3Wm74M
>>929
forthとか?
933デフォルトの名無しさん (ワッチョイ df52-S1Ul)
2019/02/03(日) 19:35:40.13ID:fibfEOKo0
>>929 じゃあ全部定数にしよう(暴論)
934デフォルトの名無しさん (ワッチョイ df01-45Wg)
2019/02/03(日) 19:56:55.85ID:UmkqfD+A0
>>932
スタックも広義の変数なような?

llvmでは一度代入した変数は書き換えない(全て準定数)って聞いたけど、ループ変数なんか値書き換えないとやってられないような?
935デフォルトの名無しさん (ワッチョイ 7f01-I5Ub)
2019/02/03(日) 20:08:52.98ID:Q6V8DKqV0
>>932
流石にForthにも変数はあるよ
936デフォルトの名無しさん (アメ MM03-5/sk)
2019/02/03(日) 20:59:31.07ID:DdA3Wm74M
>>935
>>929は変数使わない言語って言ってるんで。
forthに変数が無いとは言ってないよ。
でもちょっとしたことなら全部スタックで済ましちゃうでしょ?そういう言語だし。
937デフォルトの名無しさん (ワッチョイ 5ffe-vS77)
2019/02/03(日) 21:36:40.63ID:o+jOfHnE0
llvmにも書き換え可能なメモリを確保する命令はある。
それでループ変数を作っておいて、書き換え不可変数への置き換えは最適化におまかせする感じ。
938デフォルトの名無しさん (ワッチョイ 7f01-I5Ub)
2019/02/03(日) 22:05:11.19ID:Q6V8DKqV0
>>936
アスペ?
939デフォルトの名無しさん (アメ MM03-5/sk)
2019/02/03(日) 22:10:21.16ID:DdA3Wm74M
突然の自己紹介??
940デフォルトの名無しさん (ワッチョイ df7d-qf6r)
2019/02/04(月) 02:10:59.10ID:0dEMPpXZ0
最近
「私たちのアポロ計画」
という映画みたら、黒人のBBAがFortran使っててドヤ顔してたわw
Fortranごとき中高生でもできるのにね。
941デフォルトの名無しさん (ワッチョイ 7f01-I5Ub)
2019/02/04(月) 04:58:45.67ID:18M/gPzw0
>>939
ああ、単に煽りたいだけの人なのね
942デフォルトの名無しさん (ワッチョイ ff28-/DTb)
2019/02/04(月) 06:55:51.99ID:eH/He5cH0
もっとボカせばいいのに(しつこい)
943919 (ワッチョイ df7b-Z3mi)
2019/02/04(月) 08:07:42.85ID:01AVniBC0
>>920 (== 942) こういうネタを投稿するときは
どのくらいボカすか、ってさじ加減が難しいんだよ。

あからさま過ぎれば、知識の豊富な人には物足りないし、
おとなし過ぎると、何の話かサッパリ分からんって人が多くなる。
今回は間口を広げる方針、分かりやすさ優先だったと解釈してくれ。
944デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/04(月) 10:30:19.38ID:BGg5R2c70
>>940
じゃあCは中高生には使えんとでも言いたいのか? おめでたいやつだな
945デフォルトの名無しさん (ワッチョイ 5f45-Wpr0)
2019/02/04(月) 10:51:20.21ID:958Z8DnZ0
#include <stdio.h>
#include <stdlib.h>
FILE *fp;
int c;
void main() {
fp=fopen("HOGE.LOG", "w");
fputs("このプログラムは何かまずい?まずいとしたらどうなる?",fp);
exit(c);}
946デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/04(月) 11:05:37.79ID:BGg5R2c70
ばかでけえ釣り針だな
クジラでも狙ってるのか?
947デフォルトの名無しさん (ワッチョイ df52-S1Ul)
2019/02/04(月) 11:06:18.82ID:TOy5lCxb0
あーあ釣られちゃった
スレめんどくさくしないでね
948デフォルトの名無しさん (ワッチョイ df27-vS77)
2019/02/04(月) 12:51:43.30ID:i3TKqgTm0
速報 ワイ どこに釣り針が仕掛けられているのか分からず
949デフォルトの名無しさん (アークセー Sxb3-DTSK)
2019/02/04(月) 13:17:46.57ID:7h07tci2x
釣り針にかかってみる。
main引数のvoidを省略するのは非標準なのでダメって話じゃないのん?
950デフォルトの名無しさん (ワッチョイ ff28-/DTb)
2019/02/04(月) 13:17:49.13ID:eH/He5cH0
>>948
cが初期化されてないんでしょ(鼻ホジ)
951デフォルトの名無しさん (ワッチョイ ff63-S1Ul)
2019/02/04(月) 13:23:03.13ID:h1bt6e1C0
明示しなくても0に初期化されない?
952デフォルトの名無しさん (ワッチョイ ff28-/DTb)
2019/02/04(月) 13:44:12.81ID:eH/He5cH0
それはmain函数の戻り値の処理を省いても0が返る,みたいな危うさがない?
……知らんけど
953デフォルトの名無しさん (ワッチョイ ff63-S1Ul)
2019/02/04(月) 13:46:18.98ID:h1bt6e1C0
気になる点
mainの引数指定がない
fopenが成功したかチェックしていない
fcloseしていない
954デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/04(月) 16:13:18.04ID:BGg5R2c70
>>949
♪授業中あくびしてたら口がでっかくなっちまった~
955デフォルトの名無しさん (ワッチョイ 5f45-Wpr0)
2019/02/04(月) 17:53:18.29ID:958Z8DnZ0
大域変数は、仕様上、0で初期化される事が保証されてる。
mainが実質的にintを返しているのと同じ状態、void指定からexit()によって値を返す形式も許容範囲内。
exit()は閉じてないストリームを閉じる処理も含んでいる。

mainの引数指定していないのは、GCCでも警告すら出ないで通った。
void指定したのと同一のコード吐き出すけど、これ本当に何かまずいの?
956デフォルトの名無しさん (ワッチョイ ff7c-S1Ul)
2019/02/04(月) 18:24:32.77ID:8k8r0y3l0
>>955
mainの引数なしはギリギリセーフ
戻り値なしはギリギリチョップ
957デフォルトの名無しさん (ドコグロ MM9f-I5Ub)
2019/02/04(月) 18:49:29.84ID:jFZpHwREM
>>953
> fopenが成功したかチェックしていない
fputsもな
958デフォルトの名無しさん (ワッチョイ ff63-S1Ul)
2019/02/04(月) 18:50:42.11ID:h1bt6e1C0
ううむ
セーフとか言う意味じゃ無く、
気持ち的に落ち着かないと
言った方が良いかな
959 ◆QZaw55cn4c (ワッチョイ 7f47-UFcY)
2019/02/04(月) 19:00:36.55ID:CLpqTC7n0
個人的には
int main()
は許容範囲です、でも
void main(int argc, char **argv)
は許容できません

理由は、main() が接続(リンク)するスタートアップは、main() の内容がどんなものであれ変わらないから
スタートアップ(呼び出し側)が固定であるのならば、呼び出され側のシグネチャーも固定であるべきと考えます
スタートアップが仮定する引数と返り値を、main() が変えていい、とか考えられない暴挙だと思うのです

私がコンパイラを書くことが万が一あったとしたら、void main() はコンパイルエラーにします…
960デフォルトの名無しさん (ワッチョイ df01-DTSK)
2019/02/04(月) 19:22:17.76ID:X0TXiuYZ0
>>959
前者はC99ぐらいから廃止予定だったけど後者は規格にちゃんとあるんじゃなかっただろうか?
961デフォルトの名無しさん (アウアウウー Saa3-d53M)
2019/02/04(月) 20:04:17.97ID:zvEiFsrUa
>>945
まずくないけど変な感じはする。
それと本当なら出力の最後に改行が必要なのではないか?
fclose()がないが、exit()するならその中でやられている筈。しかし自分でやった方が良いとは思う。
962デフォルトの名無しさん (ワッチョイ df01-C3+4)
2019/02/04(月) 20:05:29.32ID:T5zgWCiB0
exit on free や exit on (f)close の臭いがする
963 ◆QZaw55cn4c (ワッチョイ 7f47-UFcY)
2019/02/04(月) 20:28:02.23ID:CLpqTC7n0
>>960
引数の指定なし、は今でもありえるでしょうね、廃止予定とはきいていません
void main() は、ISO/IEC 9899/1999 5.1.2.2.1 にて陽に記述はありません
(ただし、or in some other implementation-defined manner. という注記はありますけれども)
964デフォルトの名無しさん (ワッチョイ 7fab-qf6r)
2019/02/04(月) 20:29:04.76ID:jUExJMkq0
AVRやPICといったマイコンでの話。

符号付整数型を文字列に変換しようと思ってるんだけど
定番のsprintfはこれら8bitマイコンにはややメモリを食いすぎて実装するのは厳しい。

代わりにメモリの消費量が少ないitoaという関数を使おうかと思ってるんだけど
itoaよりさらにメモリを節約できる方法ってあったりする?
965デフォルトの名無しさん (ワッチョイ ff7c-S1Ul)
2019/02/04(月) 20:40:33.65ID:8k8r0y3l0
>>964
7行printf があったので、それを改造して使ってたな
自分だけが使う分には便利だった
966さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ df01-Ysl1)
2019/02/04(月) 20:50:44.05ID:MwdPLMKS0
>>964
3桁くらいなら、わり算と余りが使えるかも。
967デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/04(月) 20:55:36.25ID:BGg5R2c70
>>959
その論法では()と(int, char**)が共存しえないな
968デフォルトの名無しさん (ワッチョイ df7b-Z3mi)
2019/02/04(月) 20:58:12.71ID:01AVniBC0
>>945 は「行儀が(とても)悪いけど、明確な規格違反も含んでいない」っていう
引っ掛け問題なんじゃないか?
いくつか気になる点があって調べたけど、どれも規格違反とまでは言えなかった。

>>964
実際に不都合が発生するまではライブラリの関数を使うべし、
ってのがプログラミングの定石だけど、それは置いといて。
itoa() は標準関数じゃないみたいだから、独自ライブラリなら
関数のソースも付属してるんじゃないかな。
自分が使う数値の範囲が限定されるなら、付属ソースを参考に
専用の「数値→文字列」の変換関数を作るのも簡単かと。
(コードの著作権とかの方面は考慮してないので御注意)
969デフォルトの名無しさん (ワッチョイ 7fab-qf6r)
2019/02/04(月) 22:30:53.53ID:jUExJMkq0
>>965
>>966
>>968
ありがとう、itoa関数よりもっとコンパクトな関数の自作に挑戦してみる(`・ω・´)
970さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd9f-Ysl1)
2019/02/04(月) 22:36:37.94ID:A8/6icsqd
int n = 123;
char a[4];
a[0] = '0' + (n / 100) % 10;
a[1] = '0' + (n / 10) % 10;
a[2] = '0' + (n / 1) % 10;
a[3] = 0;
971デフォルトの名無しさん (ワッチョイ 7fab-qf6r)
2019/02/04(月) 22:42:47.31ID:jUExJMkq0
>>970
おお、なんか軽そう!
972デフォルトの名無しさん (ワッチョイ df01-DTSK)
2019/02/04(月) 23:30:45.04ID:X0TXiuYZ0
割り算や剰余は8ビットマイコンでは重いのでBCD変換後4ビット毎に文字列化する方法もある。
高速なBCD変換はググれば出てくる。
973デフォルトの名無しさん (アウアウウー Saa3-d53M)
2019/02/05(火) 09:26:29.85ID:NCwCR2JIa
>>964
桁数固定で良いなら自分で下の桁から10で割った余りに'0'足して10で割るってのを桁数分だけ繰り返せば良いのでは?
974デフォルトの名無しさん (アウアウウー Saa3-d53M)
2019/02/05(火) 09:27:26.26ID:NCwCR2JIa
うう。リロードしたら答えが全て書いてあるではないか。orz
975デフォルトの名無しさん (ワッチョイ df27-vS77)
2019/02/05(火) 19:48:53.03ID:ksVxO8O00
http://2chb.net/r/gamedev/1028273462/

1 名前:名前は開発中のものです。[] 投稿日:02/08/02(金) 16:31 ID:GWrer4oY
C言語でゲームって作れるわけ?
あんなの文章表示させられるだけでしょ?


255 名前:名前は開発中のものです。[] 投稿日:2017/02/05(日) 09:12:26.60 ID:AoXQwlvR [1/2]
くっそ懐かしいスレまだあったのか建てたの高校生だった頃の俺やぞwww
ちな今銀行のATMのシステム開発技術者。なんてアホなスレ建ててたんだ俺は・・・



ちょっとジーンとしたw
976デフォルトの名無しさん (ワッチョイ df52-S1Ul)
2019/02/05(火) 20:36:40.97ID:4jJQIC2L0
2002年w
暇なのでログ読ませていただきますw
977デフォルトの名無しさん (ワッチョイ df01-zGAl)
2019/02/05(火) 21:10:30.19ID:or2LkC5v0
https://paiza.io/projects/ocopHn6TvkpJu4a--2xAig

初心者なんだが質問したい
もしスレチだったら無視してくれ

coding ground でやってたのだがコンパイルは通ったんだけど正常に実行されない。自分ではよくわからなかったので誰が暇な人いたら教えてほしい…
必要な情報あれば送る。
978デフォルトの名無しさん (ワッチョイ df5f-Qe+R)
2019/02/05(火) 21:50:01.63ID:nQ1PAxEF0
>>977
文字列に改行文字がないのが原因では?
979デフォルトの名無しさん (ワッチョイ 5f00-vS77)
2019/02/05(火) 22:00:33.04ID:wHlrTA+U0
文字列は==では比較できない
#include <string.h>してstrcmp()を使いましょう
980デフォルトの名無しさん (ワッチョイ df5f-Qe+R)
2019/02/05(火) 22:05:58.12ID:nQ1PAxEF0
>>979
マジだ見えてなかったわ
981デフォルトの名無しさん (ワッチョイ df01-zGAl)
2019/02/06(水) 02:22:12.53ID:yGh9lkMb0
https://paiza.io/projects/F0I33_Di-fagw1kL49BVoQ

サンクス
strcmpを使ってみたのだがまだダメなようだ
正常にbreakできない
使い方が間違っているのかもしれない
982デフォルトの名無しさん (ワッチョイ ff78-nry2)
2019/02/06(水) 02:37:12.10ID:Iaau3S1w0
>>981
よく読んでないけど
とりあえずfor文は100ループしたら駄目じゃないかい?
p回のような
983デフォルトの名無しさん (ワッチョイ ff02-vS77)
2019/02/06(水) 03:09:41.56ID:jnwpwdAT0
>>981
そのプログラム問題ないぞ。単に入力に 0 が入ってない(というか何もない)からうまく行かないだけ。
下の所の「入力」タブを押して標準入力から読ませる文字列を入れておいてから実行すればいい。
例えばこんな風にだ。(これは入力の所に文字列セットしただけ。プログラム変更なし)。
https://paiza.io/projects/sZbQ6S7tfTLKqC_CEpG_8w
984デフォルトの名無しさん (ワッチョイ ff02-vS77)
2019/02/06(水) 03:16:24.22ID:jnwpwdAT0
ま、しかし、入力が何もなしでいきなり EOF になった場合を想定していないのはまずいプログラムであるとは思う。
985デフォルトの名無しさん (ワッチョイ df00-/DTb)
2019/02/06(水) 04:30:43.46ID:FgEjt1k50
Cが高速な理由ってコンパイラが出力バイナリの速度に重点を置いていて
かつそのコンパイラが長年の歴史をかけて磨かれてきたから。っていうのは間違ってるかな

Cの言語構造そのものに高速性が見出せない。
直にx86アセンブラを書いても速度が遅かったりするもん。
986デフォルトの名無しさん (ワッチョイ df01-vS77)
2019/02/06(水) 04:57:27.49ID:eUM592Vs0
ループから抜けるときに goto使ったらダメなんですか?

for (...) {
for (...) {
if (...) goto LOOP_EXIT;
}
}
LOOP_EXIT:

こういう感じで書いたら先輩に怒られました。
フラグ見てループ抜けるように修正しろと。
指示されたので従いますけど、どうしてダメなのかよく分かりません。

どなたか納得するような理由をご存知でしょうか?
987デフォルトの名無しさん (ワッチョイ df01-WZLq)
2019/02/06(水) 06:01:54.08ID:erbfwmnV0
goto全否定は宗教みたいなもん。
万人が納得できるような理由はないと思う。
BASIC時代のスパゲッティーなプログラムの反省から制御の構造化を崩すようなgotoとcontinueは禁忌されることが多い。
ホントはここぞって言う時には使うべきなんだけどね。
988デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 06:27:31.89ID:1SbGZlcV0
>>975
レス番が0xffなのも草
989デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 06:29:29.34ID:1SbGZlcV0
>>987
continueはどのように構造化を崩すんだ?
ループの外へ出てしまうgotoやbreakとはちょっと違うと思うが
990デフォルトの名無しさん (バットンキン MMdf-WZLq)
2019/02/06(水) 07:45:48.33ID:5UWRxIqtM
>>989
break文もそうだが、continueは構造化を無視してジャンプするという範疇に入るそうだ。
ま、宗教だね。
991デフォルトの名無しさん (ブーイモ MM03-4dUu)
2019/02/06(水) 08:30:46.09ID:QSRxZnkxM
まあ初心者相手ならgotoには蓋をしておいて、15の誕生日になったら開けなさいって言っておいたほうがよいとは思う
992デフォルトの名無しさん (ワッチョイ ff2c-U2fY)
2019/02/06(水) 08:47:44.10ID:ko7vbQjm0
Ruby にも、多重ループを一気に抜ける構文がある

catch(:hoge_break) do
3.times do |i|
4.times do |j|
throw(:hoge_break) if hoge
end
end
end

これを認めない人は毎回、継続フラグを判断し続けなければならない。
漏れはむしろ、こちらの書き方の方が、バグる気がする
993デフォルトの名無しさん (ワッチョイ ff8c-ZhXv)
2019/02/06(水) 08:59:54.85ID:2/r6PXjM0
並列実行させたいときループの途中に戻りたいと思ふ。
994デフォルトの名無しさん (ワッチョイ df27-vS77)
2019/02/06(水) 09:29:07.75ID:6h2IvBM+0
>>988
その発送はなかったわw
995デフォルトの名無しさん (ワッチョイ 7f7d-uIbv)
2019/02/06(水) 09:56:36.40ID:LaX4f5p90
本日配達の予定です。
996デフォルトの名無しさん (ドコグロ MM7f-I5Ub)
2019/02/06(水) 12:30:20.04ID:5DsLQSpRM
>>993
コルーチンやね
いくつかの言語でサポートされてるけどまあ今どきならマルチスレッド+同期化でやりたいことはできる
https://ja.m.wikipedia.org/wiki/コルーチン
997デフォルトの名無しさん (アウアウウー Saa3-d53M)
2019/02/06(水) 12:30:56.55ID:Zn5BTEOaa
>>985
C以外はCと同じようなことをしようとしてもコードが沢山作られて結果的に遅くなるって事だと思うが。(ただし人力で最適化してあるアセンブラ等は除く)。
昔は本当にそうだったように思う。高級言語なのにコンパクトなコード作るのはCぐらいじゃないか?今は知らないけどね。
それと今はインタプリタやVMで実行するのが一般的なJavaのような言語でも実行時に内部でコンパイルしたりJITつかったり工夫がされてるので速度は速くなる事はあるかも。
コードは内部的に大きくなってメモリ食ってるかも知れないけどね。小規模な組み込み用とかでなければ問題にならないと思う。
998デフォルトの名無しさん (アウアウカー Sa53-MNmT)
2019/02/06(水) 12:41:47.95ID:CtZpHCTya
longjmpとか昔からあると思うよ
999デフォルトの名無しさん (アウアウウー Saa3-d53M)
2019/02/06(水) 12:44:25.18ID:Zn5BTEOaa
>>986
いや、いいよ別に。後でそれで混乱することにならないとか、あるいは使った方がより見やすく分かりやすくなるなら使えばいいのでは?
C言語はtry catch みたいなのもないし、トリッキーな方法でないものをあるかのように見せかけるプログラム作るよりはサクッと goto 使っちゃった方が良いと思う。

その先輩はそのような信仰を持っているか、または会社ならばそこでのコーディング規約で使わない事にしてあるんだろう。
1000デフォルトの名無しさん (ワッチョイ 7fd2-Z7Am)
2019/02/06(水) 12:46:40.08ID:zkk6azTG0
10011001
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 100日 14時間 44分 56秒
10021002
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

ニューススポーツなんでも実況



lud20250619004026ca

ID:w3lkHMGF0のレス一覧:


760デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/04(金) 07:14:05.80ID:w3lkHMGF0
わざわざ「組み込み」と言う意味があるかどうかだな
ノートPCをロボットの脳として搭載することもできるが
OSがWindows10 Homeじゃ組み込みとは言えないのか
761デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
2019/01/05(土) 18:26:16.82ID:pJbMq/2ja
今じゃ小さいの幾らでもあるからなんでも組み込みにできるな。
コストと耐久性の問題はあるが。
762デフォルトの名無しさん (ワッチョイ 8901-ahzL)
2019/01/06(日) 21:17:49.87ID:LPav389N0
一時はECUなど特定の分野を除いて組み込みもLinuxに席巻されそうになっていたけど、最近のIoTブームのせいか超小型超低消費電力のマイコンのニーズが高くなり昔ながらの職人芸的組み込みソフトが復権してきてるイメージあるわ。
763デフォルトの名無しさん (アウアウウー Sa9d-khkO)
2019/01/06(日) 21:36:48.83ID:rMmabB99a
まあプログラムはむしろ楽だね。
貧弱なプラットフォームの方が。
764デフォルトの名無しさん (ワッチョイ 997b-2hSR)
2019/01/07(月) 06:58:10.64ID:k1Vvc+OE0
PICなんかを使った、電子工作の延長みたいな
「Cでもプログラムできるワンチップ」ていうジャンルも
盛んになってるみたいだし。

あそこまで小さくなると、直接マシン語で考える方が
手っ取り早いような気がするわ。
765デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/07(月) 17:11:01.86ID:Cio2TleD0
気がするんではなく実際そうだ
あれはアセンブラで使うもの
766デフォルトの名無しさん (ワッチョイ 0beb-xhm2)
2019/01/07(月) 17:19:52.92ID:YLZmdTQx0
アセンブラで出来てC言語で出来ないことがイマイチわからないです。
なんか具体的な例などあれば・・・
767デフォルトの名無しさん (ワッチョイ 8b63-xhm2)
2019/01/07(月) 17:22:48.61ID:ArcgbVcT0
C言語使う為には最低限コンパイラが動く環境を
用意しないと行けないが
アセンブラは比較的簡単に実装できる
いざとなったら16進で入力すれば良いし
768デフォルトの名無しさん (ワッチョイ 0beb-xhm2)
2019/01/07(月) 18:58:49.76ID:YLZmdTQx0
>>767
なーるほど!コンパイラがいらずでCPUやメモリ使えるってことですね!
それは確かに便利だありがとうございます。初めてアセンブラの利用価値に合点がいきました。アセンブラわからないですが(´・ω・`)
769 ◆QZaw55cn4c (ワッチョイ d347-5am+)
2019/01/07(月) 19:01:38.90ID:c5u8F3uW0
>>766
自己書き換えプログラム、とかはどうですか?
770デフォルトの名無しさん (ワッチョイ 8b63-xhm2)
2019/01/07(月) 19:06:52.70ID:ArcgbVcT0
8ビットCPUの頃はやった事あるけど
今のCPUだと難しいのではないかな
771デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/07(月) 19:13:29.39ID:Cio2TleD0
真のハーバードアーキテクチャだとな
772デフォルトの名無しさん (ワッチョイ 93f1-xhm2)
2019/01/07(月) 19:20:28.86ID:aW5a0RDY0
コンパイラが要らなくてもアセンブラは必要なものじゃないの?
773デフォルトの名無しさん (ワッチョイ 2b7c-xhm2)
2019/01/07(月) 19:34:19.06ID:VIu/Fipc0
>>772
8bit時代、サブルーチン程度ならニーモニックどころかダンプ直打ちしてた基地外もいた
774デフォルトの名無しさん (ワッチョイ 8901-ahzL)
2019/01/07(月) 19:41:40.02ID:0y/PgDfv0
おっさん世代はZ80ぐらいなら主要なニーモニックは未だにヘキサで覚えてる。
775デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/07(月) 21:33:52.93ID:Cio2TleD0
>>773
ごめんな
コーディング用紙つかってた
I/Oの鬼ダンプとか今でも思い出すよ
776デフォルトの名無しさん (ワッチョイ 6900-DsDM)
2019/01/07(月) 21:46:22.29ID:E11lC+b50
このスレの平均年齢いくつなの……w
777デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
2019/01/07(月) 21:58:59.48ID:fnTlHl64a
>>768
それだけでなく本当にCだけではできない事があるのが普通だ。CPUにもよるけどね。

何か特定のレジスタに値をセットしないと何かの機能が使えないみたいな場合はCではレジスタの指定をして値をセットすることができないので最低でもその部分だけインラインアセンブラにしたり全部アセンブラで書いたりする(またはそれ用に拡張がされたCコンパイラを使う)。

その他、80系やx86系ってI/Oポートあるが、あれはCからはアクセスできないのでその部分はアセンブラにする。

まあしかしそういうのはほとんどデバイスドライバの中で必要になる事なので普通は一般ユーザは考えなくてもよくなっている。
778デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
2019/01/07(月) 22:02:17.91ID:fnTlHl64a
>>773
それ昔は普通に居た。何せアセンブラなかったりあっても高かったりで使えないことが多かったからな。

>>774
3E 00   LD A,0

のような。

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1540731704/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「C言語なら俺に聞け 149 ->画像>6枚 」を見た人も見ています:
C言語なら俺に聞け 152
C言語なら俺に聞け 148
C言語なら俺に聞け 151
C言語なら俺に聞け 145
C言語なら俺に聞け 150
C言語なら俺に聞け 153
C言語なら俺に聞け 146
C言語なら俺に聞け 140
C言語なら俺に聞け 162
C言語なら俺に聞け 160
C言語なら俺に聞け 161
C言語なら俺に聞け 163
C言語なら俺に聞け 158
C言語なら俺に聞け 154
LinuxカーネルはC言語なのにオブジェクト指向
C言語上級者スレ
C言語でRADって作れるんでしょうか?
C言語に詳しいやつきてや
C言語相談室(上級者専用)
【IT】開発者7万人に聞く、2018年学んだプログラミング言語第1位は?
C言語でテトリス作れる人来て!👾
C言語の設計ミスった危険な関数トップ10決めようぜ
【サッカー】<英国>相手チームの給水ボトルに小便…言語道断の行為でミルウォールのファン1名を逮捕!
ラズパイ4でc言語開発する方法教えてくれ
C言語で関数を書いていくスレ
コンテンツ言語『 Curl 』情報交換スレ
C#が世界一モダンな言語なのにレガシーとか言われてる理由
0からの、超初心者C言語相談室
C++とC言語ってどっちの方がいいの?
「Ruby」が大人気言語になれない理由
新コンテンツ言語『カール』って?
[c言語]以下のプログラムの解説お願いします。
言語学徒に聞きたいんだがチョムスキーってどのぐらい凄いの?
C言語はバイトオーダー等のハードウェア構造を意識しなければ
C言語を学びたいんやが、まず何からやればいい?
最長不倒関数■C言語でmain関数に全コードを入れる
日本生まれのプログラミング言語「Ruby」の魅力とは何か 開発者に聞く
英語「あ、gは発音しちゃダメw(両手中指でバッテン」👈このカスが覇権言語な理由
野田クリスタルが使ってるプログラミング言語、HSPだった 20年ぶりに聞いたは
玄人「まずC言語から覚えろ!」「Cはすべての基礎!」これまじ??
日本語は乱れているのか「わかりみ」「とりま」「りょ」若者言葉は元気言語の証拠 激おこぷんぷん丸はほぼ消滅 [七波羅探題★]
A「C言語・Java言語できます」B「Pythonと統計できます」C「JSについての知識ならだれにも負けない」←お前が面接官だったら誰雇う?
イーロン・マスク「20年前C言語使ってた!プログラムは知っている😤」 社内の技術レクチャーで突然発言
1行ずつC言語を書いてくスレ(目標なし) (298)
C++ Builderなら俺に聞け
【緊急】母音1音だけで意味を持つ言語、日本語だけだったことが判明 虫の鳴き声が聴こえるのは日本人だけ
次世代言語アンチスレ19
関数型言語一般
D言語 Part35
言語デザイン
どの言語が一番優れているか
次世代言語議論スレ[Rust Kotlin Haskell]第6世代
21世紀最高の言語がついに決定
人工言語を作りたい
プログラミング言語 Kuin Part 16#01
次世代言語29 TypeScript Swift Go Kotlin Rust Nim
次世代言語17 Go Rust Kotlin TypeScript Julia
ヒ素カレー事件て言語道断のクソ裁判じゃね?
人造言語を作りたいスレ
多言語でforループを列挙していくスレ
次世代言語18 V Julia 他
キチガイばっかの言語学板
次世代が造った言語 blawn
プリキュアの名付けの秘密が明らかに【言語学】
16:29:06 up 103 days, 17:27, 0 users, load average: 20.66, 24.56, 21.42

in 0.10235595703125 sec @0.10235595703125@0b7 on 073005