!extend:checked:vvvvv:1000:512
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言語なら俺に聞け 151
https://mevius.5ch.net/test/read.cgi/tech/1554171817/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 152
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウウー Sa4f-7DQ/)
2019/06/17(月) 18:27:10.41ID:3L1/L9kLa669デフォルトの名無しさん (アウアウカー Sac3-eWIt)
2019/07/22(月) 19:25:19.41ID:MRg17CtQa いろいろあるんですけど、ライセンス的にopensslでいいやみたいな感じになりましたね
waylandは5年後くらいにはなんとかなるんかな。どういうレイヤでサービス提供したいのかよくわからん所がある。
waylandは5年後くらいにはなんとかなるんかな。どういうレイヤでサービス提供したいのかよくわからん所がある。
670デフォルトの名無しさん (ワッチョイ 8f8f-1UnR)
2019/07/22(月) 21:33:35.10ID:tAjmkx+m0 同じくopensslでいいんじゃないかと思いますな
671デフォルトの名無しさん (ワッチョイ 4f25-WSqd)
2019/07/23(火) 03:25:09.81ID:/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 も必要です。よろしくお願いします。
を 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デフォルトの名無しさん (アウアウエー Sabf-eWIt)
2019/07/23(火) 04:01:15.67ID:XJs/DfWFa 要素の文字列をそれぞれキャストしてみるとか?
でも別に文字列の実体を用意した方が無難では。
でも別に文字列の実体を用意した方が無難では。
673デフォルトの名無しさん (ワッチョイ ff2f-Im00)
2019/07/23(火) 05:54:57.80ID:XS6t8zxL0 char * const command[3] = {"./Hello.exe","World"};
674デフォルトの名無しさん (オッペケ Sra3-KwlG)
2019/07/23(火) 09:58:47.20ID:J+ZHGa1Mr 初心者で勉強中なんですが、
switch文は
if文みたく
switch(a >0)のように()の中に関係演算子を使った式はかけないんでしょうか?
エラーがでるので無理なのかなと思ったんですが
switch文は
if文みたく
switch(a >0)のように()の中に関係演算子を使った式はかけないんでしょうか?
エラーがでるので無理なのかなと思ったんですが
675デフォルトの名無しさん (ブーイモ MM0f-lP7j)
2019/07/23(火) 10:46:29.88ID:DdnFitx+M エラーじゃなくて警告では?
動かない理由はないと思うのでgccで試してみたけど、ちゃんと動いたよ。
ただ、結果は1か0の2値しかないのでif文使ったほうが良いと思うよ
動かない理由はないと思うのでgccで試してみたけど、ちゃんと動いたよ。
ただ、結果は1か0の2値しかないのでif文使ったほうが良いと思うよ
676デフォルトの名無しさん (アークセー Sxa3-7lXP)
2019/07/23(火) 10:51:17.50ID:unlUKZmGx 本当は
switch (a) {
case a > 0:
...
的なことをしたかったのではないかとエスパーしてみる。
switch (a) {
case a > 0:
...
的なことをしたかったのではないかとエスパーしてみる。
677デフォルトの名無しさん (ワッチョイ 4f61-aZqd)
2019/07/23(火) 11:36:41.71ID:LSxEgoA20678デフォルトの名無しさん (ワッチョイ 7f7c-jGuh)
2019/07/23(火) 11:42:11.95ID:CU39ntZ20 >>676
switch(true) って裏技 あれマジで気色悪いよね
switch(true) って裏技 あれマジで気色悪いよね
679デフォルトの名無しさん (ブーイモ MMb3-sRGG)
2019/07/23(火) 11:44:08.90ID:SF2VCGvmM case に何を書けばいいんだ?false は 0 でいいだろうけど、true は?
680671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 11:49:30.09ID:/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
引き続きアドバイスをお願いします。
>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:01.06ID:4sm3RNn+0 >>674
書くことはできる
関係式は int 型の 0 または 1 という結果を生じるので
switch (a > 0) は a の値により
switch (0) もしくは
switch (1) と等価になる
おまえさんが言いたいのは switch で範囲チェックができるのか
ということだろうがそれはできない
a と case に指定した定数の == 比較しかできないのが switch だ
不等号や != が使いたければ if 文か3項演算子ということになる
書くことはできる
関係式は int 型の 0 または 1 という結果を生じるので
switch (a > 0) は a の値により
switch (0) もしくは
switch (1) と等価になる
おまえさんが言いたいのは switch で範囲チェックができるのか
ということだろうがそれはできない
a と case に指定した定数の == 比較しかできないのが switch だ
不等号や != が使いたければ if 文か3項演算子ということになる
682671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 12:04:01.45ID:/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 は放っておくしかないのかな?
ありがとうございます。具体的にはどうしたら良いでしょうか?
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デフォルトの名無しさん (アウアウエー Sabf-eWIt)
2019/07/23(火) 12:10:49.21ID:XJs/DfWFa その前に、671の警告でC++11って出てるのはなぜなのか。
複合リテラルってあれキャストではないよな。知らんけど。
複合リテラルってあれキャストではないよな。知らんけど。
684671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 12:21:12.41ID:/ZO3BTO70 >>672
gchar list1[][20] = {"../Exe/H2O.exe","World"};
gchar *list2[] = {(gchar *)list1[0], (gchar *)list1[1], NULL};
gchar **command = (gchar **)list2;
いろいろ試したところ、↑だと warning でなくなりました。意図されたのはコレでしょうか?コレで良いでしょうか?
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:15.34ID:d2s+lfJ+0686デフォルトの名無しさん (ワッチョイ 8f1a-aZqd)
2019/07/23(火) 12:22:08.73ID:7yf4dx7Q0 >>680
文字列リテラルは書き換え不可なので当然の警告。
char const* const command[] なら警告は出ないだろうけど、渡した先で書き換えしない保証がないならアウト。
渡した先で書き換えしない保証がないなら、リテラルでの初期化は無理だと思う。
文字列リテラルは書き換え不可なので当然の警告。
char const* const command[] なら警告は出ないだろうけど、渡した先で書き換えしない保証がないならアウト。
渡した先で書き換えしない保証がないなら、リテラルでの初期化は無理だと思う。
687671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 12:24:46.80ID:/ZO3BTO70688デフォルトの名無しさん (ワッチョイ 3fc5-k+pP)
2019/07/23(火) 12:30:44.31ID:d2s+lfJ+0689デフォルトの名無しさん (ワッチョイ 3fc5-k+pP)
2019/07/23(火) 12:33:40.67ID:d2s+lfJ+0 > warning: ISO c++11 does not allow conversion from string literal to 'gchar *' (aka 'char *') [-Wwritable-strings]
charのエイリアスか
なら最初に書いとけよ
charのエイリアスか
なら最初に書いとけよ
690デフォルトの名無しさん (アウアウエー Sabf-eWIt)
2019/07/23(火) 12:38:30.05ID:XJs/DfWFa >>684
そういう話です。
そういう話です。
691671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 13:18:08.85ID:/ZO3BTO70692671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 13:24:51.89ID:/ZO3BTO70 >>683
Makefile には gcc6 と書いてあるのですが、出力をみると c++ でコンパイルしていました。。。
今気づきました。 -std=c++11 もつけてある。
Cのソースを c++ でコンパイルするとマズいですか?今のところ何も問題はないです。
Makefile には gcc6 と書いてあるのですが、出力をみると c++ でコンパイルしていました。。。
今気づきました。 -std=c++11 もつけてある。
Cのソースを c++ でコンパイルするとマズいですか?今のところ何も問題はないです。
693デフォルトの名無しさん (アウアウエー Sabf-eWIt)
2019/07/23(火) 14:56:41.16ID:XJs/DfWFa >>692
C++に複合リテラルないんじゃないかな。なくても困らんか。
あとさっきの配列の要素にstrdup突っ込むとconstにしなくていいかもな。
もしくはmemcpy(malloc(100),"hoge",5)とか。
標準に沿った書き方かどうかは知らん。
C++に複合リテラルないんじゃないかな。なくても困らんか。
あとさっきの配列の要素にstrdup突っ込むとconstにしなくていいかもな。
もしくはmemcpy(malloc(100),"hoge",5)とか。
標準に沿った書き方かどうかは知らん。
694671 (アウアウカー Sac3-WSqd)
2019/07/23(火) 17:13:31.67ID:TCk4qRZWa >>693
ありがとうございます。なるほど、複合リテラルですね。調べてみます。
自分、C で書いていて compile も C でやっているつもりだったんですが、コンパイラが c++ だった。。。
これは c++ 用の Makefile を流用した為です。
最初 c++ でアプリを作ろうとして、Makefile を用意して、ソースを書き始めたのですが、途中で仮想端末オブジェクトが c++ ではうまく使えない事が判明して、
ソースを C に書き変えたのです。Makefile はフラグ等あるので流用してしまった...
これ以上は困らないですかね。困った時にはコンパイラが c++ な為を疑ってみます。
strdup と memcpy も試してみます
これをヒントに検索していて g_strsplit なる関数もある事を発見しました。
ありがとうございます。なるほど、複合リテラルですね。調べてみます。
自分、C で書いていて compile も C でやっているつもりだったんですが、コンパイラが c++ だった。。。
これは c++ 用の Makefile を流用した為です。
最初 c++ でアプリを作ろうとして、Makefile を用意して、ソースを書き始めたのですが、途中で仮想端末オブジェクトが c++ ではうまく使えない事が判明して、
ソースを C に書き変えたのです。Makefile はフラグ等あるので流用してしまった...
これ以上は困らないですかね。困った時にはコンパイラが c++ な為を疑ってみます。
strdup と memcpy も試してみます
これをヒントに検索していて g_strsplit なる関数もある事を発見しました。
695デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/23(火) 18:36:28.60ID:5chEKyGia C++ には引数に void だけって関数がないらしいぞ。
その他細かい違いがあるかも知れないので要注意だ。
その他細かい違いがあるかも知れないので要注意だ。
696デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/23(火) 18:58:12.02ID:Ffr5F2PG0 どちらかというと()の解釈が違う
c++だと()は(void)と同じ
cは()が(void)と同じになる文脈とそうでない文脈がある
c++だと()は(void)と同じ
cは()が(void)と同じになる文脈とそうでない文脈がある
697デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/23(火) 19:36:26.79ID:5chEKyGia こうしてまた(void)論争が始まり3スレぐらい消費されるのであった。
698デフォルトの名無しさん (ワッチョイ 0f01-LIhH)
2019/07/23(火) 19:42:24.88ID:FnKSwmbm0 生兵法家しかいないスレだから仕方ないね
699デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/23(火) 19:45:15.53ID:5chEKyGia また一つ燃料が投下された
700デフォルトの名無しさん (ワッチョイ 7f63-jGuh)
2019/07/23(火) 20:15:50.53ID:xWhG5FgG0 線香花火程度
701デフォルトの名無しさん (ワッチョイ 3fc5-k+pP)
2019/07/23(火) 20:23:08.15ID:d2s+lfJ+0 strdupはいつになったら標準ライブラリに入るんですか?
702デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/23(火) 20:55:09.99ID:4sm3RNn+0 > cは()が(void)と同じになる文脈とそうでない文脈がある
ほほう、それはどんな場合だ? 具体的なコードで示せるか?
ほほう、それはどんな場合だ? 具体的なコードで示せるか?
703デフォルトの名無しさん (ワッチョイ 3fab-5Xl5)
2019/07/23(火) 20:56:28.16ID:LLlz9dHQ0704デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/23(火) 21:08:17.10ID:Ffr5F2PG0 int f();
int f()
{
return 1;
}
int f()
{
return 1;
}
706デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/23(火) 21:47:42.09ID:4sm3RNn+0708デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/23(火) 21:58:12.31ID:Ffr5F2PG0709デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/23(火) 22:01:20.82ID:4sm3RNn+0 >>708
ん、何が言いたい?
ん、何が言いたい?
710デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/23(火) 22:13:17.57ID:Ffr5F2PG0712デフォルトの名無しさん (ワッチョイ 0fb3-o0eX)
2019/07/23(火) 22:31:08.37ID:cffvmBp10713デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/23(火) 22:43:31.16ID:Ffr5F2PG0 https://softwareengineering.stackexchange.com/questions/286490/what-is-the-difference-between-function-and-functionvoid
draftだから正規版で変わった可能性もあるが
n1570の133,134ページに記載がある
draftだから正規版で変わった可能性もあるが
n1570の133,134ページに記載がある
714デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/23(火) 23:42:31.01ID:4sm3RNn+0715デフォルトの名無しさん (ワッチョイ 3fad-0ngu)
2019/07/24(水) 02:42:47.45ID:S0ZgllDI0 はっ。ちょっと目を離したスキに(void)ネタだけでもうこんなに書き込みが。
716デフォルトの名無しさん (ワッチョイ ff92-Ev2Q)
2019/07/24(水) 03:03:06.58ID:VPRaWuN40 2進数で表現されている多倍長整数を10進数の文字列に変換する場合、機械語レベルではどうするのが現代風ですか。
レジスタ長までならBCD変換でしょうか?
例えば、Cのprintf(“%d”, 12345)はどういう実装がされますか。
多倍長ならまた違ってきますか。
レジスタ長までならBCD変換でしょうか?
例えば、Cのprintf(“%d”, 12345)はどういう実装がされますか。
多倍長ならまた違ってきますか。
>>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)
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)
718デフォルトの名無しさん (ワッチョイ ff92-DGEx)
2019/07/24(水) 06:54:11.66ID:VPRaWuN40719デフォルトの名無しさん (ワッチョイ ff92-DGEx)
2019/07/24(水) 06:55:28.24ID:VPRaWuN40 改めて質問します。
2進数で内部表現されている整数を10進数の文字列に変換する場合、
機械語レベルではどうするのが現代風ですか。
レジスタ長までならBCD変換でしょうか?
例えば、Cのprintf(“%d”, 12345)はどういう実装がされますか。
2進数で内部表現されている整数を10進数の文字列に変換する場合、
機械語レベルではどうするのが現代風ですか。
レジスタ長までならBCD変換でしょうか?
例えば、Cのprintf(“%d”, 12345)はどういう実装がされますか。
720デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/24(水) 09:34:09.57ID:UuFmwqvta 現代風?
現代だろうが古代だろうが10で割った余りを並べながら10で割る事は変わらんと思うが。(CPUによってはBCDに一発変換なんて命令あるのかな?あればそれ使うと速いだろうね)。
現代だろうが古代だろうが10で割った余りを並べながら10で割る事は変わらんと思うが。(CPUによってはBCDに一発変換なんて命令あるのかな?あればそれ使うと速いだろうね)。
721デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/24(水) 10:27:00.90ID: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 関数定義 仮引数の識別子並びと宣言並びを別々に与える関数定義(関数原型形式の仮引数の型及び識別子の宣言ではない。)の使用は,廃止予定事項とする。
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:48.21ID:sKxa8jzv0 >>719
こうなっているらしい
printf()のソースコードで、ソースコードリーディングのコツを身に付ける (2/3):main()関数の前には何があるのか(5) - @IT
https://www.atmarkit.co.jp/ait/articles/1703/01/news170_2.html
こうなっているらしい
printf()のソースコードで、ソースコードリーディングのコツを身に付ける (2/3):main()関数の前には何があるのか(5) - @IT
https://www.atmarkit.co.jp/ait/articles/1703/01/news170_2.html
723デフォルトの名無しさん (アウアウカー Sac3-eWIt)
2019/07/24(水) 10:35:17.11ID:q7vPBAFqa ソースのコメントで変数毎に「16進整数」とか「10進整数」とか区別してるのあったけど意味わからんかった。
全部intなのに。
全部intなのに。
724デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/24(水) 10:50:43.56ID: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>
*/
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:20.90ID:/HKiGEdd0726デフォルトの名無しさん (アウアウクー MMa3-Ev2Q)
2019/07/24(水) 12:43:12.82ID:PgWkyPpkM >>720
Z80やx86にはBCD関連の命令がありました。
最近のレジスタビット数の大きいプロセッサは知りませんので伺いました。
10で割った余りだと桁数nとしてO(n^2)の計算量になりますよね。
流石にそれはないかなと思っています。
Z80やx86にはBCD関連の命令がありました。
最近のレジスタビット数の大きいプロセッサは知りませんので伺いました。
10で割った余りだと桁数nとしてO(n^2)の計算量になりますよね。
流石にそれはないかなと思っています。
727デフォルトの名無しさん (ラクペッ MM83-6A8M)
2019/07/24(水) 12:53:46.86ID:iTtNhbrVM728デフォルトの名無しさん (アウアウカー Sac3-eWIt)
2019/07/24(水) 13:07:48.35ID:q7vPBAFqa O(n)じゃないか?
x64はもう命令ないんだね
x64はもう命令ないんだね
729デフォルトの名無しさん (アウアウウー Sad3-7lXP)
2019/07/24(水) 13:17:22.40ID:/roNvT5Ja O(n)だね。
文字列変換時にBCDにするのではなく演算からBCDとして扱うプログラムを見たことある。
あまり効率が良いとは思えなかったが。
文字列変換時にBCDにするのではなく演算からBCDとして扱うプログラムを見たことある。
あまり効率が良いとは思えなかったが。
730デフォルトの名無しさん (ワッチョイ 8f01-xAKt)
2019/07/24(水) 17:12:57.35ID:s/qhJVlP0 x64の場合、ALUでやる2ケタの加減乗除の方は廃止だが、FPUでやる18ケタの10進と2進の間の変換はまだ使える
731デフォルトの名無しさん (スップ Sd5f-1UnR)
2019/07/24(水) 17:15:31.56ID:rxR1MP+Fd 聞くのはここでいいのか微妙だけど質問です
abzのエンコーダで回転方向を検知したいんですがzパルスでリセットされるときに回転方向が正しく検知されなくなってしまうところの解決方法どなたか知ってますか
abzのエンコーダで回転方向を検知したいんですがzパルスでリセットされるときに回転方向が正しく検知されなくなってしまうところの解決方法どなたか知ってますか
732デフォルトの名無しさん (アウアウクー MMa3-Ev2Q)
2019/07/24(水) 17:21:50.17ID:PgWkyPpkM >>728
mod 10でO(n)、
それを桁数nに比例した分繰り返すからO(n^2)
と考えています。
O(n)で内部2進表現の整数→10進数の文字列に変換ができればいいのですけどね。
あるいはdecimal型を持つ言語がありますが、そのような型では内部でBCDで持ってたりするのでしょうか。
mod 10でO(n)、
それを桁数nに比例した分繰り返すからO(n^2)
と考えています。
O(n)で内部2進表現の整数→10進数の文字列に変換ができればいいのですけどね。
あるいはdecimal型を持つ言語がありますが、そのような型では内部でBCDで持ってたりするのでしょうか。
733デフォルトの名無しさん (ラクペッ MM83-io3l)
2019/07/24(水) 17:55:29.62ID:YVgDjaZ/M 1桁分のmod 10だけなら計算量は固定なのでO(1)
n桁分を繰り返すなら計算量はO(n)
すべての計算量のオーダーとしてはO(n)
n桁分を繰り返すなら計算量はO(n)
すべての計算量のオーダーとしてはO(n)
734デフォルトの名無しさん (スッップ Sd5f-Ev2Q)
2019/07/24(水) 18:22:37.58ID:+vIzXAhOd >>733
わかりました。
剰余を固定命令数でできる桁数内であればO(n)でできるということですね。
現在、内部2進表現の整数を10進数の文字列に変換する方法としては、mod 10の繰り返しがメジャー(ベスト)ですか?
printfの%dもこの実装が主流でしょうか。
わかりました。
剰余を固定命令数でできる桁数内であればO(n)でできるということですね。
現在、内部2進表現の整数を10進数の文字列に変換する方法としては、mod 10の繰り返しがメジャー(ベスト)ですか?
printfの%dもこの実装が主流でしょうか。
735デフォルトの名無しさん (アウアウカー Sac3-eWIt)
2019/07/24(水) 18:23:32.53ID:q7vPBAFqa modの計算量が固定ってこともないんじゃ?
除数にかなり依存しそうな
除数にかなり依存しそうな
>>718
そうです、10進法変換は表示のときにはじめて実施します
そうです、10進法変換は表示のときにはじめて実施します
741デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/24(水) 21:42:02.70ID:H/U9sRCS0743デフォルトの名無しさん (ワッチョイ ff92-Ev2Q)
2019/07/24(水) 23:16:58.12ID:VPRaWuN40744デフォルトの名無しさん (アウアウカー Sac3-eWIt)
2019/07/24(水) 23:55:14.64ID:gSIpsgHia 秘密はvoidにありそう
745デフォルトの名無しさん (ワッチョイ 062f-9asT)
2019/07/25(木) 00:31:43.06ID:iiNbTbUN0746デフォルトの名無しさん (ワッチョイ 062f-9asT)
2019/07/25(木) 00:55:04.35ID:iiNbTbUN0 あ、2 と 4 で or 取らなきゃダメか
747デフォルトの名無しさん (アウアウエー Sa82-vYo8)
2019/07/25(木) 01:12:42.13ID:AQEcWXoca テーブル探す様な方法はないの?
>>747
なるほど…そういう方向性はありえますね
なるほど…そういう方向性はありえますね
749デフォルトの名無しさん (ワッチョイ 7bf6-ZVB1)
2019/07/25(木) 06:55:37.49ID:PBP8yj9y0750デフォルトの名無しさん (オイコラミネオ MM0b-+21c)
2019/07/25(木) 10:19:57.39ID:PDyUwndbM >>747
あなんか昔はそういうHWがあったらしい
あなんか昔はそういうHWがあったらしい
751デフォルトの名無しさん (ワッチョイ 1e69-GqBD)
2019/07/25(木) 10:24:34.16ID:PLeF7EkO0 乗算部分はテーブル化しやすそう
除算は何処で軽くするのがいいのか皆目見当がつかねぇ
除算は何処で軽くするのがいいのか皆目見当がつかねぇ
752デフォルトの名無しさん (アウアウエー Sa82-vYo8)
2019/07/25(木) 10:39:38.12ID:AQEcWXoca 10進表記に関しては、いきなり割り算するよりはまず9とか99とか999とか9999とかと引き算なり大小比較なりしてもよさそうだけども。
753デフォルトの名無しさん (アウアウエー Sa82-vYo8)
2019/07/25(木) 10:43:55.98ID:AQEcWXoca まあ除算は昔からクソ遅いよな
floatで逆数かける感じの方が速そうだ
floatで逆数かける感じの方が速そうだ
754デフォルトの名無しさん (ワッチョイ ab95-wm0+)
2019/07/25(木) 10:50:12.92ID:D8pzUtDE0755デフォルトの名無しさん (ワッチョイ 0aab-96Ml)
2019/07/25(木) 12:08:29.39ID:UzGMA6uu0 ビットリバーサルについて質問です
誰もがわかりやすく簡単にできる方法は
C言語でどうなるでしょうか?
誰もがわかりやすく簡単にできる方法は
C言語でどうなるでしょうか?
756デフォルトの名無しさん (ドコグロ MM33-lX5B)
2019/07/25(木) 12:33:12.38ID:IOfcNDqSM757デフォルトの名無しさん (ワッチョイ a361-KIok)
2019/07/25(木) 12:35:03.65ID:/OuGEEZ00 整数定数除算は速度優先オプティマイズでアセンブラ出力見てみなよ
758デフォルトの名無しさん (ブーイモ MMaa-xrbd)
2019/07/25(木) 12:53:26.79ID:5Cp6xaylM >>734
隣同士でひっくり返して、2こセットで隣同士でひっくり返して、4こセットで隣同士でひっくり返して…
ってやるらしい。賢いね
uint32_t reverse(uint32_t x) {
x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
return ((x >> 16) | (x << 16));
}
隣同士でひっくり返して、2こセットで隣同士でひっくり返して、4こセットで隣同士でひっくり返して…
ってやるらしい。賢いね
uint32_t reverse(uint32_t x) {
x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
return ((x >> 16) | (x << 16));
}
759デフォルトの名無しさん (ブーイモ MMaa-xrbd)
2019/07/25(木) 12:55:25.80ID:5Cp6xaylM おっと>>755の間違い
760デフォルトの名無しさん (ドコグロ MM33-lX5B)
2019/07/25(木) 13:08:04.63ID:IOfcNDqSM >>755
簡単でわかり易いと言うなら素直にビット毎に処理すればいいと思う
unsigned int x = …;
unsigned int y = 0;
for(size_t i = 0; i < 32; i++){
y <<= 1;
y |= x & 1;
x >>= 1;
}
てな感じ
高速化したいならテーブル引くなりすればいいかと
簡単でわかり易いと言うなら素直にビット毎に処理すればいいと思う
unsigned int x = …;
unsigned int y = 0;
for(size_t i = 0; i < 32; i++){
y <<= 1;
y |= x & 1;
x >>= 1;
}
てな感じ
高速化したいならテーブル引くなりすればいいかと
761デフォルトの名無しさん (ワッチョイ 0aab-96Ml)
2019/07/25(木) 13:31:47.50ID:UzGMA6uu0762デフォルトの名無しさん (ワッチョイ 0aab-96Ml)
2019/07/25(木) 13:33:38.69ID:UzGMA6uu0 高速フーリエ変換でのビットリバーサルの書き方がどんなものがあるのか興味があったのでききました
ビットリバーサルでの処理では速度は余り変わらそうなのでわかりやすい
表記で書こうとおもいます
ビットリバーサルでの処理では速度は余り変わらそうなのでわかりやすい
表記で書こうとおもいます
>>754
その逆数を実時間で効率的に求める方法はありますかね…あらかじめ求めておくというのは除いたとして
その逆数を実時間で効率的に求める方法はありますかね…あらかじめ求めておくというのは除いたとして
765デフォルトの名無しさん (ワッチョイ 87c3-MmDk)
2019/07/25(木) 20:09:17.88ID:S7g95QIG0 BCDじゃなく10bitで10進3桁表すieee 754-2008のdecimal floating pointだと、回路的にそこまで無駄じゃないよね
766デフォルトの名無しさん (アウアウエー Sa82-vYo8)
2019/07/25(木) 20:28:09.79ID:AQEcWXoca >>764
ニュートン法とか?
ニュートン法とか?
767デフォルトの名無しさん (ドコグロ MM7f-lX5B)
2019/07/25(木) 20:40:39.43ID:2UHg/Et4M768デフォルトの名無しさん (ワッチョイ 0aab-96Ml)
2019/07/25(木) 20:56:17.18ID:UzGMA6uu0 加算 減算 乗算 除算 って回路的にどうやってるんだ?
マルチバイブレータ系の回路が基本になってるのはわかるけど
詳細部でどうやってるんだ?
マルチバイブレータ系の回路が基本になってるのはわかるけど
詳細部でどうやってるんだ?
769デフォルトの名無しさん (ワッチョイ 6b01-GqBD)
2019/07/25(木) 21:14:22.23ID:mnPttr/b0 log通った後だと 乗算が加算に 除算が減算になるけど
log通して加減算した後に累乗で戻すほうが重いんじゃろな
log通して加減算した後に累乗で戻すほうが重いんじゃろな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 地方で深刻移動貧困の実態「車のために働いてる」手取り15万円のシンママ月3.2万円が軽自動車の維持費 [七波羅探題★]
- 【芸能】奈良・橿原市に「エドモンド本田」突っ張り銅像…市長「世界中の人に楽しんでもらいたい」 [湛然★]
- 【TV】藤本万梨乃アナがフジテレビ退社 結婚機に家庭と仕事の両立目指し 「めざましテレビ」「向上委員会」担当 [ぐれ★]
- 【調査】クレジットカード、1人何枚持つのが「平均的」?★3 [ひぃぃ★]
- ハローワーク職員、求職者になりすます 偽名で面接、就職 [蚤の市★]
- 【(ΦωΦ)】天皇ご一家、新たな保護猫の写真を初公開 名前は「美海」 宮内庁 [ぐれ★]
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1816
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap609
- 【U-NEXT】プレミアリーグ総合 ★39
- ハム専 エスコン日韓OB戦
- 巨専】
- とらせん IP
- 中国の製造業活動11月も縮小、指数49.2に ※高市日本はさらに縮小48台 [399259198]
- 【悲報】「愛国心って必要か?自分と家族と友達さえ良ければ国なんてどうでもいいじゃん。近所のコンビニの方がまだ大切だわ」7万いいね [257926174]
- 【悲報】高市自民党、インフレに苦しむ国民へ最優先で進める政策がこちら [115996789]
- 古市憲寿「スタジオでも中国批判して気持ち良くなってる人はいるが高市答弁で日本人は損してる。国益を害した」スタジオ凍りつく★2 [931948549]
- 🇯🇵日本人の70%「高市さんの責任ある積極財政サイコ~🤯」 インフレ加速+金利上昇+円安進行 を強烈に支持 [485983549]
- 【悲報】自転車乗り、4月から終わる 普通に乗ってても2万3000円くらい罰金を取られる [455031798]
