X



C言語なら俺に聞け 145
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 9381-qput)
垢版 |
2018/02/19(月) 22:13:58.98ID:9/te2eSJ0
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言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0215デフォルトの名無しさん (ワッチョイ 0104-je3A)
垢版 |
2018/02/28(水) 22:05:24.10ID:5kf5T6va0
テトリスとぷよはそんなに難しくなかったなぁ。
省メモリで作ると果てしなく大変だけど、富豪的に作れば大したことない。
オセロとかもそうやな。富豪的に作れば難易度は各段に下がる。
0216デフォルトの名無しさん (ワッチョイ eff2-x4Or)
垢版 |
2018/02/28(水) 22:10:23.35ID:LDTKKB+20
>>208
高校生というか中学生レベルかもしれんが、パソコン買ってBASICで最初に作る定番だな。懐かしい。
ヒット・アンド・ブロウ(マスターマインド)って簡単な割に意外と遊べるんだよな。
あとブラックボックスなんかも。
0218デフォルトの名無しさん (アークセー Sxdb-TGtH)
垢版 |
2018/03/01(木) 00:11:06.23ID:Ajqb03Rpx
それぞれありがとうございます。ヒットアンドブロウって初めて聞きました。

確かに学校の勉強も大事ですね。数学検定準2も終わったので(多分合格)
中3・高1のメンバーですが。2級までの間、AO入試にプログラム使えないかと
思って(将来的にも使えるようにしたい)勉強し始めています。
(立命館のあいちゃれとか参加してみたいとか・・・)まあそんな感じ。
0220デフォルトの名無しさん (ワッチョイ 474c-m1UI)
垢版 |
2018/03/01(木) 09:57:54.68ID:KMinam3V0
BASICか。。。
始めて作ったのは
敵がいないパックマンに
バック走行のレーシング

マシン語おぼえて任意方向のスクロールができるようになったら
ボスコニアンとかゼビウス

敵キャラはマシン語より難しい
完全にランダムな動きはすぐできるが
自機を狙ってくるやつの思考ルーチンは奥深い
0222デフォルトの名無しさん (ワッチョイ 6793-fJrP)
垢版 |
2018/03/01(木) 13:42:17.24ID:EAWoI55s0
>>220
「バック走行のレーシング」て発想はなかった。
俺は「風船を背負って縦穴を落下する」という設定だった。
…そういや、今のプログラム初心者は「とりあえずスター・トレック」で
ゲーム作り始めないのね。

真面目な話、BASICでINPUT命令を使うのに比べると
Cでユーザーからのキーボード入力を受け取るのは面倒なんだよね。
そのせいで同じネタでもプログラム課題としての難度がいくらか上がる。
0224デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
垢版 |
2018/03/01(木) 15:52:58.39ID:AvQj/v1Qa
cursesライブラリの方が対応している端末が多くてほぼ標準なんじゃないかな
0227デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/01(木) 18:26:02.35ID:AzZlAoZA0
CよりC++使うべきでは?
0228デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
垢版 |
2018/03/01(木) 18:33:42.83ID:AvQj/v1Qa
今さらC++使う気にはなれないな
0229デフォルトの名無しさん (アウアウエー Sa9f-NBPA)
垢版 |
2018/03/01(木) 18:46:09.21ID:5P8YUW6ka
マスターマインドは
正解にたどり着くまでの
最短最速最適な質問の仕方
を次の一手で出すアルゴリズム考えたな
4列だったら最大7手未満とかそんなやつ
0231デフォルトの名無しさん (ワッチョイ 6704-PLqx)
垢版 |
2018/03/01(木) 21:28:15.90ID:pSYCUqTH0
マスターマインドのAIはダサいのは作ったことある。
正解にはたどりつけるけど、パーミテーションでグルグル回す奴だから回答がキモイ。
そして遅い・・・。
0232デフォルトの名無しさん (ワッチョイ df5d-W8CT)
垢版 |
2018/03/02(金) 05:26:58.29ID:btKfsNEv0
>>230
まあ、非標準だから仕方ない。そういうのは条件コンパイルとか、たくさんあるなら環境ごとに別のソースファイルにしてビルド時に選択とか。
そういうことをちゃんとやってるオープンソースソフトウェアが参考になるかも。
0236デフォルトの名無しさん (ワッチョイ 679f-3iyT)
垢版 |
2018/03/02(金) 22:53:07.31ID:PBdn8yjo0
>>192
立てた。

C言語相談室(上級者専用)
https://mevius.5ch.net/test/read.cgi/tech/1519998483

老害が来てもウザイので「10,000行程度のソースを扱えない人は」と現在状態に変更した。
上級者には一朝一夕では成れない。
初心者は文法事項にばかりに目が行きがちだが、
今日覚えれば明日から使える文法事項で練度を測るのはナンセンスだ。
これを含めて、意見については新スレで受け付ける。

>>195
削除よろ
0237デフォルトの名無しさん (ワッチョイ 6704-PLqx)
垢版 |
2018/03/02(金) 23:05:02.75ID:Wy5zsGfp0
>>234
UTF-8型というものはない。
wchar_tにウニコードかOSの文字コードが入ってることを期待しよう。
まぁ、stdinをgetchで読んで解析とかかな。またはfgetsで全部読むとか。
世知辛いのじゃー。
0238デフォルトの名無しさん
垢版 |
2018/03/03(土) 19:55:40.33
>>237
一定のchunk sizeでreadして1byteずつ解析やな
0240デフォルトの名無しさん (ワッチョイ e79f-m1UI)
垢版 |
2018/03/03(土) 20:54:25.83ID:usZqppoC0
>>236
削除依頼出して誘導の書き込みしておいた。
0243デフォルトの名無しさん (アークセー Sxdb-TGtH)
垢版 |
2018/03/04(日) 23:51:40.13ID:8NE8Y0sUx
10,000行程度のプログラムで何ができるのか想像が出来ん。
0244デフォルトの名無しさん
垢版 |
2018/03/05(月) 00:51:13.54
10000行程度を書いた経験だろ

全体だと30万行とかだろ
0247デフォルトの名無しさん (ワッチョイ e79f-m1UI)
垢版 |
2018/03/05(月) 01:35:06.01ID:LCMEVuoA0
一万行ねえ。しかしあまりに行数が多くなるとするとC言語を使うこと自体が適切ではなかった可能性も出てくるよな。
あるいは何か設計がまずいか、書き方がまずいか。

何れにしてもプログラムが多くなればなるほど人間がバグを作り込んでしまう率が高くなり更に全体の把握が困難になってくる。
0254デフォルトの名無しさん (アウアウカー Sabb-pjv1)
垢版 |
2018/03/05(月) 10:56:09.00ID:vC0ni0wma
>>249
一万行の上級者様は上級者様専用スレに行ったみたいだから、実演はしてくれないだろう
0256デフォルトの名無しさん (アウウィフ FF2b-wl/W)
垢版 |
2018/03/05(月) 16:10:41.91ID:QTTd7ohZF
どうせキャストして使うんだし
0260デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
垢版 |
2018/03/05(月) 18:10:45.91ID:qBuz+lExa
>>255
gccもそうなってて以前それ前提に書いてあるソースを見てビックリしたことがある。
特別扱いしているらしい。
0261デフォルトの名無しさん (スププ Sdff-mvGf)
垢版 |
2018/03/05(月) 19:32:31.91ID:cQ8T6f3ad
プリプロセッサで
#define foo(n) foo_##__typeof__(n)(n)

double a;
foo(a);

って展開したら
foo_double(a)
になって欲しかったのに
foo___typeof__(n)(n)

になりました
良い方法はないでしょうか?
0264デフォルトの名無しさん (スププ Sdff-mvGf)
垢版 |
2018/03/05(月) 20:10:41.84ID:cQ8T6f3ad
がーん

_Genericも二箇所に分けて書こうとするとredefineって言われて先に定義したほうが消えるし、ジェネリックは結構厳しいんですね……
ありがとうございます
0268デフォルトの名無しさん (ワッチョイ e79f-8pbW)
垢版 |
2018/03/06(火) 03:28:05.03ID:ln7SJGum0
本当は void * に対しては足すことも引くこともできない。
0269デフォルトの名無しさん (ワッチョイ 6793-fJrP)
垢版 |
2018/03/06(火) 06:45:37.01ID:r6wtBatS0
今ならuintptr_tにキャストして足し算引き算した後でvoid*に戻すのかな。
uintptr_t以前はchar*へのキャストだったかも知れんけど。

しかし実際のところvoid*に対してポインタを進めたり戻したりしたいって、
どういう場面で必要になるんじゃろうか?
0274デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
垢版 |
2018/03/06(火) 12:50:23.18ID:Hdg+O/12a
gccはね。
0275デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
垢版 |
2018/03/06(火) 12:54:06.75ID:Hdg+O/12a
そういやポインタ演算と言うと8086用のCコンパイラはfarとか拡張キーワード作ったりして面倒だったな。TurboCだったか。
ああいうなんとも言えないCPUコンパイラだと特殊な決まりがあったりするから要注意だ。

まあ、二度とあんなの市場に出ないような気はするけどな。
0276デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
垢版 |
2018/03/06(火) 12:54:48.33ID:Hdg+O/12a
用のが抜けた。CPU用の、な。
0279デフォルトの名無しさん (アウウィフ FF2b-wl/W)
垢版 |
2018/03/06(火) 14:52:33.73ID:03FKlPoEF
tinyモデルでも使えるfar最強
0282デフォルトの名無しさん (アウウィフ FF2b-wl/W)
垢版 |
2018/03/06(火) 17:18:40.34ID:03FKlPoEF
>>281
それは根本的な間違い
誤解産むからやめれ
0287デフォルトの名無しさん (ササクッテロレ Spdb-ON3X)
垢版 |
2018/03/06(火) 22:17:46.38ID:3SdWrwMmp
例外を範囲外の値で判定する様なインターフェースが悪い。
はっきり戻り値は動作結果、値は出力用の引数に入れる。
みたいな設計にすべき。
ちな、C#みたいに戻り値を構造体にするって手もあるぞ。
0288デフォルトの名無しさん (ワッチョイ df80-zeCZ)
垢版 |
2018/03/06(火) 23:01:01.51ID:GCrMS1Np0
素人が、char型の-1 を、エラー値に使っていると、
OS・コンパイラが変わって、その環境では、char型が0〜255 になってる

char型は、符号付き・符号なしの、どちらか分からない
0292デフォルトの名無しさん (ワッチョイ 6704-jpR6)
垢版 |
2018/03/07(水) 02:45:29.86ID:kGjiUMXW0
はいー。
1バイト整数を使いたかったら、stdintを使いましょう。
int8_tは内部がcharかもしれないけど便宜上charではありません。
ハイ、復唱。int8_tはcharではありません。
ちなみにC++でバイト表現専用のstd::byteが入りました。すごく使いにくいけど。
0296デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
垢版 |
2018/03/07(水) 12:53:17.89ID:vftXHA5La
>>294
Windows用のコンパイラの話?
知らないけど、多分 size の s じゃない?
0297デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
垢版 |
2018/03/07(水) 12:53:35.53ID:vftXHA5La
>>295
あ、それか。
0298デフォルトの名無しさん (アウアウエー Sa9f-wl/W)
垢版 |
2018/03/07(水) 12:59:49.73ID:L+d1J7Rsa
stopper
0301デフォルトの名無しさん (ワッチョイ df5d-W8CT)
垢版 |
2018/03/07(水) 16:58:54.65ID:+xlstTJJ0
N5200 で LSI C-86 試食版を使ってた……ような気がする。昔のことだから記憶が曖昧だ。
0306デフォルトの名無しさん (アウアウカー Sabb-g3Yl)
垢版 |
2018/03/07(水) 17:25:48.32ID:Rf3JBuAda
DOSのシステムコール(なんて言うんだっけ?DOSコール?忘れた)だけを呼び出しているプログラムならハードウェアが違っても動く。

しかしMS-DOSはCUIしかサボートしてないのでグラフィックスは使えない。

当時のプログラムはみんな勝手にOS無視してグラフィックスのVRAMに直接アクセスして絵を出していた。
すると当然他の機種に持っていくと意図した通りに動かない。
0307デフォルトの名無しさん (アウアウエー Sa9f-wl/W)
垢版 |
2018/03/07(水) 17:26:24.22ID:L+d1J7Rsa
int21
0311デフォルトの名無しさん (アウアウエー Sa9f-wl/W)
垢版 |
2018/03/07(水) 17:55:21.18ID:L+d1J7Rsa
CP/M か
0066 とかもあったっけ
■ このスレッドは過去ログ倉庫に格納されています

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