!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 159
https://mevius.5ch.net/test/read.cgi/tech/1659623547/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 160
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (ワッチョイ ff63-dxp0)
2022/12/28(水) 10:40:30.02ID:PyoNDBFu0838デフォルトの名無しさん (ワッチョイ a9b3-udcE)
2023/04/08(土) 20:36:00.74ID:SFpZqjEH0 なんか、
for(size_t i=0...
と書く人いません?
for(int i=0ではなくsize_tを使う意味はなんでしょうか?
for(size_t i=0...
と書く人いません?
for(int i=0ではなくsize_tを使う意味はなんでしょうか?
839デフォルトの名無しさん (ワッチョイ a169-/aea)
2023/04/08(土) 20:53:31.67ID:wgIhukY00 strlen()やsizeofはsize_tなんだわこれが
840蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd22-6PIS)
2023/04/08(土) 20:55:09.41ID:3OtdrBzyd size_tはintよりサイズが大きいかも知れないし、符号なし整数なんだよね。
841デフォルトの名無しさん (ワッチョイ bd02-oFYy)
2023/04/08(土) 21:16:04.49ID:rjC7aYJI0 そのiを主にsize_tとして使う用があるから
もし質問がsize_tとして使う用がないのにiをsize_tにするのか?ということなら、そう書いて
もし質問がsize_tとして使う用がないのにiをsize_tにするのか?ということなら、そう書いて
842デフォルトの名無しさん (ワッチョイ 6ecf-Rzwh)
2023/04/08(土) 21:21:03.16ID:tM+hyW0O0 >>838
Cにおいて自然数で表されるべきものには全てsize_tを使うべきだと信じてる人達が一定数いる
大きさ、長さ、個数、順番、回数なんかが該当し、そこにはループカウンタも含まれる
意味の問題ではなく教義や主義の問題なんで、自分の考えと違うコードを見かけてもそういうもんだで済ますのがいい
Cにおいて自然数で表されるべきものには全てsize_tを使うべきだと信じてる人達が一定数いる
大きさ、長さ、個数、順番、回数なんかが該当し、そこにはループカウンタも含まれる
意味の問題ではなく教義や主義の問題なんで、自分の考えと違うコードを見かけてもそういうもんだで済ますのがいい
843デフォルトの名無しさん (ワッチョイ 495f-MO2j)
2023/04/08(土) 21:22:33.45ID:9tIz9OW00 ほとんどの場合はどっちでもいいかと
844デフォルトの名無しさん (アウアウウー Sa05-Ay2p)
2023/04/08(土) 21:37:43.61ID:vkc2i7uPa size_t と off_t ぐらいは使えよ
845デフォルトの名無しさん (ワッチョイ 0279-90pI)
2023/04/08(土) 21:42:59.63ID:ymsLMaB30 終端ヌル文字列の長さが符号ビット分まであったらそれは異常ではなかろうか
オンメモリで処理できるデータじゃないから見直すべき
オンメモリで処理できるデータじゃないから見直すべき
846デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/08(土) 22:47:03.50ID:iv8dl0Z8M847デフォルトの名無しさん (ワッチョイ 424b-jq58)
2023/04/09(日) 01:33:51.48ID:hSdkmotY0 2.2GBのテキストファイル
848デフォルトの名無しさん (スッププ Sd22-QGEt)
2023/04/09(日) 09:21:07.72ID:J2NWn1GHd849デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/09(日) 10:02:17.83ID:mGUCWnYwM >>848
100Bだろうが4GBだろうが、テキストファイルをロードする時にはゼロ終端文字列にするだろ
それをstrlenするかどうかは俺の知ったことではない
4GBのゼロ終端文字列が異常ではないというだけだ
100Bだろうが4GBだろうが、テキストファイルをロードする時にはゼロ終端文字列にするだろ
それをstrlenするかどうかは俺の知ったことではない
4GBのゼロ終端文字列が異常ではないというだけだ
850デフォルトの名無しさん (アウアウウー Sa05-l3hZ)
2023/04/09(日) 10:03:11.35ID:Lsx68Nkda ファイルから読むこんで文字列処理する場合とかINT_MAXサイズ以上になる可能性もあるけどINT_MAXの範囲までしか処理しちゃいけないの?
851デフォルトの名無しさん (ワッチョイ 495f-MO2j)
2023/04/09(日) 10:23:33.31ID:S22RS/pW0 シークしなよ
852デフォルトの名無しさん (アウアウウー Sa05-l3hZ)
2023/04/09(日) 10:29:43.09ID:Mq6Pc04Ma 一方向のみに進むだけならシークでいいけど、対応する値を探したりするには場所情報もいるから
853デフォルトの名無しさん (スッププ Sd22-QGEt)
2023/04/09(日) 10:55:25.78ID:SXWU02gid854デフォルトの名無しさん (アウアウウー Sa05-l3hZ)
2023/04/09(日) 11:20:12.19ID:JaCyVsO8a その場所情報を残すためにintじゃ足りないから大きな型を使ったりするけど
シークじゃ戻って対象の文字列の間の処理を再起やってまた進んでってのが面倒くさい
シークじゃ戻って対象の文字列の間の処理を再起やってまた進んでってのが面倒くさい
855デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/09(日) 11:36:10.69ID:aX3VhQL60 面倒くさがる人はプログラムに向いていません
856デフォルトの名無しさん (アウアウウー Sa05-l3hZ)
2023/04/09(日) 11:49:17.45ID:K99TBVjYa やりやすい方法があるのに複雑にして分かりにくくするのがプログラマーならプログラマーじゃなくていいや
857デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/09(日) 12:08:18.91ID:aX3VhQL60 あるならそれを使えば良いだろ
相談するまでもない
相談するまでもない
858デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/09(日) 12:24:20.87ID:mGUCWnYwM >>853
LoadTextFile()っていう関数を作ったら戻り値は何だ?
const char*だろ
ゼロ終端文字列が返ると思うだろ
もちろん追加でサイズも引数経由で返しても良い
悔しいからって屁理屈をこねるな
LoadTextFile()っていう関数を作ったら戻り値は何だ?
const char*だろ
ゼロ終端文字列が返ると思うだろ
もちろん追加でサイズも引数経由で返しても良い
悔しいからって屁理屈をこねるな
859デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/09(日) 12:31:45.31ID:kBYq2/2r0 >>853
mainは第1引数がサイズで、第2引数の指す先はNULL終端されてるね
mainは第1引数がサイズで、第2引数の指す先はNULL終端されてるね
860デフォルトの名無しさん (スッププ Sd22-QGEt)
2023/04/09(日) 13:05:09.35ID:bTpPccPGd >>858
例えば
終端に移動するとき
サイズと比較して超えていたらエラーか終端に切り詰める
データを追加する場合
終端まで移動
こういった普通の作業するのにいちいちstrlenを呼び出すとかありえないからサイズはどこかに保持する必要がある
よって終端記号はムダだよ
例えば
終端に移動するとき
サイズと比較して超えていたらエラーか終端に切り詰める
データを追加する場合
終端まで移動
こういった普通の作業するのにいちいちstrlenを呼び出すとかありえないからサイズはどこかに保持する必要がある
よって終端記号はムダだよ
861デフォルトの名無しさん (スッップ Sd22-VdbI)
2023/04/09(日) 13:39:50.90ID:8g05NYDAd862デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/09(日) 14:32:05.77ID:FxGMQKOnM >>860
strlenを使うかどうかは関知しないと言ってるだろ
それでもゼロ終端文字列を返すんだよ
それがC言語のプロトコルだ
1byteケチって何がしたいんだよw
だから屁理屈をこねるなと言ってる
strlenを使うかどうかは関知しないと言ってるだろ
それでもゼロ終端文字列を返すんだよ
それがC言語のプロトコルだ
1byteケチって何がしたいんだよw
だから屁理屈をこねるなと言ってる
863デフォルトの名無しさん (エムゾネ FF22-QGEt)
2023/04/09(日) 14:42:47.16ID:LpKuKnylF864デフォルトの名無しさん (エムゾネ FF22-QGEt)
2023/04/09(日) 14:44:30.71ID:LpKuKnylF >>859
mainの第一引数はargvの個数であってサイズじゃないよ
mainの第一引数はargvの個数であってサイズじゃないよ
865デフォルトの名無しさん
2023/04/09(日) 15:09:35.01ID:zFNH8tsS0 >こういった普通の作業するのにいちいちstrlenを呼び出すとかありえないからサイズはどこかに保持する必要がある
“こういった普通の作業”をしない場合はstrlenで良いってことだろ?
なんでもかんでもstrlenを使うって話じゃないし
なんでもかんでもサイズはどこかに保持する必要があるわけじゃなくて
用途に合わせて使い分けるのがプログラマーじゃないの?
“こういった普通の作業”をしない場合はstrlenで良いってことだろ?
なんでもかんでもstrlenを使うって話じゃないし
なんでもかんでもサイズはどこかに保持する必要があるわけじゃなくて
用途に合わせて使い分けるのがプログラマーじゃないの?
866デフォルトの名無しさん (ワッチョイ 495f-MO2j)
2023/04/09(日) 15:13:43.40ID:S22RS/pW0 小生はゴミを分別できるプログラマーになりたい
867デフォルトの名無しさん
2023/04/09(日) 15:20:34.92ID:zFNH8tsS0 いちいちstrlenを呼び出す、と言っているけど
ゼロ終端文字列を返す関数はあるしゼロ終端文字列からサイズを得るためstrlenは呼び出すよね?
その後は処理を高速にするためにそのサイズを維持しつつというのはあると思うよ
けどその後呼び出す文字列処理関数があるとして、その関数が削除した文字数や追加した文字数を返してくれるとは限らないわけで
その場合、その都度strlenを呼び出さなきゃいけない場合もあり得るよね?
それぞれが想定する状況がかみ合っていないだけとも思うんだけどね
結局自分が想定する状況なら自分の意見が良い言っているだけで、じゃあ相手の言う状況でも自分の言っているのが正しいかということ自体を否定しているわけではないでしょ?
ゼロ終端文字列を返す関数はあるしゼロ終端文字列からサイズを得るためstrlenは呼び出すよね?
その後は処理を高速にするためにそのサイズを維持しつつというのはあると思うよ
けどその後呼び出す文字列処理関数があるとして、その関数が削除した文字数や追加した文字数を返してくれるとは限らないわけで
その場合、その都度strlenを呼び出さなきゃいけない場合もあり得るよね?
それぞれが想定する状況がかみ合っていないだけとも思うんだけどね
結局自分が想定する状況なら自分の意見が良い言っているだけで、じゃあ相手の言う状況でも自分の言っているのが正しいかということ自体を否定しているわけではないでしょ?
868デフォルトの名無しさん
2023/04/09(日) 15:21:53.57ID:zFNH8tsS0 最後変だわ
×結局自分が想定する状況なら自分の意見が良い言っているだけで、じゃあ相手の言う状況でも自分の言っているのが正しいかということ自体を否定しているわけではないでしょ?
〇結局自分が想定する状況なら自分の意見が良い言っているだけで、じゃあ相手の言う状況でも自分の言っているのが正しいと言いたいわけではないでしょ?
×結局自分が想定する状況なら自分の意見が良い言っているだけで、じゃあ相手の言う状況でも自分の言っているのが正しいかということ自体を否定しているわけではないでしょ?
〇結局自分が想定する状況なら自分の意見が良い言っているだけで、じゃあ相手の言う状況でも自分の言っているのが正しいと言いたいわけではないでしょ?
869デフォルトの名無しさん (ワッチョイ 495f-MO2j)
2023/04/09(日) 16:50:03.25ID:S22RS/pW0 小生だって燃えないゴミを燃えるゴミと言いたいわけじゃないさ
870デフォルトの名無しさん (ワッチョイ 0279-90pI)
2023/04/09(日) 18:08:42.61ID:I9Qf3W7D0 環境商法は嘘でも乗っからないと文句言われるからつれーよな
871デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/09(日) 18:17:37.00ID:aX3VhQL60 同じプラスティックを、燃えるゴミ、燃えないゴミ、分別込み、どれで出してもOKらしい
あれはやってますアピールなんだとか
あれはやってますアピールなんだとか
872デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/09(日) 18:24:47.66ID:aX3VhQL60 分別よりも、粗大ゴミ、家電ゴミなどの有料ゴミは厳格に扱われる
迂闊に持ち帰ると大目玉食らうらしい
迂闊に持ち帰ると大目玉食らうらしい
873デフォルトの名無しさん
2023/04/09(日) 18:45:27.28ID:zFNH8tsS0 問題があるからそうしているわけじゃなくて限りある資源をリサイクルだからそうしている
「どれで出してもOKらしい」と言うのは論点が間違ってる
あと指定された場所にあるゴミは所有権の放棄じゃなくて自治体への譲渡みたいなモノだから持ち帰りは窃盗になる
「どれで出してもOKらしい」と言うのは論点が間違ってる
あと指定された場所にあるゴミは所有権の放棄じゃなくて自治体への譲渡みたいなモノだから持ち帰りは窃盗になる
874デフォルトの名無しさん (ラクッペペ MM66-DefY)
2023/04/09(日) 18:45:49.74ID:qh8VxmjLM 条例と法令の違い
875デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/09(日) 18:49:28.88ID:aX3VhQL60 いや実際そうだぞ
汚れているプラスティックを分別ゴミに混ぜられると迷惑なんだそうだ
洗剤でゴシゴシ洗って綺麗にしてから出せだとさ
汚れているプラスティックを分別ゴミに混ぜられると迷惑なんだそうだ
洗剤でゴシゴシ洗って綺麗にしてから出せだとさ
876デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/09(日) 18:51:41.97ID:aX3VhQL60 実際PETボトルは回収しても資源として再利用するのに手間が掛かる
だから、飲料メーカーもPETからアルミ容器に切り替えている
アルミはリサイクルが簡単なんだそうだ
だから、飲料メーカーもPETからアルミ容器に切り替えている
アルミはリサイクルが簡単なんだそうだ
877デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/09(日) 19:02:34.53ID:aX3VhQL60 迂闊に持ち帰ると大目玉、はゴミ収集業者の話な
878デフォルトの名無しさん (ワッチョイ 0279-90pI)
2023/04/09(日) 19:07:33.05ID:I9Qf3W7D0 基本リサイクルはコスト的にデメリットしかない
一部ではやってますよアピールをしつつ、大半は分別したのをわざわざまとめて燃やしたり他所に押し付けるのが現実
環境商法は理想アピールとかけ離れた現実が弱みになって反社が入り込みやすいジャンルになってるから関わると危険だよ
一部ではやってますよアピールをしつつ、大半は分別したのをわざわざまとめて燃やしたり他所に押し付けるのが現実
環境商法は理想アピールとかけ離れた現実が弱みになって反社が入り込みやすいジャンルになってるから関わると危険だよ
879デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/09(日) 19:12:09.18ID:ONc2duBhM880デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/09(日) 19:15:10.49ID:ONc2duBhM 文字列とストリームの区別が付いてないアホに付き合わないといけないとはな…
そういう奴のコードはバグだらけだろうなw
そういう奴のコードはバグだらけだろうなw
881デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/09(日) 19:22:58.30ID:ONc2duBhM ま、Cの文字列はバグり易いのは間違いないがな
特にmmapを使うと悲劇が起こりやすい
なのでテキストファイルの読み込みには、LoadTextFileの様な明確な名前を付けて専用に用意するのが常套手段
もちろんゼロ終端文字列を返す
特にmmapを使うと悲劇が起こりやすい
なのでテキストファイルの読み込みには、LoadTextFileの様な明確な名前を付けて専用に用意するのが常套手段
もちろんゼロ終端文字列を返す
882デフォルトの名無しさん (スッップ Sd22-VdbI)
2023/04/09(日) 19:27:24.15ID:8g05NYDAd strlenとか使う馬鹿がいるのか
ラベル低すぎ
ラベル低すぎ
883デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/09(日) 20:52:59.04ID:ONc2duBhM Linux Kernelでも使われてるけど、ラベル低すぎとは知らなかったw
884デフォルトの名無しさん (ワッチョイ b902-VdbI)
2023/04/09(日) 23:27:25.54ID:rzCgDpP30 strlen strcpy strcatのストラ三兄弟は使うな
普通はマクロ定義でスピードアップ
普通はマクロ定義でスピードアップ
885デフォルトの名無しさん (ワッチョイ 6ecf-Rzwh)
2023/04/10(月) 00:09:17.40ID:IbkX37li0 どんなマクロなんだい
886デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/10(月) 05:24:42.66ID:hibmPNuj0887デフォルトの名無しさん (スッププ Sd22-QGEt)
2023/04/11(火) 00:17:24.82ID:KrSp3HQhd888デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/11(火) 02:28:47.80ID:MidqBNVpM889デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/11(火) 06:49:02.21ID:dFL5vcfn0 >>887
訂正ってどこ? 具体的なレス番plz
訂正ってどこ? 具体的なレス番plz
890デフォルトの名無しさん (ワッチョイ a910-Ay2p)
2023/04/11(火) 07:47:26.88ID:lpXrKUt40 Cを捨ててCStringを使うC++へ行けってことだろ。
891デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/11(火) 08:08:42.83ID:dFL5vcfn0 std::stringではなくCStringな変人きたな
892デフォルトの名無しさん (スッップ Sd22-QGEt)
2023/04/11(火) 08:55:39.31ID:ozkx3imqd893デフォルトの名無しさん (ワッチョイ 495f-/aea)
2023/04/11(火) 09:23:43.71ID:Q4R/j+cb0 >>859 の言ってるのは argv[argc] == NULL となる規定のことでしょ。
それ自体は正しいので訂正することも無い。
それ自体は正しいので訂正することも無い。
894デフォルトの名無しさん (ワッチョイ 495f-MO2j)
2023/04/11(火) 09:41:53.28ID:7OwUdYTT0 MFCに帰ろう
895デフォルトの名無しさん (スッップ Sd22-QGEt)
2023/04/11(火) 09:52:04.87ID:ozkx3imqd896デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/11(火) 15:56:45.30ID:dFL5vcfn0897デフォルトの名無しさん (ワッチョイ 495f-MO2j)
2023/04/11(火) 19:04:39.28ID:7OwUdYTT0 小生は文字列の長さを表すとき、strlenに習ってlengthという語を用いますん
898デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/11(火) 19:20:48.37ID:1aMyTP0X0 文字列サイズなんて聞くと、配列要素数かと受け取ってしまう
899デフォルトの名無しさん (スッップ Sd22-QGEt)
2023/04/11(火) 19:50:55.63ID:ozkx3imqd900デフォルトの名無しさん
2023/04/11(火) 20:01:03.76ID:eL0kPSHK0 文字列長
文字の長さ
文字列の長さ
長さ
文字の長さ
文字列の長さ
長さ
901デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/11(火) 20:41:17.09ID:1aMyTP0X0 あと、文字数というのも入れてあげて
902デフォルトの名無しさん (ワッチョイ 02ad-Ay2p)
2023/04/12(水) 02:49:44.30ID:1sJZVfCp0 文字の長さ 3m
重さ 5kg
重さ 5kg
903デフォルトの名無しさん (ワッチョイ 02ad-Ay2p)
2023/04/12(水) 02:52:08.54ID:1sJZVfCp0904デフォルトの名無しさん (ワッチョイ 02ad-Ay2p)
2023/04/12(水) 02:53:14.30ID:1sJZVfCp0 とても長くて太くて大きくて重そう
905デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/12(水) 06:48:43.44ID:NgkNjGWQ0 >>899
それってあなたの感想ですよね
それってあなたの感想ですよね
906デフォルトの名無しさん (ワッチョイ bd02-oFYy)
2023/04/12(水) 08:59:58.23ID:HQz+hF5G0 もうそれ秋田
907デフォルトの名無しさん (アウアウウー Sa05-9cWA)
2023/04/12(水) 11:42:14.25ID:+8HledSTa 0終端の良い所は可変長でどんなに長い文字列でもメモリが許す限り文字列を続けられる
もちろんデメリットは長さがすぐに判らない
逆に長さを持って struct {size_t len; char hoge[0]} Str; みたいな構成にするのもありだが
例えば Str *s = (Str *)malloc(len + sizeof(Str)); で確保して使う
後者のデメリットは size_t len の最大値までしか文字を格納出来ないこと
struct {short len; char hoge[0]} Str; みたいな実装もたまに観るからあなどれない
もちろんデメリットは長さがすぐに判らない
逆に長さを持って struct {size_t len; char hoge[0]} Str; みたいな構成にするのもありだが
例えば Str *s = (Str *)malloc(len + sizeof(Str)); で確保して使う
後者のデメリットは size_t len の最大値までしか文字を格納出来ないこと
struct {short len; char hoge[0]} Str; みたいな実装もたまに観るからあなどれない
908デフォルトの名無しさん (アウアウウー Sa05-9cWA)
2023/04/12(水) 11:51:49.32ID:+8HledSTa >>838
C++だと
vector の size() が size_t を還して
for(int i = 0; i < v.size(); ++i)
って描くと警告出るので
for(int i = 0; i < (int)v.size(); ++i)
にするとさらに警告出て鬱陶しいから
for(size_t i = 0; i < v.size(); ++i)
にするアホな例はよく観るってどっかのサイトに描いてあった
C++だと
vector の size() が size_t を還して
for(int i = 0; i < v.size(); ++i)
って描くと警告出るので
for(int i = 0; i < (int)v.size(); ++i)
にするとさらに警告出て鬱陶しいから
for(size_t i = 0; i < v.size(); ++i)
にするアホな例はよく観るってどっかのサイトに描いてあった
909デフォルトの名無しさん (テテンテンテン MM66-xOzU)
2023/04/12(水) 12:32:16.29ID:81IdaWl4M C++ならイテレーター使えよ…
910デフォルトの名無しさん (ワッチョイ 495f-cPl8)
2023/04/12(水) 12:42:43.03ID:Q+QfGKpq0 vectorはランダムアクセスがウリだからイテレータ使わないこともよくあるね
911デフォルトの名無しさん (スプープ Sd82-VdbI)
2023/04/12(水) 13:01:34.03ID:N6w93SJGd >>899
「文字列の終端までの長さ」ですが何か?
「文字列の終端までの長さ」ですが何か?
912デフォルトの名無しさん (ワッチョイ c5c9-hq/O)
2023/04/12(水) 13:23:26.32ID:3jp3M04i0 (文字列の)文字数
913デフォルトの名無しさん (ワッチョイ c69a-gTA8)
2023/04/12(水) 13:42:24.69ID:dS1BcMQZ0 >>909
コードによってはインデックスでアクセスしたいこともあるから...
コードによってはインデックスでアクセスしたいこともあるから...
914デフォルトの名無しさん (アウアウウー Sa05-Ay2p)
2023/04/12(水) 13:57:15.96ID:gJHWYvs7a 「アホな例」と書く意味が分からん
ちゃん型を使うべきだろ
ちゃん型を使うべきだろ
915デフォルトの名無しさん (アウアウウー Sa05-Ay2p)
2023/04/12(水) 13:57:40.50ID:gJHWYvs7a ちゃんと型を使うべきだろ
916デフォルトの名無しさん (アウアウウー Sa05-Ay2p)
2023/04/12(水) 13:59:47.55ID:gJHWYvs7a そもそも「アホな例」じゃないとLP64でおかしなことになるよね
917デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/12(水) 14:05:32.31ID:NgkNjGWQ0 struct X;
void func(struct X[]); //error
struct Y { int a; };
void func(struct Y[]); //ok
不完全型の場合、仮引数の[]はポインタにならない??
ちな、gccではエラー、clでは通る
void func(struct X[]); //error
struct Y { int a; };
void func(struct Y[]); //ok
不完全型の場合、仮引数の[]はポインタにならない??
ちな、gccではエラー、clでは通る
918デフォルトの名無しさん (スップ Sd82-qF+M)
2023/04/12(水) 14:17:34.62ID:mayblUPzd C++だと通ったね
gcc/clangのCだとX[]は許されないけどX*は許される
関数宣言より前にX型の定義がないとコンパイルが通らなかった
gcc/clangのCだとX[]は許されないけどX*は許される
関数宣言より前にX型の定義がないとコンパイルが通らなかった
919デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/12(水) 14:55:48.73ID:NgkNjGWQ0 どっちが正しいのかね
920デフォルトの名無しさん
2023/04/12(水) 15:04:32.82ID:219MxBT/0 >>907
馬鹿な私に少しだけアドバイスを
それってsize_tのビット幅 < システム(OS)のビット幅と言う条件下での話なんでしょうか?
size_tがシステム(OS)のビット幅と同じならメモリで管理できるものは必然的にsize_tでも表現できると思うのですが
メモリ上で管理できているゼロ終端文字列をsize_tで表現できない場合ってあるんですか?
まあ一部の組み込みとかならあるかも知れませんが……
けどそういう環境の場合strlenなどのsize_tで返す場合でも表現できなくなるわけで、結局size_tに依存することになってどっちでも同じじゃないかと思うんですがどうなんでしょうか?
馬鹿な私に少しだけアドバイスを
それってsize_tのビット幅 < システム(OS)のビット幅と言う条件下での話なんでしょうか?
size_tがシステム(OS)のビット幅と同じならメモリで管理できるものは必然的にsize_tでも表現できると思うのですが
メモリ上で管理できているゼロ終端文字列をsize_tで表現できない場合ってあるんですか?
まあ一部の組み込みとかならあるかも知れませんが……
けどそういう環境の場合strlenなどのsize_tで返す場合でも表現できなくなるわけで、結局size_tに依存することになってどっちでも同じじゃないかと思うんですがどうなんでしょうか?
921デフォルトの名無しさん (ワッチョイ 6ecf-Rzwh)
2023/04/12(水) 15:07:46.44ID:gccG0Jwg0922デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/12(水) 15:09:16.06ID:NgkNjGWQ0923デフォルトの名無しさん
2023/04/12(水) 15:15:29.08ID:219MxBT/0924デフォルトの名無しさん (ワッチョイ 412d-dXWb)
2023/04/12(水) 15:27:40.89ID:7SV2gFKB0 size_t が符号なし整数型
int が符号付き整数型
int が符号付き整数型
925デフォルトの名無しさん (ワッチョイ 6ecf-Rzwh)
2023/04/12(水) 15:34:06.47ID:gccG0Jwg0 >>922
はずだかなんだか知らねーけど、そんなことはどうでも良くてサイズの分からないオブジェクトの配列は作れんって言ってんだよ
操作上の違いはともかく配列として宣言したんなら関数内では配列として扱うってことを示唆してるわけだろ
仮にそのfuncだかって名前の関数の中にX[3]とかX+5って書かれたらどうやってアドレス出すんだってことよ
動作に違いがあるってことは規格がそれを許してる箇所なんだろうけど弾いてる処理系はそういう考えなんだろう
はずだかなんだか知らねーけど、そんなことはどうでも良くてサイズの分からないオブジェクトの配列は作れんって言ってんだよ
操作上の違いはともかく配列として宣言したんなら関数内では配列として扱うってことを示唆してるわけだろ
仮にそのfuncだかって名前の関数の中にX[3]とかX+5って書かれたらどうやってアドレス出すんだってことよ
動作に違いがあるってことは規格がそれを許してる箇所なんだろうけど弾いてる処理系はそういう考えなんだろう
926デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/12(水) 15:53:08.00ID:NgkNjGWQ0927デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/12(水) 15:53:49.38ID:NgkNjGWQ0 > 規格は知らんけど
この時点で気付くべきだった
この時点で気付くべきだった
928デフォルトの名無しさん (ワッチョイ a910-Ay2p)
2023/04/12(水) 15:55:21.15ID:1mphmeyq0 Cはアセンブラの代用言語。
929はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-/aea)
2023/04/12(水) 16:36:09.61ID:bThMVtxz0 >>917
規格的には (関数定義の一部ではない) 宣言の段階なら不完全型であることを許しているように読める。
C99 だと 6.7.5.3 の第 12 段落に書かれている。
> If the function declarator is not part of a definition of that function,
> parameters may have incomplete type and may use the [*] notation in their sequences of
> declarator specifiers to specify variable length array types.
> 関数宣言子が関数定義の一部ではない場合,仮引数の型は不完全型でもよく,
> また宣言指定子列に [*] を使って可変長配列型を指定してもよい。
ちなみに GCC だと以下のようなものもエラーだが MSVC だと通る。
struct X;
typedef struct X Y[10];
規格的には (関数定義の一部ではない) 宣言の段階なら不完全型であることを許しているように読める。
C99 だと 6.7.5.3 の第 12 段落に書かれている。
> If the function declarator is not part of a definition of that function,
> parameters may have incomplete type and may use the [*] notation in their sequences of
> declarator specifiers to specify variable length array types.
> 関数宣言子が関数定義の一部ではない場合,仮引数の型は不完全型でもよく,
> また宣言指定子列に [*] を使って可変長配列型を指定してもよい。
ちなみに GCC だと以下のようなものもエラーだが MSVC だと通る。
struct X;
typedef struct X Y[10];
930デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/12(水) 16:59:41.80ID:NgkNjGWQ0931デフォルトの名無しさん (ワッチョイ 495f-/aea)
2023/04/12(水) 23:57:31.43ID:ysjFLZAD0 >>917
Cではエラーになるのが規格準拠の動作。
ただし宣言の形式を変えるだけで通る理不尽な制約でありC++では許されるように改められている。
https://stackoverflow.com/questions/50503501/an-error-about-c-struct-array-in-formal-parameter
Cではエラーになるのが規格準拠の動作。
ただし宣言の形式を変えるだけで通る理不尽な制約でありC++では許されるように改められている。
https://stackoverflow.com/questions/50503501/an-error-about-c-struct-array-in-formal-parameter
932はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-/aea)
2023/04/13(木) 00:37:34.59ID:y5cvZaYN0 >>931
そこでも言及されてるけど
型調整 (配列がポインタに読み替えられる) が優先されるか配列宣言子としての解釈が優先されるかって曖昧じゃない?
読み替えより先に配列宣言子として解釈すべきと確信できるような記述ってある?
常識的には曖昧なら厳しい側の制約で解釈すべきだわなーとは思うけど陽には書かれてないように思う。
そこでも言及されてるけど
型調整 (配列がポインタに読み替えられる) が優先されるか配列宣言子としての解釈が優先されるかって曖昧じゃない?
読み替えより先に配列宣言子として解釈すべきと確信できるような記述ってある?
常識的には曖昧なら厳しい側の制約で解釈すべきだわなーとは思うけど陽には書かれてないように思う。
933デフォルトの名無しさん (ワッチョイ 02ad-Ay2p)
2023/04/13(木) 02:04:44.32ID:o3x890Fi0 >>907
昔々の PASCAL はそんな感じだったな。先頭1バイトに文字列のバイト数が入っていてその後に文字列がある。
当然それだと255バイトまでしか入らないのでもっと長い文字列を扱いたい時に苦しむことになる。
まあでも 8 bit とか 16 bit CPU のマイコンやパソコンにそういう高い要求は最初の頃はあまりなかったのでなんとかなっていた。
昔々の PASCAL はそんな感じだったな。先頭1バイトに文字列のバイト数が入っていてその後に文字列がある。
当然それだと255バイトまでしか入らないのでもっと長い文字列を扱いたい時に苦しむことになる。
まあでも 8 bit とか 16 bit CPU のマイコンやパソコンにそういう高い要求は最初の頃はあまりなかったのでなんとかなっていた。
934デフォルトの名無しさん (ワッチョイ 495f-/aea)
2023/04/13(木) 02:23:46.11ID:jklAk1E50 >>932
プログラム内に制約 (constraint) 違反がある状態なので、前後関係がどっちだろうと
少なくとも制約違反について診断メッセージを出力しないと規格準拠とは言えない。
> A conforming implementation shall produce at least one diagnostic message ...
> ... if a preprocessing translation unit or translation unit contains a violation
> of any syntax rule or constraint, ...
「通る」が警告も出ずプログラム実行までできる状態と解釈してたけど、
エラーにはならないものの警告が出ているならそれも規格準拠とは言えそう。
プログラム内に制約 (constraint) 違反がある状態なので、前後関係がどっちだろうと
少なくとも制約違反について診断メッセージを出力しないと規格準拠とは言えない。
> A conforming implementation shall produce at least one diagnostic message ...
> ... if a preprocessing translation unit or translation unit contains a violation
> of any syntax rule or constraint, ...
「通る」が警告も出ずプログラム実行までできる状態と解釈してたけど、
エラーにはならないものの警告が出ているならそれも規格準拠とは言えそう。
935デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/13(木) 08:28:10.40ID:zEEI4t8g0 https://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_047.html
仮引数の[]は、一旦は配列として受理し、その後でポインタに調整されるってことか
仮引数の[]は、一旦は配列として受理し、その後でポインタに調整されるってことか
936デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/13(木) 08:28:50.25ID:zEEI4t8g0 VCで通るのは、VLAがないからってこと?
937デフォルトの名無しさん (スップ Sd82-VdbI)
2023/04/13(木) 23:35:55.91ID:DvwX4ZoKd 間違ってる
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
