[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/11 11:58 / Filesize : 243 KB / Number-of Response : 1037
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 145



1 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 22:13:58.98 ID:9/te2eSJ0.net]
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

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

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

C FAQ 日本語訳
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

369 名前:デフォルトの名無しさん [2018/03/10(土) 17:18:49.50 ID:a2p+alti0.net]
gdb は普通に使うなあ。

370 名前:デフォルトの名無しさん [2018/03/10(土) 17:35:13.89 ID:5pXC+BOTF.net]
printfなめたらいかん

371 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 17:41:43.93 ID:ps/htySn0.net]
割り込みん中でprintf使って暴走してデバッグが出来なかった思い出。

372 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 18:10:52.64 ID:a2p+alti0.net]
俺はシグナルハンドラの中でログ出力しようとして FILE * 経由で fprintf() 等で出力したら
そのライブラリの中でデッドロックしてハマった。 kill -ABRT で core dump させて gdb
で core ファイルと共に読ませてようやっと停止箇所がわかった。

373 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 20:11:43.97 ID:fNi+2/6HM.net]
gdbマスターしてからprintデバッグバカにしてたけど
printデバッグ自動化してからprintデバッグ信者になった
無論レアケースデバッグはgdb使うけどね

374 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 01:20:23.17 ID:ry5KQfC80.net]
printf() をデバッグで使う時はバッファリングを考慮していないとハマる事がある。
それと stdout と stderr と両方に出る可能性がある場合にその順序が食い違う可能性もある。
シグナルハンドラ内やマルチスレッドプログラムで使ってうまく行かない事もある。

その辺を全て考慮するならいいだろうが、しかし、それなら初めからログファイルに出力される
ように作った方が良いような気もする。

375 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 02:00:44.19 ID:22CnVBlaM.net]
printデバッグなら専用モジュール作るべきだな
俺は時刻、関数名、コンテキストIDを付けて
標準出力かファイルにはかせてる

376 名前:デフォルトの名無しさん [2018/03/11(日) 09:19:44.59 ID:zWe+i43K0.net]
そこまでするならsyslog

377 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 10:20:33.73 ID:szqHStkk0.net]
>>361
setvbuf忘れなければ済む話だよパパ



378 名前:デフォルトの名無しさん [2018/03/11(日) 14:10:54.85 ID:ry5KQfC80.net]
>>363
そだねー

>>364
本当にそれだけで大丈夫かね?

この頃のライブラリは多分マルチスレッドでもちゃんと動くように内部でロック掛けている部分があると
思うんだけどね、例えばシグナルハンドラの中でそのロックを掛けている最中にまたシグナルが来て
同じシグナルハンドラに入ると同じロックを掛けようとしてデッドロックするなんてことが起こり得ると
思うんだが。(まあその程度のことでデッドロックしてしまうこと自体がバグかも知れんが。それ以前に
シグナルハンドラの中でprintf()は使うなって話でもあるか…)。

379 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 15:06:05.16 ID:szqHStkk0.net]
>>365
ロケールがCならprintfだってスレッドセーフだしぎりぎりシグナルセーフだよパパ

380 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 15:33:10.91 ID:UYIqocxw0.net]
世の中には完全なCライブラリを実装していないタイニーなマシン用のサブセットだってあるんだよ坊や。

381 名前:デフォルトの名無しさん [2018/03/11(日) 16:08:45.67 ID:sEfAJdP70.net]
それはCじゃないから、このスレで話し合っても無駄では。

382 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 16:12:01.01 ID:UYIqocxw0.net]
Cは言語仕様であって、ライブラリ仕様は別枠だろ?

383 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 16:46:35.93 ID:iUqzSqql0.net]
30年以上前だったかな、あるメーカーのプリンタファーム開発用Cコンパイラが配列要素上限が255だった
当時アスキーネットでこれを聞いたvoid氏が呆れていたようだ。

384 名前:デフォルトの名無しさん [2018/03/11(日) 17:10:10.38 ID:sEfAJdP70.net]
インストラクションに8ビットまでの即値を組み込めるなら、その制限によって(そのような最適化が必要なプロセッサにとって)強烈な最適化をかけられるから、アリやナシやと問われればアリのような感がある。

385 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:20:27.39 ID:Dtt3qpb50.net]
Cライクって言っときゃいいのにCと名乗ってしまうから
イチャモンつけたいヤツの標的になる

386 名前:デフォルトの名無しさん [2018/03/11(日) 17:33:57.41 ID:sEfAJdP70.net]
本場ドイツ直輸入ポークソーセージを買ったら魚肉ソーセージだったような感じですね。
つまり詐欺です。

387 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:36:14.99 ID:szqHStkk0.net]
>>369
それ言ったらバッファリングの話題もCの話にならないだろぉオヤジィ



388 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:37:59.08 ID:iUqzSqql0.net]
何が正当な教義かについて議論したければ、上級者スレでやってね

389 名前:デフォルトの名無しさん [2018/03/11(日) 18:04:00.35 ID:sEfAJdP70.net]
こういう掲示板で宗教対決を規制したら過疎化するんじゃないだろか。

390 名前:デフォルトの名無しさん [2018/03/11(日) 18:26:39.19 .net]
>>370
まるでUvaみたいな制限だな(藁

391 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 18:45:46.67 ID:QedwXA9H0.net]
>>366
マルチスレッド版のライブラリーがあるかと
行出力中にスレッドが切り替わらない

392 名前:デフォルトの名無しさん mailto:sage釣堀 [2018/03/11(日) 18:48:04.93 ID:QedwXA9H0.net]
>>374
なお初代K&Rにはライブラリーの仕様は含まれない。
WhiteSmithとかはprintfが実装されてない

393 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 20:24:48.92 ID:1mhcZmSWa.net]
>>372
セントロニクス

394 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 21:13:40.31 ID:Dtt3qpb50.net]
5Vシングルエンドがそのままコネクタに出てるアレか
アレを基板に直付けするアフォが多くて頭クラクラした

395 名前:デフォルトの名無しさん [2018/03/11(日) 23:26:14.78 ID:3FTmPjnp0.net]
for(i=0;i<10;i++)
scanf("%d",&num[i])

で入力した変数がiに入ってしまうことがあるのですがなぜですか?

396 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 23:59:04.31 ID:Sn9rQkOCM.net]
numのサイズが10ないとか。

397 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 00:02:45.79 ID:9wDOvV2B0.net]
ソース全部晒せ



398 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 07:51:36.03 ID:6B2Hj+UH0.net]
do whileはいらない子?

399 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 08:04:24.78 ID:uoSNo/WDM.net]
アルゴリズムによってはdo whileの方が素直なときがある。まれだが。マクロを本当の関数っぽく使うのにdo while (0)使うハックがある。まれだが。
コンパイラによってはdo whileの方が速いコード出す。まれだが。

400 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 08:36:16.07 ID:SpziwmuNM.net]
>>370
プリンタっつーてもピンキリだからなぁ
レシートプリンタとかならその程度で充分かもしれん

401 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 09:25:52.84 ID:kO6Vn+sG0.net]
>>385
んなこたーない
whileのほうが使用頻度は高いけど
本質的に後判定なロジックはそんなに珍しくもない

402 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 09:30:32.07 ID:Cd8AY8RG0.net]
do〜whileは、必ず一回は処理してくれるから便利。

403 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 09:31:53.62 ID:kO6Vn+sG0.net]
繰り返し対象処理が実行される条件がブレるから気をつけないといけないけどね

404 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 10:16:52.94 ID:Igle62xq0.net]
do{continue;}while(false); で無限ループになるのウケる。

405 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 10:19:34.77 ID:kO6Vn+sG0.net]
391 error: undeclared symbol 'false'

406 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 10:42:19.80 ID:wLVR4ID4a.net]
>>389
女に見習わせたいな

407 名前:デフォルトの名無しさん [2018/03/12(月) 12:03:54.32 ID:A4+OWJSs0.net]
こんな書き方たまにする

do{
・・・
条件
break;
・・・
条件
break;
・・・
条件
continue;
・・・
条件
break;
・・・
条件
continue;
・・・
}while(0);



408 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 12:10:22.44 ID:rLGzoMUT0.net]
>>387
一応汎用のレーザープリンターなんだ
30年って一寸行き過ぎだな
95が出てきた頃だから、20年前か

409 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 12:11:48.84 ID:Igle62xq0.net]
>>394
GOTOを怖がるな。
俺は反GOTO教は抜けた。
まぁ乱用しようとも思わんけど。

>>392
文脈で察してくれ。
boolはいったことだし。

410 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 15:52:19.83 ID:bCYSOHOV0.net]
B 判定 A B 判定 A B … みたいに
do { } while () のブロックの途中に飛び込んで開始するようなのが悩ましい

goto ENTER;
do {
 A();
ENTER:
 B();
} while(条件);

411 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 17:04:49.51 ID:Ro63JAiYH.net]
出口が複数は可だけどエントリーポイントが変なとこにあるのは読みにくいからやめたほうがいい。
この例の場合はB Aの無限ループにして、Bのあとの条件で脱出するのが定石。

412 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 17:15:21.51 ID:bCYSOHOV0.net]
for(;;) {
 B();
 if (条件) break;
 A();
};
こんな感じですか。
やっぱり頭から入っていくほうが読みやすいし…

413 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 17:24:28.52 ID:rLGzoMUT0.net]
処理内容がそうならそういうことなんだろうが、
見ていて気持ちが悪くなるロジックだな、すまん

414 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 17:31:42.39 ID:kO6Vn+sG0.net]
エントリーポイントが変なとこって、mainだって1行目にはまずならないしな
実装されることなく廃止になったキーワードにentryつーのがあって
そいつがおそらくは1行目に
entry main;
とか持ってこれるようにするつもりだったのかもな

415 名前:デフォルトの名無しさん [2018/03/12(月) 17:41:10.71 ID:mlDQMbRTa.net]
>>397
昔の BASIC を思い起こさせる goto の使い方だなw

416 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 17:58:00.69 ID:DBOT0xK9M.net]
gotoは禁止はしないが、異常系の終了処理にジャンプするパターンだけ許容だな。

417 名前:デフォルトの名無しさん [2018/03/12(月) 18:04:50.67 ID:FajbO2mAF.net]
exceptionさえあれば



418 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 18:06:32.58 ID:bCYSOHOV0.net]
コンストラクター/デストラクターのような機構があれば
異常時の後始末は割と楽に書けるっすね

419 名前:デフォルトの名無しさん [2018/03/12(月) 18:09:46.06 ID:FajbO2mAF.net]
atexit()はあるぞ

420 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 18:2 ]
[ここ壊れてます]

421 名前:5:47.87 ID:rLGzoMUT0.net mailto: 異常の場合は,例外処理をしてから続行したい []
[ここ壊れてます]

422 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/12(月) 19:11:12.71 ID:HQXq1VOq0.net]
つ setjmp

423 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 19:32:23.64 ID:6OIrRNruM.net]
>>408
volatileをつけ忘れて最適化で暴走するなんてよくあること。

424 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 20:42:20.27 ID:SpziwmuNM.net]
>>395
1995年頃でLBPだと16bitから32bit CPUに移行する頃だから配列サイズが最大255なんて言うのはさすがに見たことないわ
ちなみにうちはSH-2+独自モニタからR3000+VxWorksへの移行期だった
コンパイラもチップベンダーかOSベンダーのものを使ってた

425 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 21:14:21.91 ID:hz29p2j/p.net]
gotoを後始末以外の使い方して変な所に飛ばしたりするから禁止って言われるんだよな。

426 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 22:09:38.43 ID:kO6Vn+sG0.net]
昔のBASICにはON ERROR GOTOとかON ERROR GOSUBつーのがあって
異常系から復帰できたんだよな、それがCやC++にはない

427 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 22:12:32.16 ID:rLGzoMUT0.net]
setjmp longjmp



428 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 22:16:55.21 ID:kO6Vn+sG0.net]
RESUME NEXTに相当する処理はsetjmp.hにはない

429 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 23:49:45.06 ID:+NwoaeJY0.net]
gfortranで言うところのfcheck=allを設定した時のように配列の範囲外アクセスを検知したいのですが、いい方法はありますか?

430 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/13(火) 00:26:13.95 ID:zisSqBer0.net]
boundschecker 使えばよろし

431 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 00:43:16.47 ID:LMrPxj1+0.net]
Linuxなので代用を探していたらvalgrindに辿り着きました
ありがとうございます

432 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 03:11:31.37 ID:a0aOTtHi0.net]
大域ジャンプはダメだ。

433 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 07:50:52.88 ID:H/7hRIr60.net]
初期化

タイトル
...
GOTO 本編

GAME OVER
...
GOTO タイトル

ゲーム本編
...
GOTO GAME OVER

434 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 08:44:52.34 ID:a0aOTtHi0.net]
>>419
よくあるダメなゴトーさん。

435 名前:デフォルトの名無しさん [2018/03/13(火) 10:00:11.49 ID:mZm9h8PZa.net]
>>412
まあ、ないけど、エラーになったら自分でif文使って分岐すれば良いだけでは?
C言語は単に言語レベルでのそういう便利機能が少ないってだけで実現する方法は内部的な動作まで考えたら結局は同じにしかならんと思うよ、

436 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 10:29:21.12 ID:FbdkMN9Up.net]
C言語はマクロアセンブラから派生した感じなんで、言語体系はお世話にも良いとは言えないんだよな。
当時はマシン語で演算結果フラグで条件ジャンプや条件コールしてた煩わしさから開放されただけでも有り難かったんだ。
そんなチープな言語にオブジェクト指向だの例外処理だのとか求めて迷走したのがC++
ええい、いっそ作り直してしまえって出したのがJavaやC#
だからC言語使う時点で諦めれ。

437 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 11:04:12.06 ID:92t/zLSk0.net]
>>421
そのif文でゴチャゴチャしだしたら「例外処理」を名乗れない



438 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 11:54:23.49 ID:a0aOTtHi0.net]
基本的にウオーターフォールを守るのが大事やな。
そのうえでどこに飛びたいかって感じ。

439 名前:デフォルトの名無しさん [2018/03/13(火) 12:12:14.52 .net]
フォールウオーバー機構を言語レベルで用意すべき

440 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 12:16:24.04 ID:a0aOTtHi0.net]
https://www.google.co.jp/search?q=%E3%82%A6%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%80%80%E6%84%8F%E5%91%B3&
ウオーバーってなんぞ?

441 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 12:26:22.54 ID:CTGLDN6cM.net]
漢字で書くと闘婆

442 名前:デフォルトの名無しさん [2018/03/13(火) 13:00:28.5 ]
[ここ壊れてます]

443 名前:6 ID:5qOlO1LIa.net mailto: >>423
名乗らんでいいのでは?

Cが不便なら他の言語使えばいいじゃない。
[]
[ここ壊れてます]

444 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 13:12:03.18 ID:92t/zLSk0.net]
>>428
ああ、議論できないのね
いいよ話さなくて

445 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/13(火) 13:20:12.96 ID:lXm9DcKjM.net]
SIGUSR1/2じゃ駄目なのか?

446 名前:デフォルトの名無しさん [2018/03/13(火) 15:58:05.78 ID:LC30GjQRa.net]
>>429
議論?何の?新言語の?

447 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 16:39:07.67 ID:92t/zLSk0.net]
>>431
いいよ、無理に話さなくて



448 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 19:35:09.64 ID:WMMjj2eHM.net]
聞く耳持たんらC

449 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 20:04:26.12 ID:/ChP+Vc3M.net]
突っ込まれて遁走だろ w

450 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 02:09:35.30 ID:IiyiuIPr0.net]
ここで幾ら議論してもC言語は変わらない。

Cから派生した言語を新たに作るというのであれば議論することには意味があるだろうが、そうでないならそれはただの愚痴だ。

451 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 06:44:38.33 ID:4nqAllCK0.net]
おまえさあCの例外処理が言語のビルトインとか思っているわけ?
Cは変わらないとか言っちゃってるけど、
その現状のCがわかってないのに変わったかどうか気付けるのか?

452 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 07:02:59.95 ID:M7iHvccR0.net]
一応errnoだったかっていう、失敗理由を示す変数がある事はある。忘れられてるけど。
C言語で唯一トラブルシューティングに使える変数。

453 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:03:51.30 ID:ylQhqnt4M.net]
>>436
> その現状のCがわかってないのに
お前だけだろ w

>>437
ライブラリレベルの話を入れるかどうかは悩ましいな
普通の言語なら入れなくてもいいと思うがC言語にはsetjmp/longjmpなんて言うとんでもないものもあるからなぁ

454 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:15:23.77 ID:4nqAllCK0.net]
errnoだってwww あれが例外処理なのか

setjmpがどうとんでもないのか具体的には言えないんだろうな
だから聞かない

455 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:25:02.15 ID:M7iHvccR0.net]
>>439
大域ジャンプするとエラー処理したところが戻ったりして変数グチャグチャになることがあるからな。
まぁ、C++の例外も大域ジャンプだし。個人的には使わないな。
古き良き-1やら_boolであきらめる方が精神的には良い。
んで、趣味位のケースなら正常系だけ書いておけば大体問題ない。
エラー系は大体ロジックエラーだからデバッグで落とす。

456 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:29:46.90 ID:ylQhqnt4M.net]
>>439
> setjmpがどうとんでもないのか具体的には言えないんだろうな
他の言語でライブラリレベルで実装してる例はないから
まともな頭があれば理解できるはず

457 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:31:33.24 ID:6wuH32OAd.net]
高級アセンブラの名前は伊達ではないよね。



458 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:32:17.72 ID:M7iHvccR0.net]
あれジャンプじゃなくて、スタックロールバックだからな。どっちかっていうとリセットの類。
他の言語でこれは実装できない。というかやりたくはないだろう。

459 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:35:45.72 ID:M7iHvccR0.net]
大域ジャンプ+動的メモリアローケート。あぁおそろしい。
なので、大域ジャンプはやめましょう。

460 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:37:30.11 ID:ylQhqnt4M.net]
>>440
> 大域ジャンプするとエラー処理したところが戻ったりして変数グチャグチャになることがあるからな。
それはお前の能力が足りないだけの話だろ w

> まぁ、C++の例外も大域ジャンプだし。
C++はデストラクタとかの処理も要るからライブラリレベルでは実現できない
そう言う処理を全てプログラマに押し付けられるC言語だからできるってことでもある

461 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:41:34.04 ID:M7iHvccR0.net]
>>445
あーすげー。この人、他人がいじった変数全部把握してるんだな。すげー。
メモリ確保したのなかったことになっても正常系に戻せるんだな。
超人か!!

462 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 08:45:22.60 ID:M7iHvccR0.net]
C++のクラス機構をライブラリで実装するときは、構文糖入れたりとか、イベントモデル入れたりとか。
エネルギーばかりかかって収穫がない。

463 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 09:25:24 ]
[ここ壊れてます]

464 名前:.96 ID:ZphqLecba.net mailto: >>436
Cには言語レベルでの例外処理はないのでは?何のことを指してそう言っているのか?
[]
[ここ壊れてます]

465 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 09:28:14.80 ID:ooB4nY3v0.net]
Cにだって例外処理はある。
でもそれって、CPUの例外割り込みの事だけどね。
あー結局言語仕様じゃ無いじゃんw

466 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 09:29:50.23 ID:ZphqLecba.net]
>>449
ほら。ないよな?

467 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 09:32:49.61 ID:ZphqLecba.net]
割り込みっていうならシグナルがあるがしかしOSの問題だよな?
てか標準じゃないか。それにシグナルのために特別な言語仕様が作られてもいない。



468 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 09:35:13.20 ID:ooB4nY3v0.net]
所詮Cは高級アセンブラだからなぁ

469 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 10:19:21.23 ID:4nqAllCK0.net]
>>441
現状のCの話じゃなかったのか?
なんで他の言語が出てくるんだ

俺はてっきりsetjmpの仕様がとんでもないと言っているのかと思ったが
実装方法がとんでもないと言っているのか?
あれか動作保証のないマイクロ診断命令でも使っていると言いたいの?

470 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 10:20:28.21 ID:4nqAllCK0.net]
>>448
言語を定義する規格票が定義しているライブラリのことだよ
まさか知らんのか?

471 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 11:44:11.11 ID:jowRUKsS0.net]
何やら雰囲気が悪くなってるように感じるけど、カレンダー絡みかな。

472 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 12:08:39.92 ID:L/3+Hz1H0.net]
やたら突っかかってくるやつを構ってやっているだけだが

473 名前:デフォルトの名無しさん [2018/03/14(水) 12:22:56.52 ID:e7inwI4na.net]
>>454
知らんなあ。Cの例外処理ってなんなの?

474 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 12:24:13.25 ID:y6ADsCAy0.net]
ここは遊び場ではありません

475 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 12:52:15.53 ID:L/3+Hz1H0.net]
>>457
そうか、知らんのか
じゃあ話にならんな

476 名前:デフォルトの名無しさん [2018/03/14(水) 12:53:42.74 ID:e7inwI4na.net]
>>459
何のことなのかぜひ書いてくれ。

477 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 12:53:55.90 ID:L/3+Hz1H0.net]
人の話の腰を折ることに専念せざるを得ない防戦一方なつまらんやつ



478 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 12:55:02.45 ID:L/3+Hz1H0.net]
>>460
おまえ、そこで3回まわってワンといえ
書いてやるかも知んねーからw

479 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 12:55:16.50 ID:x85VLsABM.net]
>>446
むしろそう言うのを把握せずにどうやってプログラム組んでるんだよ?
動けばラッキーってか? w

480 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 12:58:38.88 ID:x85VLsABM.net]
>>453
> 現状のCの話じゃなかったのか?
> なんで他の言語が出てくるんだ
どんだけ理解力がないんだよ...

> 俺はてっきりsetjmpの仕様がとんでもないと言っているのかと思ったが
> 実装方法がとんでもないと言っているのか?
だから他の言語ではライブラリでは実装しづらい機能って話な

> あれか動作保証のないマイクロ診断命令でも使っていると言いたいの?
背伸びしてマイクロ診断命令とか言い出すとか w

481 名前:デフォルトの名無しさん [2018/03/14(水) 13:00:11.52 ID:e7inwI4na.net]
もしやこんなやつの事を言ってるのか?
d.hatena.ne.jp/htz/touch/20090216/1234774418

482 名前:デフォルトの名無しさん [2018/03/14(水) 13:02:30.29 ID:e7inwI4na.net]
自作関数からのlongjmp()利用するなら似たようなものは作れるが、それは言語レベルで例外処理をサポートしている状態とは違う。

483 名前:デフォルトの名無しさん [2018/03/14(水) 13:02:58.32 ID:e7inwI4na.net]
>>462
言ったぞ。早く書け。

484 名前:デフォルトの名無しさん [2018/03/14(水) 13:04:49.57 ID:e7inwI4na.net]
あ、関係ないけどホーキング博士が死んだという速報が入った。

485 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 13:35:20.49 ID:M7iHvccR0.net]
>>463
大域ジャンプなんぞつかわんので。GOTOくらいは使うけど。
戻った変数と戻ってない変数把握するの無駄すぎる。
んで、どうやってって関数かくときにifで入力要件位書くだろ。無駄な引数減らしたりとか。

486 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/14(水) 13:43:20.07 ID:Ul+PcfeA0.net]
HDLCの状態遷移を大域jump無しで書くのは大変だろうなぁ

487 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 13:48:42.43 ID:M7iHvccR0.net]
さぁ、未経験だからね。



488 名前: mailto:sage [2018/03/14(水) 14:09:18.81 ID:J4jCJ0kF0.net]
>>468
うん、確認した

489 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 14:51:40.09 ID:L/3+Hz1H0.net]
>>467
そんな約束してねえぞゲーハー

490 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 14:54:07.64 ID:L/3+Hz1H0.net]
>>469
gotoじゃなくGOTOね

491 名前:
Cに限らない一般論ということだな
しかしlongjmpやthrowなんか大域ジャンプだろ
おまえさんはそう思わないのか?
[]
[ここ壊れてます]

492 名前:デフォルトの名無しさん [2018/03/14(水) 15:26:30.92 ID:2cAisCwCF.net]
>>452
それな
Cのソース書きながらアセンブラのソースが思い浮かぶ

493 名前:デフォルトの名無しさん [2018/03/14(水) 17:04:58.74 ID:buZ+p9lOa.net]
>>473
早く書けよ。こっちゃあ昼からずっと回ってワンワン言いっぱなしなんだからよ。もう千回ぐらい回ったぞ。

494 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 17:08:34.94 ID:L/3+Hz1H0.net]
>>476
よかったな
ほら、もう1000回

# アホ

495 名前:デフォルトの名無しさん [2018/03/14(水) 17:14:31.52 ID:buZ+p9lOa.net]
他の人でこいつの言うことわかってるやつ居るのか?

496 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 17:24:39.97 ID:L/3+Hz1H0.net]
犬に邪魔されて説明どころではない状態だからなあ

497 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:08:46.89 ID:m9sKyebjH.net]
情報持ってるふりして出し惜しみするのがマウンティングの基本



498 名前:デフォルトの名無しさん [2018/03/14(水) 18:24:47.12 ID:2cAisCwCF.net]
朝日新聞ですねわかります

499 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:29:37.08 ID:L/3+Hz1H0.net]
煽れば出ると本気で思っているならやってみな
この程度の話、マジこの程度にも付いて来れないアホの泣き声は物笑いの種だぜ

500 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:30:37.68 ID:uMO7yRavM.net]
>>469
無駄じゃねーよ、把握しろ
把握しやすく設計するのも能力のうち

501 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:32:36.61 ID:uMO7yRavM.net]
>>480
持ってるふりすらできてないだが...
どうみてもいっぱいいっぱいやん w

502 名前:デフォルトの名無しさん [2018/03/14(水) 18:41:41.61 ID:buZ+p9lOa.net]
ま、どうでもいいから>>436で書いたC言語の例外処理についてどういうものなのか書けよ。

503 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:52:07.48 ID:L/3+Hz1H0.net]
>>485
それよりあと1000回だぞ
急がないと日付が変わっちまうぞw

504 名前:デフォルトの名無しさん [2018/03/14(水) 19:21:46.36 ID:buZ+p9lOa.net]
わかったわかった。もう書かなくていいよ。かわいそうなやつだな。合掌。

505 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 19:45:37.85 ID:IogLKo4e6.net]
ID:L/3+Hz1H0に構うな

506 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 21:53:59.94 ID:L/3+Hz1H0.net]
収穫ゼロで引き下がる、みじめなヤツw

507 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 06:38:35.49 ID:z1/gBAj5d.net]
Cでエクセルの指定シートだけテキスト化できます?



508 名前:デフォルトの名無しさん [2018/03/15(木) 07:11:47.68 .net]
>>490
できますん

Excelがインストールされている環境で動かす前提であれば
COMコンポーネント (Microsoft Excel Object Library) を使えばいいが
C++じゃないとダメかも

自前でExcelフォーマットを解析して変換することも
膨大な工数を費やせば理論的にはできるだろうが
現実的には選択肢に入らないな
xlsx限定ならまだ楽かも知れんが

Excelを扱う部分は他の言語で開発してCからはそれを呼び出すのが普通かな

509 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 07:16:10.04 ID:BwZLx9bwM.net]
>>490
できるけど結構面倒だよ
ところでなんでC縛りなの?
なんかの苦行とか?

510 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 07:53:33.32 ID:/GlmcHqY0.net]
Cにあっていると思う
バイナリを呼んでキャストして
キャスト後も分岐ルートが色々あって
構造体はほとんど可変長
細かいものを組み上げるのは、たぶん Cが最適

511 名前:デフォルトの名無しさん [2018/03/15(木) 09:54:54.80 ID:W95zVRhkp.net]
FIFO(名前付きパイプ)で、大量データを分割して送受信したいです。



送信側
---------------------------
buff=malloc(datalen);
len=512;
pos=0;

do{
w=write(fifo,buff+pos,len);
pos+=w
datalen-=w
len=datalen < 512 ?

512 名前: datalen : 512
}while(0<datalen)
---------------------

こんなんでok?
[]
[ここ壊れてます]

513 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 10:35:33.07 ID:v5sVsR9k0.net]
・最初に飛び込んでくる段階で datalen が 分割サイズ(512) より小さい時の考慮
 (ループ中と同じ記述で良いのでは?)

・書けなかった時(w=0 だったとき) の脱出をケアする
ぐらいでしょうか

514 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 10:45:14.98 ID:lf1N2aO70.net]
SIGPIPEで死ぬぽ。

515 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 10:49:38.59 ID:c+umNtGLp.net]
マジックナンバー使うな。

516 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 11:01:51.80 ID:OczprsBK0.net]
>>496
シグナルは悪い文明! 粉砕する!

517 名前:デフォルトの名無しさん [2018/03/15(木) 12:00:46.26 .net]
>>494
実用的にするなら非同期送受信でいろいろケアしたほうがいいけど
学習用とか数人で使うテストツールとかならいいんじゃね?



518 名前:デフォルトの名無しさん [2018/03/15(木) 12:19:33.36 ID:KGbgKLI3a.net]
>>494
エラー処理が抜けてる。

519 名前:デフォルトの名無しさん [2018/03/15(木) 12:21:39.25 ID:KGbgKLI3a.net]
>>496
そうそう。しかしその辺はOSや接続先によって違うかも。

520 名前:デフォルトの名無しさん [2018/03/15(木) 16:10:59.70 ID:CR6uT/FI0.net]
>>494
これの受信側read()のコードを求むm(__)m

521 名前:デフォルトの名無しさん [2018/03/15(木) 16:16:36.38 ID:umqIWKjV0.net]
【守銭奴】  株・FX・トレーダー  <キリストW再臨″>  史上初テレパシー演説  【救世主】
https://rosie.5ch.net/test/read.cgi/liveplus/1521080734/l50

522 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:42:18.79 ID:v5sVsR9k0.net]
プロトコルなんか無しに来たものを読みきるだけの話なら

allocsz = blocksz = 512
buff = malloc(allocsz);
use = 0;

for (;;) {
 w = read(FIFO, buff+use, allocsz-use);
 if (w == 0) { /* もう来ない */
  break;
 } else if (w > 0) {
  use += w:
  if (use >= allocsz) {
   // 器が尽きた
   allocsz += blocksz;
   buff = realloc(buff, allocsz); // 手抜きで realloc
  }
} else { /* エラーケアしてね */ }
}

buff に use バイトだけ収まってる

523 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:56:13.79 ID:lf1N2aO70.net]
>buff = realloc(buff, allocsz)

リークするからやめなよ。

524 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 18:05:35.40 ID:c+umNtGLp.net]
ヒープなんか使わずに配列にして自己管理せい。

525 名前:デフォルトの名無しさん [2018/03/15(木) 18:12:47.89 ID:yyzFA25Ma.net]
ヒープに配列用のメモリを確保しているわけで・・・

526 名前: mailto:sage [2018/03/15(木) 18:18:50.14 ID:xYxZI4zx0.net]
>>505
ん?realloc() はリークするのか?

527 名前:片山博文MZ mailto:sage [2018/03/15(木) 18:24:18.46 ID:mTrAuuczd.net]
>>508
割り当てに失敗したらリークするよ。



528 名前: mailto:sage [2018/03/15(木) 18:34:07.27 ID:xYxZI4zx0.net]
>>509
確認した
buff = realloc(buff, allocsz) という書き方は、たしかに realloc() に失敗すると buff が null で上書きされてしまうのでまずいね

529 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 18:43:54.61 ID:T5+tR1ew0.net]
戻りを別の変数で受けて確認してから代入

530 名前:片山博文MZ mailto:sage [2018/03/15(木) 18:51:29.92 ID:mTrAuuczd.net]
前、ANSI準拠のreallocは、mallocとfreeの代わりになるって話をしたよな。
だから、最初のmallocは、NULLに対するreallocで置き換えできるんだよ。

531 名前:片山博文MZ mailto:sage [2018/03/15(木) 18:52:49.68 ID:mTrAuuczd.net]
それから、この場合はintよりもsize_tを使った方がいい。

532 名前:デフォルトの名無しさん [2018/03/15(木) 20:39:48.98 ID:yyzFA25Ma.net]
>>512
最初だけ、な。

533 名前:デフォルトの名無しさん [2018/03/15(木) 23:54:08.20 ID:NmT4VXxza.net]
素朴な疑問なんですが、Cでメンバ関数を関数ポインタで定義して、そのメンバ関数から引数なしにメンバ変数を参照

534 名前:することってできませんか? []
[ここ壊れてます]

535 名前:デフォルトの名無しさん [2018/03/16(金) 00:14:09.63 ID:LkWvbaD00.net]
>>515
メンバ関数ってなんですか?

536 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 01:02:32.36 ID:w3tL3lE3M.net]
>>516
C++でいうところのメンバ関数を構造体の関数ポインタのメンバで実装したいという意味だろ。読解しろ。
>>515
むり。C++で見かけ上引数がなくても内部で引数で渡してる。

537 名前: mailto:sage [2018/03/16(金) 01:37:32.81 ID:GsmhGHn70.net]
>>515
https://mevius.5ch.net/test/read.cgi/tech/1434079972/39
メンバ関数 h() を返す メンバ関数 g() を定義
メンバ関数へのポインタ f を定義
メンバ関数へのポインタ f にメンバ関数 g() の返り値を代入
ここでメンバ関数へのポインタ f にはメンバ関数 h() が格納されている
->* 演算子を使用してメンバ関数へのポインタ f が指すメンバ関数 h() を実行、 h() ではメンバ変数 C::a を出力する



538 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 02:08:17.17 ID:w3tL3lE3M.net]
>>518
スレタイ見ろ

539 名前:デフォルトの名無しさん [2018/03/16(金) 04:14:48.79 ID:3pmuZEr10.net]
ポインタ構造体変数をポインタ変数で扱いたい時って
&p(ポインタ変数構造体変数)-> member(メンバ名)
みたいにわざわざ一回通常変数に直してからアドレスになおさないかんの?

540 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 05:57:40.20 ID:PrpOQ5WH0.net]
(&p)->memberなんてまずやらん
p.memberで同じことができる

541 名前:デフォルトの名無しさん [2018/03/16(金) 06:50:12.92 ID:3pmuZEr10.net]
>>521
それやったらコンパイラにそんな構造体変数ないぞって言われた

542 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 08:05:49.18 ID:w3tL3lE3M.net]
>>522
質問するときは変数の宣言も使う文脈も省略せずに書け

543 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 08:16:43.56 ID:6+mGA4RRM.net]
>>522
&p->membar
(&p)->membar

544 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 10:27:00.36 ID:DfshN/+jp.net]
型教えないと何やっても無理だろ。
あと。下手に型変換させると、奇数バイトからワード処理とかさせてしまい、石によっては例外処理が走るか暴走するよな。

545 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 11:29:31.94 ID:07ayGtU0a.net]
cのコンパイラ作るのにアセンブラの知識は必要?

546 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/16(金) 11:38:22.80 ID:ObjPIdw20.net]
今なら、LLVMがあるからコード生成はそちらに任せるという
選択肢があるね。

547 名前: mailto:sage [2018/03/16(金) 11:59:50.08 ID:GsmhGHn70.net]
>>526
コンパイルというくらいだから、最後に機械語に落とし込むのにアセンブラの知識は必要になるのではないか?



548 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 12:01:10.57 ID:rupS10t30.net]
C++ to C コンパイラとか 生成物が機械語で無いのもあるんじゃね?

(昔そういうの欲しかった)

549 名前:デフォルトの名無しさん [2018/03/16(金) 12:19:28.27 ID:56A/2jiga.net]
>>517
Cには無理なんですね
ありがとうございます

550 名前: mailto:sage [2018/03/16(金) 12:33:16.00 ID:GsmhGHn70.net]
>>530
>>515 でメンバ関数という言葉を使うのだから C++ を仮定している、というのならば C++ では >>518 で可能
C で可能かどうかを問題にしているのであれば、>>515 のメンバ関数という言葉が自己矛盾

551 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 12:43:32.01 ID:rupS10t30.net]
C言語の範囲では 構造体のメンバ中に関数のポインタをもつまで
C++言語のメンバ関数の機構(暗に this ポインタが渡ってくる) のを
C言語でやりたけりゃ自前で引数に渡すしかない&その関数はポインタを引数で受けなきゃいけない

552 名前:デフォルトの名無しさん [2018/03/16(金) 12:47:14.28 ID:0ILmeguTa.net]
>>529
C++の初期のコンパイラはそういうやつだった。つまり、Cへのコンバータだった。

553 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 13:59:12.95 ID:DfshN/+jp.net]
ああ、各ファイルの先頭に構造体の領域宣言とか関数にいちいち構造体のポインタが追加されるんだよな。

554 名前:デフォルトの名無しさん [2018/03/16(金) 14:00:33.86 ID:ITdJ1YV3a.net]
そういや昔々のX68000のBASICにもCへのコンバータがあったな。

555 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 14:26:36.05 ID:DfshN/+jp.net]
俺は、6502アセンブラコードをCに変えるコンバータ作ったけどな。

556 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 15:25:35.34 ID:relEB8IL0.net]
アセンブリをprintfにパースするのって大変なのかな。

557 名前:デフォルトの名無しさん [2018/03/16(金) 15:57:57.02 ID:ScqC3AYEa.net]
>>531
ではどういう言葉なら齟齬なく伝わりましたか?



558 名前:デフォルトの名無しさん [2018/03/16(金) 16:00:12.76 ID:HNnsk+Eya.net]
>>538
「関数へのポインタ」では?
それが構造体のメンバとしてあるわけだし。

559 名前: mailto:sage [2018/03/16(金) 16:12:40.83 ID:GsmhGHn70.net]
>>538
コード断片で示すのもよい、誰かがコードを補完してくれるだろう

560 名前:デフォルトの名無しさん [2018/03/16(金) 16:25:31.83 ID:3ma6aQHvF.net]
アスペとの会話ってつかれるよな

561 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 16:57:51.61 ID:PrpOQ5WH0.net]
Cスレで「メンバ関数」だぜ?
それをアスペとか、どんだけボキャ貧なんだよ

562 名前:デフォルトの名無しさん [2018/03/16(金) 16:59:08.32 ID:3ma6aQHvF.net]
>> 542
おまえがアスペか

563 名前:デフォルトの名無しさん [2018/03/16(金) 20:29:17.66 ID:56A/2jiga.net]
>>539
> Cでメンバ関数を関数ポインタで定義して
一応そのつもりで書いたんだけどなあ

アスペ基準に合わせようとした俺が悪かったのか

564 名前: mailto:sage [2018/03/16(金) 21:09:53.74 ID:GsmhGHn70.net]
>>544
・関数ポインタとは別に「メンバ関数」というテクニカルタームが C++ にあった
・C/C++ の区別がついていない人の質問も、ここではよくみかける

という背景があって小さな誤解が発生したまでのこと、気にするでない、苦しゅうないぞ

565 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 21:13:51.61 ID:nemrSVupM.net]
>>526
どうやってコード生成部分を作るつもりなんだよ...

566 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 21:59:39.71 ID:PPQOkRTja.net]
マシン語があれば充分のんじょのいこの

567 名前:デフォルトの名無しさん [2018/03/16(金) 22:33:58.96 .net]
Cコンパイラがマシン語を出力しなきゃいけないって誰が決めたの?🙄



568 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 22:51:53.37 ID:SxfrRBUw0.net]
ラノベ出力してくれるコンパイラってステキ

569 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 22:53:03.55 ID:d0lIgzUw0.net]
誰も決めてないしマシン語じゃなくてアセンブラのソース出すコンパイラはいくらでもあるし

570 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/16(金) 23:46:17.13 ID:ObjPIdw20.net]
VHDL出してもいいよね〜

571 名前:デフォルトの名無しさん [2018/03/17(土) 00:28:10.69 .net]
シェルスクリプトとまでは言わないからPerlスクリプトを出力して欲しい

572 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 03:07:05.34 ID:ZFtG2t0c0.net]
C++の非仮想関数 == Cの普通の関数
C++の仮想関数 == structの項(vtbl)の項

573 名前:デフォルトの名無しさん [2018/03/17(土) 04:35:29.26 ID:YYJgzE2Qa.net]
>>553
違うね

574 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/17(土) 07:17:45.03 ID:qzfhHg+K0.net]
>>553
上の方の関数。普通の関数pointerで保持出来るの?

575 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 07:35:06.72 ID:zYYcg2u/0.net]
C++のextern "C"関数 == Cの関数
Cに普通じゃない関数ってあるんだっけ

576 名前:デフォルトの名無しさん [2018/03/17(土) 07:51:22.83 .net]
>>555
そんなの当たり前じゃん
まさかできないと思った?

577 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/17(土) 08:58:53.90 ID:qzfhHg+K0.net]
>>557
先生、非仮想なメンバー関数をcの構文では保持出来ません。
例をご教示願います



578 名前:デフォルトの名無しさん [2018/03/17(土) 09:00:39.42 .net]
>>558
「上の方の関数」すなわち「Cの普通の関数」を
「普通の関数pointerで保持出来るの?」
→Cの普通の関数は、普通の関数ポインタで保持できます

質問文に忠実に答えただけだが、何か問題でも?

579 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 13:08:05.54 ID:8xjJdoU40.net]
Cにゃメンバーって言語レベルの概念は無いから、そういうのはコーディング時に人様がメンバーのつもりになる書き方を明示的にやらないとならないんだよな。

580 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 13:47:23.11 ID:8tKqJ0BR0.net]
namespace のことを脇においとけば
非仮想関数って FILE 構造体と その関数だべ

581 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 13:51:13.91 ID:V9AqDEvW0.net]
LLVMはまずパースレイヤーが中間言語出力して中間言語を解釈するレイヤーが各種コードに吐き分けるということができる。
3段階のコード最適化ができるはずだったが、ち

582 名前:ょっと迷走してる。 []
[ここ壊れてます]

583 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 16:56:54.32 ID:x+XAbvy+0.net]
>>557
struct A
{
void func() {} //C++の非仮想関数
};
void (*ptr)(); //普通の関数pointer
ptr = &A::func; //まさかできると思った?

584 名前: mailto:sage [2018/03/17(土) 18:20:57.82 ID:qqOQsVrX0.net]
>>555
できませんね
https://ideone.com/5sW1lw

585 名前:片山博文MZ mailto:sage [2018/03/17(土) 18:25:10.24 ID:6umCop+Md.net]
クラス内部の関数をstaticにすると、、、

586 名前:片山博文MZ mailto:sage [2018/03/17(土) 18:26:02.67 ID:6umCop+Md.net]
普通の関数みたいに参照できる。

587 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 20:05:40.42 ID:x+XAbvy+0.net]
ここはCスレということをお忘れなく



588 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 08:12:11.88 ID:5MZOkfmV0.net]
https://ideone.com/gSWZOR
上のコードを見てください。
sprintfを続けて使うと文字が一つも出力されません
なぜですか?

589 名前:デフォルトの名無しさん [2018/03/18(日) 08:14:12.57 ID:5MZOkfmV0.net]
ちょっと間違えました。
上の投稿は無視してください

590 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:30:20.44 ID:Pk5+CKOYa.net]
ニキ
配列で array[i] と i[array] て同じナンスカ?
後者の違和感すげーあるんスけどこういう風に書くことのメリットってかどっちが普通なんでしょうか

591 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:33:57.97 ID:MsjTjvgF0.net]
ポインターはINTに変換できる事もある。
んで、arrayはhogeっていうアドレス値を持ってる。
iはhageていう数字を持ってる。
生の数字でhoge+hage=i+arrayである。
まぁ、後者の書き方は普通しない。

592 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:34:54.75 ID:DQv7yGEy0.net]
アセンブラではオフセット[レジスタ]が普通
どっちが普通なんてくだらねえことだ

593 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/21(水) 22:36:13.14 ID:D2465Z9CM.net]
offsetofマクロの実装を見て見なされ
オフセット値の算出にポインタ使っているでしょ

594 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 00:04:45.10 ID:dLiR/Xt3M.net]
a[b] は *(a+b) のシンタックスシュガー

595 名前: mailto:sage [2018/03/22(木) 00:19:52.50 ID:2FEQ/Wa30.net]
>>435
そうともいえない

一見目的のない議論が、将来の偉材を今育てているのかもしれない

596 名前: mailto:sage [2018/03/22(木) 00:23:55.20 ID:2FEQ/Wa30.net]
>>441
知らないのか?
setjmp/longjmp は、かつては例外(exception) の標準的な実装方法だったんだよ
OS に構造化例外機能がなかったときは sjlj が主流だったんだ

597 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 04:56:30.90 ID:0SzB6c710.net]
>>576
お前のご託はどうでもいいから
> 他の言語でライブラリレベルで実装してる例
をだしてみろよ



598 名前:デフォルトの名無しさん [2018/03/22(木) 09:40:57.08 ID:Q2/ylW7bF.net]
BDS-Cとかあったな

599 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 10:22:59.95 ID:lT3wziJ7p.net]
>>570みたいなのは、キャストしないと使えねーだし。

600 名前:デフォルトの名無しさん [2018/03/22(木) 13:44:55.99 ID:suw09sJq0.net]
>>579
え?使えるよ。単に *(i + array) になるだけだし。

601 名前: mailto:sage [2018/03/22(木) 13:56:04.06 ID:2FEQ/Wa30.net]
>>577
mingw/gcc-3 あたりまでは SEH ではなく sjlj だったと記憶している
ググってみるとちらほら出てくる

602 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 14:36:34.98 ID:tPQcb8ora.net]
SEHって何かと思ったらMS独自のやつか

603 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 19:43:32.85 ID:qO2s+USWM.net]
>>581
他の言語って書いてあるのに
話そらそうと必死だな w

604 名前: mailto:sage [2018/03/22(木) 20:58:32.18 ID:2FEQ/Wa30.net]
>>583
C と C++ は違う言語だろう?(棒読み)

605 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 21:06:38.53 ID:qO2s+USWM.net]
>>584
そんなものまで持ち出さないと自我が壊れちゃうのか? w

606 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 19:49:48.79 ID:wXlHUBLAa.net]
ニキやっぱFEぐらいのC過去問なら余裕の満点すか?

607 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 22:33:50.23 ID:glVyz9hR0.net]
"); //]]>-->
608 名前:573" rel="noopener noreferrer" target="_blank">>>573
>オフセット値の算出にポインタ使っているでしょ
そうか?
offsetofの結果は整定数式になる必要があるが、
ポインタ演算を使った式が整定数になる保証がないので別の手段を使っている場合がある。
[]
[ここ壊れてます]

609 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/24(土) 22:37:51.52 ID:M0MLze13M.net]
>>587
具体的に

610 名前:デフォルトの名無しさん [2018/03/25(日) 00:05:52.92 ID:r2Id4T4+0.net]
>>586
例えばどんなの?

611 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 07:25:18.09 ID:S7OmeNGW0.net]
Visual Studio 2017
#define offsetof(s,m) ((size_t)&(((s*)0)->m))

gcc 7.2.0
#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)

clang 6.0.0
#define offsetof(t, d) __builtin_offsetof(t, d)

borland 5.5.1
#define offsetof( s_name, m_name ) (_SIZE_T)&(((s_name _FAR *)0)->m_name)

612 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/25(日) 15:04:40.75 ID:9t80sXyiM.net]
>>587
>ポインタ演算を使った式が整定数になる保証がないので別の手段を
ポインタ演算の結果が浮動小数点とか変数になる例早よう出しなされ

613 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 15:25:31.63 ID:wNhLkN4j0.net]
メモリーの仕切り壁に落書きするポインタ
9と3/4番線ホームから出発する列車を指し示すポインタ
あれば便利かも知れないが(何がだ)

614 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:42:21.62 ID:S7OmeNGW0.net]
鉄道に例えるならポイント(線路の分岐)を制御するデコーダに与える信号がCのポインタだ

615 名前:デフォルトの名無しさん [2018/03/25(日) 18:06:41.94 ID:qleen6XJF.net]
それじゃ型が考慮されてない

616 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:24:31.28 ID:EKcNWVxa0.net]
>>591
その前に、まずはポインタ演算を使った結果が整定数になることが保証されている例を出してくれ。
当然規格は読んでいるよね。6.6p6より
> An integer constant expression shall have integer type and shall only have operands
> that are integer constants, enumeration constants, character constants,
> sizeof expressions whose results are integer constants, and floating constants that are the
> immediate operands of casts.

617 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:28:29.51 ID:S7OmeNGW0.net]
汎整数型定数をポインタにキャストまたは暗黙に変換した式は定数式(たとえば空ポインタ定数は定数式)
その定数式を整数にキャストし直した式が定数式でなくなる根拠はない



618 名前:デフォルトの名無しさん [2018/03/25(日) 18:29:11.25 .net]
>>595
先生!
>>587で 「ポインタ演算を使った式が整定数になる保証がないので別の手段を使っている場合がある。」
って言い切ってるんだから、その「場合」とやらを僕も知りたいです!

619 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:53:41.81 ID:EKcNWVxa0.net]
>>596
>その定数式を整数にキャストし直した式が定数式でなくなる根拠はない
でもそれは整定数式ではないよね。
規格にはキャスト前の型が算術型でなければならないとある。
> Cast operators in an integer constant expression shall only convert arithmetic types to integer types, except as part of an operand to the
> sizeof operator.

620 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 19:02:02.77 ID:z318xA/90.net]
(配列等で)連続が保障されてるときには要素数が求まるようにはなってるけど
連続性のないポインタの差分は鼻から悪魔だったような
規格? みてない

621 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 19:05:21.84 ID:S7OmeNGW0.net]
>>598
俺は根拠がないと言ったんだが
それをすっ飛ばして整定数式ではないと言われてもねえ

622 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/26(月) 07:31:09.27 ID:Sl5sXtlN0.net]
で、587は逃げたのか

623 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 09:52:06.25 ID:5fqWa8qC0.net]
今日からC言語を始めたのでよろしくです

624 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 10:39:34.46 ID:9cQp/9Bmp.net]
ご愁傷様

625 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 11:35:27.48 ID:0ihjlnG/0.net]
a[b*c];
のようにしてもassemblyコードがアドレッシングモードじゃなくて
掛け算してしまうんですけどどうしたらアドレッシングモードで計算するように
なりますか?

626 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 11:54:06.58 ID:dvRuSlEv0.net]
>>604
b と c とを使って何をしたいのでしょうか?

627 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:03:06.83 ID:EmWkiz+YM.net]
>>604
何がしたいのかよくわからないけど、エスパーすると
Cソースで変数のセクションを指定して、リンカでそのセクションの配置を
期待するアドレスに配置すればいいんじゃないかな。



628 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:09:23.11 ID:0ihjlnG/0.net]
struct a{
int a;
int b;
};
struct a x[100];
void *v=x;

void *h(int n, int s){
return ((char *)v+n*s);
}

struct a *i(int n){
return &x[n];
}
同じことをしているのにhは掛け算するのにiは掛け算をアドレッシングモードでしているので
処理速度の差が生まれてしまいます。

629 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:12:26.75 ID:0ihjlnG/0.net]
自己解決しました。

630 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:12:50.68 ID:EmWkiz+YM.net]
struct aにキャストしてから計算すればいいという話ではなくて?

631 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:18:06.83 ID:0ihjlnG/0.net]
nかsは定数じゃないと駄目みたいでした。

632 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:31:41.16 ID:k+G5ovIGM.net]
sがなんだかわからないけど

void *h(int n, int s){
return ((struct a *)v+n*s);
}

じゃだめなん?
s=1ならi()と同じだと思うけど。

633 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:37:07.82 ID:0ihjlnG/0.net]
struct a *は8バイトなので8を入れればよいのです。

634 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:40:49.01 ID:v3bCx+j3M.net]
ブロックサイズみたいなイメージかな。
だったらsizeof(struct a)にしたほうがよいかと。

635 名前:デフォルトの名無しさん [2018/03/26(月) 13:35:11.46 ID:ioIbXl47a.net]
>>612
それは違う環境に持っていってコンパイルしたら破綻するかも知れない。
やはりsizeof使うかそのまんまポインタ計算させた方が良いのでは?

636 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 14:37:40.54 ID:g7RAb+fM0.net]
最適化されたらおんなじじゃね?

637 名前:片山博文MZ mailto:sage [2018/03/26(月) 14:44:36.91 ID:42MV7MT1d.net]
struct a*のサイズは32-bit 環境だと4だよな。64ビットだと8バイト。



638 名前:片山博文MZ mailto:sage [2018/03/26(月) 14:47:59.15 ID:42MV7MT1d.net]
ポインタを操作するなら、size_tとかptrdiff_t使った方がいいな。

639 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 15:00:59.23 ID:+d/fyZgca.net]
>>616
ここでは構造体の実体の配列だからsizeof(struct a)で大丈夫。
int1つのサイズは典型的には4byteだけど、IP64だのあまり見ない
データモデルでは8byteのこともあるから、構造体のサイズを使うときは
sizeofがよい(MAY)、ではなくてsizeofにすべき(ほぼMUSTのSHOULD)。

640 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 17:51:14.16 ID:wby0cWXW0.net]
>>598
おまえさんが言いたいのは、これのことか?
https://ideone.com/NITIUP

641 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 17:52:53.38 ID:5fqWa8qC0.net]
本買うならどれがいい?
本より優れたサイトがあるならそれでもいいぞ

642 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/26(月) 19:16:37.53 ID:b1dSvJWqM.net]
>>620
きつねさんとおぼえる clang
きつねさんとおぼえる clang おかわり

643 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:05:39.20 ID:VOv2iUaR0.net]
struct a{
bool a:1;
uint32_t b:31;
uint16_t c;
};

struct a{
uint32_t b;
uint16_t c;
bool a;
};

上の構造体が12バイツでしたが8バイツの理由がわかりません、上を8バイツにしたいです。

644 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:14:25.16 ID:6oSpwfuc0.net]
C言語のboolって何バイト?
C++だとINTと等価なことがそれなりにあるんだけど。

645 名前:デフォルトの名無しさん [2018/03/27(火) 07:32:57.91 .net]
>>622
よく分からないんだけど、2つ構造体を書いてるのは何を意図してるの?

646 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:57:42.10 ID:tnecWY6M0.net]
>>622
俺の環境ではどっちのsizeofの値も8バイツを返したから環境依存だろう。
#pragma か

647 名前:__attribute__ で詰め込めるかも知れんけど、
ビットフィールドを狙って使える指定方法があるかどうか。
詰めたら詰めたで6バイツや7バイツになっちゃう危険もあるし。

>>623
<stdbool.h> にどう書いてあるかだろうな。
これも試したら sizeof(bool) に1を返した。
<stdbool.h> の実体を思しきファイルを覗いたら

#define _Bool signed char
#define bool _Bool

の連鎖になってた。typedefでないのが少々意外。
#ifdef で定義済か未定義かを判定できるようにするためだろうか。
[]
[ここ壊れてます]



648 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 08:47:18.29 ID:/RdC4ccn0.net]
>622
uint32_t b; がバイト境界にひっかかったせいじゃね?

649 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 08:57:59.42 ID:9ekvYNlc0.net]
コレナンデ境界

650 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/27(火) 09:51:51.20 ID:GW1/xmrB0.net]
アライメント

651 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 10:02:58.62 ID:i2YWXGc+0.net]
alignment
Емельяненко

なんで日本人は「ん」を飛ばすかねえ

652 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 10:04:40.74 ID:/RdC4ccn0.net]
間抜けな回答してるな>オレ

        ||
        ||
      ∧||∧   
     ( / ⌒ヽ
      | |   |
      ∪ / ノ
       | ||
       ∪∪

      -━━-

653 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 10:37:30.96 ID:UpIjn8oG0.net]
>629

>なんで日本人は「ん」を飛ばすかねえ

「全て」の日本人が「ン」を飛ばすわけではありません。

「或る」日本人が「ン」を飛ばすだけです。

ところで、ロシア語の

Емельяненко(エメリャネンコ)

とはどういう意味ですか。手元の「ロ日辞典」をひいても
でていないので
 

654 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:17:02.05 ID:VOv2iUaR0.net]
struct a{
bool x:1;
uint32_t y:31;
};
しらべたらこれの大きさが8バイツでした
sizeof(struct a)とやったらそうなったのでアラインメントのもんだいではありません。
どうしても4バイツにしたいです

655 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:20:50.14 ID:949beg24p.net]
型を揃えるか、ブラグマ指定する、

656 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:22:01.11 ID:6oSpwfuc0.net]
もしかして変数を分解しようとしてる?
Unionってしってるかー?

657 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:24:10.52 ID:949beg24p.net]
構造体宣言に
__attribute__((packed))
を挟む



658 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:26:05.22 ID:6oSpwfuc0.net]
C++なら、無名うにおんとかつかえて楽なんだけど、Cは一々名前がつくので面倒。

659 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:26:08.96 ID:949beg24p.net]
両方uint32_tにすりゃいいだろ。

660 名前:デフォルトの名無しさん [2018/03/27(火) 11:26:51.67 ID:VOv2iUaR0.net]
struct a{
uint32_t a:1;
uint32_t y:31;
};
こうやったらできました
ビットフィールドを勘違いしていたのが原因みたいです。

661 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:27:20.90 ID:6oSpwfuc0.net]
あら、そっちか。

662 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:36:24.22 ID:VOv2iUaR0.net]
struct a{
union{
bool a:1;
struct{
uint32_t x:1;
uint32_t y:31;
};
};
};
つまりこうしたらよいのですね。
勉強になりました。ありがとうございます。

663 名前:デフォルトの名無しさん [2018/03/27(火) 12:00:48.00 .net]
>>640
これ、bool aとuint32_t xが同じ値であることがどの環境下でも保証されてるの?
教えてエロい人

664 名前:デフォルトの名無しさん [2018/03/27(火) 12:36:27.71 ID:NeN1yqDWa.net]
>>622
ビットフィールドって同じ型が並んでないとまとめてくれないのでは?

なので、

bool a:1;
uint32_t b:31;

ではなくて

uint32_t a:1;
uint32_t b:31;

にしたらできないか?

665 名前:デフォルトの名無しさん [2018/03/27(火) 12:39:07.90 ID:NeN1yqDWa.net]
既に答えが出て解決していた

        ||
        ||
      ∧||∧   
     ( / ⌒ヽ
      | |   |
      ∪ / ノ
       | ||
       ∪∪

      -━━-

666 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 12:44:29.48 ID:i2YWXGc+0.net]
>>631
姓だよ、とある有名人の
国内ではエメリヤエンコということになっている

667 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 13:11:29.05 ID:VOv2iUaR0.net]
https://ideone.com/GfSSSt
上のコードみてください。
なぜか上の構造体を使って初期化すると値がただしくなりません。
なぜですか?



668 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 13:53:29.94 ID:KACb5w790.net]
>>645
どこが正しくないのか説明してもらわないとたぶん

669 名前:誰も分からない []
[ここ壊れてます]

670 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 15:15:12.36 ID:VOv2iUaR0.net]
https://ideone.com/WeAoO6
なにものかにコードが書き換えられたみたいです
正しくは上のコードを見てください。

671 名前:片山博文MZ mailto:sage [2018/03/27(火) 15:32:49.24 ID:eCLpRZm+d.net]
unionにビットフィールドは使えないっしょ。

672 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 15:42:37.68 ID:jWaORT7c0.net]
>>647
struct a a={.y=1, .a=true};
ここを
struct a a={.a=true, .y=1,};
こう書き換えると動作が変わる。
何故変わるか考えてみよう。

673 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 15:45:46.56 ID:jMKP3TFv0.net]
struct になってない単変数でのビットフィールドって
結局支持された型の空間をめいっぱい使って書いてるんでないの

674 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 16:45:45.41 ID:VOv2iUaR0.net]
>>648
直しました
>>649
考えてもわかりませんでした

675 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 17:22:21.42 ID:tnecWY6M0.net]
>>637-638 >>642
ビットフィールドの詰め込み方だけど、
「同じ型の並びならまとめる、異なる型同士はまとめない」、
「型に関係なくまとめる」、(他にもパターンあるかも…)、
どれになるかは環境依存だからアテにしてると移植性の問題にハマるよ。

ビットフィールドは内部的な配置を気にしない場合だけ使うのが鉄則。
>>622 の流れからすると、ビットフィールドを含む構造体は
sizeof が返すバイト数も気にしちゃいけないね。

676 名前:デフォルトの名無しさん [2018/03/27(火) 17:46:09.15 .net]
>>647
unionの中にもう一つstruct
uint32_t b0:1; 〜 uint32_t b31:1;
を入れてみて、b0〜b31をオール0、その次はオール1にして
aやyに代入するたびにb0〜b31がどう変化するかを確かめればいいと思うよ。

677 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 18:48:56.23 ID:lphBpvplM.net]
gotoは要らない子?



678 名前:デフォルトの名無しさん [2018/03/27(火) 19:18:17.87 ID:NeN1yqDWa.net]
>>652
コンパイラによっては型に関係なく並べるのもあるのか。知らなかった。

679 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 09:16:12.84 ID:UsIzsSLh0.net]
unionで共用関係作っても、詰め込み順が統一されてる保証は無いからなぁ。
んなトリッキーな処理は、移植ん時死ねるぞ。

680 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 09:21:05.87 ID:hD+ZgK6z0.net]
ビットフィールドの順番がコンパイラによって違うのには参った

681 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 09:27:44.69 ID:txGSPNwpa.net]
>>657
エンディアンの違いで逆順になるのは昔からあるな。
コンパイルオプションでなんとかなるといいんだけどな。

682 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 15:08:36.90 ID:NO5LUaew0.net]
いやあ、そんなドジ踏んだことないし
踏んだやつも見かけないなあ
unionなんか使うときはそういう危険性には
真っ向から対峙しているのでうっかり考え落とす
なんてことは起こりえない

ポインタをキャストするときのほうが危ないぞ
unionよりも遙かに使用頻度が高くて油断しがち

683 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 16:15:36.83 ID:zOM5QtYn0.net]
>>659
たしかに

684 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 20:45:19.82 ID:inZxrYqzp.net]
普段からアライメント気にしない石使ってると死ぬるw

685 名前:デフォルトの名無しさん [2018/03/29(木) 00:01:16.65 ID:ySkkjEPJa.net]
野積み

686 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/29(木) 00:09:03.12 ID:X8gSQriyM.net]
SIG11

687 名前:デフォルトの名無しさん [2018/03/29(木) 00:30:03.68 ID:HYrXjV+u0.net]
>>654
出来の悪い子ほど可愛いものさ



688 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 02:58:45.40 ID:Ng8O1HeK0.net]
GOTOはその場所より基本上流に流しちゃいけない。


689 名前:サれだけ守ってればいいと思う。 []
[ここ壊れてます]

690 名前:デフォルトの名無しさん [2018/03/29(木) 03:06:08.42 .net]
if文とかfor文の中に飛ばすのもダメだろ

関数末尾以外に飛ばすのは基本アカンと思う

691 名前:デフォルトの名無しさん [2018/03/29(木) 07:24:44.79 ID:+dX3Weor0.net]
gotoとswitchの組み合わせはよくやる。

692 名前:デフォルトの名無しさん [2018/03/29(木) 22:57:50.45 ID:HYrXjV+u0.net]
>>667
switch と goto と聞いて、はっもしやこんなこともできるのでは、と思ってやってみたら、できてしまったよ。どうしよう。

#include <stdio.h>

int main()
{
 int i;

 for (i = 0; i < 10; i++) {
  if (i == 5)
   goto hoge;
  switch (i) {
   case 1:
    puts("いち");
    break;
hoge:
   puts("ご");
   break;
  }
 }

 return 0;
}

693 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 13:01:35.10 ID:fkO+Wt7Ma.net]
情報処理用にC頑張り始めたンスけど、初心者本は2冊くらい終えて、簡単なプログラムならあるていど作れるようにもなったんスけど、FEの過去問には全く歯がたたないっすw

694 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 13:03:50.38 ID:fkO+Wt7Ma.net]
初見の歯抜けプログラムみて選択肢与えられてもなんだかさっぱり読み切れん…
中級本の内容の方がまだ簡単なんスけどニキこれなんなんすか

695 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 13:04:58.91 ID:n1WKWzHR0.net]
Duff's deviceっていうスイッチの中にループがあるのもある

696 名前:デフォルトの名無しさん [2018/03/30(金) 16:19:34.10 ID:zQBQo8b30.net]
>>668
おめ
はげめ

697 名前:デフォルトの名無しさん [2018/03/30(金) 16:22:11.93 ID:bDuRGN0f0.net]
>>668
goto default;



698 名前:デフォルトの名無しさん [2018/03/30(金) 16:55:37.88 ID:InC0asnz0.net]
あれにはそういう名前があったのか。ありがとう。

699 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 17:55:35.60 ID:6y8tfNRe0.net]
同じく
名前は知らんかった

700 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 19:36:36.57 ID:FHOFausT0.net]
値の入れ替え処理ってどう描けばいいんや

701 名前:片山博文MZ mailto:sage [2018/03/30(金) 19:38:47.12 ID:9udtptfNd.net]
>>676
int tmp = a;
a = b;
b = tmp;
もしくは
std::swap(a, b);

702 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/30(金) 19:42:57.58 ID:TqB3XhjJM.net]
a = a ^ b;
b = a ^ b;
a = a ^ b;

703 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 19:46:21.82 ID:FHOFausT0.net]
>>677
mainから分離させると

void Swap()
{
std::swap(a,b);
}

こうなるってこと??

704 名前:片山博文MZ mailto:sage [2018/03/30(金) 19:47:24.27 ID:9udtptfNd.net]
a ^= b;
b ^= a;
a ^= b;

705 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 19:49:14.07 ID:sxHgkaP90.net]
>>678
b の実体が a だと a = 0 になってしまう、とは頻繁に指摘されるところ

706 名前:片山博文MZ mailto:sage [2018/03/30(金) 19:49:30.92 ID:9udtptfNd.net]
void myswap(int *pa, int *pb)
{
int tmp = *pa;
*pa = *pb;
*pb = tmp;
}

707 名前:デフォルトの名無しさん [2018/03/30(金) 20:19:58.73 ID:x2Z4e+RCa.net]
>>677
それC++だよね。



708 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:29:07.56 ID:zSEpPQDd0.net]
ワザとだと思います

709 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:32:46.73 ID:3ziE5qsO0.net]
値の入れ替えってどういう局面で使うの?

710 名前:片山博文MZ mailto:sage [2018/03/30(金) 20:35:46.51 ID:9udtptfNd.net]
>>685
ソートとか、順番を変えるときとか、データの入れ替えなど。

711 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:37:07.43 ID:N/erQ4tDM.net]
ソート
他では見かけない

712 名前:片山博文MZ mailto:sage [2018/03/30(金) 20:42:10.63 ID:9udtptfNd.net]
音楽のシャッフルなんかもswap使っている。

713 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:49:54.40 ID:3ziE5qsO0.net]
ああ、int aとかじゃなくて配列要素に使うのね
納得ありがとう��

714 名前:片山博文MZ mailto:sage [2018/03/30(金) 20:53:18.14 ID:9udtptfNd.net]
配列要素やポインタにも使える。この入れ替えアルゴリズムを抽象化するとC++のstd::swapになる。

715 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:15:31.22 ID:sWH8jgUv0.net]
goto LABEL0;
{
  int i = 1; /* 初期化 */
  int j;
  j = 1; /* 代入 */
LABEL0:
  printf("%d %d\n", i, j);
}

716 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 01:54:40.82 ID:OnKsCXxga.net]
Mapみたいな連想配列使いたいんだが何使えばええんや

717 名前:デフォルトの名無しさん [2018/03/31(土) 03:57:34.23 ID:2Z4gCLvWa.net]
switchのラベルって違うswitch(){}の中なら重複してても使えるやん?
それで goto HOGE; したらどっちに飛ぶ?



718 名前:デフォルトの名無しさん [2018/03/31(土) 03:58:50.47 ID:2Z4gCLvWa.net]
>>681
ならねーよΩ

719 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 07:10:32.62 ID:1xZcLHDp0.net]
>>694
>>678 のアルゴリズムには重大な欠陥がある、という点は頻繁に指摘されることですよ、知らないの?
https://ideone.com/uYFQRK

720 名前:デフォルトの名無しさん [2018/03/31(土) 07:17:07.25 .net]
if (a != b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
}

721 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 07:19:42.34 ID:1xZcLHDp0.net]
>>696
それは対策になっていない

722 名前:デフォルトの名無しさん [2018/03/31(土) 08:13:17.33 .net]
>>697
なんで?

723 名前:デフォルトの名無しさん mailto:sage釣 [2018/03/31(土) 08:15:52.05 ID:NJrC8qbaM.net]
>>695
ポインタ使って無いアルゴリズムをポインタ付きに移植して
欠陥とはこれ如何に。
只の移植失敗だろ。池沼か

724 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:22:07.33 ID:1xZcLHDp0.net]
>>699
xor スワップがどこまで有効か、どうなると不適になるかをはっきりさせておかないと、嵌る、>>678 にはその指摘がない
C なんだからポインタの話は不可欠だ、それを指摘したのが >>681

725 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:47:25.82 ID:EbDGZ0yc0.net]
wikiより

void xorSwap(int *x, int *y)
{
if (x != y) {
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
}

726 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:59:46.96 ID:15qJIIAA0.net]
bの実体がaなんてことが参照のないCで起こりうるのか?
#define b aなんてアホなことぬかすなよ

727 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:06:42.53 ID:8va89mAu0.net]
ヒューマンエラーは果てしないのじゃー。



728 名前:マクロでーとか言いそう w mailto:sage [2018/03/31(土) 09:12:11.67 ID:OaeapR1O0.net]
>>700
ごたくはいいから
a ^= b;
b ^= a;
a ^= b;
のコードでaとbの実体が同じになる例をあげろよ
もちろんC言語の範疇でな

729 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:13:01.96 ID:1xZcLHDp0.net]
>>702
その #define マクロでうっかり、xor スワップを書いてしまう、とかは、可能性としてあり得りますね
あと、C++ テンプレートで書いてしまったり、とかね
https://ideone.com/NEeCNr

730 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:13:25.89 ID:1xZcLHDp0.net]
>>704
>>705

731 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:57:17.92 ID:V7rzy3dc0.net]
マクロで xor の入れ替えを書く
配列の操作で同じ要素の入れ替えも、都合上そのまま交換する方向で記述する
(配列を逆順に入れ替える時、要素数が奇数だと発生

732 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:03:16.74 ID:OaeapR1O0.net]
>>705
> あと、C++ テンプレートで書いてしまったり、とかね
スレタイ100回音読してこい

733 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:08:47.90 ID:1xZcLHDp0.net]
>>708
今どんな気持ち?どんな気持ち?AA略

734 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:17:56.15 ID:EbDGZ0yc0.net]
マウント合戦うぜぇ。

735 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:24:01.94 ID:1xZcLHDp0.net]
>>710
まあ、こういうのでは考えが足りずに負けることもあるし
>>709 は権利ですよ
マウント合戦、勝てば飯がうまいですなあ

736 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:29:40.14 ID:OaeapR1O0.net]
名前欄ぐらい見とけよ w

737 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:32:21.69 ID:15qJIIAA0.net]
>>709
そのまま返す



738 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:34:30.68 ID:NJrC8qbaM.net]
678のメール欄もなw

739 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:40:28.44 ID:OaeapR1O0.net]
>>714
いや、さすがあれはメアド欄なんて見なくてもネタってわかるだろ w

740 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:43:37.64 ID:15qJIIAA0.net]
>>705
templateにする必要ないのに無理しちゃって
void aho(int& a, int& b)
{
if(&a == &b) throw sys

741 名前:tem_error{error_code{1xZcLHDp0_category(), 709}, R"(
 ハァ・・・   ハァ・・・   ハァ・・・
             : ∧     ∧ :
            : / ヽ    / ヽ :
        : /   >__/∴ ヽ :
        : /   ;;# ,∴∵; ヽ ∴\ :   
      : / -==、   '  、==-∴∵丶 :     き、きょうはこれくらいで勘弁してやるニダ…
    : / ""   _┃_ ""  * ∵∴\ :
     : \ #;∴  l/ニニ| ∵ / ∴∵/ :
       : ヽ∵//;;.;`ー‐' # ∴#∵ノ :
         >;;;: _   _ ;, _ ;_<
       : / # ;∴    ∴ #  \ :
)"};
}
[]
[ここ壊れてます]

742 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:44:13.72 ID:1xZcLHDp0.net]
>>678 メール欄
あれ、まあ?!‥‥‥自分<今どんな気持ち?どんな気持ち?

まあ鎬を削るのであれば、こっちが楽しいのではありまする
https://mevius.5ch.net/test/read.cgi/tech/1514772904/

743 名前:デフォルトの名無しさん [2018/03/31(土) 11:07:01.32 ID:c97ae/y4F.net]
>>695
それ xor を使ってることによる欠陥じゃなくて
同じポインタを渡してることが欠陥だろ

744 名前:デフォルトの名無しさん [2018/03/31(土) 16:34:53.19 ID:4s7VNOk80.net]
>>695
18行目がこうなっているわけだが
myswap(&a, &a);
これでは参考にならんよな。
a, b を同じ値にしてから &a, &b で呼び出さないと。
まあでも myswap() 側で調べて同じなら何もしないように作っとけばいいだけではあるが。

745 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:23:06.22 ID:EbDGZ0yc0.net]
つまりswap関数に必ず同じ変数orポインタアドレスを渡さないよう確認する人と
渡しても大丈夫な仕様にする人とが同じチームに居るとこうなると。

746 名前:デフォルトの名無しさん [2018/03/31(土) 17:38:31.63 ID:c97ae/y4F.net]
速度の問題あるから関数側でいちいち判定コード書くのは避けたいところ

747 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:53:31.86 ID:OaeapR1O0.net]
そのネタいつまで続けるの?



748 名前:デフォルトの名無しさん [2018/03/31(土) 18:24:11.53 ID:wolthb3Z0.net]
ちょっと聞きたいんだけど
char c = '5';
c -= '0';
int a = c*16;
こうゆうやり方ありなの?

749 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:27:06.54 ID:gYRRCVdX0.net]
ある

750 名前:デフォルトの名無しさん [2018/03/31(土) 18:27:10.52 ID:c97ae/y4F.net]
ありじゃね
unsigned char じゃいかんとか
unsigned char の方がいいとか
どうせ int になるんだしとか
ebcdic は?とか


751 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:49:12.37 ID:1xZcLHDp0.net]
>>718
xor スワップは、xor: ^ が
a^(a^b) == b
b^(a^b) == a
で、つまるところ、a, b, a^b の三種類の値のうち一種類が欠けても、残りの二つから欠けた一つを再生できる(RAID5と同じ)ところに着目しているわけで、
xor や同様に exclusive-nor だからできること

ちゃんと二種類の値をずっとキープできておればスワップは成功するが、
そうでない場合は失敗する

上記のことを考えると@ xor/xnor であることと、A現れるオブジェクトが別であることを保証することの両方が必要だと思うよ

>>719
まあ値が等しいときは@オブジェクトが同じ可能性があるAそもそもスワップする必要がない
から値が同じかどうかのチェックをかませば OK ではあるね、それは同意するよ

752 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:38:17.63 ID:xg3JkNB30.net]
これなら安全じゃろ。

void xorSwap(int * restrict x, int * restrict y)
{  *x ^= *y;
 *y ^= *x;
 *x ^= *y;
}

無責任極まりないやり口だけどな。

753 名前:727 mailto:sage [2018/03/31(土) 20:42:41.15 ID:xg3JkNB30.net]
改行乱れちゃった、てへ。
Cはフリーフォーマットだから…。

754 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:45: ]
[ここ壊れてます]

755 名前:59.73 ID:p4zumO6q0.net mailto: 小さな処理なんだからマクロ化かインライン展開させようよ。 []
[ここ壊れてます]

756 名前:デフォルトの名無しさん [2018/03/31(土) 20:48:52.36 ID:D1vbg0pQ0.net]
自己解決しました。
std::swapでいけました。

757 名前:デフォルトの名無しさん [2018/03/31(土) 22:01:45.45 ID:qrmwmyS1a.net]
C++だったのか



758 名前:デフォルトの名無しさん [2018/03/31(土) 23:33:07.89 .net]
CもC++も似たようなもんじゃろ
平気平気

759 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 07:51:13.57 ID:lL1ejtJI0.net]
>>727
安全じゃない
restrictはコンパイラに対してx != yを前提とする最適化を許可するだけで
constのように違反を摘発する機能はない
int *a, *b;
scanf("%p%p", &a, &b); //実行してみなきゃわからんものを
xorSwap(a, b); //翻訳時に摘発できるわけねえだろ

760 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 08:04:57.85 ID:WPbk7cUz0.net]
「そういう仕様だから呼ぶ側は正しく使えよ」ってことだろ

761 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 09:55:10.10 ID:9jhZxGTr0.net]
「トラブルの原因になるものは絶対に使ってはいけない団 登場!!
scanfソード!!GOTO砲発射!!!」

762 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 09:59:07.54 ID:gIH0xNQX0.net]
ネタにまじれ...

763 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 10:19:28.40 ID:vuzriXcqd.net]
>>733
これほんとくそ
せめてFortran のfcheckみたいな実行時診断機能をコンパイラにつければ良いのに

764 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 10:26:27.50 ID:lL1ejtJI0.net]
hell fuck no!!
絶対いらん

765 名前:デフォルトの名無しさん [2018/04/01(日) 10:28:45.90 ID:GlQ4MmqmF.net]
>>735
C使うなって話になるわな

766 名前:デフォルトの名無しさん [2018/04/01(日) 10:52:33.52 .net]
>>737
つ assert

767 名前:デフォルトの名無しさん [2018/04/01(日) 14:22:10.86 ID:QnlJ7EAH0.net]
指導者は、ある程度育った選手に対して解決策を提示しない。
選手が自ら考えるように導く。
考える力に重点を置く。
選手が考えた解決策に、(少しでも)可能性がある場合、次のように対応する。

1.状況を整理する

2.挑戦してもらう

指導者の解決策を、押しつける・誘導するのは愚の骨頂。
選手の思考力の成長を阻害する。
言葉の上だけ、コーチング技法を使用する指導者は不要。
意識・無意識にかかわらず、非言語で指導者自身の方向に誘導するようであれば、指導者は迷惑な存在。
選手は指導者の気持ちを敏感に読み取り、指導者の思う解決策に乗っていく。
指導者が無自覚に自分の気持ち・感情を表出しているのであれば、指導者は害毒でしかない。
(但し、指導者としての方向を持っていなければダメ。)



768 名前:デフォルトの名無しさん [2018/04/01(日) 14:30:49.47 ID:QnlJ7EAH0.net]
*“オレは知っている。選手は判っていない。”と思い込んでいる。
→「私が中心」(選手は不在)
→選手の変化が見えない。

*“あれもこれも伝えたい”と思っている。
→指導者の自己の存在証明をしたいだけ。
→選手の依存過多を喜んでいる。
→指導者の中身の無さを補償している。
→自分の目標と選手の目標がズレていることに気がつかない。
→成長のゴール設定が不明確。あるいは勝つことだけに目標を設定している。
(勝負までに何をやりきったらよいのか/何を発揮したら勝利か/勝った後どうするか、指導者ならば明確にもっておきたい。)
→優先順序が整理できていない。
→現状の把握すらできなくなっている。

*“言わないと相手のためにならない。”と信じている。
→根本的に選手を信頼していない。
→“指導”という名の自己

769 名前:梠ォ。

*“今、言わないといけない。”という焦り
→指導計画の無さが露呈しただけ。
→日頃の怠慢のツケ。
(直ちに言わないければいけないことはあるが、そう頻発しない。)

*“自分の経験なら、具体的に伝えることができる”という自分の過去へのこだわり
→指導者自身の学習がストップしている。
→偏狭さの表出
→選手より、常に自分が上。
→自分のコピー以外のモデルがない。
→指導者自身の目標が低い。(悪い意味で、すぐに満足する。)
→自分の小ささに築かない哀れさ

解決策を提示する悪癖からの脱却は、選手を信頼することがキー。選手を信頼できるかどうかは、選手の問題ではなく、指導者自身の課題。
[]
[ここ壊れてます]

770 名前:デフォルトの名無しさん [2018/04/01(日) 14:31:46.69 ID:QnlJ7EAH0.net]
選手がある程度育っているにもかかわらず、解決策ばかりを提示してしまうとしたら……

指導者のサービス精神が、少々裏目に出ただけ。
やり方を、知らなかっただけ。
視線が、近い所に留まり過ぎただけ。

選手の考えと主体性に賭ければ良い。
「質問するだけ」「聞くだけ」で十分。他愛ない会話で済むかもしれない。

指導者としてのやり方を、ちょっと広げるだけ。

選手と一緒に成長すればよい。

771 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 15:09:50.39 ID:EJgAiXSoa.net]
長い3行で

772 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 20:22:49.32 ID:FPe02iov0.net]
c疲れる高級言語が良いよぉ

773 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 22:01:04.55 ID:Xs8rW8os0.net]
破門

774 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 22:02:31.16 ID:kjSWJmola.net]
C++よりは65536倍マシ

775 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 02:42:44.32 ID:335Cb1sP0.net]
C++の方が全然マシ。
C++で要求されるのは記憶力だが、Cはマジで実力が試される。

776 名前:デフォルトの名無しさん [2018/04/02(月) 04:26:42.33 ID:3ewhMOuha.net]
>>747
ほんそれ

>>748
C++はごちゃごちゃしすぎ
Objective-Cの方が良い

777 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 09:23:05.49 ID:tz45bHyl0.net]
そんな君達に、C#



778 名前:デフォルトの名無しさん [2018/04/02(月) 11:32:18.94 ID:IY8Jb2oda.net]
C#は何かとっても嫌な予感がするのでパス

779 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 11:37:34.04 ID:GUMdRf0S0.net]
組込みならverilog

780 名前:デフォルトの名無しさん [2018/04/02(月) 14:47:00.17 ID:r6uHUG7/0.net]
C#はないわ

781 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 15:09:03.97 ID:+y0jgVYha.net]
C, C# はアリ
C++みたいな汚い言語はナシ

782 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 15:11:32.65 ID:hvd81u+Da.net]
Cライクな言語なら何でもこいだわ
(知らないのは新たに勉強せざるを得ないが)

1人で書くのは大抵C++

783 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 16:32:47.98 ID:gGbBmtO80.net]
C、C#、Goが好き

784 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 17:06:51.28 ID:E1iWIfmB0.net]
C++17かなり良くなってきたね
C++98での苦行が嘘のよう

785 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 17:07:57.92 ID:NgLCsptVp.net]
c++はテンプレート辺りから怪しくなって来た。

786 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 17:35:10.19 ID:Hj+Kq4pv0.net]
オールアセンブラで組んでた人が楽になるための言語。

787 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 17:46:48.43 ID:E1iWIfmB0.net]
STLを初めて見た頃は違和感ありありだったけど
それはテンプレートを使うからでも、見た目が悪いからでもなく、中途半端だったから
C++11から以後、そのへんの補完工事が始まったのがありがたい



788 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 17:52:55.07 ID:NgLCsptVp.net]
結局テンプレートって、型をオブジェクト型に統一してしまえばいいだけで、あんまり意味無いよな。

789 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 18:00:26.75 ID:E1iWIfmB0.net]
Smalltalk風の継承モデルねえ
正直、俺も昔は盲信したことがあって今は恥じている
テンプレートならコンパイラがやってくれることを
自前でdynami

790 名前:c_castなんかやだよ
nested_exceptionとかは仕方ないけどね
[]
[ここ壊れてます]

791 名前:デフォルトの名無しさん [2018/04/02(月) 19:47:22.47 ID:yiGPtloFa.net]
>>761
Javaなんかは内部でそうやって実現してるな。

792 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 20:33:40.82 ID:EffuLSkeM.net]
よそでやれ

793 名前:デフォルトの名無しさん [2018/04/02(月) 22:15:26.67 .net]
>>761
そこはVariant型やろ

794 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 22:26:42.69 ID:pVqQLih90.net]
printfの出力をマルチスレッドで行うことはできないのでしょうか

素人的には
スレッド1 printf("abcde");
スレッド2 printf("12345");

出力 a1b23c4de5

となることを考えたのですが、WinAPIのCreateThreadやC++のThreadでも、CPU使用率はシングルスレッドのときと変わらず、出力もこのようにはなりませんでした

Windows VS2017

795 名前:片山博文MZ mailto:sage [2018/04/02(月) 22:29:05.76 ID:APYGmZJZd.net]
>>766
排他制御されていないCRTを探す方が難しい。

796 名前:デフォルトの名無しさん [2018/04/02(月) 23:11:46.09 ID:ifLgvYYR0.net]
はじめまして。
大学でプログラミング関係の授業を受けるのですが、それの復習、応用などをrpgツクールmvですることは可能でしょうか?

ちょこっと調べた感じプログラミング要素もあるらしいのですが、c言語はあんまり使わないとかなんとかという記事も見られました。

どうせなら楽しく勉強したいので、ゲームを作りながら学習できないもんですかね...。

797 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:22:32.32 ID:k8TtPNR/d.net]
>>768
プログラミングを授業で受けるなら、ゲーム制作はツクールMVよりUnityのがいいと思うけど授業内容は進むに連れてむしろツクールMVやUnityのようなのの中身についてになるから復習がてらにはしにくい
モチベ維持にはとても良いと思います



798 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:33:36.58 ID:pVqQLih90.net]
>>767
ありがとうございます

799 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:41:50.21 ID:335Cb1sP0.net]
バリアント型は何ビットなん?って話になるのがC++。

800 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 04:15:40.51 ID:j/8PevsK0.net]
>>766
目的はどっち??

文字単位で混ぜたい?
高速化したい?

801 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 08:36:15.92 ID:cWIVDHVHa.net]
O_DSYNCって使ったことある?

802 名前:デフォルトの名無しさん [2018/04/03(火) 09:03:18.53 ID:Lqpq4yV4a.net]
ない

803 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 17:34:38.59 ID:IRh8xu7sd.net]
ないな

804 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 20:54:03.05 ID:TORpZXhc0.net]
ないっす
JFS用?

805 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 00:52:55.41 ID:Ssb/YhXn0.net]
同期I/Oだそうだ
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/open.2.html

806 名前:デフォルトの名無しさん [2018/04/04(水) 02:32:43.57 ID:h2UR4/YMa.net]
でっていう

807 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 11:23:02.06 ID:yTnGZmgQp.net]
同期ってのは、処理が終わるまで帰って来ないって話だ。
下手すっと何秒も帰って来ないから、そこら中が固まる。



808 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 15:35:44.60 ID:kI4IT8Vg0.net]
同期というより直列だね

809 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:14:25.41 ID:rBWooG9b0.net]
動悸I/O

810 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:17:17.94 ID:iV3ol7kd0.net]
同期/非同期 ブロッキング/ノンブロッキング

811 名前:デフォルトの名無しさん [2018/04/04(水) 22:06:43.40 .net]
同期の絆

812 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 22:10:42.29 ID:tDZB1fULM.net]
貴様と俺とは同期のファイル

813 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 08:17:37.54 ID:zuAyx/JN0.net]
数値計算手法の一つである陰解法って陽解法とどう違うんだろう?まったく理解が進まん
陰解法での次ステップの状態を計算するには陽解法と違って次ステップでの値が含まれてる関係で行列の方程式?を解かなければならないらしいけど、その方程式で導く値がどう答えに結びついていくのかがわからない
(最終的にはC言語のプログラムに落とし込みたい。陽解法のプログラムはもう作ってあるんで多少なりとも流用できると楽なんだけどそう簡単にはいかんよね?)

814 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 12:42:25.18 ID:O2KVno4c0.net]
平たく言うと
100秒後の状態を得るのに途中の一つずつを100個全部求めなきゃいけないのが陽解法
10秒ごとの計算を10回、でいいのが陰解法

陰解法はかんたんに未来を得られる分、行列計算が面倒になる

815 名前:デフォルトの名無しさん [2018/04/05(木) 23:51:02.65 ID:Un4TbCjZ0.net]
これなんですけど、printfのとこの"%2c"で、
" %2c"
" %2c "
など空白を入れることで配列が変わってくるのですが、前に空白と後ろに空白のときの規則性がわかりません。教えて欲しいです。

https://i.imgur.com/QI86not.jpg

816 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 00:10:45.42 ID:alNyslUNM.net]
もっと具体的に

817 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 05:54:14.00 ID:dKA/BnpB0.net]
>>787
質問にある“配列”てのは、画面に出力される結果のことかな?
表示される文字やその順番は同じだけど、文字の間の空白の数が違う、と。

プログラミング界隈では“配列”って言葉は特定の意味を持った専門用語だし、
問題のプログラムはその意味での配列を使ってないから軽く混乱を招くかと。



818 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 07:48:11.30 ID:mjL64jtF0.net]
配置とかか?自分の試した結果で理解しろよ

819 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 13:51:14.96 ID:Bd1xKzd/0.net]
表示系の2バイト文字の扱い云々な気がする。

820 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 15:06:53.28 ID:bMqQKRLP0.net]
>>787
%2c の部分は右詰めで幅2文字の指定になるが c なので常に1文字の指定になり
引数の int 型数値は unsigned char に変換されて出力される。つまり %2c の部分
だけでスペース1文字と引数で与えた1文字が出力される。(もちろん端末によっては
引数の値によって1文字の扱いにならないかも知れないが、その辺は説明が長く
なるので省略)。

後はその前後にスペースを付け加えて出すかだけの問題。そのプログラムには
改行がないので全て繋がって出力される。(1回も改行を出力しないままプログラムが
終わるので実行環境によっては出力の後に続けてシェルのプロンプトが出るかも
知れない)。

821 名前:デフォルトの名無しさん [2018/04/07(土) 15:19:36.81 ID:vVe4gpjb0.net]
判りにくい日本語だな
判るものもかえって判らなくなるくらいひどい

822 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 16:08:23.10 ID:bMqQKRLP0.net]
じゃあ分かり易く書き換えてくれ。

823 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 19:07:44.77 ID:jn0jIz6fd.net]
まず、%2cは必ず「ブランク*」(*は任意の1文字)になる。
その上で整形用のブランクはprintfを分けて、
ブランク以外の文字とかで試してみろ。

824 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 21:25:17.61 ID:I35+hkP6a.net]
>>745
アセンブラからきたわいCの楽さに歓喜

825 名前:デフォルトの名無しさん [2018/04/07(土) 21:49:40.43 .net]
Visual BasicとかPerlとかから入った自分としては、
Cのほうが簡単に書ける場面もあれば
VBSやVBAがいい場面もあればPerlがいい場面もあって
要はどの言語でも楽しく書ければそれでええやん

826 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 06:56:45.64 ID:oETTfDn00.net]
ワイはbash + sed + cの三点セットや

827 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 19:49:06.28 ID:bmGQy2qQ ]
[ここ壊れてます]



828 名前:0.net mailto: >>787
こんなの試してみたら分かったりしない?(\nは改行)
printf("%c\n",'a');
printf("%1c\n",'a');
printf("%2c\n",'a');
printf("%3c\n",'a');
printf("%4c\n",'a');
printf("%5c\n",'a');
[]
[ここ壊れてます]

829 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:21:36.79 ID:qxDYyi6TH.net]
一切出てこない質問者の相手はいらんだろ

830 名前:デフォルトの名無しさん [2018/04/15(日) 15:16:14.29 ID:iG9vZW44M.net]
上の写真を見る限りjが増えたタイミングでprintfで改行コード入れてるっぽいけどそれならiのforが終わったタイミングで改行コード入れれば動くんじゃないですか?
なぜiが8までしか回さないのかわからないですが…

831 名前:デフォルトの名無しさん [2018/04/15(日) 15:38:09.01 ID:MyboI2lC0.net]
しょーもない質問ですいません

vs2017で勉強してるど素人なんですが
コードをミスして修正しようとすると文字が上書きされて
文字を挿入できないん時があるんですが、
なぜでしょうか?

832 名前:デフォルトの名無しさん [2018/04/15(日) 15:41:00.10 .net]
>>802
https://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5%E3%82%AD%E3%83%BC

833 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 15:42:04.62 ID:CIuag2/D0.net]
>>802
こっちで聞けよ

Visual Studio 2017 Part5
mevius.5ch.net/test/read.cgi/tech/1520336504/

834 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 15:50:05.64 ID:ASLFteC6a.net]
上書きモードに誤爆したろ

835 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 15:54:21.86 ID:0gUBaoqj0.net]
>>801
すまんが、どこに改行コードがあるのか、iが8までとは何の事か、
俺にはさっぱり読み取れねぇ
お前とは見えてる世界が違うようだ

836 名前:デフォルトの名無しさん [2018/04/15(日) 16:17:29.71 .net]
>>806
この程度読み取れないようじゃエスパーに向いてないよ

> どこに改行コードがあるのか
予想回答「int c=‘ ‘;」って改行コードですよね?
iが増えるたびに改行コードをprintしたいんですよね?

> iが8までとは何の事か
予想回答:すみません、jの間違いです!

837 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 16:20:53.00 ID:LLURRdNlM.net]
改行は'¥n'
' 'はスペース



838 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 16:30:24.50 ID:bKUHpU4ed.net]
>>806
大丈夫
おれもさっぱりわからん

839 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 19:02:55.57 ID:+NxoeMlk0.net]
C言語でのステートマシンの設計や、上手なコーディングについて
体系的に学べるお勧めの書籍やサイト教えて下さい。

840 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 19:08:40.56 ID:+NxoeMlk0.net]
連投で申し訳ないけど
この辺の技術ってC++勉強した方が身に付くのかな?

841 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 19:10:47.07 ID:7zIgNBcs0.net]
Cはライブラリが貧弱でほとんど自作しないといけない。
C++はその辺多少マシ。Boostとかあるし。

842 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 19:14:55.01 ID:7zIgNBcs0.net]
至極の名言教えてやるぜ。受け売りだけどな。
コードを効率的にしたり、最強の最適化だったりするそれが一番効くのは書かないことだ。
書くと何らかの負荷になる、コードもグチャグチャになる。
必要なことだけ書いて後は流れに任せるのが上達の道。

843 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 19:47:03.66 ID:aZbHy3F9d.net]
C++って言うほどライブラリ充実してるか?

844 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 19:59:11.25 ID:+NxoeMlk0.net]
うーん・・・人によって考え方が違うから正解なんてないし
2chのこのレスだけでは具体的な提示とか難しいよね

本当に必要な処理だけ書いてたら関数長くなって
見通し悪くなったりメンテし辛くなったりしない?

845 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 20:03:21.51 ID:IgQGrpHk0.net]
>>810
ない。
>>811
関係ない。

君は本質的な「プログラミングの腕前」を上達させる為に、体系的に学べる物を探しているんだろ?
ならそれは言語には全く関係ないことは分かるだろ。

846 名前:

そして、そんな物は今はない。なぜならプログラミングは今もまだ発展途上だから。
そもそも歴史が浅い。プログラミングには100年ほどの歴史しかないし、
プログラミング作法が学問として成立してからは50年ほどしか経ってない。
だから現在でも試行錯誤中なんだよ。
それは今更C#/C++/Javaがラムダを採用したことからも分かるだろ。
ラムダ自体はLispの昔からあった。
そしてこれらの言語はそれを知っていて不採用としたわけだが、
今更の方向転換=間違いを認めた、ということなんだよ。
まだそれくらいあやふやなものだって事。

勿論各自が「オレオレ流スーパーハッカー道」を上梓することは出来るのだけど、
実際そういう奴はいないようだ。

とはいえ、結果的に全ての言語が似たり寄ったりになってきているから、
これは成熟してきていることを意味する。
となると、今後は体系化されていくだろうし、そういうサイトや本が現れてきてもおかしくない。
今は>>813みたいな、一言集みたいなのしかないね。
https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/
[]
[ここ壊れてます]

847 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 20:18:14.92 ID:CIuag2/D0.net]
>>814
C に比べたら...
って話だろ



848 名前: mailto:sage [2018/04/15(日) 20:22:19.20 ID:vjxfJMST0.net]
>>816
C++/C#/Java のラムダ式ってラムダ式じゃないと表現できない「何か」を表現する、というよりは、シンタックスシュガーとしてのラムダ式であることが不満です

849 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 20:26:36.28 ID:IgQGrpHk0.net]
>>818
> ラムダ式じゃないと表現できない「何か」
とは何?
俺の理解では、これは存在しない。ラムダ無しでもチューリング完全だったろ。

850 名前: mailto:sage [2018/04/15(日) 20:31:05.37 ID:vjxfJMST0.net]
>>819
Y コンビネーターとか、どうですか?

851 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 20:33:38.79 ID:8Bp5iafSd.net]
>>818
ラムダ式じゃないと表現できない何かって何さ
定義した所の環境を使った第一級オブジェクトなプロシージャではだめなのか?

852 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 20:35:56.05 ID:IgQGrpHk0.net]
>>820
すまんが俺はLisp使いではないから、それについては知らない。
ただ、それが本当に役に立つものなら、C++は数年後に採用するだろうね。

853 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 21:29:24.63 ID:7zIgNBcs0.net]
>>815
一応言っておくと関数分割も必要なら必要なこととして処理されるべき。
ちなみに関数分割したほうが限度はあるけどキャッシュに乗って早くなる。

854 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 23:30:02.09 ID:sXJBpbWg0.net]
この板でチューリング完全て言葉をみるとは思わなかった

855 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 23:59:29.91 ID:L6Qt+I9Ha.net]
だいたい、どう抽象化するのがええのかって話でチューリング完全は関係ないからねえ。
前提としてはそうでないとあかんかも知れんけど。

856 名前:デフォルトの名無しさん mailto:sage [2018/04/16(月) 00:40:26.76 ID:qQ0bjYjD0.net]
抽象化については「オブジェクト指向」で今のところ決着してるだろ。
これを否定する見解や言語は無いと思うが。

857 名前:デフォルトの名無しさん mailto:sage [2018/04/16(月) 04:32:33.72 ID:94linQhp0.net]
コンビネータでも実装するか?



858 名前:デフォルトの名無しさん mailto:sage [2018/04/16(月) 23:38:04.25 ID:qQ0bjYjD0.net]
>>820
>>827
お前ら知ってるのならそのメリットを(出来れば具体的に)書いてみてくれないか?
一応Wiki読んだが、
> 明示的に再帰を書かずに再帰を実現する為に用いる事ができる。
> なお、一般にそういった言語では普通に再帰が使えるので、
> プログラミングにおいてはパズル的なテクニック以上の意味は無い。
> https://ja.wikipedia.org/wiki/%E4%B8%8D%E5%8B%95%E7%82%B9%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8

859 名前:D%E3%83%BC%E3%82%BF
なら、いらねえし、採用されることはないと思うが。
[]
[ここ壊れてます]

860 名前: mailto:sage [2018/04/17(火) 00:06:31.67 ID:gWiyCqxa0.net]
>>828
その wikipedia の解説はちょっと本質からはずれている気がする
「明示的な識別子を含まないで再帰関数が記述できる」くらいか

ラムダ表現を採用している、というのなら不動点コンビネータくらいは記述できないといけないのではないか?
いいかえれば不動点コンビネータを表現できないラムダ表現は「何か大事な部分が欠けている」

ラムダ表現は理論的なモデル(計算可能性を論じるなど)として考案されたもので、実用とか効率とかからは遠く離れている
ラムダ表現を売りにする言語(lisp とか)ならともかく、C#/C++/Java のような実用・効率を求める言語で単に「ラムダ表現ができる」「簡潔だ」くらいの理由で採用されるのは、無目的に言語仕様を拡張しているという理由で個人的には不満

さらにはラムダ表現を老害フィルタがわりに使う者もいたりするが、そういうのには賛同しがたい

861 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 01:21:31.43 ID:RhwG6Rqia.net]
javascriptだとアリって気がするよな。
なぜかは知らんが。まあlisp感あるからか。

862 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 08:33:39.92 ID:dXM64r3I0.net]
javascriptにはなぜかオブジェクト指向が無いからな
コンビネータはC++には早晩実装されそうな気がする

863 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 09:37:19.33 ID:tZLDyJo/0.net]
C++やJavaはクラスベースのオブジェクト指向言語
JavaScriptはプロトタイプベースのオブジェクト指向言語

864 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 23:42:23.84 ID:Yk52Q7IR0.net]
>>829
今の仕様で不動点コンビネータが記述できるのかどうかは俺には分からないが、
焦点はその先で、「記述できたら何がうれしいのだ?」なのだと思うよ。
実用言語で重視されるのは当然「実用性」であって、「学術性」ではない。

逆に、実用性皆無なら、当該部分が削除された状態で採用されるべきだ。
例えばC#は意図的にインラインアセンブラを禁止している。
ヘルスバーグのインタビューがググッても出てこないのだが、心は、
「C#のコードならメンテできます」の為の必要知識量を抑えること、だった。
これは長期的に要員確保の難易度を下げ、結果的にメンテ性を上げる。
これも実用言語では重要だよ。
アメリカでPythonを使うのも、Python自体が良い言語だと思っている奴は皆無で、
「Pythonならみんな読めるし書けるから」だからね。
そのコードが10年以上使われることが分かっているのなら、
10年後に要員確保できない可能性がある言語を選択するのは間違いだし。

Cは、(時代的に無理ではあったが)何でもありの状態で、
文法は極めて簡単だが問題は中で何をやっているかで、読んでみなければ分からない。
「Cのコードならメンテできます」とか、簡単に言うのは無理だろ。
C#はイミフなコード構成(大体はCでも警告が出るもの)も禁止されており、
一応、エンジニアが「C#ならメンテできます」と言えることを目指している。
(上手く行っているとは言い難い部分もあるが)
酷い話だが、Javaは10年間全く進歩しないことによってこれを達成してしまっているし。

だから、話を戻すと、
実用言語においては実用性のある機能は取り入れるべきだが、
実用性がない機能は捨てられるべきなんだよ。
(大は小を兼ねる、多めに採用しとけ、ではない。同様に無駄に構文糖が多いのも問題)
今回ラムダが矮小化されて取り込まれているということなら、
取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
勿論今後覆る可能性もあるけどね。

865 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 23:55:44.13 ID:zXGef27d0.net]
そういうのは自宅の壁に

866 名前: mailto:sage [2018/04/18(水) 00:05:44.11 ID:0XfxQo2f0.net]
>>833
>取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
受動的な態度であればそうなるが、あえて私の感覚を述べるとすれば、

ラムダ式を C++/C#/Java(特にC++)に取り込む価値があったのか?
という点、C++ のラムダ式は operator()() で実現できるし、operator()() のシンタックスシュガーと考えてよい

シンタックスシュガーを全否定するわけではない
「ラムダ式」という偉大な名前に反して、実際にできることは一般的な「ラムダ式」のカバーする領域よりも狭くなっているのを「不満」と感じているだけなのかもしれない

867 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 01:03:16.68 ID:fAoQEHU80.net]
>>835
> C++ のラムダ式は operator()() で実現できるし、operator()() のシンタックスシュガーと考えてよい
一応それが禿がラムダをC++に採用するのに反対している理由だったと聞いたが、
結果的には折れたんだろ。
昨今は「出来ること」よりも「ソースコードの見やすさ」が重視されているし、妥当だと思うが。
比較すると、

1. そもそも operator()()(ファンクタ)では関数に見えない。これが最大のガン。
2. C/C++は階層記述能力が無く、関数内関数が出来ない。このため、
 局所的に関数ポインタを使いたいだけの場合でも上位階層に関数を記述するしかなく、
 結果的にその関数は他からも見える(使える)状態になってしまう。
 匿名関数であれば、そこでしか使っていない事を文法的に保証できる。
3. ファンクタだとインスタンス変数は必ずコピーすることになる。
 ラムダだとおそらく直接掴める場合もあり、この場合はケチれる。
 (ただしこれは実装による)

だから関数内関数(クロージャ付き、最低限その階層の変数は見えるもの=GCC拡張の仕様でいい)があれば、
1,2,3とも達成できるし、要らなかったかな、とも思う。
というか、C/C++とも、関数内関数(階層)は無しで押し切るつもりかよー、とは思う。
ラムダよりこっちの方が必要な気がするのだが。



868 名前:デフォルトの名無しさん [2018/04/18(水) 02:30:28.15 ID:vVNlUpo0d.net]
Cとシェルスクリプトだけで生きていきたいんですが食べていけますか?
またそういった分野らOSSコミッター以外でありますでしょうか?

869 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 02:40:14.81 ID:whM0Cl8U0.net]
あるとするなら組込系かな
回路図とアセンブラは出来るの?

870 名前:デフォルトの名無しさん [2018/04/18(水) 03:38:30.78 ID:5PSc4Ve9d.net]
>>838
ありがとうございます

871 名前:デフォルトの名無しさん [2018/04/18(水) 06:50:02.81 .net]
今どき組み込み系もPythonできなきゃやっていけない時代よ

872 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 06:58:40.17 ID:JUjvxXNW0.net]
組み込みは圧倒的にC言語が多い

873 名前:デフォルトの名無しさん [2018/04/18(水) 07:26:37.24 .net]
>>841
ツール類は一昔前ならPerl/Ruby/TTL(TeraTerm)/VBA、今はPythonが必須だよ

874 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 07:55:12.06 ID:JUjvxXNW0.net]
ツール類ってなんだよ

組み込みの話をしてるの
機器内部のファームウェア

875 名前:デフォルトの名無しさん [2018/04/18(水) 08:03:28.70 .net]
>>843
組み込み系開発者がCソースだけいじってればいいと思ってんのか

876 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 08:06:09.63 ID:JUjvxXNW0.net]
大部分の組み込みだとYES
他の言語など使わない

877 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 08:07:13.14 ID:JUjvxXNW0.net]
C言語以外が必要なのは大規模な物だけ



878 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 08:15:48.27 ID:Acg84ZKa0.net]
>>837
そういうことはプログラム板ではなくプログラマ板で聞いてこい

879 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 08:30:18.84 ID:8g/N/Bw3a.net]
>>844
いい。

880 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 08:59:26.18 ID:whM0Cl8U0.net]
最悪、シーケンサ(PC)でラダー図とアセンブラ触ってりゃ
行けるでしょ。
MELSEC-iQ-RとかはC言語で書く(OSはVxWorks)

ま所詮は他人の人生である

881 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 09:49:03.96 ID:bX/oR0u10.net]
Cでさえオーバースペックでアセンブラという場合まである

882 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 09:57:01.68 ID:8LhMtFC1d.net]
アセンブラでさえオーバースペックでバイナリエディタという場合まである

883 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 10:32:00.37 ID:MgMoBevw0.net]
>>851
参考までにアセンブラがオーバースペックなマイコン(SoC)って何処の製品か教えて

884 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 10:40:41.42 ID:0P72JrSeM.net]
あるとすればIMSAIとかだろうけど、流石にネタだろ

885 名前:デフォルトの名無しさん [2018/04/18(水) 11:16:51.20 ID:gg2GabAwa.net]
プログラムを動かすボードが貧弱でも開発は豪華なPCでやるんだから最低でもアセンブラ使えるようにはするだろう。
作ったばかりのCPUで他のCPUとの互換性が全くなくアセンブラもまだない、なんていう特殊な状況でない限りは。

886 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 11:45:29.90 ID:8g/N/Bw3a.net]
マウンティング頑張れ

887 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 12:36:20.65 ID:8LhMtFC1d.net]
ごめんなさい
ネタです



888 名前:デフォルトの名無しさん [2018/04/18(水) 12:57:38.66 ID:gg2GabAwa.net]
mount /dev/sda

889 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 23:26:56.70 ID:1I0zrtwW0.net]
組込み屋だけど会社によって状況違うんだなとしみじみ

890 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 23:58:14.05 ID:BI6oaZDa0.net]
この頃は組み込みって言っても Linux が動いちゃうような小さいボードあるしな。
SDメモリに平気で何Gもデータ入れちゃったりもできるし。なんとういか、時代は変わったよな。
昔は2KBと4KBのROMに詰め込むためにビット単位で削っていたもんな。

891 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 00:35:24.22 ID:q2wFspbLM.net]
組み込みって昔から小っちゃいのから馬鹿デッカいものまであるから一括りにするのが間違い

892 名前:850 mailto:sage [2018/04/19(木) 05:33:01.08 ID:IwtdBTTY0.net]
なんかネタレスで返されてるな
とあるLEDアレイの案件では並列に重きを置き
CPUあたりの処理能力は思いっきり低い
なんてのがあったんだが

893 名前:デフォルトの名無しさん [2018/04/19(木) 12:39:01.79 ID:oHD1faOFa.net]
あまりに面倒ならハードウェアで回路追加して解決

894 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 22:41:42.50 ID:Uac+F3+Td.net]
あんまりそれすると、またハード屋に小言言われるぞ。

895 名前:デフォルトの名無しさん [2018/04/19(木) 23:07:31.74 ID:p3OUOmjs0.net]
int a[] = {0,1,2,3};
char b =0;
scanf("%d",&b);

printf("%d",a[b]);
知恵袋でこんな質問があって俺も不思議に思って持ってきたんだけど
色んな数字入れても0になるとか書かれてたんだけどこれどうなってるの?

896 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 23:17:20.36 ID:/9NYPZwG0.net]
>>864
自分で試してみた?

897 名前:デフォルトの名無しさん [2018/04/19(木) 23:21:55.11 ID:p3OUOmjs0.net]
>>865
100入れてみたら3が返ってきたw



898 名前: mailto:sage [2018/04/19(木) 23:22:54.38 ID:b+0fRBYw0.net]
>>864
>色んな数字入れても0になるとか
ならない
https://ideone.com/Itq7px

899 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 23:23:39.27 ID:XF7JHHHf0.net]
エンディアンによるような気もするがー

%d は int の大きさを持った器のポインタを要求してるのに
char の大きさの器を渡してるから どうなろうがしったこっちゃない鼻から悪魔系の動作

900 名前:デフォルトの名無しさん [2018/04/19(木) 23:29:53.26 ID:p3OUOmjs0.net]
これがエラーにならず動いてしまうという悪魔のCの動作か

901 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 23:30:32.30 ID:/9NYPZwG0.net]
char b[4] = {0};
scanf("%d",&b[0]);
printf("%d %d %d %d\n",b[0],b[1],b[2],b[3]);

これをVCとGCCで試してみた
結果は配列先頭要素に代入され、残りは0のままだった

902 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 23:31:48.87 ID:x2EYL8xQ0.net]
>>867
bの型がcharなのが

903 名前:フなんだからそこは間違えるなよ []
[ここ壊れてます]

904 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 23:33:18.23 ID:XF7JHHHf0.net]
>>870
入力で負の値を渡すと…

905 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 23:33:42.76 ID:lwH23MPfa.net]
intだからな

906 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 23:36:41.07 ID:/9NYPZwG0.net]
なるほど、入力値が小さいときは、
後ろの配列が変わってないかのように見えるだけって事か

907 名前: mailto:sage [2018/04/19(木) 23:38:11.10 ID:b+0fRBYw0.net]
>>868
char 配列の大きさを表す変数が int であっても、あるいはそうでなくても、それは関係ないのでは?



908 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 23:38:53.72 ID:XF7JHHHf0.net]
>>874
そそ 0でフィルしてるから問題ないようにみえるけど、
0 以外でフィルしてやると副作用おこしてるのがわかるよ

909 名前: mailto:sage [2018/04/19(木) 23:39:18.81 ID:b+0fRBYw0.net]
>>871
あ!

910 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 23:40:18.78 ID:XF7JHHHf0.net]
>>875
printf ではなく scanf のフォーマットでの %d 指定に char 変数のポインタを渡してる話よ?

911 名前: mailto:sage [2018/04/19(木) 23:46:08.02 ID:b+0fRBYw0.net]
>>878
やっと気が付いた…
>>877

912 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 00:50:00.05 ID:G/kLZxdya.net]
警告って出ないもん?

913 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 01:57:12.33 ID:wjKqEKEv0.net]
関数の引数はスタックサイズに丸められるよ

914 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 02:04:42.67 ID:G/kLZxdya.net]
ポインタだしなあ

915 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 06:13:59.91 ID:EDYH6GYd0.net]
>>880
GCC だと -Wall を指定すれば警告が出るね。

書式 %d に対して *char の引数 [-Wformat]
配列の添字が char 型 [-Wchar-subscripts]

916 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 06:51:33.68 ID:9tWrHk9l0.net]
>>881
この1行にアホが詰まってる
会話の内容も実際の動作も用語もわかってないっていう

917 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 07:58:37.73 ID:eEDtLY6e0.net]
アホな点をいくつ見つけられるかで
各自のアホ度を測定できるな



918 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 09:31:45.52 ID:OLFb+zqBd.net]
それがデバッグと言われる行為だろ?

919 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 10:21:13.71 ID:xd9k5+f1M.net]
脳がwormhole だらけなんでしょ

920 名前:デフォルトの名無しさん [2018/04/20(金) 14:21:22.42 ID:33OB1hDw0.net]
char *line;
scanf("%s", &line);//dogが入る
if(line=="dog")
{
printf("dogですよ");
}
これってなんでdogと合わないん?

921 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 14:26:31.37 ID:UQRLXIIQ0.net]
>>888
scanf で受けとる変数をchar型の配列にしましょう

922 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 14:30:58.92 ID:OLFb+zqBd.net]
>>888
line=="dog" という式は strcmp関数にしましょう

923 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 14:31:04.87 ID:JZAZQDTS0.net]
文字列の比較は == ではなく、strcmp 等の比較関数をつかいましょう

924 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 15:15:01.27 ID:uy6ZTS8Ap.net]
アドレスの一致を比較してるからじゃね?

925 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 15:17:13.71 ID:RdXrGqPUd.net]
C言語はプロ向きの言語
「とりあえず動かしてみる」
とかいう用途には向かない
入門書とかできちんと勉強しよう

926 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 15:20:02.90 ID:JZAZQDTS0.net]
>char *line;
>scanf("%s", &line);
この2行に色々な罠や誤りが仕込まれてるな。
Cで躓くであろう、ポインタと配列、文字と文字列周辺


(セキュリティや入力のオーバーランは考慮せず簡便なので書くと)
char line[256];
scanf("%s", line);

927 名前:デフォルトの名無しさん [2018/04/20(金) 17:03:59.70 ID:OzeM0EoQa.net]
>>888
どこから突っ込んでいいかわからない。
今は出先でスマホから見てるので書くのが面倒だが、多分明日までには他の人が沢山ツッコミを入れている事だろう。



928 名前:片山博文MZ mailto:sage [2018/04/20(金) 17:21:20.04 ID:PF4NyNv9d.net]
>>894
char line[64];
size_t len;
fgets(line, sizeof(line), stdin);
len = strlen(line);
if (len && line[len - 1] == '\n') line[len - 1] = 0;
if(strcmp(line, "dog") == 0)
{
printf("dogですよ\n");
}

929 名前:片山博文MZ mailto:sage [2018/04/20(金) 17:28:09.55 ID:PF4NyNv9d.net]
char line[64];
fgets(line, sizeof(line), stdin);
strtok(line, "\n");
if(strcmp(line, "dog") == 0)
{
printf("dogですよ\n");
}

930 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 18:00:02.24 ID:eEDtLY6e0.net]
char line[256];
scanf("%255s", line);

scanfを使えないアホが
scanfをdisるのを見る度に
嘲笑するのも勿体ない気分になる

931 名前:デフォルトの名無しさん [2018/04/20(金) 18:02:13.70 ID:rQE2Qud50.net]
これでもし入力条件が不明の長さで受け取らなきゃ行けなかったらどうすればいい?

932 名前: mailto:sage [2018/04/20(金) 18:08:34.85 ID:RP9oZBhW0.net]
>>898
それ 256 という定数を変えるとき、いちいちレテラルの中を手書きで直すんですか?
いけてないですね…

933 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 18:10:03.88 ID:wjKqEKEv0.net]
*ぐらい使えよ

934 名前:片山博文MZ mailto:sage [2018/04/20(金) 18:10:57.05 ID:PF4NyNv9d.net]
std::getline
一文字ずつ読み込む

935 名前:デフォルトの名無しさん [2018/04/20(金) 18:40:42.36 ID:dyY1ZlsFa.net]
gccならgetline()

936 名前:片山博文MZ mailto:sage [2018/04/20(金) 18:44:42.17 ID:PF4NyNv9d.net]
入力バッファにちょっとゴミが混じるだけでscanfは使えなくなる。
そんな役立たずは、業務では使うべきではない。使うなら、fgetsとsscanfの方がいい。
我が国のコンピューター教育は残念ながら、業務では役に立たない言語を教えている。

937 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 19:13:13.94 ID:2JMfU3z40.net]
むしろ余程プアな環境でない限り、業務でC言語は使うべきではない



938 名前: mailto:sage [2018/04/20(金) 19:54:49.61 ID:RP9oZBhW0.net]
>>905
かわりに何を使えばいいですか?

939 名前:デフォルトの名無しさん [2018/04/20(金) 19:55:43.39 .net]
>>906
Python

940 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 20:49:36.44 ID:9tWrHk9l0.net]
業務でこそC言語

941 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 20:55:22.00 ID:18ECoYTh0.net]
COBOLかVB

942 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 21:04:02.42 ID:qDS4Ifrca.net]
>>905
心配しなくても使われる所は限られてるよ。
OSそのものとかデバイスドライバとかな。
それも減りつつあるんじゃないかな。
まあしかし過去の資産がありすぎて捨てられないって感じか。
うまいこと互換性を保ちつつ次の段階へ行ければいいんだろうけどね。

943 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 21:08:14.53 ID:9tWrHk9l0.net]
MCUはほとんどがC言語
たまにC++
たまにアセンブラ

944 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 22:17:00.80 ID:DDZisBasM.net]
>>899
その受け取ったデータをどう使うかによる

945 名前:デフォルトの名無しさん [2018/04/21(土) 00:13:25.41 ID:Oxipuy330.net]
>>901
scanf() の * は・・・

946 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 03:47:37.05 ID:Ynju1Yzg.net]
hallo warld

947 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 03:55:01.78 ID:nJ9/ilUK0.net]
>>914
ばかに見えるから止めた方がいいと思うよ



948 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 06:07:34.81 ID:pETeS31u0.net]
こちらでどうぞ
https://mevius.5ch.net/test/read.cgi/tech/1427572389/

949 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 06:24:19.45 ID:pETeS31u0.net]
>>904
898の例でゴミが問題になるのか?

950 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 15:05:42.05 ID:WYiI1Hbl0.net]
入力された文字列(例えば10文字程度)を、
数字だけ*に変えるプログラムを作りたいと思ってるんですが、
どうもうまく行きません
どなたか簡単なコード書いてくれませんか

951 名前:デフォルトの名無しさん [2018/04/21(土) 15:31:16.54 .net]
>>918
数字は半角の「*」でいいの?
それとも全角の「*」?
それによって処理の複雑さが変わる

952 名前:デフォルトの名無しさん [2018/04/21(土) 15:32:52.02 .net]
ああ、あと入力された文字列にはマルチバイト文字が含まれるのか、1バイト文字なのかも明確にしとかないとな

953 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 15:33:17.96 ID:VeVDn114a.net]
>>918
お前さんが書いたコードをあげれば誰か添削くらいはしてくれるかもよ

954 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 15:33:18.46 ID:WYiI1Hbl0.net]
>>919
すいません、半角でお願いします

955 名前:デフォルトの名無しさん [2018/04/21(土) 15:45:37.64 .net]
入力部分には>>897を使わせてもらった

#include <stdio.h>
#include <string.h>

void mask_num(char *s)
{
char *c;
for (c = &s[0]; *c != '¥0'; c++)
{
if (*c > '0' && *c < '9') *c = '*';
}
}

int main()
{
char line[64];
fgets(line, sizeof(line), stdin);
strtok(line, "¥n");
mask_num(line);
printf("%s¥n", line);
return 0;
}

956 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 15:47:16.12 ID:FmyBtpFH0.net]
プログラムのコードの話してるのに全角は無いわ。
データの話ならむしろ文字コードとかまで考えなきゃならんがな。

957 名前:デフォルトの名無しさん [2018/04/21(土) 15:49:15.15 .net]
>>923
>if (*c > '0' && *c < '9') *c = '*';

if (*c >= '0' && *c <= '9') *c = '*';

だった



958 名前:デフォルトの名無しさん [2018/04/21(土) 15:51:21.42 .net]
>>918
を見て「*」を「*」に勝手に読みかえるようじゃ
受け入れ試験時で不具合が見つかって大幅手戻りが発生するぞ

959 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 16:07:01.70 ID:a/Xqi2VF0.net]
void mask_num(char *s)
{
 while (*s) {
  if (isdigit(*s)) *s = '*';
  s++;
 }
}

960 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 16:17:22.90 ID:Oxipuy330.net]
入力して変換して出力するだけでいいならこうかな。

#include <stdio.h>
#include <ctype.h>

int main()
{
 int c;

 while ((c = getchar()) != EOF)
  if (isdigit(c))
   putchar('*');
  else
   putchar(c);

 return 0;
}

961 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 17:23:05.22 ID:2bKzbSLP0.net]
>>926
しかしながら「数字を*に変えるプログラム組んどきましたよ」と言って
本当にASCIIの '*' でなくマルチバイトの "*" に変える処理だったら
発注側から「普通全角はないだろ、お前さん常識ないのか?」と
発言者にとって都合の良い「普通」「常識」の波状攻撃を受けるハメに。

その意味で >>919>>920 の態度は正しい。
世の中には自分のミスを認めたくない人もいるけどな。

962 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 18:01:42.48 ID:bgp2zzOH0.net]
今回の発注者は>>918だから注意喚起として * じゃないの?
って確認するのは正しいけど全角半角言うならむしろ数字と言うのが半角だけでいいのかを確認した方がいいかと
下手すると 壱萬弐仟参佰四拾伍 が変換されてないじゃないかとか言われるかも知れんし

963 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 18:05:08.78 ID:uE8GRdCpd.net]
>>924
プログラムのコードの話なんてどこに書いてある?

964 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 03:46:05.48 ID:jlGSrB9uM.net]
>>930
Unicode正規化も確認しないとな

965 名前:918 mailto:sage [2018/04/22(日) 06:45:30.49 ID:5hVlVxZz0.net]
すいません遅れました
添削おねがいします

#include <stdio.h>
void num_star(char *p)
{
while (*p)
if(*p >= '0' && *p <= '9')
*p++ = '*';
}
int main(void)
{
char ch[10];
printf("文字列を入力せよ\n");
scanf("&s",

966 名前:ch);
num_star(ch);
printf("%s\n", ch);

return 0;
}
[]
[ここ壊れてます]

967 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 06:59:36.50 ID:cFbiqY2T0.net]
>>933
scanfに"&s"は間違い"%9s"だ
if(*p >= '0' && *p <= '9')は標準関数でif(isdigit(*p))とできるのに勿体ない
p++はifの条件が偽のときに実行されなくなっている



968 名前:デフォルトの名無しさん [2018/04/22(日) 13:47:43.90 ID:J/MYnpG10.net]
数字以外の文字だけ入力されたら無限ループになって終わらないね。

969 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 13:59:28.07 ID:1MVwzpIAd.net]
>>934
関数コールは遅いしサイズも増える
標準ライブラリを全てリンクしてるかわからない

わざわざC言語を使う場面ていうのは
そういうことも多少は心配した方が良いこともある

970 名前: mailto:sage [2018/04/22(日) 14:04:21.13 ID:bjDlbJPk0.net]
>>936
>標準ライブラリを全てリンクしてるかわからない
必要なものをリンクすればいいし、必要なものをリンクするように出来ているのでは?

971 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 14:13:43.70 ID:1MVwzpIAd.net]
リンクしない選択をすることもあるのだよ
色々な理由で

特にわざわざC言語を使うような環境では

972 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 14:18:09.76 ID:1MVwzpIAd.net]
なにが「勿体ない」だか

973 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 14:38:15.31 ID:cFbiqY2T0.net]
>>936
> 標準ライブラリを全てリンクしてるかわからない
リンク? インプリメントの間違いだろ
何をリンクして何をリンクしないのかは
組み込みでは厳密に指定し結果も確認する

isdigitにはマクロバージョンもある
おそらくお前さんはそんなん知らんと言うだろうな

総じて、現物のコンパイラを細かくいじるということをせずに
上っ面だけ使って満足している手合いか

974 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 14:40:37.67 ID:RLohAeVua.net]
strip

975 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 14:46:38.59 ID:RDdUHzj0a.net]
>>936
そういう話は最低限の基本ができてから教えれば十分なことで、始めたばかりの初心者にあれこれ言ってかえって混乱させるのは良くないかと。

976 名前:デフォルトの名無しさん [2018/04/22(日) 15:27:22.65 .net]
>>940
isdigitの指す文字が’0’〜’9’だけとも限らないからな(事実上は問題にならないとしても)

977 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 15:45:55.57 ID:RLohAeVua.net]
digitの定義はlocaleに依存するので制御可能。
基本的にはisdigitが妥当だろうね。
自前でテーブル定義してもよい。大小で判断するのは危険だね。



978 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 16:35:36.81 ID:H/AU6k7y0.net]
>>944
> 大小で判断するのは危険だね。
危険だと思う理由は?
'0'〜'9' が連続してることは規格で保証されてる

979 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 17:32:41.34 ID:cFbiqY2T0.net]
>>945
その規格とやらの文書番号は?
つまり何の規格かと

980 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 17:59:29.92 ID:rTRuhMGrM.net]
>>946
X 3010:2003 (ISO/IEC 9899:1999)
5.2.1文字集合
ソース基本文字集合及び実行基本文字集合の双方において,10 進数字に関する上の並びにおいて,0 の右側に並んでいる各文字の値は,一つ左側にある文字の値に比べ 1 だけ大きくなければならない。

981 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 18:31:37.06 ID:cFbiqY2T0.net]
>>947
あれ本当だ
ということはCの翻訳環境でも実行環境でも
採用を禁じられる文字集合規格がありうるってことか
なんか出過ぎた決めごとだな

982 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 18:58:05.22 ID:H/AU6k7y0.net]
>>948
> 採用を禁じられる文字集合規格
そんなもの見たことない

983 名前: mailto:sage [2018/04/22(日) 19:16:00.91 ID:bjDlbJPk0.net]
>>949
「0 の右側に並んでいる各文字の値は,一つ左側にある文字の値に比べ 1 だけ大きく」なっていない文字集合は思いつけませんね…
ftp%3A//ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00037.pdf

984 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 19:35:50.81 ID:cFbiqY2T0.net]
>>949
いや俺も見たことないけどさ
それはASCII系が絶対的とでも言うほどの多数派で
遙かに遅れたEBCDICもそうなっているからだろ
科学的にそう規定すべき合理性あるか?

985 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 19:36:32.85 ID:YjWQK7FP0.net]
[[['[] ]]] { {] ]][ '[][][] [][] [][][]  [] '[] []

986 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 20:06:54.82 ID:H/AU6k7y0.net]
>>951
自分の回りにないならあるものを前提にするのはあたりまえ
そもそも連続してないことにメリットがあるとは思えないし

987 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 20:06:57.91 ID:TH0cxcHD0.net]
>>951
BCD計算が出来なくなるからCOBOLが動かなくなるわな
CPUの時点で排除しているのは6502系ぐらいじゃね?



988 名前:デフォルトの名無しさん [2018/04/22(日) 20:20:55.56 ID:d95yXvpO0.net]
再帰関数を使って次の問題の会を出すプログラム書いたんですけど、なんかミスばっかでダメなので、だれかどういうプログラム書けばいいのか教えてもらえませんか?

九つの椅子が
○○○
○○○
○○○
のように並んでおり、はじめに数字の書いた札を持った何人かが座っているとする


○○5
○9○
12○

さらに他にも何人か数字の書いた札を持った人がいて、その人たちが空いてる席に順番に座って行くとする
全員座った後、それぞれの点数を数えるとする、ただし点数は前後左右の人が持ってる札の数字を足し算する


○○5
○9○
12○
で 3さん→4さん→7さん とすわり
○75
493
12○
となった、9の点数は7+4+3+2

この時、それぞれが自分の点数を常に最大になるように座ったら最終的にはどういう配置になるでしょう?ただし
・それぞれは座る順番を知っている
・その次に座る人達がどこに座るかまで考慮に入れて考える
・自分以外の点数は気にしない
・誰もいないところは0
・次の人が何箇所か座る候補があり絞れない時は常に予想図の最小値をとって考えるとする、つまり極端にリスクを恐れる

989 名前:デフォルトの名無しさん [2018/04/22(日) 20:22:39.58 ID:d95yXvpO0.net]
質問てここでいいですか?

990 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 20:32:24.58 ID:H/AU6k7y0.net]
>>954
この2行にアホが詰まってる
会話の内容も実際の動作も用語もわかってないっていう

991 名前:デフォルトの名無しさん [2018/04/22(日) 20:58:30.62 ID:kdP+cJ/x0.net]
>>955
面白そうなテーマだから、お題スレに投げてみるのがいいのではないかと誘導

プログラミングのお題スレ Part10
mevius.2ch.net/test/read.cgi/tech/1514772904/

992 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:11:08.54 ID:1MVwzpIAd.net]
>>942
いやだから、
>>934の真ん中がいらないっていう話

993 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:17:34.90 ID:1MVwzpIAd.net]
>>940
どこからつっこんでいいのやら

994 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:18:50.30 ID:1MVwzpIAd.net]
>>957
どこかで見たセリフ

995 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:19:12.17 ID:T8nVVEKh0.net]
形式
#include <ctype.h>

int isalnum(int c);
int isalpha(int c);
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);

機能説明

上記にリストされている関数はすべて ctype.h 内で宣言されており、指定されている整数値をテストします。
c で適切な整数値は、unsigned char または EOF として表現可能なものです。

デフォルトで、これらの関数は ctype.h がインクルード されている場合はマクロとして定義されます。
パフォーマンスを良くするために、関数形式よりマクロ形式を使うのが適切です。

996 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:26:12.24 ID:20oer2uOa.net]
>>962
そういえばそれって locale 考慮すると言っときながら unsigned char でしか
判定してくれないというなんとも言えない仕様だよな。マルチバイトの判定が
できない。まあそんな拡張したら面倒な感じはするのでそのままでもいいが。

997 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:28:15.82 ID:cFbiqY2T0.net]
ですます調ということは、JISソースではないな



998 名前:デフォルトの名無しさん [2018/04/22(日) 21:29:41.48 .net]
>>963
つ iswdigit

999 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:31:58.01 ID:cFbiqY2T0.net]
C99以後はinlineがあるんだがID:1MVwzpIAdはC89前提?それともK&Rかね

1000 名前:デフォルトの名無しさん [2018/04/22(日) 21:33:04.20 ID:1srXW/Rwd.net]
>>958
ありがとうございます、そっち行きます

1001 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:33:34.88 ID:1MVwzpIAd.net]
前提など不要

1002 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:34:00.82 ID:cFbiqY2T0.net]
>>953
数字が連続していないことにメリットがあるとは思えない
という思考回路では
英字が連続していないことにメリットがあるとは思えるのか?
具体的にどんな?

1003 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:34:42.49 ID:1MVwzpIAd.net]
どんな環境かわからないんだからどんな環境でも動くコードが良い

1004 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:36:00.62 ID:cFbiqY2T0.net]
レスが長文化してるやつは効いてる効いてるwだが
逆もまた真なり
情報量が非常に乏しいレスしかしなくなったやつw

1005 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:42:55.38 ID:1MVwzpIAd.net]
ねえねえ
なにが「勿体ない」の?

1006 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:18:10.29 ID:H/AU6k7y0.net]
>>969
> 英字が連続していないことにメリットがあるとは思えるのか?
おそらくEBCDICのことを言ってるんだろうけどあれはパンチカードフォーマットから変換しやすくするような体系になってるだけの話

1007 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:19:34.67 ID:TH0cxcHD0.net]
>>961
何ら有益な情報を書けない。只の荒らしでしょ。



1008 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:35:44.05 ID:OBDOSUSoa.net]
今更で悪いけど、文字はまず集合として扱うのが筋だからさ。
大小比較したいなら、一度数値に直せばいいじゃんと思うよ。これについては規格上の正しさという話ではなくて、抽象的な意味にこだわらないと保守性下がるというのが実感としてあるから言うとるのよ。

1009 名前: mailto:sage [2018/04/22(日) 22:36:07.06 ID:bjDlbJPk0.net]
「こういう仕様になっているのはこういう理由だからだ」という設問
あるいは「もしこういう仕様だったらこういう問題があっただろう」という反実仮想的設問には意味があると思っているから、そういう話で盛り上がる今はありがたいと思っています

1010 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:40:48.03 ID:T8nVVEKh0.net]
>>964
https://www.ibm.com/support/knowledgecenter/ja/SSLTBW_2.2.0/com.ibm.zos.v2r2.bpxbd00/isalnum.htm

1011 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:43:35.78 ID:bBx4tH0Hd.net]
>>974
元はおれの文
1行でアホが詰まってると、本気で感心した時に書いた

1012 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:07:06.08 ID:TH0cxcHD0.net]
>>978
最近のBOTは優秀になったのね。CNTKか何かか?

1013 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:08:02.95 ID:H/AU6k7y0.net]
>>974
関係ないことを堂々と書く奴に言われてもな w

1014 名前:デフォルトの名無しさん [2018/04/22(日) 23:55:50.76 ID:J/MYnpG10.net]
数字なのに1足されてないというと、Unicodeでの漢数字かな。

1015 名前:デフォルトの名無しさん [2018/04/27(金) 11:38:54.60 ID:OGjTaEqd0.net]
うむ

1016 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 21:59:14.79 ID:4vnB69wL0.net]
[[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ]

1017 名前:デフォルトの名無しさん [2018/04/29(日) 17:07:26.07 ID:X9PCZykj0.net]
O(n)のin-placeなセレクティングネットワーク
O(n)のin-placeなマージアルゴリズム
O(n)のin-placeなマージングネットワーク
O(n log n)の(実用的な)ソーティングネットワーク
は存在しますか?
ここらへんがあると並列ソートがかなり捗るんだけど。



1018 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 20:34:40.36 ID:My7UiDyw0.net]
[[[ []]]]*[[ [][] ][] } } {} [[[

1019 名前:デフォルトの名無しさん [2018/04/29(日) 20:42:41.53 ID:0iHuAZG8M.net]
こんにちは

c言語で質問です
写真の通りのプログラミングを書きたいのですができません
*などで四角形は作れるのでそれを応用するのだと思うのですが、2段目以降を違うのにするやり方がわかりません

どなたかお願いします。
https://i.imgur.com/09EKR0n.jpg

1020 名前:片山博文MZ mailto:sage [2018/04/29(日) 20:45:11.87 ID:PLWQQmF3d.net]
>>986
数学で数列は習ったかい? 一般式で表してそれを二重のforループにするだけだ。

1021 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 21:16:42.92 ID:gpEFuXsMa.net]
二重ループよりも二個関数作った方が将来のためになるかもな

1022 名前:片山博文MZ mailto:sage [2018/04/29(日) 22:14:07.36 ID:PLWQQmF3d.net]
数列を極めるには、差分法が役に立つが、今ではかなりマイ

1023 名前:iーな数学分野になっている。 []
[ここ壊れてます]

1024 名前:片山博文MZ mailto:sage [2018/04/29(日) 22:20:26.21 ID:PLWQQmF3d.net]
差分法は、微分法の兄弟みたいなもので、差分法の極限をとると微分法になる。

1025 名前: mailto:sage [2018/04/29(日) 22:21:28.34 ID:20g7tnTI0.net]
>>989
漸化式がマイナーだって?

1026 名前:片山博文MZ mailto:sage [2018/04/29(日) 22:27:28.61 ID:PLWQQmF3d.net]
差分法は、研究分野としてはマイナー。差分方程式は地球上ではもうだれも研究していないのではないか。

1027 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 01:05:41.13 ID:Knbm+hrA0.net]
https://ja.wikipedia.org/wiki/%E5%B7%AE%E5%88%86%E6%B3%95



1028 名前:デフォルトの名無しさん [2018/04/30(月) 01:30:28.58 .net]
別に小難しい数学の知識とかいらなくね?

a = 6, b = 4だとして、

ary = malloc(sizeof(int) * a * b);
for (i = 0; i < a; i++) {
 for (j = 0; j < b; j++) {
  v1 = (i == 0 || j == 0) ? 0 : ary[i - 1][j - 1];
  v2 = (i == 0) ? 0 : ary[i - 1][j];
  v3 = (j == 0) ? 0 : ary[i][j - 1];
  ary[i][j] = v1 + v2 + v3;
 }
}

1029 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 01:58:30.12 ID:njDF1dun0.net]
いやいや、教科書的にはこうでしょ
for (i = 1; i <= b; i++) {
 for (j = 1; j <= a; j++) {
  v = j;
  for (k = 1; k < i; k++) {
   v = v * j;
  }
  printf("%d, ", v);
 }
 puts("");
}

1030 名前:デフォルトの名無しさん [2018/04/30(月) 02:09:48.77 .net]
>>994はなんか勘違いしてたw
b<=2までしか合わんかったわw

1031 名前:デフォルトの名無しさん [2018/04/30(月) 02:31:14.12 ID:XX4FB8lc0.net]
>>986
2番目の値だけ抜き出すと 2, 4, 8, 16 となっているので、一つ前の値を2倍にしている。
3番目の値だけ抜き出すと 3, 9, 27, 81 なのでひとつ前の値を3倍にしている。
4, 5, 6 番目も同様。

ということは、a の入力の個数だけ要素を入れられる配列を作っておいて、その各要素に
1 〜 a の値を一つづつ入れておいて、その後 b の回数だけループしながら出力して
掛け算してを繰り返せばいい。プログラムにするとこうなる。

https://paiza.io/projects/EIvP4vpEHRgWnXFlka5Vjg

1032 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 02:48:27.09 ID:XX4FB8lc0.net]
配列でひとつ前の値を保持したくない場合はpow()使って計算するという方法もある。
https://paiza.io/projects/_L8doEZwIG6g0imlZM_Fug
pow()使いたくない場合はループして掛け算を自分でやる。

1033 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 02:58:01.24 ID:Xjg4h3Qz0.net]
別に小難しい数学の知識はいらんけど>>994が頭悪いのを晒したのはイタかったな
普通なら恥ずかし過ぎてもうこのスレ覗くこと出来ないレベル

1034 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 03:04:53.67 ID:Knbm+hrA0.net]
別に小難しい数学の知識はいらんし質問の趣旨からも逸れるが>>992が頭悪いのを晒したかった

1035 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 69日 4時間 50分 55秒

1036 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef