C言語を学びたいんやが、まず何からやればいい?

2024/08/12(月) 10:09:33.57ID:2lKM0Yyl
>論理演算は短絡評価される規定がある
これってよく聞くし実験しても実際そうだけど
仕様書のどこに書いてあんのかいまだにわからん
ほんのちょっぴりだが気になる
28デフォルトの名無しさん
垢版 |
2024/08/12(月) 10:26:19.22ID:+jMHtzbv
>>27
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf
これの71ページ目 (PDFの84ページ目) の 6.5.13 Logical AND Operator の 4 の段落
2024/08/12(月) 14:34:11.50ID:DCeOjIRt
すげー
2024/08/13(火) 08:15:36.04ID:6ajF2Nvb
>a+a++;
普通に、MISRA-C 違反

自己インクリメントは単独でしか使えない。
他の式と組み合わせてはならない

こういう事をやるプログラマがいるから、
Ruby には、この演算子が無い

Rubyなら、
a=2
p a += 1 #=> 3
31デフォルトの名無しさん
垢版 |
2024/08/13(火) 09:25:41.71ID:qGcIneKd
Pythonスレで嫌われたRubyおじさんがここにも来たか
CとRubyじゃ用途が違うので関係ないと思ったけど普通に来るんだな
一応、向こうのスレのテンプレートを示しておく

>・当スレにRubyのソースコード類を書くことを禁ず
>・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
>・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
3230
垢版 |
2024/08/14(水) 00:32:35.54ID:DeY7Wxx6
組み込みのmruby で、宇宙開発もある。
だから、C・Ruby を使える香具師も多い。
Elixir も組み込みある

本も出ている

Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11

宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応

九州大学などの人工衛星イザナギ・イザナミで使っている

この本に、Virtualbox, Vagrant を使う。
WSL はサポートしないと書いてあるけど、WSL2 でも使えるのでは?
2024/08/19(月) 16:41:44.46ID:2CjpTy49
お前ら2022年の、しかもC#を間違えてC言語と書いてるスレで何やってんだ
34デフォルトの名無しさん
垢版 |
2024/08/20(火) 13:19:47.53ID:7gW0oenX
今の時代ならRustをやってからC/C++というのもアリかも知れん
35デフォルトの名無しさん
垢版 |
2024/09/19(木) 00:56:33.21ID:JdSAMEr4
ポインタの基礎を習得したフェルンだったが、関数ポインタという新たな壁にぶつかっていた。
「フリーレン様、関数ポインタって…一体何に使うんですか?
関数のアドレスを格納するって書いてありますが…。」
フェルンはノートに書かれたコードを眺めながら、首を傾げている。

フリーレンは微笑んで、地面にいくつかの魔法陣を描いた。
「フェルン、見てごらん。これらの魔法陣はそれぞれ異なる魔法を発動するものだ。
火の魔法、水の魔法、回復魔法…。これらの魔法陣を起動するには、
それぞれに対応した呪文を唱える必要があるだろう?」

「はい、そうです。火の魔法なら『Feuer』、水の魔法なら『Wasser』のように…。」

「では、もしも、一つの呪文で、状況に応じて異なる魔法を発動させたい場合はどうする?」

フェルンは少し考えてから答えた。
「えーっと…魔法陣を選ぶための別の呪文を唱えてから、
目的の魔法の呪文を唱える…とかでしょうか?」

「それも一つの方法だが、もっとスマートな方法がある。それが関数ポインタだ。」
フリーレンは地面に描かれた魔法陣の一つを指差した。
「関数ポインタは、魔法陣そのものではなく、
魔法陣を発動させるための呪文を格納するものだと言える。
つまり、状況に応じて異なる呪文を関数ポインタにセットすることで、
一つの呪文で様々な魔法を発動させることができるんだ。」

フェルンは目を輝かせた。
「なるほど! つまり、関数ポインタを使うことで、
実行する関数を動的に切り替えることができるんですね!」

「その通りだ。例えば、ゲームで敵の種類によって異なる攻撃パターンを実行したい場合や、
ソートアルゴリズムを状況に応じて切り替えたい場合などに、関数ポインタは非常に役立つ。」
36デフォルトの名無しさん
垢版 |
2024/09/19(木) 20:44:58.11ID:/CBFTgYs
ていうかCが欠陥言語だから
void*でもいいんだけど
2024/09/21(土) 02:55:15.27ID:2C51SPxe
フリーレン様、これはどういうことですか?
このソースはポインタがすべて void* です
2024/09/21(土) 07:06:36.57ID:T1UE+DVT
「良いところに気がついたね、フェルン。
これはね、汎用的な関数ポインタの使い方を示しているんだ。」
フリーレンは地面に新たな魔法陣を描き、
その上に様々な種類のアイテム -- 剣、杖、薬草 -- を置いた。
「見ての通り、この魔法陣はどんなアイテムでも受け入れることができる。でも、
アイテムの種類によって、魔法陣の効果は変わるだろう?剣なら強化、
杖なら魔力充填、薬草なら効能増幅といった具合にね。」

「確かに…。でも、それはどうやって実現するんですか?魔法陣は一つなのに…」

「それが void* の役割なんだよ。void* はどんな型のデータも指し示せる、
いわば万能ポインタなんだ。この魔法陣は void* 型の引数を受け取ることで、
どんなアイテムでも受け入れることができる。
そして、受け取ったアイテムの種類を判別し、それに応じた処理を行うんだ。」
フリーレンは魔法陣に軽く触れ、光がアイテムを包み込んだ。
剣は輝きを増し、杖からは魔力が溢れ、薬草は鮮やかな緑色に輝いた。
「ソースコードに戻ると、void* 型の関数ポインタは、どんな型の引数と
戻り値を持つ関数でも指し示せる。ただし、使用する際には、キャストによって
具体的な型を指定する必要がある。魔法陣で言えば、アイテムの種類を判別して、
適切な処理を行う呪文を唱えるようなものだね。」

「なるほど…つまり、void* 型の関数ポインタは、どんな関数でも指し示せる代わりに、
使う時に注意が必要ということですね。」

「その通り。柔軟性が高い分、責任も大きくなる。
void* を使う際は、型安全性を確保するために細心の注意を払う必要があるんだ。」
フリーレンは地面の魔法陣を消し、フェルンの方を向いた。
「関数ポインタは強力なツールだが、使いこなすには練習と理解が必要だ。
様々な例を試してみて、その仕組みをしっかりと理解するんだよ。」
2024/09/21(土) 12:42:30.03ID:pEk1QATs
何そのフェルンとかフリーレン?
2024/09/24(火) 10:34:46.72ID:/2yiAcKT
どんな型で来るか分からないから、とりあえずvoid*で受けとけ
って感じだろ?
2024/09/24(火) 14:45:01.61ID:t1wxu4v8
v o i d * 受け・・・ 見事な・・・
42デフォルトの名無しさん
垢版 |
2024/09/26(木) 10:56:48.17ID:R5lWYvWF
C: void * で良いよね!
C++: void * はヤバイから警告厳しくしようぜ
Java/Smalltalk: おい C++ お前共通の祖先無いやん
C++: あっしまっ・・・
2024/10/27(日) 09:26:18.78ID:MEhX5xjc
関数ポインタはvoid*でなくちゃんと方指定したほうがいい
形チェックしてくれるから
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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