[過去ログ] C言語なら俺に聞け 152 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
645(1): (ワッチョイ 0ff6-0ngu) 2019/07/21(日)21:42 ID:ZJZWYLqf0(1)調 AAS
>>642
便利すぎってどういうことだよ
教条主義的goto禁止論の域を出とらんだろうが
646: (ワッチョイ 0fab-Pjse) 2019/07/21(日)21:46 ID:AbjqA2h30(1)調 AAS
>>621
インデックスのことかも
647: (ワッチョイ 3f28-t2IU) 2019/07/21(日)22:36 ID:c+HlyquL0(1)調 AAS
>グローバル領域に予め必要な変数や配列確保しておけば
>ネタで言ってるのか本気で言ってるのか判断が付かない
実際に仕様なんかがしっかりしているタイプで
メモリー確保が動的に大きく変化しないものなら
実際にそういう風に作っているのを聞いた事は有る
配列式だと動的に確保したり開放したりが無く
リークしたり無効になったりしない分かなり安全
実行開始時に使用する領域が完全に確保されているから
648: (スッップ Sd5f-1UnR) 2019/07/21(日)23:24 ID:R+Rb+3j1d(2/2)調 AAS
>>645
すまん、そんなに深い意味はない。
649: (アウアウエー Sabf-eWIt) 2019/07/22(月)00:04 ID:PN8KKKdJa(1)調 AAS
静的な所にプール作るのはメモリ制限ある組込では割とあったと思いますよ
650: (アウアウウー Sad3-9T1T) 2019/07/22(月)15:35 ID:vmYUDJ0Ja(1/2)調 AAS
>>643
最近の言語ではそういうのあるね。
とはいってもJavaには既にあったのでかなり前からあるな。
Java以前はあるかどうか俺は知らん。
651: (アウアウウー Sad3-9T1T) 2019/07/22(月)15:37 ID:vmYUDJ0Ja(2/2)調 AAS
あ、Perlもループにラベル付けてlastで抜けるなんてのあるな。
652: (ワッチョイ 7f63-jGuh) 2019/07/22(月)16:18 ID:QnLUYAOH0(1/3)調 AAS
break ラベル で、多重ループから一気に抜けられると便利なんだがな
653: (ワッチョイ 0f95-k+pP) 2019/07/22(月)16:35 ID:rxI3cfFL0(1/2)調 AAS
gotoが便利すぎというより
単純な break returnで間にあわないときには
それしか制御がないのでは
654: (ワッチョイ 3fc5-k+pP) 2019/07/22(月)17:24 ID:7pc0Xm6O0(1)調 AAS
二重ループから抜けるにはgotoが一番
gotoを廃止した言語制作者は天罰を受けるべき
655: (ワッチョイ 0f95-k+pP) 2019/07/22(月)17:30 ID:rxI3cfFL0(2/2)調 AAS
goto はそれで使われている保障がないから、
保守性のためにも
ループなどに名前付けて、それを抜けると明記したい
656(1): (アウアウカー Sac3-eWIt) 2019/07/22(月)17:54 ID:e8FkVPqsa(1)調 AAS
まず多重ループを避けろと
657(1): (ワッチョイ 3fab-5Xl5) 2019/07/22(月)18:05 ID:LktYqlpm0(1/4)調 AAS
gccで X Window System (x11) でウインドウつくって画像合成するのって
どうすればできますか? なにかサンプルプログラムなど無いでしょうか?
658: (ワッチョイ 7f63-jGuh) 2019/07/22(月)18:22 ID:QnLUYAOH0(2/3)調 AAS
>>656
二次元配列を総なめする場合に
ループを 1変数でやるのかな?
659(1): 蟻人間◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs) 2019/07/22(月)18:36 ID:zh10SCAHd(1/6)調 AAS
>>657
古本を漁ればやり方が書いてあるかも。
XScreenSaverのソースみれば参考になるかも。
660: 蟻人間◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs) 2019/07/22(月)18:39 ID:zh10SCAHd(2/6)調 AAS
いにしえのシステムなら、関数名をmanコマンドで引けば、X Windowの関数のマニュアルが見られるはず。
661(1): (ワッチョイ 3fab-5Xl5) 2019/07/22(月)18:42 ID:LktYqlpm0(2/4)調 AAS
>>659
linuxOSだとSDL(Simple DirectMedia Layer)で書いたほうが情報が多く
描画書き換え速度もはやい気がします
SDLに移行したほうがやはり無難でしょうか?
662: (ワッチョイ 7f63-jGuh) 2019/07/22(月)18:50 ID:QnLUYAOH0(3/3)調 AAS
質問者自身で決定すれば良いと思うが
663: 蟻人間◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs) 2019/07/22(月)18:54 ID:zh10SCAHd(3/6)調 AAS
>>661
X11は将来、Waylandにバトンを渡すらしい。新しい端末ではX11が採用されない状況が考えられる。クロスプラットフォームの方が安心かな?
664: 蟻人間◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs) 2019/07/22(月)18:56 ID:zh10SCAHd(4/6)調 AAS
暗号化されてないX11をネットワークで見たら丸裸だからあんまり使いたくないよね。
665(1): (ワッチョイ 3fab-5Xl5) 2019/07/22(月)19:02 ID:LktYqlpm0(3/4)調 AAS
ネットワーク環境はsshしか使ったこと無いのですが
SDL_net などは関数に暗号化などがふくまれているのですか?
666(1): 蟻人間◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs) 2019/07/22(月)19:08 ID:zh10SCAHd(5/6)調 AAS
>>665
ソーシャルゲームを作るなら、暗号化は必須。暗号化方式を決めて、それに合った暗号化専用のライブラリーを使う形になる。
667: (ワッチョイ 3fab-5Xl5) 2019/07/22(月)19:10 ID:LktYqlpm0(4/4)調 AAS
>>666
C言語の暗号化ライブラリで使いやすいのおせーてください
668(1): 蟻人間◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs) 2019/07/22(月)19:22 ID:zh10SCAHd(6/6)調 AAS
ソーシャルゲームは専門ではないが、暗号化なら
https://ja.m.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E6%AF%94%E8%BC%83
669(1): (アウアウカー Sac3-eWIt) 2019/07/22(月)19:25 ID:MRg17CtQa(1)調 AAS
いろいろあるんですけど、ライセンス的にopensslでいいやみたいな感じになりましたね
waylandは5年後くらいにはなんとかなるんかな。どういうレイヤでサービス提供したいのかよくわからん所がある。
670(1): (ワッチョイ 8f8f-1UnR) 2019/07/22(月)21:33 ID:tAjmkx+m0(1)調 AAS
同じくopensslでいいんじゃないかと思いますな
671: (ワッチョイ 4f25-WSqd) 2019/07/23(火)03:25 ID:/ZO3BTO70(1/7)調 AAS
gchar **command = (gchar *[]){"./Hello.exe","World",NULL};
を gcc6 で compile すると以下の2種類の warning が出ます。
warning: ISO c++11 does not allow conversion from string literal to 'gchar *' (aka 'char *') [-Wwritable-strings]
warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression [-Waddress-of-array-temporary]
どう書くのが正解なのでしょうか? 教えてください。最後の NULL がなければ、
gchar **command = (gchar **)((char [][20]){"./Hello.exe","World"});
で良いと思うのですが、最後の NULL も必要です。よろしくお願いします。
672(2): (アウアウエー Sabf-eWIt) 2019/07/23(火)04:01 ID:XJs/DfWFa(1/4)調 AAS
要素の文字列をそれぞれキャストしてみるとか?
でも別に文字列の実体を用意した方が無難では。
673(1): (ワッチョイ ff2f-Im00) 2019/07/23(火)05:54 ID:XS6t8zxL0(1)調 AAS
char * const command[3] = {"./Hello.exe","World"};
674(2): (オッペケ Sra3-KwlG) 2019/07/23(火)09:58 ID:J+ZHGa1Mr(1)調 AAS
初心者で勉強中なんですが、
switch文は
if文みたく
switch(a >0)のように()の中に関係演算子を使った式はかけないんでしょうか?
エラーがでるので無理なのかなと思ったんですが
675: (ブーイモ MM0f-lP7j) 2019/07/23(火)10:46 ID:DdnFitx+M(1)調 AAS
エラーじゃなくて警告では?
動かない理由はないと思うのでgccで試してみたけど、ちゃんと動いたよ。
ただ、結果は1か0の2値しかないのでif文使ったほうが良いと思うよ
676(1): (アークセー Sxa3-7lXP) 2019/07/23(火)10:51 ID:unlUKZmGx(1)調 AAS
本当は
switch (a) {
case a > 0:
...
的なことをしたかったのではないかとエスパーしてみる。
677: (ワッチョイ 4f61-aZqd) 2019/07/23(火)11:36 ID:LSxEgoA20(1)調 AAS
>>674
これなんか意味あるの?
具体的に何がしたいか知りたいなあ
678: (ワッチョイ 7f7c-jGuh) 2019/07/23(火)11:42 ID:CU39ntZ20(1)調 AAS
>>676
switch(true) って裏技 あれマジで気色悪いよね
679: (ブーイモ MMb3-sRGG) 2019/07/23(火)11:44 ID:SF2VCGvmM(1)調 AAS
case に何を書けばいいんだ?false は 0 でいいだろうけど、true は?
680(1): 671 (ワッチョイ 4f25-WSqd) 2019/07/23(火)11:49 ID:/ZO3BTO70(2/7)調 AAS
>>673
>char * const command[3] = {"./Hello.exe","World"};
ありがとうございます。これでも1つめの warning "does not allow conv..." は出ました。皆さんの所では出ませんか?
それと、 command はどうしても char ** 型である必要があります。
仮想端末で何かを実行させる関数 vte_terminal_spawn_async() に与えるためです。
https://developer.gnome.org/vte/unstable/VteTerminal.html#vte-terminal-spawn-async
引き続きアドバイスをお願いします。
681: (ワッチョイ 0ff6-0ngu) 2019/07/23(火)11:53 ID:4sm3RNn+0(1/5)調 AAS
>>674
書くことはできる
関係式は int 型の 0 または 1 という結果を生じるので
switch (a > 0) は a の値により
switch (0) もしくは
switch (1) と等価になる
おまえさんが言いたいのは switch で範囲チェックができるのか
ということだろうがそれはできない
a と case に指定した定数の == 比較しかできないのが switch だ
不等号や != が使いたければ if 文か3項演算子ということになる
682(1): 671 (ワッチョイ 4f25-WSqd) 2019/07/23(火)12:04 ID:/ZO3BTO70(3/7)調 AAS
>>672
ありがとうございます。具体的にはどうしたら良いでしょうか?
char list[2][20] = {"./Hello.exe","World"};
gchar **command = (gchar **){ (char *)list[0], (char *)list[1], NULL};
だと、↓のエラーになります。
error: function-style cast to a builtin type can only take one argument
正しいやり方をお願いします。
うーむ。どうしたものか。 gchar ** 型をどうやって作るのかさっぱり分からない。。。
ダブルポインタがよく分かってない。もう warning は放っておくしかないのかな?
683(2): (アウアウエー Sabf-eWIt) 2019/07/23(火)12:10 ID:XJs/DfWFa(2/4)調 AAS
その前に、671の警告でC++11って出てるのはなぜなのか。
複合リテラルってあれキャストではないよな。知らんけど。
684(1): 671 (ワッチョイ 4f25-WSqd) 2019/07/23(火)12:21 ID:/ZO3BTO70(4/7)調 AAS
>>672
gchar list1[][20] = {"../Exe/H2O.exe","World"};
gchar *list2[] = {(gchar *)list1[0], (gchar *)list1[1], NULL};
gchar **command = (gchar **)list2;
いろいろ試したところ、↑だと warning でなくなりました。意図されたのはコレでしょうか?コレで良いでしょうか?
685: (ワッチョイ 3fc5-k+pP) 2019/07/23(火)12:21 ID:d2s+lfJ+0(1/4)調 AAS
>>682
https://ideone.com/a1eBqF
これなら警告出ないけど、やりたいことと合ってるかどうかは知らん
686: (ワッチョイ 8f1a-aZqd) 2019/07/23(火)12:22 ID:7yf4dx7Q0(1)調 AAS
>>680
文字列リテラルは書き換え不可なので当然の警告。
char const* const command[] なら警告は出ないだろうけど、渡した先で書き換えしない保証がないならアウト。
渡した先で書き換えしない保証がないなら、リテラルでの初期化は無理だと思う。
687: 671 (ワッチョイ 4f25-WSqd) 2019/07/23(火)12:24 ID:/ZO3BTO70(5/7)調 AAS
>>683
なんかおかしいですよね。
でも Makefile に書いていいて実際に compile に使っているのは間違いなく gcc6 です。
warning が g++6 と共通なのですかね?
688(1): (ワッチョイ 3fc5-k+pP) 2019/07/23(火)12:30 ID:d2s+lfJ+0(2/4)調 AAS
https://ideone.com/Cek4Tz
そもそもgcharってなんなの?
charのエイリアスかなんか?
689: (ワッチョイ 3fc5-k+pP) 2019/07/23(火)12:33 ID:d2s+lfJ+0(3/4)調 AAS
> warning: ISO c++11 does not allow conversion from string literal to 'gchar *' (aka 'char *') [-Wwritable-strings]
charのエイリアスか
なら最初に書いとけよ
690: (アウアウエー Sabf-eWIt) 2019/07/23(火)12:38 ID:XJs/DfWFa(3/4)調 AAS
>>684
そういう話です。
691: 671 (ワッチョイ 4f25-WSqd) 2019/07/23(火)13:18 ID:/ZO3BTO70(6/7)調 AAS
>>688
ありがとうございます。スマートですね。参考にします。
gchar は char の別名です。すみません。
692(1): 671 (ワッチョイ 4f25-WSqd) 2019/07/23(火)13:24 ID:/ZO3BTO70(7/7)調 AAS
>>683
Makefile には gcc6 と書いてあるのですが、出力をみると c++ でコンパイルしていました。。。
今気づきました。 -std=c++11 もつけてある。
Cのソースを c++ でコンパイルするとマズいですか?今のところ何も問題はないです。
693(1): (アウアウエー Sabf-eWIt) 2019/07/23(火)14:56 ID:XJs/DfWFa(4/4)調 AAS
>>692
C++に複合リテラルないんじゃないかな。なくても困らんか。
あとさっきの配列の要素にstrdup突っ込むとconstにしなくていいかもな。
もしくはmemcpy(malloc(100),"hoge",5)とか。
標準に沿った書き方かどうかは知らん。
694: 671 (アウアウカー Sac3-WSqd) 2019/07/23(火)17:13 ID:TCk4qRZWa(1)調 AAS
>>693
ありがとうございます。なるほど、複合リテラルですね。調べてみます。
自分、C で書いていて compile も C でやっているつもりだったんですが、コンパイラが c++ だった。。。
これは c++ 用の Makefile を流用した為です。
最初 c++ でアプリを作ろうとして、Makefile を用意して、ソースを書き始めたのですが、途中で仮想端末オブジェクトが c++ ではうまく使えない事が判明して、
ソースを C に書き変えたのです。Makefile はフラグ等あるので流用してしまった...
これ以上は困らないですかね。困った時にはコンパイラが c++ な為を疑ってみます。
strdup と memcpy も試してみます
これをヒントに検索していて g_strsplit なる関数もある事を発見しました。
695: (アウアウウー Sad3-9T1T) 2019/07/23(火)18:36 ID:5chEKyGia(1/3)調 AAS
C++ には引数に void だけって関数がないらしいぞ。
その他細かい違いがあるかも知れないので要注意だ。
696: (ワッチョイ cfc3-oOeU) 2019/07/23(火)18:58 ID:Ffr5F2PG0(1/5)調 AAS
どちらかというと()の解釈が違う
c++だと()は(void)と同じ
cは()が(void)と同じになる文脈とそうでない文脈がある
697: (アウアウウー Sad3-9T1T) 2019/07/23(火)19:36 ID:5chEKyGia(2/3)調 AAS
こうしてまた(void)論争が始まり3スレぐらい消費されるのであった。
698: (ワッチョイ 0f01-LIhH) 2019/07/23(火)19:42 ID:FnKSwmbm0(1)調 AAS
生兵法家しかいないスレだから仕方ないね
699: (アウアウウー Sad3-9T1T) 2019/07/23(火)19:45 ID:5chEKyGia(3/3)調 AAS
また一つ燃料が投下された
700: (ワッチョイ 7f63-jGuh) 2019/07/23(火)20:15 ID:xWhG5FgG0(1)調 AAS
線香花火程度
701: (ワッチョイ 3fc5-k+pP) 2019/07/23(火)20:23 ID:d2s+lfJ+0(4/4)調 AAS
strdupはいつになったら標準ライブラリに入るんですか?
702(1): (ワッチョイ 0ff6-0ngu) 2019/07/23(火)20:55 ID:4sm3RNn+0(2/5)調 AAS
> cは()が(void)と同じになる文脈とそうでない文脈がある
ほほう、それはどんな場合だ? 具体的なコードで示せるか?
703: (ワッチョイ 3fab-5Xl5) 2019/07/23(火)20:56 ID:LLlz9dHQ0(1)調 AAS
>>668
>>669
>>670
ありがとう!
なんとかがんばってやってみます
704: (ワッチョイ cfc3-oOeU) 2019/07/23(火)21:08 ID:Ffr5F2PG0(2/5)調 AAS
int f();
int f()
{
return 1;
}
705(1): ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/23(火)21:21 ID:JcFEdZGk0(1/3)調 AAS
>>702
?(void) と同じ
void f() { return; }
?(void)と違う
void f();
706(2): (ワッチョイ 0ff6-0ngu) 2019/07/23(火)21:47 ID:4sm3RNn+0(3/5)調 AAS
>>705
https://paiza.io/projects/v_bGi1kbrLaV_smq5mvcNA
https://ideone.com/iJZS6H
http://codepad.org/gy8qyLSL
707: ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/23(火)21:55 ID:JcFEdZGk0(2/3)調 AAS
>>706
thx 納得しました
https://ideone.com/0Bi6G8
708(1): (ワッチョイ cfc3-oOeU) 2019/07/23(火)21:58 ID:Ffr5F2PG0(3/5)調 AAS
>>706
https://ideone.com/whHGrw
709(1): (ワッチョイ 0ff6-0ngu) 2019/07/23(火)22:01 ID:4sm3RNn+0(4/5)調 AAS
>>708
ん、何が言いたい?
710(2): (ワッチョイ cfc3-oOeU) 2019/07/23(火)22:13 ID:Ffr5F2PG0(4/5)調 AAS
>>709
()と(void)が違う例
1行目のコメントはずして、2行目にコメントつけたらコンパイル通る
定義の時は()は(void)と同じで引数の無い関数の定義になる
711: ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/23(火)22:19 ID:JcFEdZGk0(3/3)調 AAS
>>710
>定義の時は()は(void)と同じで引数の無い関数の定義になる
そ、れ、が…
https://ideone.com/1jHHOQ
712: (ワッチョイ 0fb3-o0eX) 2019/07/23(火)22:31 ID:cffvmBp10(1)調 AAS
プロトタイプ宣言で引数部分を空にすると引数チェックがされなくなる
例えばこんなコードも動く
http://ideone.com/rjTqQt
713: (ワッチョイ cfc3-oOeU) 2019/07/23(火)22:43 ID:Ffr5F2PG0(5/5)調 AAS
https://softwareengineering.stackexchange.com/questions/286490/what-is-the-difference-between-function-and-functionvoid
draftだから正規版で変わった可能性もあるが
n1570の133,134ページに記載がある
714: (ワッチョイ 0ff6-0ngu) 2019/07/23(火)23:42 ID:4sm3RNn+0(5/5)調 AAS
>>710
すまんが、寝落ちする
明朝またくる
715: (ワッチョイ 3fad-0ngu) 2019/07/24(水)02:42 ID:S0ZgllDI0(1)調 AAS
はっ。ちょっと目を離したスキに(void)ネタだけでもうこんなに書き込みが。
716(1): (ワッチョイ ff92-Ev2Q) 2019/07/24(水)03:03 ID:VPRaWuN40(1/4)調 AAS
2進数で表現されている多倍長整数を10進数の文字列に変換する場合、機械語レベルではどうするのが現代風ですか。
レジスタ長までならBCD変換でしょうか?
例えば、Cのprintf(“%d”, 12345)はどういう実装がされますか。
多倍長ならまた違ってきますか。
717(3): ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/24(水)05:30 ID:+4E3jW9F0(1/7)調 AAS
>>716
C++ ですが多桁長演算を書いています。
2chスレ:tech
std::ostream &operator<<(std::ostream &stream, mpz_base_class c)
std::ostream &operator<<(std::ostream &stream, mpz_class c)
718(1): (ワッチョイ ff92-DGEx) 2019/07/24(水)06:54 ID:VPRaWuN40(2/4)調 AAS
>>717
ありがとうございます。
多倍長演算では内部2進数のまま演算しているのですね。
719(2): (ワッチョイ ff92-DGEx) 2019/07/24(水)06:55 ID:VPRaWuN40(3/4)調 AAS
改めて質問します。
2進数で内部表現されている整数を10進数の文字列に変換する場合、
機械語レベルではどうするのが現代風ですか。
レジスタ長までならBCD変換でしょうか?
例えば、Cのprintf(“%d”, 12345)はどういう実装がされますか。
720(1): (アウアウウー Sad3-9T1T) 2019/07/24(水)09:34 ID:UuFmwqvta(1)調 AAS
現代風?
現代だろうが古代だろうが10で割った余りを並べながら10で割る事は変わらんと思うが。(CPUによってはBCDに一発変換なんて命令あるのかな?あればそれ使うと速いだろうね)。
721: (ワッチョイ 0ff6-0ngu) 2019/07/24(水)10:27 ID:H/U9sRCS0(1/3)調 AAS
JIS X3010:2003
6.7.5.3 関数宣言子(関数原型を含む)
意味規則 宣言“T D1”においてD1 が形式
D ( 仮引数型並び )
又は
D ( 識別子並びopt )
をもつ場合,次のとおりとする。
識別子並びは,関数の仮引数の識別子だけを宣言する。関数定義の一部である関数宣言子で識別子並びが空の場合,関数が仮引数をもたないことを指定する。関数定義の一部でない関数宣言子の識別子並びが空の場合,仮引数の個数及び型の情報がないことを指定する(124)。
(124) “今後の言語の方針”(6.11.6 参照)。
(125) 両方の関数型が“古い形式”の場合,仮引数の型は比較されない。
6.11.6 関数宣言子 空の括弧を伴う関数宣言子(関数原型形式の仮引数型並びではない。)の使用は,廃止予定事項とする。
6.11.7 関数定義 仮引数の識別子並びと宣言並びを別々に与える関数定義(関数原型形式の仮引数の型及び識別子の宣言ではない。)の使用は,廃止予定事項とする。
722: (ワッチョイ 3fa5-xTH7) 2019/07/24(水)10:30 ID:sKxa8jzv0(1)調 AAS
>>719
こうなっているらしい
printf()のソースコードで、ソースコードリーディングのコツを身に付ける (2/3):main()関数の前には何があるのか(5) - @IT
https://www.atmarkit.co.jp/ait/articles/1703/01/news170_2.html
723(1): (アウアウカー Sac3-eWIt) 2019/07/24(水)10:35 ID:q7vPBAFqa(1/3)調 AAS
ソースのコメントで変数毎に「16進整数」とか「10進整数」とか区別してるのあったけど意味わからんかった。
全部intなのに。
724: (ワッチョイ 0ff6-0ngu) 2019/07/24(水)10:50 ID:H/U9sRCS0(2/3)調 AAS
void f() {} //関数定義の一部である関数宣言子で識別子並びが空の場合,関数が仮引数をもたないことを指定する。
void g(); //関数定義の一部でない関数宣言子の識別子並びが空の場合,仮引数の個数及び型の情報がないことを指定する(124)。
int main()
{
f(1); //NG: 0個の仮引数に1個の実引数
g(1); //OK: 任意の仮引数に1個の実引数
}
void f(); //両方の関数型が“古い形式”の場合,仮引数の型は比較されない。
void g() {} //両方の関数型が“古い形式”の場合,仮引数の型は比較されない。
/*
D:\learn\c>cl 710.c /W4 /nologo /c
710.c
D:\learn\c>gcc 710.c -Wall -std=c18 -c
D:\learn\c>clang-cl 710.c /W4 /c
710.c(6,8): warning: too many arguments in call to 'f'
f(1); //NG: 0<8C><U+0082>?<BC><88><F8><90><94><82><C9>1<8C><U+0082>?<C0><88><F8><90><94>
~ ^
1 warning generated.
D:\learn\c>
*/
725: (ワッチョイ 0f95-k+pP) 2019/07/24(水)12:11 ID:/HKiGEdd0(1)調 AAS
>>723
ひょっとして変数の接尾語に10進数や16進数を表す3文字以下のものを
付けるべきなのでは?
他のところの計算の時に間違えてしまう可能性が減ると思う
726(1): (アウアウクー MMa3-Ev2Q) 2019/07/24(水)12:43 ID:PgWkyPpkM(1/2)調 AAS
>>720
Z80やx86にはBCD関連の命令がありました。
最近のレジスタビット数の大きいプロセッサは知りませんので伺いました。
10で割った余りだと桁数nとしてO(n^2)の計算量になりますよね。
流石にそれはないかなと思っています。
727: (ラクペッ MM83-6A8M) 2019/07/24(水)12:53 ID:iTtNhbrVM(1)調 AAS
https://days-of-programming.blogspot.com/2016/01/picbcd.html?m=1
728(1): (アウアウカー Sac3-eWIt) 2019/07/24(水)13:07 ID:q7vPBAFqa(2/3)調 AAS
O(n)じゃないか?
x64はもう命令ないんだね
729(1): (アウアウウー Sad3-7lXP) 2019/07/24(水)13:17 ID:/roNvT5Ja(1)調 AAS
O(n)だね。
文字列変換時にBCDにするのではなく演算からBCDとして扱うプログラムを見たことある。
あまり効率が良いとは思えなかったが。
730: (ワッチョイ 8f01-xAKt) 2019/07/24(水)17:12 ID:s/qhJVlP0(1)調 AAS
x64の場合、ALUでやる2ケタの加減乗除の方は廃止だが、FPUでやる18ケタの10進と2進の間の変換はまだ使える
731: (スップ Sd5f-1UnR) 2019/07/24(水)17:15 ID:rxR1MP+Fd(1)調 AAS
聞くのはここでいいのか微妙だけど質問です
abzのエンコーダで回転方向を検知したいんですがzパルスでリセットされるときに回転方向が正しく検知されなくなってしまうところの解決方法どなたか知ってますか
732: (アウアウクー MMa3-Ev2Q) 2019/07/24(水)17:21 ID:PgWkyPpkM(2/2)調 AAS
>>728
mod 10でO(n)、
それを桁数nに比例した分繰り返すからO(n^2)
と考えています。
O(n)で内部2進表現の整数→10進数の文字列に変換ができればいいのですけどね。
あるいはdecimal型を持つ言語がありますが、そのような型では内部でBCDで持ってたりするのでしょうか。
733(1): (ラクペッ MM83-io3l) 2019/07/24(水)17:55 ID:YVgDjaZ/M(1)調 AAS
1桁分のmod 10だけなら計算量は固定なのでO(1)
n桁分を繰り返すなら計算量はO(n)
すべての計算量のオーダーとしてはO(n)
734(2): (スッップ Sd5f-Ev2Q) 2019/07/24(水)18:22 ID:+vIzXAhOd(1)調 AAS
>>733
わかりました。
剰余を固定命令数でできる桁数内であればO(n)でできるということですね。
現在、内部2進表現の整数を10進数の文字列に変換する方法としては、mod 10の繰り返しがメジャー(ベスト)ですか?
printfの%dもこの実装が主流でしょうか。
735: (アウアウカー Sac3-eWIt) 2019/07/24(水)18:23 ID:q7vPBAFqa(3/3)調 AAS
modの計算量が固定ってこともないんじゃ?
除数にかなり依存しそうな
736: ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/24(水)19:18 ID:+4E3jW9F0(2/7)調 AAS
>>718
そうです、10進法変換は表示のときにはじめて実施します
737(1): ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/24(水)19:20 ID:+4E3jW9F0(3/7)調 AAS
>>719
単純に 10 で割った余りを並べるだけですが、ただ >>717 で紹介したコードでは幾分かの最適化が追加されています
738(1): ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/24(水)19:21 ID:+4E3jW9F0(4/7)調 AAS
>>726
いや、10 で割った余りそのものであり、他に方法はありません
ただ、最適化の余地はあり、それは >>717 に示しました
739(1): ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/24(水)19:22 ID:+4E3jW9F0(5/7)調 AAS
>>729
BCD はインプリメントする側としてはやる気が起きないものだ、と思いますよ
足し算、引き算はいいとして、掛け算、割り算は BCD では実装できないのです
740: ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/24(水)19:23 ID:+4E3jW9F0(6/7)調 AAS
>>734
>現在、内部2進表現の整数を10進数の文字列に変換する方法としては、mod 10の繰り返しがメジャー(ベスト)ですか?
他に方法はありません、ただし最適化する余地はあると思っています
741(1): (ワッチョイ 0ff6-0ngu) 2019/07/24(水)21:42 ID:H/U9sRCS0(3/3)調 AAS
>>739
は? 乗算と除算が実装できない??
俺らの脳には義務教育できっちり実装されているんだがw
742(1): ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/24(水)21:53 ID:+4E3jW9F0(7/7)調 AAS
>>741
今の話題は BCD
BCD にて効率的に乗算・除算を実装している CPU はありますか?
743: (ワッチョイ ff92-Ev2Q) 2019/07/24(水)23:16 ID:VPRaWuN40(4/4)調 AAS
>>737
わかりました。
10進全桁を一旦BCDで全て求めなくても、
10進1桁ずつ求めることが出来るのですね。
>>738
単純に興味があるのでお聞きするのですが
「他に方法はありません」と断定する理由は何でしょうか。
効率を考えなければ、
単なる最適化ではない異なるアルゴリズムの他の方法が
容易に思いつきますが、例えば、
10で割る方法が原理的に最適であると証明できる
というようなことでしょうか。
744: (アウアウカー Sac3-eWIt) 2019/07/24(水)23:55 ID:gSIpsgHia(1)調 AAS
秘密はvoidにありそう
上下前次1-新書関写板覧索設栞歴
あと 258 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s