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/
前
http://mevius.2ch.net/test/read.cgi/tech/1494508803/
http://www.geocities.jp/c_cpp_cs/about_c/
探検
C言語なら俺に聞け 141 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/07/17(月) 21:06:47.63ID:J4JGo3XO2デフォルトの名無しさん
2017/07/17(月) 21:15:16.42ID:bGVplWmj < `∀´>ニダー
2017/07/17(月) 21:41:46.56ID:/QULOYxM
#include < `∀´>
2017/07/17(月) 21:56:04.46ID:PKmAGp8M
2017/07/17(月) 21:57:25.18ID:4pA3RK/K
ちょっと書いてみてよ
2017/07/17(月) 21:58:43.30ID:n17oqQVv
プログラムカウンタをスタックに積まないでコール元に戻れるわけ無いだろ
プログラムの動作原理を知らなさ過ぎる
プログラムの動作原理を知らなさ過ぎる
2017/07/17(月) 22:02:11.80ID:PKmAGp8M
逆に関数内関数じゃないとできない処理ってどんなの?
2017/07/17(月) 22:08:32.43ID:LYlgQVUQ
Python信者がうるさいのでもう一度書いておくと、以下URLの下のほう、
> しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> http://www.isc.meiji.ac.jp/~mizutani/python/recursive_call.html
これはJavaScriptは通るんだよ。
つーか、他言語は多分全部通る。落ちるのはPythonだけ。
お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。
> しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> http://www.isc.meiji.ac.jp/~mizutani/python/recursive_call.html
これはJavaScriptは通るんだよ。
つーか、他言語は多分全部通る。落ちるのはPythonだけ。
お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。
2017/07/17(月) 22:16:47.67ID:LYlgQVUQ
前スレ>>995
990にレスが付いているのはヘッダについてか?
それなら俺はGCCに「自動ヘッダ生成器」を組み込んでくれよと思う。
というかCはヘッダで妙なトリック使いすぎてて自動生成できる状況ではないのだとは思うが、
それなら足りない関数だけでも自動で追加してくれよ、と思う。
つっても「後方参照」できるようになれば解決する話で、
マジでこれをいまだに放置している理由はよく分からん。
というか、俺に反論している連中ですらこれについては多分賛成なんだよな?
「後方参照」出来ない方がいいんだ!って理由がある奴っていないだろ。
だからこそ、Pythonが出来ないのがアホすぎて際立つわけでね。
990にレスが付いているのはヘッダについてか?
それなら俺はGCCに「自動ヘッダ生成器」を組み込んでくれよと思う。
というかCはヘッダで妙なトリック使いすぎてて自動生成できる状況ではないのだとは思うが、
それなら足りない関数だけでも自動で追加してくれよ、と思う。
つっても「後方参照」できるようになれば解決する話で、
マジでこれをいまだに放置している理由はよく分からん。
というか、俺に反論している連中ですらこれについては多分賛成なんだよな?
「後方参照」出来ない方がいいんだ!って理由がある奴っていないだろ。
だからこそ、Pythonが出来ないのがアホすぎて際立つわけでね。
2017/07/17(月) 22:25:47.17ID:Dn7+fEGp
前後を理解してないバカは参加するな
ID:LYlgQVUQ お前のことだ
ID:LYlgQVUQ お前のことだ
11デフォルトの名無しさん
2017/07/17(月) 22:28:20.57ID:WpdYiVZf 何でわっちょい無くなったの?
2017/07/17(月) 22:32:47.62ID:LYlgQVUQ
2017/07/17(月) 22:43:11.36ID:Zyqgn8pO
2017/07/17(月) 22:53:34.33ID:PKmAGp8M
2017/07/17(月) 22:53:37.21ID:Zyqgn8pO
>>8
> > しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> > http://www.isc.meiji.ac.jp/~mizutani/python/recursive_call.html
まだやってるのかよ w
他の言語に倣うなら頭に
def main:
print func_a(5)
って書いて最後に
if __name__ == 'main':
main()
書けばいいだけ
> お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。
お前がPython知らんだけ
> > しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> > http://www.isc.meiji.ac.jp/~mizutani/python/recursive_call.html
まだやってるのかよ w
他の言語に倣うなら頭に
def main:
print func_a(5)
って書いて最後に
if __name__ == 'main':
main()
書けばいいだけ
> お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。
お前がPython知らんだけ
2017/07/17(月) 22:59:52.61ID:HedtDN7o
x86なら ENTER/LEAVEで実装されているな
出来るっていうならコードで示せよ
出来るっていうならコードで示せよ
2017/07/17(月) 23:01:17.10ID:Zyqgn8pO
>>14
void f( ){
void g( ){
...
}
g();
g();
}
goto 使って同じ処理書いてみろよ
void f( ){
void g( ){
...
}
g();
g();
}
goto 使って同じ処理書いてみろよ
2017/07/17(月) 23:02:18.10ID:vodzC7WI
/ ̄\
| |
\_/
| __
┴´ ``ヽ
/::::::::::|:::::: `ヽ gotoで戻りゃいいんだから!!
/:::\::::::::<● > `ヽ
(( / <●>::::::::::⌒ )
| ⌒(_人__) ノ | |
ヽ )vvノ: / ノノ
ヽ (__ン 人
人 \
/
| |
\_/
| __
┴´ ``ヽ
/::::::::::|:::::: `ヽ gotoで戻りゃいいんだから!!
/:::\::::::::<● > `ヽ
(( / <●>::::::::::⌒ )
| ⌒(_人__) ノ | |
ヽ )vvノ: / ノノ
ヽ (__ン 人
人 \
/
2017/07/17(月) 23:07:04.75ID:LYlgQVUQ
2017/07/17(月) 23:13:04.25ID:PKmAGp8M
>>17
void f( ){
void *ret;
goto a;
g:
printf("g¥n");
goto *ret;
a:
printf("a¥n");
ret = &&b;
goto g;
b:
printf("b¥n");
ret = &&c;
goto g;
c:;
printf("c¥n");
}
void f( ){
void *ret;
goto a;
g:
printf("g¥n");
goto *ret;
a:
printf("a¥n");
ret = &&b;
goto g;
b:
printf("b¥n");
ret = &&c;
goto g;
c:;
printf("c¥n");
}
2017/07/17(月) 23:18:43.57ID:n17oqQVv
ID:PKmAGp8Mはプログラムの動作原理なーんも分かってない
2017/07/17(月) 23:21:10.09ID:4pA3RK/K
>>15で出来るうちに入らないとかいちゃもんつけたいだけやん
それCで関数の外にprintf書いてコンパイル通らなくて発狂してるようなもんだから
それCで関数の外にprintf書いてコンパイル通らなくて発狂してるようなもんだから
2017/07/17(月) 23:25:27.16ID:4pA3RK/K
いや、こんなこと書いたら揚げ足とってアホ認定されそうだから重ねておくけど、上のレスではコードの見た目の話に話を絞ってある
その範囲では、関数外に書いても通るだけ有難く思うべきである
その範囲では、関数外に書いても通るだけ有難く思うべきである
2017/07/17(月) 23:27:45.16ID:LYlgQVUQ
>>20
まあ俺はそっちの話にあんまり突っ込む気はないんだけどさ、、、
アイデアは理解した。
が、そのラベルの使い方が保障されてるかというと、かなり微妙だと思う。
俺は仕様には詳しく無いからなんともいえないが。
とはいえ、実際はそれで動くケースが大半だとも思う。
まあ俺はそっちの話にあんまり突っ込む気はないんだけどさ、、、
アイデアは理解した。
が、そのラベルの使い方が保障されてるかというと、かなり微妙だと思う。
俺は仕様には詳しく無いからなんともいえないが。
とはいえ、実際はそれで動くケースが大半だとも思う。
2017/07/17(月) 23:29:34.59ID:81nqESXy
2017/07/17(月) 23:35:29.76ID:4pA3RK/K
実用上問題なくてもイチャモンつけたいだけw
2017/07/17(月) 23:51:06.35ID:LYlgQVUQ
>>22-23,25,26
だからPython信者はアホなんだよ。何度も言っている通り、
JavaScriptは以下のコードが動く=後方参照できる
Pythonは以下のコードが動かない=後方参照できない
といっているだけ。マジで分かれよアホ。
以下コードをブラウザ上でF12押してコピペしてみろ。動くから。
(function(){
say_hello();
say_world();
function say_hello(){console.log('hello');}
function say_world(){console.log('world');}
})()
Cはこの順に配置しようとすると《歴史的理由で》プロトタイプ宣言が必要。しかしやれば出来る。
Pythonはこの順に配置することがどうやっても出来ない。だから糞。
CもJavaScriptも設計者の自由を制限しない言語だ。
子関数をどこに配置するのが良いのかは設計者が考え、最適化できる。
これがCやJavaScriptの思想。
対してPythonは設計者の自由を制限し、
設計者ごとに異なる部分が無いことこそが読みやすさだと嘯く。
それはPythonerは馬鹿であると定義しているのと同じ。
だってCでもJavaScriptでも、Pythonと同じ順に配置は出来るのだから、
Pythoner以上の脳みそがあればPythonより読みやすく書くことは出来る。
もちろん馬鹿が書けばPython以上に読みにくくなるが、それはそういう仕様だ。(馬鹿は死ねという仕様)
Python馬鹿がCスレまで来て思想が全く異なることを理解せずに喚いているから話が通じない。
Pythonは馬鹿用言語だということを自覚しろアホ。
だからPython信者はアホなんだよ。何度も言っている通り、
JavaScriptは以下のコードが動く=後方参照できる
Pythonは以下のコードが動かない=後方参照できない
といっているだけ。マジで分かれよアホ。
以下コードをブラウザ上でF12押してコピペしてみろ。動くから。
(function(){
say_hello();
say_world();
function say_hello(){console.log('hello');}
function say_world(){console.log('world');}
})()
Cはこの順に配置しようとすると《歴史的理由で》プロトタイプ宣言が必要。しかしやれば出来る。
Pythonはこの順に配置することがどうやっても出来ない。だから糞。
CもJavaScriptも設計者の自由を制限しない言語だ。
子関数をどこに配置するのが良いのかは設計者が考え、最適化できる。
これがCやJavaScriptの思想。
対してPythonは設計者の自由を制限し、
設計者ごとに異なる部分が無いことこそが読みやすさだと嘯く。
それはPythonerは馬鹿であると定義しているのと同じ。
だってCでもJavaScriptでも、Pythonと同じ順に配置は出来るのだから、
Pythoner以上の脳みそがあればPythonより読みやすく書くことは出来る。
もちろん馬鹿が書けばPython以上に読みにくくなるが、それはそういう仕様だ。(馬鹿は死ねという仕様)
Python馬鹿がCスレまで来て思想が全く異なることを理解せずに喚いているから話が通じない。
Pythonは馬鹿用言語だということを自覚しろアホ。
2017/07/17(月) 23:55:03.58ID:PKmAGp8M
なんか問題あったかい?
ラベルのポインタはGCCとclangは対応してる
標準じゃなく拡張だけどなw
ラベルのポインタはGCCとclangは対応してる
標準じゃなく拡張だけどなw
2017/07/17(月) 23:55:41.84ID:81nqESXy
>>27
で、どんな問題があるの?
で、どんな問題があるの?
2017/07/17(月) 23:57:28.74ID:4pA3RK/K
>>27
まずCスレでPythonの話題持ち出したお前が何言ってんの?w
まずCスレでPythonの話題持ち出したお前が何言ってんの?w
2017/07/18(火) 00:06:20.95ID:zmpO/wkd
>>27
うわー最初は
viod say_hello(count){
if (--count<0) return;
printf("hello");
say_world(count);
}
void say_world(count){
printf(" world!\n");
say_hello(count);
}
みたいな例を出してたのに、それが出来ると分かるないなやわざわざPythonで出来ない例持ち出して来てら
これアンチしたいだけじゃん
うわー最初は
viod say_hello(count){
if (--count<0) return;
printf("hello");
say_world(count);
}
void say_world(count){
printf(" world!\n");
say_hello(count);
}
みたいな例を出してたのに、それが出来ると分かるないなやわざわざPythonで出来ない例持ち出して来てら
これアンチしたいだけじゃん
2017/07/18(火) 00:08:33.09ID:tZS7qvye
>>28
いや、ラベルって「そこから下」に対しては保証されてるが、
「そこから上」って保証されてるか?
まあこの言い方では通じないと思うから具体的に書くと、
(A)
label:
(B)
で(B)側にゴミがない=次の命令がすぐ詰まっていてそこにJUMPすれば動作する
ことは保障されていると思う。これは普通の使い方だから。
ただ、上から流れてきたときに、(A)側にパディングされてたりしないか?というのは微妙で、
x86だとイミディエートに十分な長さがあるから問題ないとして、
16bitとか8bitとかの場合、コード領域にイミディエートを積んでいることは普通にあって、
しかも結構適当な場所に吐かれていた記憶が。
だからコンパイラ側に「ここは明らかに通らない」という風に見える場所はかなり危険かと。
ただし既に言っているが、俺は仕様には詳しく無いから、なんともいえないのだが。
いや、ラベルって「そこから下」に対しては保証されてるが、
「そこから上」って保証されてるか?
まあこの言い方では通じないと思うから具体的に書くと、
(A)
label:
(B)
で(B)側にゴミがない=次の命令がすぐ詰まっていてそこにJUMPすれば動作する
ことは保障されていると思う。これは普通の使い方だから。
ただ、上から流れてきたときに、(A)側にパディングされてたりしないか?というのは微妙で、
x86だとイミディエートに十分な長さがあるから問題ないとして、
16bitとか8bitとかの場合、コード領域にイミディエートを積んでいることは普通にあって、
しかも結構適当な場所に吐かれていた記憶が。
だからコンパイラ側に「ここは明らかに通らない」という風に見える場所はかなり危険かと。
ただし既に言っているが、俺は仕様には詳しく無いから、なんともいえないのだが。
2017/07/18(火) 00:20:24.14ID:yhFxnttF
>>32
この場合実行時にジャンプ先のアドレスを代入するのでその手の問題は無いでしょう
https://docs.oracle.com/cd/E19205-01/821-0386/bjabt/index.html
この場合実行時にジャンプ先のアドレスを代入するのでその手の問題は無いでしょう
https://docs.oracle.com/cd/E19205-01/821-0386/bjabt/index.html
2017/07/18(火) 00:21:58.12ID:tZS7qvye
>>29
子関数を下に書いた方が分かりやすいときに、それが出来ないのが問題。
>>31
それは俺の間違いだった。俺が思っていたほどは糞ではないのも事実だ。
ただしやっぱりJavaScriptやCと比べたら糞だよ。
しかしお前らも知っていると思うが、
Pythonの最大の糞ポイントはラムダに式しか書けない事だろ。
つか、糞ポイントがぽこぽこ出せる時点で糞言語なのは確定なんだよマジで。
そしてCやJavaScriptの思想とは対極にあるのがPythonだ。
それを使うのはお前らの自由だが、それをCスレで喚くのはキチガイだ。
C的価値観からするとPythonなんてキチガイ馬鹿用言語だよ。
逆にお前らがPythonスレで
「Cみたいなシートベルトもエアバッグもない車に今更乗れるか!」って
言ってりゃいいんだよ。
というわけでお帰りくださいマジで。
俺は思想的にPythonとは合わないから、自主的に使うことはないと思います。
子関数を下に書いた方が分かりやすいときに、それが出来ないのが問題。
>>31
それは俺の間違いだった。俺が思っていたほどは糞ではないのも事実だ。
ただしやっぱりJavaScriptやCと比べたら糞だよ。
しかしお前らも知っていると思うが、
Pythonの最大の糞ポイントはラムダに式しか書けない事だろ。
つか、糞ポイントがぽこぽこ出せる時点で糞言語なのは確定なんだよマジで。
そしてCやJavaScriptの思想とは対極にあるのがPythonだ。
それを使うのはお前らの自由だが、それをCスレで喚くのはキチガイだ。
C的価値観からするとPythonなんてキチガイ馬鹿用言語だよ。
逆にお前らがPythonスレで
「Cみたいなシートベルトもエアバッグもない車に今更乗れるか!」って
言ってりゃいいんだよ。
というわけでお帰りくださいマジで。
俺は思想的にPythonとは合わないから、自主的に使うことはないと思います。
2017/07/18(火) 00:25:56.65ID:tZS7qvye
2017/07/18(火) 00:30:29.84ID:NDJOFNKG
>>32
コード領域にイミディエイト積んでいるのは当たり前
イミディエイトは即値
アセンブリコードのニーモニックでオペコードに直接データ(値)を指定するのだから
コード領域にしかイミディエイト値は存在し得ない
コード領域にイミディエイト積んでいるのは当たり前
イミディエイトは即値
アセンブリコードのニーモニックでオペコードに直接データ(値)を指定するのだから
コード領域にしかイミディエイト値は存在し得ない
2017/07/18(火) 00:31:52.64ID:zmpO/wkd
38デフォルトの名無しさん
2017/07/18(火) 00:34:45.35ID:/ZeLwNbO >>34
なんか知らんがHaskellみたいな順序に依存しない言語がおまいさんにあってる気がする。
なんか知らんがHaskellみたいな順序に依存しない言語がおまいさんにあってる気がする。
2017/07/18(火) 00:44:21.05ID:tZS7qvye
>>36
いや、オペランドの長さが足りなかった場合、
中途半端なところにデータ領域を確保するCPUもあるって事。
>>38
Haskellは意識高すぎて無理だった。
てかあれ、遅延評価以外目新しくないよな?
そしてその遅延評価はC++にテンプレートでパクられてて笑ったが。
あれでC++のテンプレートの汎用性の高さに驚いたよ。
ちなみに、他言語のすごいコードって知ってるか?見てみたいとは思うから。
例えばCなら、LinuxのカーネルやGit(作者同じ)がそうだし、
C++ならchromeやV8が多分そう(といっても割とCらしいが)
PythonやHaskellって喚いているだけで現物がなくね?
所詮スクリプトで使い捨てコードが多いってことか?
いや、オペランドの長さが足りなかった場合、
中途半端なところにデータ領域を確保するCPUもあるって事。
>>38
Haskellは意識高すぎて無理だった。
てかあれ、遅延評価以外目新しくないよな?
そしてその遅延評価はC++にテンプレートでパクられてて笑ったが。
あれでC++のテンプレートの汎用性の高さに驚いたよ。
ちなみに、他言語のすごいコードって知ってるか?見てみたいとは思うから。
例えばCなら、LinuxのカーネルやGit(作者同じ)がそうだし、
C++ならchromeやV8が多分そう(といっても割とCらしいが)
PythonやHaskellって喚いているだけで現物がなくね?
所詮スクリプトで使い捨てコードが多いってことか?
2017/07/18(火) 00:47:51.04ID:gHxy0snY
2017/07/18(火) 00:55:04.83ID:tZS7qvye
そういやgotoで思い出したが、
マルチレベルbreakはあってもいいと思うけどね。
gotoがあればなあ、ってのは大体このケースだろうし。
オレオレパーサも組めない範囲でもないんだろうけど、
やっぱ誰かががっつりデバッグ済みにしてくれてるのを使いたいよ。
マルチレベルbreakはあってもいいと思うけどね。
gotoがあればなあ、ってのは大体このケースだろうし。
オレオレパーサも組めない範囲でもないんだろうけど、
やっぱ誰かががっつりデバッグ済みにしてくれてるのを使いたいよ。
2017/07/18(火) 01:00:22.85ID:NDJOFNKG
>41
その用途に最も近いのは例外処理のtry-cattch構文だろうな
C言語では使えないけど
その用途に最も近いのは例外処理のtry-cattch構文だろうな
C言語では使えないけど
2017/07/18(火) 01:00:53.59ID:NDJOFNKG
try-catch
2017/07/18(火) 01:03:09.04ID:zmpO/wkd
try-catch遅くなかった?
2017/07/18(火) 01:03:12.76ID:r4nh1nKp
で
そのCスタイル22k行のコードはどういう書き方をしてたから読みやすかったんだ?
そのCスタイル22k行のコードはどういう書き方をしてたから読みやすかったんだ?
2017/07/18(火) 01:06:51.15ID:NDJOFNKG
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★2 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★7 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★2 [蚤の市★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- ちんちんぼっきする人が羨ましい
- 日銀が利上げしたら、国債金利も上がって日本が詰むという事実 [805596214]
- 麻婆豆腐食べてる
- 【朗報】南鳥島のレアアース、中国産の「20倍の純度」青山繁晴氏「日本は資源大国」日本復活のファンファーレが鳴り響く! [673057929]
- 愛国者「釘を使わない日本独自の伝統工法スゴイ!」X民「それ中国起源ですよ」→批判殺到 [834922174]
- 👊😅👊三☁😶‍🌫三⛅🏡
