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/
前
C言語なら俺に聞け 146
https://mevius.5ch.net/test/read.cgi/tech/1525031257/
C言語なら俺に聞け 147
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/08/16(木) 23:36:02.22ID:fOCSKLtw2018/08/21(火) 09:31:42.61ID:hk/Hf9fq
2018/08/21(火) 09:35:21.28ID:hk/Hf9fq
2018/08/21(火) 10:40:22.58ID:gERn4ySS
2018/08/21(火) 10:57:00.63ID:vnB4usre
>>63
だれも機械の解釈の違いには言及してない定期
だれも機械の解釈の違いには言及してない定期
2018/08/21(火) 10:59:30.05ID:gERn4ySS
>>62
void func(int ary[][100]); これはできるのに
int func(void)[][100] これはできない
{
int ary[][100]; これもできない
ary = 0;
return ary;
}
extern int ary[][100]; と
extern int (*ary)[100]; は意味が違う
結局、[]で書くべきなんて主張は
通用しないところが多すぎる戯れ言だ
void func(int ary[][100]); これはできるのに
int func(void)[][100] これはできない
{
int ary[][100]; これもできない
ary = 0;
return ary;
}
extern int ary[][100]; と
extern int (*ary)[100]; は意味が違う
結局、[]で書くべきなんて主張は
通用しないところが多すぎる戯れ言だ
2018/08/21(火) 11:01:09.20ID:gERn4ySS
2018/08/21(火) 11:01:29.60ID:+F/9g7TB
>>66
糖衣構文
糖衣構文
2018/08/21(火) 11:02:23.89ID:gERn4ySS
2018/08/21(火) 11:05:05.84ID:eIEuxTun
>>68
機械の解釈が同じでも人間には違う意味に見えるのはあるよな?
機械の解釈が同じでも人間には違う意味に見えるのはあるよな?
2018/08/21(火) 11:55:44.43ID:gERn4ySS
2018/08/21(火) 11:56:39.26ID:gERn4ySS
サイズが100でなければならない関数なら
void func(int (*ary)[100]); こう書いて
int ary[100];
func(&ary); こう渡せよボンクラ
void func(int (*ary)[100]); こう書いて
int ary[100];
func(&ary); こう渡せよボンクラ
2018/08/21(火) 12:10:27.14ID:QteKsmYB
まあ多次元配列を引数にするのは良くないと思うわ
2018/08/21(火) 12:28:57.33ID:GIXT+l9b
2018/08/21(火) 12:29:15.96ID:GIXT+l9b
2018/08/21(火) 12:47:09.71ID:EQ4qcC3V
>>72
なぜ?
なぜ?
2018/08/21(火) 12:53:55.98ID:gERn4ySS
77デフォルトの名無しさん
2018/08/21(火) 12:54:14.69ID:m1oFA/yA 多次元配列の型は typedef で型名作っておけば楽なのでは?
2018/08/21(火) 12:56:41.15ID:Fhw28p93
2018/08/21(火) 13:04:39.72ID:gERn4ySS
2018/08/21(火) 13:05:57.10ID:gERn4ySS
さて、買い物に行くぜ
妻子の夕飯を作らにゃならん
妻子の夕飯を作らにゃならん
2018/08/21(火) 13:09:48.25ID:O6Fgkzwj
2018/08/21(火) 13:09:58.77ID:EQ4qcC3V
>>71
無駄なコスト
無駄なコスト
2018/08/21(火) 13:10:23.54ID:RiLuNws8
84デフォルトの名無しさん
2018/08/21(火) 14:09:26.92ID:Xve8S0h8 超初心者です。
シミュレーターで動かしながら独学で学んでいるのですが、
scanfが動かない(スルーされる)ので困っています。scanfが動くシミュレーターってあります?
シミュレーターで動かしながら独学で学んでいるのですが、
scanfが動かない(スルーされる)ので困っています。scanfが動くシミュレーターってあります?
2018/08/21(火) 14:13:40.03ID:Xve8S0h8
今はpaiza.ioを使っています
2018/08/21(火) 14:16:15.27ID:Hz7fBosn
下の入力欄が空白じゃないの?
2018/08/21(火) 14:27:50.04ID:Xve8S0h8
解決しました。ありがとうございました。
2018/08/21(火) 20:15:22.43ID:FwleoeVd
for文でこんなのを発見したのです。
for(;;)
ご覧のとおりセミコロンがカッコ内に2つあるだけ。
これはどういうfor文でしょうか。
ググり方も分からないです。
for(;;)
ご覧のとおりセミコロンがカッコ内に2つあるだけ。
これはどういうfor文でしょうか。
ググり方も分からないです。
2018/08/21(火) 20:17:35.28ID:bAEvazF4
無限ループ
2018/08/21(火) 20:22:25.64ID:i/CPlprw
昔からその書き方の無限ループを好む人は多い
俺が知ってる範囲だとカーニハンもその書き方を好んでいた
俺が知ってる範囲だとカーニハンもその書き方を好んでいた
2018/08/21(火) 20:27:12.52ID:mIqstMqN
無限ループって言っても
大概は何かの条件で脱出するわけだから
while (条件) が一番わかりやすいと思う
あ、好みだろうから、反論は不要です
大概は何かの条件で脱出するわけだから
while (条件) が一番わかりやすいと思う
あ、好みだろうから、反論は不要です
2018/08/21(火) 20:34:59.42ID:8p839GFL
2018/08/21(火) 20:45:15.49ID:FwleoeVd
無限ループには
for(;;)
while(1)
while(true)
などがあるようですが、驚いたことにfor(;;)がC言語の伝統的スタイルなんだそうで。
for(;;)
while(1)
while(true)
などがあるようですが、驚いたことにfor(;;)がC言語の伝統的スタイルなんだそうで。
2018/08/21(火) 20:50:55.87ID:mIqstMqN
goto 笑
2018/08/21(火) 21:07:06.74ID:FuTngql1
do {
} while (true);
だな
} while (true);
だな
97デフォルトの名無しさん
2018/08/21(火) 21:12:46.13ID:xHZnBR+z true って新しいCだと使えるの?
2018/08/21(火) 21:15:49.80ID:Bspmt0aQ
_Bool
2018/08/21(火) 21:18:05.52ID:mIqstMqN
while (1==1)
なんて
なんて
100デフォルトの名無しさん
2018/08/21(火) 21:21:39.51ID:WLqP+HZB for(;;)は無条件であることを的確に表現してる
条件が書いてないのはこれだけ
条件が書いてないのはこれだけ
101デフォルトの名無しさん
2018/08/21(火) 21:30:40.05ID:xHZnBR+z そういややったことないけど while () はできないのかな?
できたらできたでなんか怖いがw
できたらできたでなんか怖いがw
102デフォルトの名無しさん
2018/08/21(火) 21:35:16.36ID:8p839GFL103デフォルトの名無しさん
2018/08/21(火) 21:39:06.78ID:xHZnBR+z if () ができたらなんか嫌だな
104デフォルトの名無しさん
2018/08/21(火) 22:56:19.30ID:7hn0MDmO >>102
確かに…
確かに…
105さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/21(火) 23:14:00.83ID:H0lJZ+G5 左右の式が省略できるから、ついでに真ん中の式も省略可能にしたんだろう。
106デフォルトの名無しさん
2018/08/21(火) 23:18:17.02ID:mIqstMqN 二つのセミコロンも省略して良いことにしようw
107デフォルトの名無しさん
2018/08/22(水) 01:03:40.03ID:Vm7yolE7 ループの話でふと思い出したんだけど、この書き方キモいと思う?
LOCK();
while (条件) {
UNLOCK();
LOCK();
}
UNLOCK();
LOCK();
while (条件) {
UNLOCK();
LOCK();
}
UNLOCK();
108デフォルトの名無しさん
2018/08/22(水) 01:07:46.55ID:srSdeWyK きもいけどきもいだけだから必要ならそうする
Cだしね
Cだしね
109デフォルトの名無しさん
2018/08/22(水) 01:11:58.05ID:+gfjb8L8 condwaitみたいなの、たまに書くと混乱するわ
110デフォルトの名無しさん
2018/08/22(水) 01:18:33.81ID:J6lVaoNe LOCKして、何かして、UNLOCKして解放する
わけではないんだ?
わけではないんだ?
111デフォルトの名無しさん
2018/08/22(水) 02:53:55.25ID:wb9Zg9xS for (\(^o^)/)
112デフォルトの名無しさん
2018/08/22(水) 06:53:07.59ID:Vm7yolE7113デフォルトの名無しさん
2018/08/22(水) 07:33:35.95ID:RPMrdt6N >>112
手動でインライン展開する必要がなければ、普通は、
while (check_func()) {
}
bool check_func(){
LOCK();
bool retval = XXX; // check something here
UNLOCK();
return retval;
}
とする。
C++なら inline を付ければインライン展開時(元のコード)と似たようなオブジェクトコードが出ることになっている。
手動でインライン展開する必要がなければ、普通は、
while (check_func()) {
}
bool check_func(){
LOCK();
bool retval = XXX; // check something here
UNLOCK();
return retval;
}
とする。
C++なら inline を付ければインライン展開時(元のコード)と似たようなオブジェクトコードが出ることになっている。
114デフォルトの名無しさん
2018/08/22(水) 09:35:21.99ID:ULC6Ul0L115114
2018/08/22(水) 09:36:42.99ID:ULC6Ul0L ごめん、ちがた
116デフォルトの名無しさん
2018/08/22(水) 09:52:30.97ID:2YTphjWh >>107
条件を判断するためだけにLOCK/UNLOCKを行うコードだとしたら最悪のコードだ
do {
LOCK
判断
UNLOCK
if (!判断結果)break;
} while (1);
素直にこうしなさい
条件を判断するためだけにLOCK/UNLOCKを行うコードだとしたら最悪のコードだ
do {
LOCK
判断
UNLOCK
if (!判断結果)break;
} while (1);
素直にこうしなさい
117デフォルトの名無しさん
2018/08/22(水) 11:11:08.70ID:yAP1ongv 条件判断が目的じゃないと思うぞ
118デフォルトの名無しさん
2018/08/22(水) 11:35:04.81ID:yJL450CM どこが素直なんだ
締め切りが迫ってバグが取れず
なりふり構ってらんなくなったやつが書く
イカレたコードでしかない
締め切りが迫ってバグが取れず
なりふり構ってらんなくなったやつが書く
イカレたコードでしかない
119デフォルトの名無しさん
2018/08/22(水) 11:58:31.90ID:DbwOmzYq >>116
これは酷いw
これは酷いw
120デフォルトの名無しさん
2018/08/22(水) 12:04:07.83ID:MGgq/0yt イカれたコードを紹介するぜ
121デフォルトの名無しさん
2018/08/22(水) 12:27:28.23ID:2YTphjWh ん?
一番素直だろうが
条件判断の為だけにLOCKしてるという前提で
判断を関数に分ける?
分けるかどうかはこんなちっぽけな理由で判断するべきじゃないよ
判断の度に関数にしてたら意味不明な関数で溢れるぞ
もちろん意味が明瞭で他にも同じ判断を使う可能性があるのであれば
関数やマクロでパッキングすべきだが
一番素直だろうが
条件判断の為だけにLOCKしてるという前提で
判断を関数に分ける?
分けるかどうかはこんなちっぽけな理由で判断するべきじゃないよ
判断の度に関数にしてたら意味不明な関数で溢れるぞ
もちろん意味が明瞭で他にも同じ判断を使う可能性があるのであれば
関数やマクロでパッキングすべきだが
122デフォルトの名無しさん
2018/08/22(水) 12:36:44.83ID:yJL450CM LOCK
判断
UNLOCK
というアトミックなシーケンスを関数にする理由はちっぽけじゃない
LOCK/UNLOCKが必要な具体的な場面を想定しての発言には見えない
判断
UNLOCK
というアトミックなシーケンスを関数にする理由はちっぽけじゃない
LOCK/UNLOCKが必要な具体的な場面を想定しての発言には見えない
123デフォルトの名無しさん
2018/08/22(水) 12:50:05.96ID:2YTphjWh124デフォルトの名無しさん
2018/08/22(水) 13:02:48.20ID:Xk7aTjF/ >>123
いやー、わからんのはあなたに実務もしくは勉強の経験がないからよ
いやー、わからんのはあなたに実務もしくは勉強の経験がないからよ
125デフォルトの名無しさん
2018/08/22(水) 13:14:18.16ID:yJL450CM 昨日のvoid func(int ary[100]);にしても
ary[1000]を警告する処理系の具体的な例が挙がってないしな
ary[1000]を警告する処理系の具体的な例が挙がってないしな
126デフォルトの名無しさん
2018/08/22(水) 13:39:37.67ID:2YTphjWh127デフォルトの名無しさん
2018/08/22(水) 14:01:43.77ID:yJL450CM 間違いない、昨日のバカだ
NGIDっと
NGIDっと
128デフォルトの名無しさん
2018/08/22(水) 14:12:07.92ID:JOaq3c53 >>127
そういうあなたは昨日のイキってた方の人?
そういうあなたは昨日のイキってた方の人?
129デフォルトの名無しさん
2018/08/22(水) 14:15:28.00ID:J6lVaoNe パッと見て何をしているか分からないソースって
後の人が取っても苦労するし、気の毒
後の人が取っても苦労するし、気の毒
130デフォルトの名無しさん
2018/08/22(水) 14:19:13.21ID:J6lVaoNe 多分書いた人の意図は
while文内の判定時に
LOCKしたいのかとは思うが
while文内の判定時に
LOCKしたいのかとは思うが
131デフォルトの名無しさん
2018/08/22(水) 14:26:31.81ID:TfhbroeT while ( ^∀^)
132デフォルトの名無しさん
2018/08/22(水) 15:10:17.96ID:44OVOulF check_func()というアドホックっぽい関数名が誤解のもとかな
get条件atomically()にすれば意図が明白
get条件atomically()にすれば意図が明白
133デフォルトの名無しさん
2018/08/22(水) 15:19:38.80ID:yJL450CM atomicallyって文言いるかねえ
いちいち全部につけて回るより
LOCK/UNLOCKしてることは
忘れたフリができるほうがいいと思うが
いちいち全部につけて回るより
LOCK/UNLOCKしてることは
忘れたフリができるほうがいいと思うが
134デフォルトの名無しさん
2018/08/22(水) 16:17:52.89ID:BT6ndhEb 英語圏の人には for (;;) をまとめて熟語的に "forever" と読めて
座りがいいのかも知れん。
カーニハンとパイクの『プログラミング作法』に
それに近いようなことが書いてあった。
座りがいいのかも知れん。
カーニハンとパイクの『プログラミング作法』に
それに近いようなことが書いてあった。
135デフォルトの名無しさん
2018/08/22(水) 16:25:37.12ID:6OOlmfSC >>133
条件取得の関数がすでにあってそれがアトミックでないケースも想定
条件取得の関数がすでにあってそれがアトミックでないケースも想定
136デフォルトの名無しさん
2018/08/22(水) 16:31:28.34ID:UfcjGeQr137デフォルトの名無しさん
2018/08/22(水) 16:44:34.35ID:AU3mefLA138デフォルトの名無しさん
2018/08/22(水) 16:54:07.40ID:yJL450CM139134
2018/08/22(水) 17:01:35.42ID:BT6ndhEb 「その部分のループ、終了条件が色々なんでとりあえず for (;;) で回して」
みたいな口答でのやりとりで for (;;) を forever と読めば手っ取り早いでしょ。
while (1) で…よりも言いやすいんじゃないかと。
これは空想論だけどね。
みたいな口答でのやりとりで for (;;) を forever と読めば手っ取り早いでしょ。
while (1) で…よりも言いやすいんじゃないかと。
これは空想論だけどね。
140デフォルトの名無しさん
2018/08/22(水) 17:28:26.65ID:yJL450CM 無限ループで済むことを
forの第2式を空欄で
なんて回りくどい言い方しねえよ
forの第2式を空欄で
なんて回りくどい言い方しねえよ
141デフォルトの名無しさん
2018/08/22(水) 17:52:35.43ID:l5cdWJfA142デフォルトの名無しさん
2018/08/22(水) 17:59:10.07ID:l5cdWJfA143デフォルトの名無しさん
2018/08/22(水) 18:07:38.93ID:yJL450CM144デフォルトの名無しさん
2018/08/22(水) 18:22:36.66ID:PnEe4J3b マウント取りたくて必死なアスペだから仕方ない
145デフォルトの名無しさん
2018/08/22(水) 18:30:03.99ID:l5cdWJfA 口頭で
forの第2式を空欄で
なんて発想は出て来なかった
forの第2式を空欄で
なんて発想は出て来なかった
146デフォルトの名無しさん
2018/08/22(水) 20:52:31.01ID:ROURn6Ut for ( ;∀;)
147デフォルトの名無しさん
2018/08/22(水) 21:21:35.96ID:yJL450CM > while (条件)でしかループが組めないのはちょっとさみしい
ここは同意
while(1) であろうが for(;;) であろうが同じこと
どっちかが好みで他方で書かれたからって可読性が落ちたとか騒ぐ
救いようのないドアホには付き合ってらんね
それだけだ
ここは同意
while(1) であろうが for(;;) であろうが同じこと
どっちかが好みで他方で書かれたからって可読性が落ちたとか騒ぐ
救いようのないドアホには付き合ってらんね
それだけだ
148デフォルトの名無しさん
2018/08/22(水) 21:23:43.06ID:82KbBjx+ >>116を認めないお前も同じようなものかと
149デフォルトの名無しさん
2018/08/22(水) 21:26:52.07ID:MwkxeX8r whileで無限ループする場合、0じゃなければ1以外を
使ってもいいわけだがどうする?
電話番号とか使えばオシャレかもしれないよ
使ってもいいわけだがどうする?
電話番号とか使えばオシャレかもしれないよ
150デフォルトの名無しさん
2018/08/22(水) 21:27:18.15ID:JglTnHlJ とりあえず、おかしなのに絡まれた >>134 に同情を禁じ得ない。
151デフォルトの名無しさん
2018/08/22(水) 21:28:19.40ID:yJL450CM 別にiocccのコードが読めろとか言ってない
int *aryがint ary[100]じゃなきゃ読めないとかぬかしたり
while(1)がfor(;;)じゃなきゃ読めないとかぬかす
想像を絶するアホには付き合ってらんねつってるだけ
lock/doit/unlockを関数化する必要性がわからないアホも含まれる
int *aryがint ary[100]じゃなきゃ読めないとかぬかしたり
while(1)がfor(;;)じゃなきゃ読めないとかぬかす
想像を絶するアホには付き合ってらんねつってるだけ
lock/doit/unlockを関数化する必要性がわからないアホも含まれる
152デフォルトの名無しさん
2018/08/22(水) 21:33:30.14ID:Jjipv9/i153デフォルトの名無しさん
2018/08/22(水) 21:42:00.39ID:yJL450CM じゃあ喚くのやめろ
うるせえんだよ
うるせえんだよ
154デフォルトの名無しさん
2018/08/22(水) 21:43:08.30ID:Jjipv9/i >>153
やっぱり日本語不自由な人なんだw
やっぱり日本語不自由な人なんだw
155デフォルトの名無しさん
2018/08/22(水) 21:51:19.93ID:Vzjpb7lE 何がじゃあなのかわからない
思考がbool値しかないのか
思考がbool値しかないのか
156デフォルトの名無しさん
2018/08/22(水) 21:51:23.19ID:wgajpaTM アトミックな操作の意味がわかってたらああはならんのですよ
157デフォルトの名無しさん
2018/08/22(水) 21:52:48.42ID:Vzjpb7lE 世の糞コードのほとんどはコミュニケーションの失敗により発生する
158デフォルトの名無しさん
2018/08/22(水) 21:54:35.09ID:Jjipv9/i C言語以前に日本語もちゃんと理解できない人と議論が噛み合うわけない。
相手しただけ損したわ、アホらしい。
相手しただけ損したわ、アホらしい。
159デフォルトの名無しさん
2018/08/22(水) 22:02:56.29ID:yJL450CM 勝手に損してろ
誰にも賠償請求できない
泣き寝入りだな
アホw バカwww
誰にも賠償請求できない
泣き寝入りだな
アホw バカwww
160デフォルトの名無しさん
2018/08/22(水) 22:05:01.83ID:Jjipv9/i はいはい、ちゃんとにほんごをべんきょうしてりかいできるようになってから、かきこんでくださいね。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【結婚の壁】結婚どころか今まで恋愛経験は一切ない人も…「年収500万の壁」を突破できない中間層の苦しい現実 [ぐれ★]
- 【速報】高市首相 青森震度6強地震で負傷者30人 [蚤の市★]
- ぼくくん、昨年PCを組んだため値上げ回避 ちなスペック [794961135]
- 【高市悲報】日経が議員削減法案を痛烈批判「これほど党利党略を優先した法案も珍しい」 [663382246]
- 【画像】TOKIO山口達也に「いいべ」された当時のJK、性加害の反動であたしこグラドルにwww [779857986]
- 声優・矢尾一樹の妻「治療の影響で思う様に話せない彼に、近くで仕事をしてきた人が、かっこ悪い!もう辞めなよと言った。私は許さない」 [594040874]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
- 【動画】ママチャリまんさん「わたし女ですけど!」シャコシャコシャコシャコ 🚴‍♀❗🚛 [329329848]
