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/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 は技を極めた者だけが使うことが許される。半端な者が手を出せばおかしなことにしかならない。
2019/12/22(日) 02:56:36.50ID:gKJY07Bh0
>>623
用法用量を守って正しくお使いください。
2019/12/22(日) 07:27:17.21ID:DuLbamX70
gotoのなにがいけないのかを知らない者は
スペルがジーオーティーオーでないgotoを平気で使いながら
頓珍漢な教条主義を得意げにぬかす
2019/12/22(日) 08:27:39.32ID:OI05XeSt0
>>628
> スペルがジーオーティーオーでないgoto
wakaran
2019/12/22(日) 08:31:28.88ID:4GpMlcpo0
> goto文は危険なんですか?
ああ、とてつもなく危険だよ
こんなことを聞くような>>623にとってはな
2019/12/22(日) 08:35:46.34ID:DuLbamX70
>>629
ISO/IEC 9899:2018 6.8.6 Jump statements
2019/12/22(日) 10:21:23.25ID:OI05XeSt0
>>631
goto文以外のジャンプ・ステートメントとハナから書きなされ。
というか、goto文を乱用せずcontinue、break等で代用しなさいという教条だべ。
ジーオーティーオーでないgotoを平気で使うのは教条に反しないので、「ながら」と矛盾を指摘する言い方はおかしい。
2019/12/22(日) 10:24:59.48ID:sxycti0t0
悪魔を召喚する呪文
2019/12/22(日) 12:02:27.27ID:assBvK1w0
人生:
if (!就職()) goto 人生;
2019/12/22(日) 14:03:45.29ID:LaRPFE2v0
でも俺スパゲッティは嫌いじゃありません
2019/12/22(日) 16:32:40.91ID:BbprGibXd
>>632
そんなにダイクストラらの主張の論点が何かが分かってないのを誇張して何がしたい?
2019/12/22(日) 16:45:52.25ID:qJChSMJU0
いやー、上方へのジャンプを抑制するだけで結構切れますよ?
2019/12/22(日) 16:47:16.93ID:qJChSMJU0
L:
hogehoge();
if(huga)gotoL2;
if(hage)goto L;
L2:
2019/12/22(日) 16:48:43.49ID:qJChSMJU0
キーコンビネーション間違えて投稿してしまった。
>>638 のようなコードは完全にスパゲッティなのでやめましょう。
2019/12/22(日) 16:51:13.34ID:qJChSMJU0
do{
continue;

}while();

while型goto教の教義のコード。
2019/12/22(日) 16:57:49.51ID:BbprGibXd
制御構造のパターンとして何型のものが望ましくないのか、お前ら本当に聞いたこともないの?
2019/12/22(日) 16:59:01.86ID:qJChSMJU0
安易な無限ループで悲惨なオチに出会う人減ってるかいな?
643デフォルトの名無しさん (ワッチョイ bf8c-vyMa)
垢版 |
2019/12/22(日) 20:25:06.85ID:o2lyx4Qb0
局所でGOTOは有りだろう。
644デフォルトの名無しさん (ワッチョイ bf8c-vyMa)
垢版 |
2019/12/22(日) 21:00:22.05ID:o2lyx4Qb0
全部論理式で書けば制御構造なぞ要らない。
2019/12/22(日) 21:06:07.06ID:Gm1dEDWR0
アホばっかりと諦めるのはまだ早いと思う
短気を起こさずにもうしばらく待ってみる
2019/12/22(日) 23:20:31.02ID:lZWETk/y0
>>643
あり
むしろ使わないと階層が深くなったり、フラグを多用したりで余計おかしなことに
2019/12/23(月) 00:35:00.92ID:5fq76TYI0
bool型の変数をprintf関数内でプレースホルダ%dを使って表示すると、
1や0になってしまうのですが、trueやfalseの形式で表示できないでしょうか?
2019/12/23(月) 00:38:21.07ID:EBKfcFlm0
printf("%s", (b ? "true" : "false"));
2019/12/23(月) 00:38:26.58ID:+NV+2UGP0
%sでboolVar ? "true": "false"とでもすればいい

Cにboolはないよ
2019/12/23(月) 00:45:41.74ID:Losi+wwQ0
>>649
どアホ
ISO/IEC9899:2011 7.18
2 The macro
bool
expands to _Bool.
2019/12/23(月) 00:52:11.44ID:hXczb3NL0
C99を (標準の)C と呼んでも差し支えないのだろうか
2019/12/23(月) 00:56:54.61ID:+xS4b3+d0
最新の規格が標準だぞ
C99が定められたのは既に20年前
太古の企画と言っても差し支えないレベル
2019/12/23(月) 01:06:18.68ID:z7fGiGkq0
>>652
お前が勝手に決めるな
2019/12/23(月) 02:34:41.48ID:5fq76TYI0
答えてくれた方ありがとうございました
面倒なんですね
2019/12/23(月) 07:25:48.16ID:Losi+wwQ0
>>653
決めているのはISOで
652が勝手に決めているわけではない
現行規格すなわち標準はISO/IEC9899:2018、通称C17だ
https://www.iso.org/standard/74528.html
2019/12/23(月) 07:26:35.49ID:Losi+wwQ0
旧規格は現行規格の発効をもって廃止となる
2019/12/23(月) 07:48:32.88ID:z7fGiGkq0
https://ja.m.wikipedia.org/wiki/ANSI_C

ANSI C、ISO C、または標準Cとは、米国規格協会(ANSI) および国際標準化機構(ISO) が発行したC言語の標準の総称である。歴史的にこれらの名前は特に、オリジナルであり、最もサポートされているバージョンであるC89およびC90のことを指す。
2019/12/23(月) 07:50:11.10ID:GiJKkL8M0
C99 later の C++ 非互換部分は、どうでもいいとおもいますね
C++ にあわせて欲しかったのですが、独自色を強めてしまったのは疑問手です
2019/12/23(月) 08:11:06.15ID:Losi+wwQ0
現実問題でもC89オンリーのコンパイラはかなり減ってきてるだろうが
Cライクな非標準全開のコンパイラなら今でもあるが
2019/12/23(月) 08:18:44.36ID:z7fGiGkq0
普及率を根拠にするなら
>>652を取り消してからにしてもらおうか
2019/12/23(月) 08:29:28.17ID:hJXMwG4B0
>>647 の質問への直接の答えじゃないけど、
bool(実体は_Bool)型って汎整数拡張の対象だっけ?

拡張されるならprintfの中では引数がbool値だったか整数値だったか、
もう区別がつかないんじゃないか。
区別できなきゃ 0/1 で表示すべきか false/true で表示すべきかも
決められないと思うんだけど。
2019/12/23(月) 08:32:48.54ID:Losi+wwQ0
>>660
たとえ652をボコボコにやっつけたところで
現実は何一つ覆りはせんぞ
無駄な抵抗はやめろ
2019/12/23(月) 08:40:36.25ID:hJXMwG4B0
可変個引数の整数値が char でも short でも int になるのは
「汎整数拡張」とは違う動作、別の用語だったかも知れん。
言語に詳しい人の指摘をお願いしたい。
2019/12/23(月) 08:50:19.46ID:Losi+wwQ0
promotion(拡張)
2019/12/23(月) 13:42:09.95ID:hXczb3NL0
https://ja.wikipedia.org/wiki/C99

>GCC、Clang、Intel C++ Compiler 等はC99の新機能の大半をサポートしている。
>ただし、GCCは、ほとんど準拠しているが、規格への100%完全準拠は果たしてい
>ない。GCC 4.x までのデフォルトは C89 に GNU 拡張を加えた -std=gnu89、
>Clang のデフォルトは C99 に GNU 拡張を加えた -std=gnu99 である。GCC 5.0
>から C11 に GNU 拡張を加えた -std=gnu11 がデフォルトになる。

>Microsoft Visual C++ は 2013 から C99 の大半を実装した。ただし、tgmath.h
>や snprintf() などが未実装。

>Open Watcom C compiler は標準のうち最もよく使われている部分を実装している。
>かつては、ドキュメント化されていないコマンドラインスイッチを指定しないと
>有効化されなかった。2010年現在の最新版である 1.9 では -za99 オプションを
>付けることで有効化される旨、明記されている。

>Sun Studioは、サン・マイクロシステムズによればC99を完全にサポートしている。

主なコンパイラは大体対応している様だが、まだ完全ではないみたいだ。
GCCだと独自拡張もあるのでややこしそう。すでにC11に向かっているし。
2019/12/23(月) 14:59:43.87ID:rvIcRY54d
今時Cを使うのって
そういうメジャー所じゃなくて
小規模マイコン用の独自コンパイラがメインでは?

そうでもない?
2019/12/23(月) 15:35:31.75ID:Losi+wwQ0
メジャーなところで旗色が悪くなったからって
マイナーなところへ逃げ込む気か
相手すんの馬鹿らしくなるぜ
2019/12/23(月) 15:43:24.53ID:c0dHMUCB0
規格を捏ねくりまわして喜んでいるのは言語マニアだけだしな
実際の現場は殆どが独自コンパイラ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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