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