C言語なら俺に聞け 153

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 5fba-LL4R)
垢版 |
2019/08/17(土) 23:02:42.00ID:tN5mSQYg0
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

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

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

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
※前スレ
C言語なら俺に聞け 152
https://mevius.5ch.net/test/read.cgi/tech/1560763630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2019/12/06(金) 19:53:04.32ID:lGRN9wM80
>>526
> ド・モルガンの法則

-(a & b) = -a | -b が成り立つかなと期待したのですが、
a = 0, b = 1 のときにつまずいてしまいました。

でも、>>525 に書いていただいた -(x & -x) = -x | x は間違いなさそうです。

こういう式の変形って、どこかテキストに載っていたりするのでしょうか。
2019/12/06(金) 20:51:24.53ID:DDupnuWl0
自分で頑張って探すんです

~x
x-1
-x
&
|
^

これらを組み合わせれば
一番右のビット関連がいろいろと出来ます

???10000
に対して
11110000
11100000
00010000
00011111
00001111
これらを得る最小回数の演算を考えてみてください
2019/12/06(金) 21:03:52.43ID:vzfmAUcv0
ド・モルガンと似た問題で、
「君たち2人は注意されないならば、君たち2人は私語を止めない」
の対偶、
「君たち2人が私語を止めるならば、君たち2人は注意される」
って矛盾にちょっと考えてしまったわ。
2019/12/06(金) 21:07:30.59ID:BprTHIND0
x 注意される
o 注意された
2019/12/06(金) 21:15:00.21ID:vzfmAUcv0
>>530
さすが、その通り。
2019/12/06(金) 23:44:25.67ID:DDupnuWl0
>>523
メモリ確保やアクセスの時間に比べれば
サイズ計算の時間は無視出来る

ビット演算の趣味として楽しむ分には良いけど
普通にループでもパフォーマンスは変わらない

パフォーマンスが重要じゃないところ
(つまりほとんどの部分)は
移植性、見やすさ、工数、...
などが優先される

ということは知っておいた方が良いですね
2019/12/06(金) 23:51:44.77ID:Rsc9FZ2h0
分野によってはループや比較による分岐は遅すぎて使えないなんてことままあるよ
2019/12/07(土) 00:10:26.85ID:n8phrA6e0
>>523の話
2019/12/07(土) 00:10:27.55ID:4NjUP+TJM
それは経験談?
それとも誰かからの受け売り?
2019/12/07(土) 00:15:02.34ID:n8phrA6e0
動的メモリ再確保
のサイズ計算の話

オーダーnに対して係数の小さなオーダーlog nは無視して良い
って話
2019/12/07(土) 01:14:15.17ID:kGPNKNyL0
ちょっと前にスレで騒がれていたフーリエ変換に関する話題

50年来の信号処理に関する謎が解かれる、逆高速フーリエ変換がついに一般化
https://fabcross.jp/news/2019/20191206_fast-fourier-transform.html
538デフォルトの名無しさん (エムゾネ FF43-MVf8)
垢版 |
2019/12/07(土) 19:02:43.91ID:Tn5G8ZSlF
解明って言うんか?これ
2019/12/14(土) 01:27:42.96ID:TU6i1yGkx
C言語というか、WindowsのCですが、
たとえば strcpyの lstrcpyと _tcscpyの違いは何なのでしょうか
前者は WindowsAPI、後者は VC++CRTという説明を見たのですがよくわからないのです
両者とも UNICODE(後者は_UNICODE) の有無で charとwchar_tを切り替えるようですが、どちらをどんな時に使用するのかが分かりません。
2019/12/14(土) 10:20:34.10ID:00Pm6Tju0
crtへの依存を減らせる分、常にlstrcpyを使えばいいと思うよ。lstrcpyは不正アクセスしたときに例外投げてくれるみたいだし。
自分なら依存減らす&安全性のためにstrncpyとwcsncpyを選ぶけど
2019/12/14(土) 23:23:03.56ID:ECY2395Ex
>>540
ありがとうございます。
539です。

今後は気をつけようと思いますが、過去に書いたコードは何ともいたし難く…orz
なぜ先に lstrcpyを見つけなかった 2014年のオレ…

でも、内容が古いのかもしれませんが、ある記事によると CRTの依存を断ち切るのも容易ではないようで。。。
2019/12/15(日) 00:22:25.61ID:ay8KMh7A0
むしろlstrcpyなんて16bit時代から引きずってる過去の遺物なんじゃ?
今はlstrcpyも非推奨、代替のStringCchCopyはWindowsAPIの体だけどkernel32.dll等を呼び出すのではなくstrsafe.h内にコードが書いてある変わり種なのでtchar.h系の_tcscpy_sでよくね?っていう
2019/12/15(日) 00:32:33.51ID:YgrLaWOD0
MSのCは独自色が過ぎる
2019/12/15(日) 09:51:20.97ID:Q+saMC6e0
そうか? 古くからMSCは「高いが安心」というポジションだったが
545デフォルトの名無しさん (ワイーワ2 FFfa-uKDx)
垢版 |
2019/12/15(日) 13:16:36.84ID:o9m7qUoDF
放送大学2020新講座
C言語基礎演習
https://www.wakaba.ouj.ac.jp/kyoumu/syllabus/PU02060200221/initialize.do
2019/12/15(日) 14:57:55.02ID:AP8z1X7d0
何の変哲の無いコードを書いてコンパイラのバグが顕在化するMicrosoftのCが安心とは、茶がヘソを沸かす。
2019/12/15(日) 15:53:29.93ID:Rd0yTkco0
唯一のECMA-372対応コンパイラ
壮大なマッチポンプだが…
548デフォルトの名無しさん (ブーイモ MM13-R69Q)
垢版 |
2019/12/15(日) 23:21:27.87ID:z0zgGhJDM
そもそもCはUNIXの為に作られた言語だから
UNIX系以外のOSで使うと齟齬が出るよね
549デフォルトの名無しさん (ワッチョイ e202-F3ta)
垢版 |
2019/12/16(月) 09:15:32.91ID:poPvuM4I0
何言ってんだこのバカ
2019/12/16(月) 09:20:02.47ID:wmZohWX5d
せいぜいnとCR LFの齟齬くらいだね
2019/12/16(月) 09:40:49.35ID:0Jl4Gkqp0
それはテキストファイルのコードの違いというだけであって言語の仕様そのものとは直接関係ない
2019/12/16(月) 10:23:00.62ID:1+8Fi0A+0
OSを記述しやすく意図されて言語という認識だが
UNIXに絞って特化された部分って何だろう?
553デフォルトの名無しさん (ブーイモ MM13-RJaD)
垢版 |
2019/12/16(月) 10:34:38.41ID:WErHXUGxM
テキストファイルといえば
歴史上どっかの段階で文字列操作や汎用IO関数を捨て専用のもちっと使いやすい内蔵スクリプト言語に任せ
どうしても処理速度を求めるマは自作、非標準ライブラリで配列イジクール形にしたらよかったのにね

システムコールの頻度とか毎度読み解く指定子とかで標準ライブラリも爆速ってほどじゃないしー
printfのうじゃうじゃ増える非互換指定子とか似た使い分け迷う関数の増殖とかを防げたろうに
2019/12/16(月) 11:27:10.48ID:LjjtFzBx0
せっかくライブラリとして言語の外に出てるのに、
なんでスクリプト言語なんか内蔵しなきゃいかんの。
2019/12/16(月) 12:29:48.70ID:3ha1TSe5M
>>552
creat()のモード指定が8進数で書ける
556デフォルトの名無しさん (ワッチョイ 4b5f-EbeN)
垢版 |
2019/12/16(月) 13:05:02.49ID:ErLMiOjL0
file の lock とかか >>552
2019/12/16(月) 13:12:27.77ID:3bH+pT+k0
>>555-556
それはライブラリの問題ではないか。言語仕様とはちょいと違う気がする

まあ「標準ライブラリは言語仕様(キリッ」と言いきっちゃってもいい気もする
2019/12/16(月) 13:19:15.38ID:LjjtFzBx0
たしかにunix系以外で8進数って使わないような気もする。
2019/12/16(月) 13:21:15.05ID:k2txnuEDM
Cは文字列をヌル終端するのが「ほぼ」前提になってるよね。
もしそれ以外の文字列表現を使うつもりだったら、
文字列専用の型を用意していたし、ポインタより配列を重視していたはず。
560デフォルトの名無しさん (ワッチョイ 4b5f-EbeN)
垢版 |
2019/12/16(月) 13:22:41.90ID:ErLMiOjL0
>>557
おまいがOSに特化したとか言い出したんじゃないのか
2019/12/16(月) 13:23:58.45ID:3ha1TSe5M
>>557
違う、8進数で書けると言う「言語仕様」の話
2019/12/16(月) 13:30:01.62ID:3bH+pT+k0
>>561
8進数でも書けちゃう
というだけで、建前としては「ちゃんと定数使え」じゃない?

言語仕様でUnix文化に特化してるところって
mainとreturnの仕様くらいじゃない?
2019/12/16(月) 13:32:32.25ID:LjjtFzBx0
>>562
8進数で書くのがchmod互換で直感的なんだべ
2019/12/16(月) 14:13:38.79ID:3ha1TSe5M
>>562
> 建前としては「ちゃんと定数使え」じゃない?
建前はともかく0777とか0755とかバンバン書かれてるし…

とまで書いてなんだけど、ちょっとググったらどうも8進数はC言語発祥じゃなくてB言語でも使えたみたいw
PDPシリーズは触ったことないからよくわからんけどHPのミニコンは命令コードが3bit単位に区切られて表記されてた
ブートローダーは手入力してて16個並んでるスイッチでアドレスや命令コードをセットするんだけど見ての通り3bit単位に区切ってある
もう記憶があやふやだけどアセンブラとかも8進表記ができたような気がする
http://www.hpmuseum.net/images/2108A-37.jpg
多分PDPも似たような感じだったんじゃないかと思う
なので8進数云々はあまり関係なかったわ、すまん
2019/12/16(月) 19:57:33.47ID:xr9KOlE00
お前らも8進数よく使うだろ
0とか
2019/12/16(月) 20:00:10.61ID:RwgS0BCD0
ソースの見栄えを気にして桁そろえに スペース使わずに 0 を補うんですね
2019/12/16(月) 20:01:38.57ID:xr9KOlE00
やったことあるヤツいるよな?

いやそうじゃなくて
ただの0
2019/12/16(月) 20:18:50.99ID:8JsSimFSd
017は頭に0があるから、C/C++では8進数として扱う。ただのゼロもリテラルの分類としては8進数。
2019/12/16(月) 20:23:36.65ID:KhG8vsdXM
0リテラルは8進だったのか…
2019/12/16(月) 20:31:05.71ID:KhG8vsdXM
(6.4.4.1) octal-constant:
0
octal-constant octal-digit

まじか



でも8進だからなんだっていう
2019/12/16(月) 21:43:34.71ID:G86pu5OQ0
16歳の僕でも酒が飲めるぞ。
飲める飲める飲めるぞ酒が飲めるぞ。
2019/12/16(月) 21:43:53.10ID:myVu/Iud0
え?割と有名な話では?
2019/12/16(月) 22:13:01.15ID:AI1GDY0I0
012 月はハロウィンで酒が飲めるぞ
飲める飲める飲めるぞ酒が飲めるぞ
2019/12/16(月) 22:28:43.33ID:SRFHZZ1hx
>>571
それは10進数でしょ
2019/12/16(月) 22:44:38.36ID:xr9KOlE00
いや
14進数とか16進数だろ
576デフォルトの名無しさん (ワッチョイ 0e8c-r0mJ)
垢版 |
2019/12/17(火) 05:16:47.62ID:YPw71Sxa0
8進数いらない
2019/12/17(火) 07:03:39.66ID:KzMqUd+td
Cにも0bと桁区切り欲しい
2019/12/17(火) 11:16:49.78ID:C7XZiRB60
512色カラーで使った。
579デフォルトの名無しさん (アウウィフ FF3b-EbeN)
垢版 |
2019/12/17(火) 12:28:51.79ID:rApV4krMF
int main()
{
return 0;
}
8進数ですほんとうにありがとうございました
2019/12/17(火) 18:33:08.01ID:x9hYOthl0
MinGWとUbuntuはどっちがいいですか?
2019/12/17(火) 19:26:43.19ID:PKHU1E440
何が?
582デフォルトの名無しさん (ワッチョイ 7735-c7hN)
垢版 |
2019/12/17(火) 23:43:40.20ID:FF2dVpsc0
Ubuntu
2019/12/17(火) 23:50:56.66ID:6pfYPcmc0
2進数表記が欲しい
2019/12/18(水) 00:13:36.84ID:i+6d3gEf0
16進小数リテラルが欲しい
2019/12/18(水) 00:16:26.43ID:AxZUQGgH0
>>584
加減乗除考えただけで頭痛くなりそうだ
2019/12/18(水) 00:19:17.60ID:P8XWWN6i0
すんごく欲しいならプリプロセッサでも作ればいいんじゃね?
2019/12/18(水) 00:19:24.08ID:i+6d3gEf0
人間が計算する必要は無いんだよ
2019/12/18(水) 00:24:30.38ID:i+6d3gEf0
>>586
プリプロセッサで10進数にするの?
それじゃ何の為の16進リテラルかわからない

いずれ対応するから待つのみ
2019/12/18(水) 00:34:01.93ID:P8XWWN6i0
プリプロセッサ作って言語を拡張とか、昔はけっこうあったけどな。
2019/12/18(水) 00:36:26.05ID:AxZUQGgH0
昔は結構あったはずのものが、今は残ってないのだろう
2019/12/18(水) 00:39:48.29ID:P8XWWN6i0
まあそれほど必要がないなら別にいいんじゃね。
IDEしか使わないならそういうことはやりづらいだろうし。
2019/12/18(水) 00:52:36.68ID:i+6d3gEf0
誤差を無くす為の16進小数リテラルなのに
プリプロセッサで10進数に直すの?
2019/12/18(水) 02:20:08.74ID:YAJfAYS50
ビットパターンを直接作って変数のアドレスに放り込むようにできないのかな。
それじゃリテラルじゃなくなっちゃうか。
2019/12/18(水) 05:31:30.34ID:GlvGxt8T0
>>584
C++17に既にあるから、いずれ使えるようになりそう
>>585
普通に10進で書いた浮動小数点数とまったく同じ扱いなので心配無用
>>592
10進でDBL_DECIMAL_DIG桁あれば、元の値を再現できるはず(doubleの場合)
2019/12/18(水) 07:36:57.59ID:PEFQbiIGd
>>583
C++14で0b使えるようになって
もう5年も経っているんだが
2019/12/18(水) 08:17:07.53ID:4w0y1KxwM
>>595
スレタイみような
597デフォルトの名無しさん (ワイーワ2 FFfa-EbeN)
垢版 |
2019/12/18(水) 11:30:30.49ID:RQBBPl9vF
>>593
floatやdoubleとcharのunionにするやつか
2019/12/18(水) 11:37:41.82ID:nuxI9nkU0
float や double のビットパターンが IEEE754 前提でごりごりっと…
2019/12/18(水) 18:15:23.76ID:G112g1QU0
C言語に欲しい機能は、関数オーバーライドとユニファイドコールシンタックス。
3つあったけど一個忘れた。

参照もいいな。

そんなアマチュアC++書きです。
2019/12/18(水) 18:16:48.77ID:G112g1QU0
あ、constexprもほしいねぇ。
2019/12/18(水) 20:26:19.16ID:CdPazUY7M
C++をBetter Cで使えばいいだけじゃね?
2019/12/18(水) 22:11:10.32ID:xgw20G5ix
僕は inlineをサンタさんにお願いしよう…
2019/12/18(水) 23:09:07.24ID:tbeJyQYA0
>>602
inline と指定すればなにがあろうと inline に固執する執念深いコンパイラはありませんか?
2019/12/18(水) 23:13:25.96ID:Zo1XP6560
__inlineは非標準だが、つかえ(以下略)
2019/12/18(水) 23:24:19.48ID:i+6d3gEf0
inlineを忠実に守ってたら
指数関数的にコードサイズが増える
2019/12/18(水) 23:59:36.80ID:tbeJyQYA0
>>605
それはコンパイラが判断することではなく、人間様が判断することなのでは?気分次第で inline にならない inline 指定なんて何の役にもたたないと思います
607デフォルトの名無しさん (ブーイモ MMbf-knCy)
垢版 |
2019/12/19(木) 00:13:43.37ID:S/u3JoW1M
ループ展開して中のinline関数をぶちまけたら・・・
命令の並べ替えで案外コンパクトに成るかもしれんし
指数は言い過ぎだと思うがね
2019/12/19(木) 00:38:42.38ID:6IXT8mCld
それまた非標準の__forceinlineというキーワード使えばインライン化を強制できる。
2019/12/19(木) 06:50:23.98ID:rFEDNRgX0
>>599 名前空間オヌヌメ。
って言うか、なぜ急に自己紹介なんだろ?
610デフォルトの名無しさん (アウアウウー Sa5b-eVP7)
垢版 |
2019/12/19(木) 19:43:05.94ID:0uPukb6za
ついうっかり再帰する関数を inline にしてし(ry
2019/12/19(木) 20:00:28.38ID:L7o4TfDh0
>>607
2箇所でコールする関数がn段ネストで2^n
2019/12/19(木) 22:27:18.11ID:gVlfKsHk0
無限ループをインラインで展開
2019/12/20(金) 01:47:19.47ID:28sCejNS0
無限ループってこわくね?
614デフォルトの名無しさん (ワイーワ2 FFdf-hPjh)
垢版 |
2019/12/20(金) 12:03:42.85ID:Syf6RG7EF
>>613
https://www.youtube.com/watch?v=VjJaKA016NQ
2019/12/20(金) 12:40:59.27ID:QFt1HgPu0
だって同じことがずーっと続くんだぜ
616デフォルトの名無しさん (アウアウウー Sa5b-eVP7)
垢版 |
2019/12/20(金) 21:46:42.87ID:BqL6wPJ0a
真の無限ループは作れない。
コンピュータは何れ壊れるし停電になったら終わりだからな。
2019/12/20(金) 21:52:00.56ID:qHTdS2+z0
真の無限ループを現実的に実行することができない≒無限を観測することはできない
概念としては作れる
2019/12/20(金) 22:56:52.61ID:zqOycIcFM
物理屋対数学屋
2019/12/20(金) 22:59:48.75ID:ZH5ZbPnE0
「真の」
っていう表現がマズい
2019/12/20(金) 23:54:20.86ID:Rn/41Zwx0
10 Print ”A"
20 Goto 10
2019/12/21(土) 07:09:12.38ID:JN5BZbCP0
b .
2019/12/21(土) 13:38:12.07ID:MR+KFog00
っ ノンボラタイルメモリ。
2019/12/22(日) 02:30:50.40ID:LaRPFE2v0
goto文は危険なんですか?
2019/12/22(日) 02:40:48.07ID:gUOFz5Ze0
あぁ、実に危険な話題だ。
625デフォルトの名無しさん (ワッチョイ 9fad-v8Vi)
垢版 |
2019/12/22(日) 02:44:33.39ID:lBW/6Z3k0
>>617
そう。つまり、心の中にあるのさ。
626デフォルトの名無しさん (ワッチョイ 9fad-prDO)
垢版 |
2019/12/22(日) 02:51:43.79ID:lBW/6Z3k0
goto は技を極めた者だけが使うことが許される。半端な者が手を出せばおかしなことにしかならない。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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