C言語なら俺に聞け 153

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 5fba-LL4R)
垢版 |
2019/08/17(土) 23:02:42.00ID:tN5mSQYg0
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/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
※前スレ
C言語なら俺に聞け 152
https://mevius.5ch.net/test/read.cgi/tech/1560763630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2019/10/24(木) 13:13:49.39ID:rzYbrWLoM
人を寄せ付けないため
124デフォルトの名無しさん (アウアウウー Sa27-nFuE)
垢版 |
2019/10/24(木) 16:43:51.20ID:gElHX+jGa
荒らされることで活気を保つというのもまたナンだなあ
125デフォルトの名無しさん (ワッチョイ c3b0-ecnW)
垢版 |
2019/10/25(金) 06:37:52.18ID:2lz/0LgC0
本音だけど、何処の板もそうだけど、噛みついてくるのはすぐさま来るけど親身になって
答えてもそのまま逃げる奴ばっかだし、そりゃ人減るよ。
答える奴には聖人を求める癖に自分がカスすぎるじゃん。
2019/10/25(金) 07:36:46.68ID:1flCt2Jcd
他人に対する期待が多すぎるやつは
いつも文句ばっかりぬかしてて
思い通りにならないと発狂する
127デフォルトの名無しさん (アウアウウー Sa27-nFuE)
垢版 |
2019/10/25(金) 12:45:36.00ID:f89Z34lqa
期待が大きいというか、依存だよね。
2019/10/25(金) 18:54:11.10ID:1g0JfiSRM
依存じゃなくて利用だな
他人なんて自分がラクするための道具でしかないという
129デフォルトの名無しさん (アウアウウー Sa27-nFuE)
垢版 |
2019/10/25(金) 20:51:37.05ID:f89Z34lqa
道具に依存している
2019/10/26(土) 12:46:18.79ID:EiwJrseOM
なくても困らない代わりはいくらでもあるものに対して依存しているとは言わない
2019/10/26(土) 12:49:03.78ID:bOvK5kTL0
5ちゃんねる依存症
132デフォルトの名無しさん (ワッチョイ ffad-LHKE)
垢版 |
2019/10/26(土) 21:16:39.88ID:2eoY+VbT0
依存できなくなると怒るんだよ
2019/11/05(火) 20:25:04.26ID:AZeD0bR10
$ ctags -R /usr/include/alsa
をしても、int snd_pcm_open(...); 等が tags に記載されない。
どうして? どうしたら?
2019/11/07(木) 06:31:27.14ID:+Fv/+mh50
>>133
ctags --c-kinds=+p -R /usr/include/alsa
でどうだろ。
見当つくだろうけど「Cのプロトタイプ宣言部分も出力に加える」の意。

どうして、の答えは「デフォルトではプロトタイプ宣言部は対象外だから」だね。
2019/11/11(月) 23:11:25.01ID:W9timUKI0
構造体のメンバ変数に、関数のポインタ変数を入れて、クラスのメソッドのような感じで使ったりできると思うけど、そういう使い方って現実性あるかな?
2019/11/11(月) 23:22:53.41ID:zH1aWpOc0
そういうふうにCでOOPするのが昔流行った。
2019/11/12(火) 00:07:22.48ID:FaYMVIJ40
>>135
Linuxとかで今でも使われまくり
https://elixir.bootlin.com/linux/latest/source/include/linux/fs.h#L1789
2019/11/12(火) 09:07:31.78ID:lfRZP5P70
>>135
デバイスドライバのたぐいは大体それのオンパレードだよね
139デフォルトの名無しさん (ワイーワ2 FF3f-tB+Q)
垢版 |
2019/11/12(火) 09:36:57.66ID:uG6HIbdYF
>>135
普通

>>137
便利だよね
140デフォルトの名無しさん (アウアウウー Sacf-aSoi)
垢版 |
2019/11/12(火) 11:31:00.10ID:H6DlknKxa
>>135
C++がCへのコンバータだった頃はクラスをそんな風に変換してたんじゃないかな。
今はコンパイラが内部的にやってるんだろうけど。
141デフォルトの名無しさん (アウアウウー Sacf-xE2t)
垢版 |
2019/11/12(火) 19:07:08.23ID:4xumfLcka
組み込みプログラマになりたいんだけど入門書やった後は何したらいいの?
142デフォルトの名無しさん (ワイーワ2 FF3f-tB+Q)
垢版 |
2019/11/12(火) 19:10:21.84ID:I0vQskxnF
中学生なら高校逝け
高校生なら大学逝け
143デフォルトの名無しさん (アウアウウー Sacf-xE2t)
垢版 |
2019/11/12(火) 19:20:12.48ID:4xumfLcka
社会人なら?
144デフォルトの名無しさん (ワイーワ2 FF3f-tB+Q)
垢版 |
2019/11/12(火) 19:24:17.50ID:I0vQskxnF
そんな質問の仕方で生きていけると思ってるのか?
自分で考えろ
145デフォルトの名無しさん (ワッチョイ ef8c-msxt)
垢版 |
2019/11/12(火) 19:26:00.59ID:D/uXBQyj0
LチカへGo
146デフォルトの名無しさん (アウアウウー Sacf-xE2t)
垢版 |
2019/11/12(火) 19:29:46.05ID:4xumfLcka
>>144
サンキューポークピッツ
2019/11/12(火) 20:32:17.44ID:mKGma2960
>>141
横井与次郎さんの本が愛読書だったな、俺っち
手垢で真っ黒ボロボロ
2019/11/12(火) 20:34:21.51ID:mKGma2960
サルのようにアセンブラ書きまくってた
149デフォルトの名無しさん (アウアウウー Sacf-aSoi)
垢版 |
2019/11/12(火) 20:52:53.27ID:krWpkqwCa
組み込み用の何かを買ってきて何か作れば良いのでは?

まあしかしこの頃は小さい組み込み用のやつでもLinux動くのあるし、良い時代になったもんだな。
2019/11/12(火) 20:59:56.71ID:hX4IVAaB0
>>141
PICとかハードを直接イジれるやつを隅から隅までイジれ。
逆にラズパイとかはお勧めできない。
151デフォルトの名無しさん (アウウィフ FFcf-SQ7J)
垢版 |
2019/11/13(水) 10:23:05.12ID:OceCV+VLF
スレチ

こちらへどうぞ
https://rio2016.5ch.net/test/read.cgi/denki/1475932454/
152デフォルトの名無しさん (アウウィフ FFcf-SQ7J)
垢版 |
2019/11/13(水) 10:24:21.92ID:OceCV+VLF
こっちか
https://rio2016.5ch.net/test/read.cgi/denki/1556619799/
153デフォルトの名無しさん (アウアウウー Sacf-xE2t)
垢版 |
2019/11/13(水) 17:39:08.11ID:G8O1eV9/a
30日でできる!OS自作入門ってやつは組み込みの知識としては全く必要ない?
なんか楽しそうだからC言語の入門書終わったらやろうと思ってるんだけど
2019/11/13(水) 18:01:06.50ID:IhNMqz4FM
>>153
あの本はCPUの知識ないと何をしてるか分からないまま終わると思う
だから知識が増えた実感も感動も少ない(経験談)
揃えるツールも多いし著者が用意した奴だし

個人的にオススメの勉強法は自分で考えたオリジナル言語をCのソースに変換することかな
文字列処理の知識で実現できてなおかつC言語に詳しくなれるし、他言語の構文を学ぶきっかけにもなる
2019/11/13(水) 18:01:38.54ID:3gCJP2hx0
楽しそうだと思うものをやるのが一番学習には向いてる
組み込みも幅は広くてOSがあったりなかったり様々
やって全く不要だったとはならんと思うよ
156デフォルトの名無しさん (アウアウウー Sacf-xE2t)
垢版 |
2019/11/13(水) 18:17:24.08ID:G8O1eV9/a
Arduinoはダメ?
2019/11/13(水) 18:56:19.16ID:cq8qXzOO0
何を持ってダメ?なのかがわからんから答えようがない
何使ったって楽しく勉強できるなら関係なくない?
勉強すれば次が見えることもある
2019/11/13(水) 18:59:21.12ID:kE3A4AyF0
オームの法則からやった方がいいんじゃねえの
159デフォルトの名無しさん (アウアウウー Sacf-xE2t)
垢版 |
2019/11/13(水) 19:10:14.39ID:G8O1eV9/a
>>157
ラズパイはダメってレスがあるからさ。Arduinoもダメなのかな?と思ってさ。
とりあえずやってみるわサンキュー
>>158
なんで?
2019/11/13(水) 19:19:54.35ID:puH+izSFM
組み込みは扱うものの範囲がベラボーに広いからターゲットが決まってないないなら
予備知識なんてそれこそ有りとあらゆる事を学ばなきゃならなくて時間の無駄
いきなりやりたいことに手を付けるとか目的の会社に就職する算段するとかの方が現実的
2019/11/13(水) 19:24:06.56ID:Fqkv69gYd
興味あるところを片っ端からやればいいよ

最近の新人はまともにコーディングしたことがない人が多くて驚く
2019/11/13(水) 20:14:16.53ID:ESFhNQze0
>>161
>興味あるところを片っ端からやればいいよ

至言ですね…
つまるところアドバイスできるとすれば、この言葉にまとまってしまいますね
2019/11/13(水) 21:24:12.52ID:h+5DYY+D0
ラズパイでもArduinoでもPICでもブレッドボード用意してまずはLチカから
トランジスタや7セグをやって、スイッチからの入力などとれるようになったら
またそこで考える
164デフォルトの名無しさん (アウアウウー Sa45-coos)
垢版 |
2019/11/14(木) 03:35:32.04ID:YiNpU217a
>>154
この本アセンブリとC言語の勉強になったりしない?
2019/11/14(木) 09:19:52.63ID:J2fP3wLz0
>>154
式をコンパイルするところでだいたい挫折する
166デフォルトの名無しさん (ワイーワ2 FFca-/nAh)
垢版 |
2019/11/14(木) 11:24:43.32ID:Owl20mAsF
>>164
ならない

はじめて読む486の方が486倍マシ
167デフォルトの名無しさん (ワッチョイ e9aa-coos)
垢版 |
2019/11/14(木) 12:42:01.31ID:bgqE36PV0
じゃあやーめた
2019/11/14(木) 13:11:45.63ID:hMO8QTtJd
まずはLチカでオームの法則を押さえよう
次はhFEだ フォトトラとダーリントン
フォトカプラとHブリッジあたりまでできるようになれば
あとはどうにでも
169デフォルトの名無しさん (ワッチョイ 068c-ENPG)
垢版 |
2019/11/14(木) 13:13:53.45ID:HGG0mhgt0
リレーかちゃかちゃも捨てがたい。
2019/11/14(木) 13:20:17.46ID:/NpdgKVAd
組み込みだろうが回路は回路の専門家が考える
ソフトの新人が回路に意見しても聞いてくれないよ
2019/11/14(木) 13:23:50.41ID:pX7h0rWU0
制御系の場合は、LTIシステム、Z変換など制御理論の基礎知識がないとそもそもプログラミングが出来ない
どの様にプログラムすれば良いのか迷い途方に暮れることになる
2019/11/14(木) 13:26:39.57ID:/NpdgKVAd
そういうのは実際に使う場面になってから勉強すればいいよ
ソフトは範囲が広すぎてどうせ全て学ぶのは無理だから
173デフォルトの名無しさん (アウアウウー Sa45-nhir)
垢版 |
2019/11/14(木) 13:47:33.26ID:YSMwOav4a
そういえば抵抗のカラーコードって色弱の人とかには辛いんじゃないか?

と、今ごろ気づく。
2019/11/14(木) 14:24:10.71ID:tET/gf2zx
おじさんが若い頃は新人はPIOドライバを書くことから始めてたけど今じゃそれさえも最初からドライバやSDKで用意されてるものが多いしな。
組み込みソフト技術者を自称してる人でも最近じゃリセットエントリからSDRAM設定やスタック設定やセクション初期化とかmainがコールされるまでの部分を書ける人は少なくなってるね。
2019/11/14(木) 16:16:57.62ID:hMO8QTtJd
組み込み分野で、私はソフト屋でハードはわかりません、なんてぬかすやつはビルから投げ捨てろ
2019/11/14(木) 17:44:17.32ID:KJEtP35mp
>>173
色弱で前までは気合で読んでたけど最近はスマホアプリとかで読んだりもする
177デフォルトの名無しさん (アウアウウー Sa45-nhir)
垢版 |
2019/11/14(木) 18:45:54.05ID:YSMwOav4a
なるほど。やはりそうか。
スマホアプリあってよかったな。
2019/11/14(木) 18:51:25.20ID:wXs4N2j20
今時カラーコード?
179デフォルトの名無しさん (アウアウウー Sa45-coos)
垢版 |
2019/11/14(木) 19:41:22.93ID:YiNpU217a
ものづくりC言語塾とかいうプログラミングの勉強サイト見つけたんだけどわかりやすいのここ
2019/11/14(木) 19:56:34.37ID:KjmBL3+S0
無駄なイメージ画像が矢鱈と多いね
チャッチャと本題に入ればいいのに

肝心のコードのフォントサイズ一回り小さくしてね?
逆だろ逆
2019/11/14(木) 21:05:18.98ID:mZpo/vPM0
分野的には制御&組み込みだが論理回路とかは初歩の初歩くらいしか分からんわ
別に組み込み屋を自称する気もないけど
182デフォルトの名無しさん (ワッチョイ 068c-ENPG)
垢版 |
2019/11/15(金) 00:45:20.33ID:r8gV+bPL0
建築土方で分ける方が良いかも。知らんけど
2019/11/15(金) 00:59:59.43ID:YJCQuSug0
ポインタを返す関数の中身を他の変数にコピーしたいとき
int a;
a = *func();
みたいな事をしても良いんでしょうか?
コンパイルしたら動きましたが…
普通こういうことはしませんか?
2019/11/15(金) 01:54:01.65ID:GhKndF/D0
funcが返す値を開放する責任がないなら問題ない
2019/11/15(金) 02:21:33.91ID:Re5Vtpoc0
>>183
これなにか使い道あるの?
2019/11/15(金) 05:47:36.56ID:Re5Vtpoc0
ああ空目してたわスマソ
2019/11/15(金) 09:12:52.77ID:uuXKcbIGd
>>181
慢心せず謙虚でいるのはいいことだが
やる気のなさの言い訳にするやつに
同調はしないってことさ
2019/11/15(金) 09:35:58.90ID:rGVJWIdvM
制御屋なら論理回路よりも伝達関数
2019/11/15(金) 10:29:58.55ID:kGxI2dsUM
>>183
func() の作り方次第

int x = 123;
return &x;

とかやってたらダメ
2019/11/15(金) 11:04:39.89ID:uuXKcbIGd
>>188
なぜ、よりもと択一選択するんだ?
2019/11/15(金) 11:25:31.01ID:rGVJWIdvM
極論すれば対象をモデル化して状態方程式をプログラムで逐次演算するアルゴリズムを実装するのが本来の制御系の組み込みソフト
論理回路のソフト処理への代替はコストダウンの一環で取り込むことはあってもあくまでオマケ
192デフォルトの名無しさん (アウアウウー Sa45-nhir)
垢版 |
2019/11/15(金) 11:37:39.91ID:qkK0C17la
>>178
抵抗って昔からカラーコードで抵抗値表してるのでは?今は変わったの?
2019/11/15(金) 11:43:07.73ID:bb6Q721I0
>>192
部品を小さくすると高速化できるので
チップ部品が増えたが、そこにはカラーコードは使われていないからでは。
194デフォルトの名無しさん (アウアウウー Sa45-nhir)
垢版 |
2019/11/15(金) 11:46:04.74ID:qkK0C17la
>>183
良いんだけどNULL返されたらおしまいなのでそのためにワンクッション入れるのが普通なのではないな。

実際 localtime() なんかはエラーの時にNULL返す事になってるしな。自分の所の変数にコピーする場合はまずポインタで受けてNULLでなければポインタの指してる先がコピーされるように書くよ。
2019/11/15(金) 14:01:09.16ID:d61354ir0
>>192
チップ抵抗器って見たことない?
196デフォルトの名無しさん (ワイーワ2 FFca-/nAh)
垢版 |
2019/11/15(金) 14:54:35.89ID:76R0IrhIF
>>180
典型的なアフィwebサイトと同じ造りなんだよな
一目でそっとじ
197デフォルトの名無しさん (アウアウウー Sa45-nhir)
垢版 |
2019/11/15(金) 15:03:20.79ID:qkK0C17la
>>193>>195
あの小さい四角いやつか。
電子工作何十年もやってなくて知らなかった。
ググって画像見た。
2019/11/15(金) 16:35:54.83ID:uuXKcbIGd
core-i7のパッケージ天面にも貼ってあるから電子工作してなくても見かけることはありそうだが
2019/11/15(金) 17:24:07.85ID:xeYG9inD0
見かけていてもアレが何なのか分からない、だろう
2019/11/15(金) 17:31:28.56ID:pd2oXw5yd
最小は0201かな
3216とかは巨大に見える
2019/11/15(金) 17:32:50.90ID:47DeWFED0
マイコン、ラズパイ、PLC, HDL, Rust

ニコ生では、HDLまで行ってるw
202デフォルトの名無しさん (ワッチョイ 8233-iGNt)
垢版 |
2019/11/15(金) 17:44:35.54ID:DqSPL00u0
https://ideone.com/y2Ogra
で0.3がFalseになるのはわかるのですが、0.2がTrueになるのはなぜですか?
2019/11/15(金) 17:49:31.04ID:pd2oXw5yd
一応環境依存

内部が2進数の浮動小数点なら
(普通の範囲なら)2倍は正確

0.3がfalseになるのがわかるなら
わかりそうなもんだけど
204デフォルトの名無しさん (ワッチョイ 8233-iGNt)
垢版 |
2019/11/15(金) 17:49:38.82ID:DqSPL00u0
精度の問題?
205デフォルトの名無しさん (ワッチョイ 8233-iGNt)
垢版 |
2019/11/15(金) 17:50:48.82ID:DqSPL00u0
>>203
ありがとうございました
206デフォルトの名無しさん (ワイーワ2 FFca-/nAh)
垢版 |
2019/11/15(金) 17:51:24.03ID:NLCWqdB7F
double
https://ideone.com/9COXkq
0.2 True
0.3 False
--------
float
https://ideone.com/wzvO20
0.2 True
0.3 True
2019/11/15(金) 17:51:44.04ID:pd2oXw5yd
これでわかったのかよ

多分わかってない
2019/11/15(金) 17:57:08.67ID:pd2oXw5yd
小数は無限個あるが
doubleやfloatで表現出来る値は有限個
だから正確に表す事が出来る小数はごく一部となる

ほとんどの環境では0.1を正確に表す事が出来ない
だから近似になる

0.1の近似を3個足したものの近似と
0.3の近似

これが同じ値になるかどうかは運しだい
2019/11/15(金) 18:11:10.06ID:pd2oXw5yd
多くの環境では

floatで24bit整数の範囲は正確に表現出来る
doubleで53bit整数の範囲は正確に表現出来る

floatでもdoubleでもlong doubleでも
元の値に対して2^nをかけても2^nで割っても
(それが普通に表現出来る範囲であれば)誤差はない

1/n は、nが2^mの形でない場合は必ず誤差が出る

このくらい覚えて置けばいい
2019/11/15(金) 18:18:26.55ID:NeivSIGq0
https://ideone.com/dkY9yU
211デフォルトの名無しさん (ワッチョイ 1102-coos)
垢版 |
2019/11/15(金) 18:24:08.60ID:uUFlvtLt0
趣味でC言語で遊んでるんだけど入門書読んで、
printf scanf if else switch等使ったプログラム作ったんだけど次に何をしたらいいかわからへんわ。
212デフォルトの名無しさん (ワッチョイ 1102-coos)
垢版 |
2019/11/15(金) 18:24:52.50ID:uUFlvtLt0
あんまりしっかりとポインタは勉強できてないんだけど、
ポインタっていつ使うの?って感じ。
組み込みやらんと基本的には使わない?
2019/11/15(金) 18:35:40.25ID:SL2qDcaa0
組み込みじゃなくてもある程度大きなプログラムになればガンガン使う
むしろ一番使う型になるレベルで使うのがポインタになることもあるくらいには使う
2019/11/15(金) 18:37:30.96ID:SL2qDcaa0
ていうかscanfでポインタ使ってるで
文字列出力したなたprintfでも使ってる
はじめは実感無いかもしれんが
215デフォルトの名無しさん (ワッチョイ 1102-coos)
垢版 |
2019/11/15(金) 18:43:16.92ID:uUFlvtLt0
全く実感ない
printfってどうやってできてんの
216デフォルトの名無しさん (ワッチョイ 1102-coos)
垢版 |
2019/11/15(金) 19:07:35.33ID:uUFlvtLt0
とりあえずポインタの勉強はやり直すわ。
次にArduinoでも触ってみるか
2019/11/15(金) 19:17:18.51ID:hD6OtsPU0
オレオレprintf を実装しようとすると、鼻血が出そうで vsptrintf に○投げしてから加工する方向にいってしまう
2019/11/15(金) 19:17:48.26ID:SL2qDcaa0
>>215
関数に値を渡すのはわかるよね?
printfって関数に出力して欲しい数値や文字を渡してる
この渡すときにCPUの動き的には複製されたものが渡される
数値なら複製しても対して問題ないけど文字列の場合なんかだと複製することで消費されるメモリが増えてしまう
だから文字列全部を複製なんかせずに文字列の先頭の場所だけ渡す
受け取ったprintf側ではその場所を元に文字列にアクセスする
この場所を指し示す仕組みがポインタと呼ばれるもの
10文字でも1000文字でも先頭の場所、つまりアドレスは4byteとかで表せるので情報の受け渡し効率が良い

正確には間違ってる部分もあるかもしれんがだいたいこんなイメージ
2019/11/15(金) 19:23:26.49ID:H7D23ViK0
>>217
そもそもvsprintfのある環境ならprintfあるでしょ。
組み込みとかなら低レベルの1文字出力は作らないといけないけど。
2019/11/15(金) 19:24:40.31ID:pd2oXw5yd
出力先が特殊なprintfじゃね?
2019/11/15(金) 19:30:11.03ID:hD6OtsPU0
>>220
そんな感じですです あと暗に頭にタイムスタンプ付加したりとか

VZエディタのASMソース見たときは、整数onlyでも結構複雑だった
222デフォルトの名無しさん (ワッチョイ 1102-coos)
垢版 |
2019/11/15(金) 19:32:48.14ID:uUFlvtLt0
産休。関数とポインタをもう一度やり直してくる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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