- 1 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 10:40:30.02 ID:PyoNDBFu0.net]
- !extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください) C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C17 www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf C11 www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C23 最新ドラフト https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 159 https://mevius.5ch.net/test/read.cgi/tech/1659623547/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 341 名前:デフォルトの名無しさん mailto:sage [2023/02/05(日) 22:53:24.77 ID:Xg2vo6vu0.net]
- char x=1
char y=2 上記のchar型変数のxとyを比較する際に関して質問させていただきます。 上記の変数に格納されている変数を比較する際はif文で問題ありませんか? if(x==y) それともmemcmpやstrcmpで比較するべきでしょうか?
- 342 名前:デフォルトの名無しさん (ワッチョイ 3f7c-4osW) mailto:sage [2023/02/05(日) 23:00:33.79 ID:N1CrWJVM0.net]
- 問題無いよ
memcmp()は使えても strcmp()は流石に無いわw メモリにどう格納されているかなんてエンディアンやらで違うし memcmp()はcharの配列での比較に普通は使うだろう
- 343 名前:デフォルトの名無しさん (ワッチョイ 7f63-4osW) mailto:sage [2023/02/05(日) 23:06:30.35 ID:aB7ZC8J00.net]
- strcmp使うと、yもxも文字列である想定で比較するから
メモリー上の配置次第で変な結果が出る可能性がある
- 344 名前:デフォルトの名無しさん (ワッチョイ cfab-wNzk) mailto:sage [2023/02/05(日) 23:20:42.10 ID:Xg2vo6vu0.net]
- ご教授いただきありがとうございました。
- 345 名前:デフォルトの名無しさん mailto:sage [2023/02/05(日) 23:41:43.70 ID:7rKpaUoS0.net]
- >>338
charは(ちょっと変わってるけど)整数型なので、当然数値比較でok 何か付け加えるとすれば、整数型だからといってcharと他の整数型と比較/同値テストを行うのは、Cの自明でない算術変換が落とし穴になりがちなので避けた方が賢明 >>339 !memcmp(&a, &b, 1) 的な? その発想に感心 何の役に立つのか俺には思い付けないけど、面白いからヨシ!
- 346 名前:デフォルトの名無しさん mailto:sage [2023/02/05(日) 23:51:31.50 ID:N1CrWJVM0.net]
- >>342
memcmp()も良く考えてみたらどうメモリに格納されているか分からないから使えないよね intelなどのリトルエンディアンならそれで比較可能だろうけど 今ビッグエンディアンのマシンがあるのか分からないけど、昔あったpowerpcなんかはビッグエンディアンだったね
- 347 名前:デフォルトの名無しさん mailto:sage [2023/02/05(日) 23:59:54.19 ID:7rKpaUoS0.net]
- >>343
aがアドレスの取れない変数なら&aの時点で自明にダメだね 上で提示した比較バイト数が1の特殊ケースに限っては単なるunsigned charとしての比較だから、エンディアンネスは関係ないのでは
- 348 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 00:52:52.00 ID:X/MVAKzo0.net]
- >>343
ビッグエンディアンだろうとリトルエンディアンだろうと1バイトのcharの比較に影響しないんじゃね?
- 349 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 00:53:39.48 ID:X/MVAKzo0.net]
- ちんこ被った
- 350 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 01:11:21.66 ID:yYJiH9Ihd.net]
- 複数byteから成るwordには並べ方の任意性はあるけど、単一byteからなるword内にbyteを並べる方法は一通りしかない、って事だね
- 351 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 01:12:53.01 ID:7Y+tRqBu0.net]
- >>345
charで例えばchar a = 1でリトルエンディアンだとmemcmp()で1バイト比較でも大丈夫だろうけど ビッグエンディアンの場合、プロセッサの制約次第だろうけど必ずしも 01と1バイトのみでデータが入っているとは限らず 00 00 00 01みたいに4バイトで格納されてるかも知れないから どんなマシンでも動くという前提で作るなら辞めておいた方が無難かなという風に思った
- 352 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 01:14:24.69 ID:7Y+tRqBu0.net]
- 実際の所は分からないけど、char同士の比較は単にa == bで問題無いし
蛇足だったな・・・
- 353 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 01:38:26.50 ID:LWec8Zrw0.net]
- エンディアンなんか関係ねーだろアホか
- 354 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 02:12:44.74 ID:Dw7rHwSO0.net]
- >>348
処理系/マシンが同一なら問題無い Cのcharをuint_32相当として保持するマシンが仮に有ったとして、Cがcharのつもりで書き出し/読み返しを行い、unsigned char(とその配列)として比較する限りはCから違いは見えないよ だって高級言語だもの() バイナリデータのやり取り、詰め物あり、他言語プロセスとの共有メモリなら適切に変換するルーチンが必要だけど、それはCに限らず全てのプログラムに当てはまる事
- 355 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 02:49:15.07 ID:Dw7rHwSO0.net]
- 32bit以下のデータを全て32bit値として扱うマシンを想定してるのかな?
それは最小アドレス単位、cで言うCHAR_BITSが32のマシンと言い換えられるよね CHAR_BITSが何bitであろうが、cから見ればsizeof(char)==1である事には変わりがない と言えば分かりやすいだろうか
- 356 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 06:44:27.92 ID:xFQJ/1dca.net]
- >>340
変な結果どころかそもそも&xや&yの次のアドレスを読もうとすることあるから未定義動作だし
- 357 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 08:54:18.69 ID:KoRl3hvD0.net]
- おそらく初心者であろう質問を深読みして暇をつぶすお前らに乾杯
- 358 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 11:15:52.75 ID:t0SsOUx4a.net]
- MISRA-C 2004 の本がある。
MISRA-Cをやっていないと、2004の潜在型/2012の本質型が分からないはず int 型未満の型を、4バイトに変換してから、元に戻す仕組み。 CPU には、int型未満のレジスタが無いので、使わない部分をマスクするしかない こういう内部の仕組みは、C/C++ の本には載っていない こういう変換を知っている香具師は、 むしろ初心者じゃなくて、かなり研究している香具師 普通の香具師は、こういう仕組みを知っているはずがないから。 C/C++の本には載っていないはず
- 359 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 11:23:50.95 ID:KoRl3hvD0.net]
- そりゃ絶対とは言わないけどさ、詳しいのにあんな質問の仕方ならかなりひねくれてるわ
- 360 名前:デフォルトの名無しさん [2023/02/06(月) 15:55:39.76 ID:Pcm2g4vQ0.net]
- 1 byte は 8 bit とは限らないってことだな。
1 octet は 8 bit 固定と決まっているが。
- 361 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 17:55:31.90 ID:KoRl3hvD0.net]
- いやでもマシンによってバイトのサイズは変わるかもしれないけど、
少なくともC言語のchar型は8ビットでしょ?違うの?
- 362 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cf3e-F1up) mailto:sage [2023/02/06(月) 18:07:02.20 ID:uFl4yuTv0.net]
- >>358
ちがうよ。 CHAR_BIT がなんのためにあると思ってんの。
- 363 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 18:13:28.24 ID:X/MVAKzo0.net]
- >>355
そういうCPUの制約を気にしなくていいのが高級言語だと思うけど違うんかね? そういうCPU相手のコンパイラならマスクするなり0埋めするなりしてるんじゃない? 想定外のCPU相手なら起こりえるかもしれないけど、それはしょうがないよね
- 364 名前:デフォルトの名無しさん (スップ Sddf-WS7p) [2023/02/06(月) 18:36:57.74 ID:Zh5BYfUjd.net]
- Cは処理系定義が至る所にあるからな
intが2byteの環境もあるし x86(x64)しか使わないと決め打ちできりゃいいけど しょぼいCPU向けのしょぼいコンパイラのこと考えなきゃいけないとかなり面倒くさい
- 365 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 19:21:28.86 ID:zDYmZQkKa.net]
- >>360
> そういうCPUの制約を気にしなくていいのが高級言語だと思うけど違うんかね? そういう人はJavaなりC#なりを使えばいいと思うよ
- 366 名前:はちみつ餃子 mailto:sage [2023/02/06(月) 20:45:09.59 ID:uFl4yuTv0.net]
- >>360
システム記述言語として使うことが想定内にあるので高級言語の中では低級なほう。 半世紀前に登場した時点では高級だったかもしれんがそのときの事情を引きずり続けてたら高級になりきれないのもしょうがない。
- 367 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 21:35:59.24 ID:T2gDixZS0.net]
- 中の下あたり?
- 368 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 21:49:50.35 ID:LM+FnE4L0.net]
- >>363
> 半世紀前に登場した時点では高級だったかもしれんが 当時すでにPL/1とかPascalとかあったのに何を言ってるんだか
- 369 名前:デフォルトの名無しさん mailto:sage [2023/02/07(火) 04:23:47.45 ID:pZBVLYXq0.net]
- 高級比べなんてウルトラしょーもない比較してんの初めて見たwww
- 370 名前:デフォルトの名無しさん (JP 0Hbf-lzBW) mailto:sage [2023/02/07(火) 08:13:05.30 ID:RNTsodhvH.net]
- 格納サイズが1octetな符号無し/符号付きの型
- 371 名前:デフォルトの名無しさん (JP 0Hbf-lzBW) mailto:sage [2023/02/07(火) 08:15:09.01 ID:RNTsodhvH.net]
- >>349
等しいかどうかだけなら そこまで神経質にならなくても良いんじゃなかろうかと
- 372 名前:デフォルトの名無しさん mailto:sage [2023/02/07(火) 08:51:22.05 ID:X22gDAEx0.net]
- >>355
> CPU には、int型未満のレジスタが無いので x86にはAL/AHレジスタがあるぞ
- 373 名前:デフォルトの名無しさん mailto:sage [2023/02/07(火) 09:53:53.00 ID:DwAJ4k/cd.net]
- >>359
つまりcharはマシンのバイトなのでmemcmpではバイトオーダーなんて気にしなくていいって話だろ
- 374 名前:デフォルトの名無しさん mailto:sage [2023/02/07(火) 13:10:28.46 ID:3xIDowU30.net]
- >>359
すまん、8ビット固定じゃなくて8ビット以上なんだな >>370 char型は1バイト固定だからエンディアンは関係ないよな
- 375 名前:デフォルトの名無しさん [2023/02/07(火) 17:31:48.89 ID:I8JfvgXk0.net]
- >>360
Cは色々なCPUで使える使いやすいアセンブラのようなものと思った方が良い。 色々な工夫をしてあたかも高級言語であるかのように見える状態にまで持ち込んだのだ。
- 376 名前:デフォルトの名無しさん mailto:sage [2023/02/07(火) 17:35:32.67 ID:oBLl+Yrl0.net]
- 高級アセンブラ
- 377 名前:デフォルトの名無しさん [2023/02/07(火) 19:08:47.78 ID:0Pg2e1tw0.net]
- 名誉高級言語
- 378 名前:デフォルトの名無しさん [2023/02/08(水) 04:20:38.79 ID:sW7k1sH00.net]
- なるほどね
- 379 名前:デフォルトの名無しさん (ワッチョイ 4f10-4osW) mailto:sage [2023/02/08(水) 08:22:16.03 ID:iOvDDO6c0.net]
- UNIXの解説書に「UNIX OSの移植の為にC言語を開発した」的なことが書かれてたなぁ。
- 380 名前:デフォルトの名無しさん (ワッチョイ 3fad-2sfl) [2023/02/08(水) 23:07:52.52 ID:tLamaggb0.net]
- そうそう。
- 381 名前:デフォルトの名無しさん (ワッチョイ 7fcf-EOzK) mailto:sage [2023/02/08(水) 23:18:47.11 ID:IYzO9kXQ0.net]
- へーそうなんだ
デニスリッチーはそうは思ってないみたいだけど
- 382 名前:デフォルトの名無しさん (ワッチョイ 7f63-4osW) mailto:sage [2023/02/09(木) 00:04:11.97 ID:u6buTta60.net]
- デニスリッチーはゲームで遊びたくてC言語を開発した
- 383 名前:デフォルトの名無しさん mailto:sage [2023/02/09(木) 06:30:22.83 ID:p7lzjqd+M.net]
- >>376
その辺りの経緯はK&R本でも触れられてなかったっけ?
- 384 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 01:35:56.41 ID:y8U7vNGg0.net]
- 形にしたのはken, dmrだろうけど、個人的にはCの精神とCS的な観点はbwkに帰したい
the practice of programing, software tools (in pascal), the awk programing language、あたりからプロファイリング ライターとしてずば抜けている、unixには特に拘らず節操無し、スタイルに拘りが強い、形式言語大好き しかしk&rではセカンドオーサーだから、著作自体にどれだけ影響力あったかは?(言及あったっけ) まあk&rは汚いコードを得意気に語るあたり、dmr成分多めな気がするなあ…
- 385 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 01:48:35.12 ID:y8U7vNGg0.net]
- いやk&rなんだからファーストオーサーはkernighanだわ、素で間違えた
- 386 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 02:07:22.27 ID:y8U7vNGg0.net]
- 俺はunix系ソフトウェアツールはベル研が出してるカジュアル資料で学んだ口だけど、手元の年季入ってくたびれたハードコピーを漁るとほぼbwk著
https://i.imgur.com/n9gVQZ0.jpg 著者は意識してなかったけど、マジ伝道師
- 387 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 03:12:31.86 ID:3+3yiXM/0.net]
- 書籍はともかくC自体誰が作ったってデニスリッチーが1人で作ったんだろうが
なんで勝手にカーニハンに帰してんだよおまえの所業は朝鮮人よりヒドイだろw
- 388 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 04:20:45.54 ID:y8U7vNGg0.net]
- >>384
日本PC市場でのPC向けUNIX(minix/bsd/linux)本格参戦前(90'後半?)の情報源は、彼に負う所が多かったろう、というバイアスはまあある 大学にでも所属してないとUNIX機に触る機会も無かったし、俺のように>>383のようなサンプルを見て仕様を想像しただろうアマチュア実装(だからmanページは付いてない)が流布していた なぜCはUNIX文化から脱却できたのか?という(>>376を念頭に置いた)考察ね bwkの著作にはCP/M, DOS, winプログラ厶の例が多いし、アーキテクチャ/OS間のポータビリティやアルファベット圏以外への進出を真剣に考えてた稀有な人なのは間違いなかろう wchar_tやらを提唱したのはその一例だし、それを許容するためにC独特の柔軟な(=至る所unspecified)型/メモリモデルを拵えたわけで あれ、今やどっちも負債になってるような… いや理論上頑張ればできるけど、まあ頑張ればね?
- 389 名前:デフォルトの名無しさん (テテンテンテン MM4f-1Ruw) mailto:sage [2023/02/10(金) 08:31:20.48 ID:/qli6azmM.net]
- カーニハンのWikipediaのページには、C言語の作成には全く関わっていないと書いてあるぞ
出典のインタビューにはリッチーが全部やったと言っている
- 390 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 09:02:55.50 ID:IpbZJCuZd.net]
- なんか色々とそれっぽい事書いてるけど中身全くないのにワロタ
- 391 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 13:52:45.73 ID:u7Z+Ehuld.net]
- >>386
だからライターとしての側面を述べてるのだが
- 392 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 14:24:32.35 ID:rXRs96IF0.net]
- 相方を持ち上げるために
自分は何もしてないよと謙るやつか
- 393 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 15:51:06.46 ID:OadphjcVd.net]
- wchar_tに関しては確か日本語版2版に訳者がKへ吹き込んだ、という記述が
いわゆるK&R以外にもK&R共著は無数にあるが、おおむねイノベーターがRでKがまとめ役というのは察せられるし、そこに異論はないよ
- 394 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 20:03:34.55 ID:fRHwVLJ/a.net]
- おまえらかっこつけんな
- 395 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 21:52:14.87 ID:CNGsx6gg0.net]
- LISPに言ってくれ
- 396 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 22:02:01.42 ID:ECKlR5jZ0.net]
- カギ括弧で勘弁
- 397 名前:デフォルトの名無しさん (ワッチョイ 8a79-sQVB) mailto:sage [2023/02/11(土) 17:33:42.32 ID:naJCJAFi0.net]
- 名前カニチャーハンぽいから仕事してなくても許すね
- 398 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 21:40:15.68 ID:vXc/j/A4d.net]
- >>394
はずしたなw
- 399 名前:デフォルトの名無しさん [2023/02/12(日) 05:54:47.01 ID:DTNrGkO70.net]
- >>394
かに飯じゃないんだ。charは何処へ消えたの。
- 400 名前:デフォルトの名無しさん (ワッチョイ 8aad-D0vN) [2023/02/13(月) 03:01:58.65 ID:euuzmFvH0.net]
- Kani & chaRhan
- 401 名前:デフォルトの名無しさん (テテンテンテン MMc6-Dj+E) mailto:sage [2023/02/13(月) 03:07:30.87 ID:ww0US2bcM.net]
- こん平を思い出すな…
- 402 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 09:52:16.15 ID:SWO7K81V0.net]
- カニ入ってる、あぁんリッチ〜
- 403 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 15:36:46.24 ID:aItu9g/Ad.net]
- ファミ通のお習字コーナーかよw
- 404 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 16:00:13.19 ID:ficf9YEj0.net]
- 最近、Cが熱いのは、どのフィールドですか?
pythonなら、人工知能、みたいな
- 405 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 16:1
]
- [ここ壊れてます]
- 406 名前:5:56.41 ID:qFuD6UUNM.net mailto: エンベデッド []
- [ここ壊れてます]
- 407 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 16:24:04.96 ID:aDsLy0wQ0.net]
- 純粋なCって実際使われている気がしないんだがなぁ
結局C++使ってるんじゃね? 組み込みとかでさえC/C++じゃなくなりつつあるような
- 408 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 16:44:40.14 ID:FSuJDOWl0.net]
- LinuxはC一筋です
- 409 名前:デフォルトの名無しさん [2023/02/15(水) 19:45:43.63 ID:yIa7rkEJ0.net]
- Linux は Rust も使われ始めた。
https://codezine.jp/article/detail/17038
- 410 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 20:07:02.73 ID:D5gZ9dH30.net]
- >>403
自動車関係の組み込み開発してるけど純粋なC使ってるね
- 411 名前:デフォルトの名無しさん [2023/02/15(水) 22:41:28.51 ID:PTreX2Lr0.net]
- 不純なCって...
- 412 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 22:43:54.06 ID:FSuJDOWl0.net]
- 年齢確認をちゃんとしましょう
- 413 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 08:38:15.82 ID:XJzboKn0a.net]
- 不純なCってObjective-Cとかかな
C++はもうCじゃないし
- 414 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 10:11:37.88 ID:G6Y1BfCz0.net]
- 表向きCってことにしてるけど、C++コンパイラでコンパイルしてて、ひっそりstringだけ使ってるみたいな?
- 415 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 11:50:52.25 ID:xQKS9LtVM.net]
- 0bリテラルやビットフィールド順序指示子などの独自拡張あり
- 416 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 11:53:11.52 ID:jE/BygjJ0.net]
- C言語仕様に取り込んでほしかった
- 417 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 13:40:46.45 ID:kLJI764s0.net]
- 0bを0xに変換するフィルタくらいなら、すぐできるだろ
- 418 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 13:50:49.50 ID:5p7a/1XmM.net]
- 0bはC23で標準化されるよ
- 419 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 13:54:29.69 ID:5p7a/1XmM.net]
- digit separatorも追加されたから
0b1100'0011'0101'0011 みたいな書き方が出来る
- 420 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 15:47:22.38 ID:oZu+eRtF0.net]
- 'がセパレーターなのか。
組み込みで0bが使える処理系は以前からあるけど、 VerilogやVHDLみたく0b1101_0100のようなセパレーターが使えなくてバグの元でしかなかった。
- 421 名前:デフォルトの名無しさん [2023/02/16(木) 17:05:43.13 ID:5AcA3bi5a.net]
- 不純な C って Win32API のことかな
- 422 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 17:21:05.96 ID:XEsPtkpG0.net]
- セパレータに'は文字リテラルとの曖昧性でパースが面倒そうな…
0b表記はtccでさえサポートしてる(セパレータ_, 'は不可)し、俺の普段使いで0b表記を受け付けないのは多分pccくらい C界隈では区切り文字と桁数はロケールの管轄(闇)という事になってるけど、簡潔に明示指定できるだけで単純にデバッグ出力も読みやすくなるよね? オクテット区切りなら ooo_ooo、xx_xxやbbbbbbbb_bbbbbbbb ニブル区切りはbbbb_bbbb 等 先行例としてlisp系のformatディレクティブを参考までに "~[:][base,wid,pad,delim,]R" Rは専用のb,o,d,xか、rで任意進数を指定 :はデフォルト(wid=3, delim=',) 例: "~:d"→123,456,789
- 423 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 17:37:10.74 ID:CsQoVivgd.net]
- >>413
リテラル導入よりまずはprintf/scanfの強化が先かなと、コンパイラやプログラマがすり替えのも楽になるし 一々baseで割ってfputc、i%sep==0の時にはdelimを吐く、なんてコードを何回書捨てたか分からん リテラル記法導入は文法に関わるので、あくまで標準は保守的に formatディレクティブはもう既に混沌としてるから、独自拡張もサポート落とすも自由でいいかと
- 424 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 18:37:34.78 ID:jE/BygjJ0.net]
- 2進表記は8進表記より使い道多いと思う
- 425 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 19:38:40.25 ID:LB1U3BvE0.net]
- >>419
printf はともかく scanf なんて使わんだろ
- 426 名前:デフォルトの名無しさん mailto:sage [2023/02/16(木) 19:40:44.28 ID:LB1U3BvE0.net]
- >>420
てか8進表記なんてun*xのファイルモードでしか使ったことないわ しかも普通はdefineされたやつ使うから直接書くことはないし
- 427 名前:デフォルトの名無しさん (ワッチョイ 6a36-D0vN) mailto:sage [2023/02/17(金) 10:35:53.81 ID:49a3FDgU0.net]
- 8進数なんて8bitPC時代のグラ512色関連以外で使用する場面あるのかと思ってたけど・・・そうか、アレか。
- 428 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 11:02:28.45 ID:DgZQWw4l0.net]
- octal(リテラル表記)はutf-8の台頭でCで使う機会はかなり増えたと思うが
陽に扱うならだけど msb2つを多バイト文字の継続フラグ等に割いてるから本質的には6bitで、hexだと人力では読むのも書くのも厳しい
- 429 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 11:27:19.29 ID:DgZQWw4l0.net]
- xx表示だとffbb_bbbbの上4bitに対応するx=ffbbが任意な値に化ける
ooo表記だとff_bbb_bbbで良い感じ
- 430 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 13:16:42.61 ID:w2wgHjMGM.net]
- 10進数のテーブルデータ記述するのに桁合わせのつもりで先頭に0を書いた苦い思い出
- 431 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 13:53:50.60 ID:2H95YDcjr.net]
- なんで8進定数のプレフィックスは0oじゃなくて0なんかね?
- 432 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 14:15:10.27 ID:fMLNQIVeM.net]
- 人間の指が4本だったら、普段使う数字が8進数になって、コンピューターとの相性も良かったのになw
- 433 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 14:24:53.50 ID:vP8p7Q2U0.net]
- >>422
システムコールを使ったちょっとしたコーディングの場合、オープンモードはdefineされたやつ使うけど、ファイルモードは8進の値を直接指定することが多かった open("foo", O_CREAT|O_RDWR, 0644) ここに S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH なんて書いたことはないな ちゃんとしたコーディングの場合にはファイルモードを指定する別途関数なり定数定義を用意してたりするからそっちの定義ではdefineされた値を使うことはあったけど
- 434 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 14:44:42.94 ID:vP8p7Q2U0.net]
- 直接openシステムコール使ってるオープンソースのプログラム、シェルあたりならやってそうだと思って簡単にアクセスできそうなソースコード探してみた
bash見つからなくてzshは見つかったので見てみたらやっぱり直接0600とか書いてるな https://sourceforge.net/p/zsh/code/ci/master/tree/Src/utils.c#l2216 その上でumask(0177)とかもやってる
- 435 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 18:22:15.54 ID:G6mVZKAVd.net]
- ESCシーケンスを使うときは¥033
- 436 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 20:16:44.94 ID:KJxAAApA0.net]
- >>430
まあ、コピーライト見たらわかる通りそういう時代だったしね > * Copyright (c) 1992-1997 ポール・ファルスタッド マジックナンバー警察じゃないけど流石に今時0777なんて書いてたらレビューで指摘するわ
- 437 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 20:50:25.13 ID:vP8p7Q2U0.net]
- >>432
git のソースコードのリポジトリを clone したのがあったので、git grep O_CREATとかgit grep umask とかするとみんな0600とか書きまくりだった git blame してみると2021年とか最近でもやりまくり 66e905b7dd0 (XXX 2021-08-25 22:16:46 +0200 82) fd = xopen(index_name, O_CREAT|O_EXCL|O_WRONLY, 0600
- 438 名前:);
66e905b7dd0 (XXX 2021-08-25 22:16:46 +0200 252) fd = xopen(rev_name, O_CREAT|O_EXCL|O_WRONLY, 0600); [] - [ここ壊れてます]
- 439 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 09:01:47.10 ID:4a504/qwa.net]
- C#について教えてください! https://smartlabo-hp.com/login-intermediate/ 上記ページを見てログインボタンを作成しました。 このページ内にあるcsvファイルの内容に加えて同csvファイルの[2]にログイン状態という列を足したいです。 ログインしてない状態では[2]は常に0、ログイン成功したら[2]に1が書かれるようにするにはどうすればいいのでしょうか? ご教授よろしくお願いします。
- 440 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 09:17:57.34 ID:/Gi8XN260.net]
- >>434
スレ違い こっちでやれ https://mevius.5ch.net/test/read.cgi/tech/1669349768/
- 441 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 09:20:32.20 ID:/rOnqr64d.net]
- ハノイの塔 再帰のアルゴリズムがさっぱりわからない
|

|