!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
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (ワッチョイ ff63-dxp0)
2022/12/28(水) 10:40:30.02ID:PyoNDBFu0887デフォルトの名無しさん (スッププ 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 間違ってる
938デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/13(木) 23:48:57.98ID:wWKtbXV/0 マスク無死でラーメン食いたい奴は、まず住所を書いて見てよ
その場所にノーマスクで食えるラーメン屋作らないといけないんだろ?
政府が作るのかな?
その場所にノーマスクで食えるラーメン屋作らないといけないんだろ?
政府が作るのかな?
939デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/13(木) 23:55:11.99ID:wWKtbXV/0 ごめん、誤爆
940デフォルトの名無しさん (ワッチョイ 02ad-Ay2p)
2023/04/13(木) 23:55:19.80ID:o3x890Fi0 はあ
941デフォルトの名無しさん (ワッチョイ 424b-jq58)
2023/04/14(金) 01:01:11.22ID:E99e4anP0 そのキモいレスをどこで発表するつもりだったのか
最近のLANカードで他力給電のものばかりのようですね、クロスケーブルでピアツーピアできるPCIe のカードって存在しないものですかね…
結局 hub を使っちまった、もったいないなあ
結局 hub を使っちまった、もったいないなあ
944はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6)
2023/04/16(日) 21:13:37.76ID:Ot5nnykg0 C スレで言うことか?
945デフォルトの名無しさん (ワッチョイ 2763-2Cuq)
2023/04/16(日) 21:23:02.75ID:H2kHWHvu0 人工知能とはなんたるや、これがわかってないやつ多いのは仕方ないけど
ム板でこれは由々しきことだな
ム板でこれは由々しきことだな
946デフォルトの名無しさん (ワッチョイ 7f63-sFbk)
2023/04/16(日) 21:48:52.61ID:zHRI9OsR0 煽ってるだけやろ
スレ終盤恒例のウダウダ話ですよ、たまにはいいじゃあ、ありませんか!
948デフォルトの名無しさん (ワッチョイ 7f63-sFbk)
2023/04/16(日) 23:00:41.18ID:zHRI9OsR0 chatGPT関連のスレは6本も立ってるので、好きな場所でやってください
(盛り上がったら誘導してくれてもいいです)
(盛り上がったら誘導してくれてもいいです)
949デフォルトの名無しさん (ワッチョイ c7b3-5oiz)
2023/04/17(月) 02:44:28.44ID:PilU+QdE0 数値の各桁を足す関数を考えました
100点中何点?
(引数nが2023なら2+0+2+3で7を返す)
int chg(int n)
{
int a;
char s[32], tmp[2];
memset(s, 0, sizeof(s));
sprintf(s, "%d", n);
a = 0;
for(int i=0; i<strlen(s); i++){
memset(tmp, 0, sizeof(tmp));
tmp[0] = s[i];
a += atoi(tmp);
}
return a;
}
100点中何点?
(引数nが2023なら2+0+2+3で7を返す)
int chg(int n)
{
int a;
char s[32], tmp[2];
memset(s, 0, sizeof(s));
sprintf(s, "%d", n);
a = 0;
for(int i=0; i<strlen(s); i++){
memset(tmp, 0, sizeof(tmp));
tmp[0] = s[i];
a += atoi(tmp);
}
return a;
}
950デフォルトの名無しさん (ワッチョイ 5f79-uE6i)
2023/04/17(月) 02:47:29.33ID:dBG5z/eM0 数値計算なのにmemsetを使ってる時点で0点
951デフォルトの名無しさん
2023/04/17(月) 03:00:26.88ID:2drVnpNQ0 int chg(int n)
{
int a;
for(a=0;0<n;n/=10) a+=n%10;
return a;
}
{
int a;
for(a=0;0<n;n/=10) a+=n%10;
return a;
}
952デフォルトの名無しさん (ワッチョイ 5fad-sFbk)
2023/04/17(月) 03:01:25.01ID:g2jYQi3l0 >>949
それわざわざ文字列にしてからやる必要ないよね。
10で割った余りを足して10で割るのを繰り返せば良いだけだし。
仮に(宿題や問題の都合で)どうしても文字列に直してやらなければならないのだとしても文字列として使う char 配列の
初期化で全部0で埋めるのは処理の無駄だしそんな事をするのはC言語における文字列の扱いについてよく分かって
いないことの現れだと思う。
それわざわざ文字列にしてからやる必要ないよね。
10で割った余りを足して10で割るのを繰り返せば良いだけだし。
仮に(宿題や問題の都合で)どうしても文字列に直してやらなければならないのだとしても文字列として使う char 配列の
初期化で全部0で埋めるのは処理の無駄だしそんな事をするのはC言語における文字列の扱いについてよく分かって
いないことの現れだと思う。
953デフォルトの名無しさん (ワッチョイ a702-em59)
2023/04/17(月) 03:41:54.19ID:fyienZF80 30点
みんなもっと優しくしてあげなよ。ゴキブリだって生きてるんだぞ
みんなもっと優しくしてあげなよ。ゴキブリだって生きてるんだぞ
954デフォルトの名無しさん (ワッチョイ 4702-1OZE)
2023/04/17(月) 06:01:50.96ID:WvGymo4J0 あかん!
マイナスの場合はどうするねん
マイナスの場合はどうするねん
955デフォルトの名無しさん (ワッチョイ a702-em59)
2023/04/17(月) 06:38:08.16ID:fyienZF80 >>951
nが負の場合は?
nが負の場合は?
956デフォルトの名無しさん (ワッチョイ 67c9-ieXZ)
2023/04/17(月) 08:14:09.28ID:TjOyN7pL0 if (n < 0) n = -n;
957デフォルトの名無しさん (ササクッテロロ Spfb-tEYI)
2023/04/17(月) 09:53:06.18ID:MNSyV7UUp 文字列で与えなきゃデカい数字が扱えないやん
958デフォルトの名無しさん (ワッチョイ c75f-nEk4)
2023/04/17(月) 10:26:43.64ID:jOIYUxZw0 int chg(int n)
{
int a=0,b;
while(n) {
b=n/10;
a+=n-b*10;
n=b;
}
{
int a=0,b;
while(n) {
b=n/10;
a+=n-b*10;
n=b;
}
959デフォルトの名無しさん (ワッチョイ 67c9-ieXZ)
2023/04/17(月) 10:57:06.60ID:TjOyN7pL0960デフォルトの名無しさん (ワッチョイ 2763-2Cuq)
2023/04/17(月) 10:57:27.95ID:I3IibvEZ0 957涙目だなw
961デフォルトの名無しさん (テテンテンテン MM8f-/v6j)
2023/04/17(月) 12:21:07.80ID:sfjAbensM プログラミングには最低限の数学的な素養が必要な事が証明された…
科学技術計算を扱わないとしても、計算論とか数学とは切っても切れない関係にある
科学技術計算を扱わないとしても、計算論とか数学とは切っても切れない関係にある
962デフォルトの名無しさん (ワッチョイ 5f97-3fkD)
2023/04/17(月) 12:50:21.20ID:9nZn/y+b0 銀行の勘定系でも四則演算の知識は必要だし
963デフォルトの名無しさん (ワッチョイ 67c9-ieXZ)
2023/04/17(月) 12:56:30.89ID:TjOyN7pL0 文字列を受ける場合
int chg(const char* s)
{
int ret = 0;
char tmp[2] = { 0 };
while (*s && !isdigit(*s)) s++; /*数字じゃないところは飛ばす */
if (*s) {
while (*s && isdigit(*s)) { /* 数字が連続している間だけ */
tmp[0] = *s; ret += atoi(tmp);
s++;
}
}
return ret;
}
環境依存で
isdigit(*s) を ('0'<=*s && *s <='9') に
tmp[0] = *s; ret += atoi(tmp); を ret += s[0] - '0'; に
置き換えることもできるかもしれない
int chg(const char* s)
{
int ret = 0;
char tmp[2] = { 0 };
while (*s && !isdigit(*s)) s++; /*数字じゃないところは飛ばす */
if (*s) {
while (*s && isdigit(*s)) { /* 数字が連続している間だけ */
tmp[0] = *s; ret += atoi(tmp);
s++;
}
}
return ret;
}
環境依存で
isdigit(*s) を ('0'<=*s && *s <='9') に
tmp[0] = *s; ret += atoi(tmp); を ret += s[0] - '0'; に
置き換えることもできるかもしれない
964はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6)
2023/04/17(月) 13:07:40.29ID:FYaudfJt0965デフォルトの名無しさん (ワッチョイ 67c9-ieXZ)
2023/04/17(月) 13:15:24.09ID:TjOyN7pL0 >>964
さんきゅう 数字は保障されてたか
さんきゅう 数字は保障されてたか
966デフォルトの名無しさん (ワッチョイ 67c9-ieXZ)
2023/04/17(月) 13:21:38.21ID:TjOyN7pL0 次の while (*s && isdigit(*s)) と意図の一部は重なるし if (*s) はいらんかったね
967デフォルトの名無しさん (スプッッ Sdff-wBI8)
2023/04/17(月) 15:25:15.58ID:DnqfCfHpd 今のモダンな言語からしたら一見して下らないやり取りだけど
これがC言語なんよね・・・
これがC言語なんよね・・・
968デフォルトの名無しさん (ワッチョイ c75f-nEk4)
2023/04/17(月) 15:50:16.10ID:jOIYUxZw0 ハードとアプリのあいだに多くの計算を必要とするソフトの層があるからね
OSやらで全部カバーするのは無理だからCは死なない
OSやらで全部カバーするのは無理だからCは死なない
969デフォルトの名無しさん (アウアウウー Sacb-/q5i)
2023/04/17(月) 15:51:50.57ID:kmcXsww3a >>964
漢数字も並んでたら嬉しかったと思いませんか
漢数字も並んでたら嬉しかったと思いませんか
970はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6)
2023/04/17(月) 16:54:39.89ID:FYaudfJt0 >>969
現実には JIS は読みの順序で Unicode は部首の画数の順序が原則。
漢数字を例外にしたらそれはそれで不格好だし嬉しくない人もいるだろう。
まあ Unicode は後から追加した分だのなんだのでそんなに綺麗に並んでいるわけでもないので
どうせぐちゃぐちゃなら数字くらいは並べても良かったんちゃうかなというのは気持ちはわかる。
現実には JIS は読みの順序で Unicode は部首の画数の順序が原則。
漢数字を例外にしたらそれはそれで不格好だし嬉しくない人もいるだろう。
まあ Unicode は後から追加した分だのなんだのでそんなに綺麗に並んでいるわけでもないので
どうせぐちゃぐちゃなら数字くらいは並べても良かったんちゃうかなというのは気持ちはわかる。
971デフォルトの名無しさん (テテンテンテン MM8f-/v6j)
2023/04/17(月) 17:19:21.10ID:tJ5lxHq2M 一二三四…Why Japanese people!
972デフォルトの名無しさん (スッププ Sd7f-1OZE)
2023/04/17(月) 19:13:46.43ID:92m0URlPd >>967
くくく、、愚かな、、
くくく、、愚かな、、
973デフォルトの名無しさん (スッププ Sd7f-1OZE)
2023/04/17(月) 19:21:15.62ID:92m0URlPd >>954
アンサインドイントで受けたれや!
アンサインドイントで受けたれや!
974デフォルトの名無しさん (アウアウウー Sacb-/q5i)
2023/04/17(月) 20:38:59.46ID:RKcegE7fa 壱<弐<参<死<伍<碌<質<八<苦<拾<百<銭<萬
ですね判ります
ですね判ります
975はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6)
2023/04/18(火) 08:26:27.42ID:aNj1uNjV0 >>971
英語の綴りの不規則さも大概やないけ! と突っ込んで完成するネタだと個人的には思ってる。
英語の綴りの不規則さも大概やないけ! と突っ込んで完成するネタだと個人的には思ってる。
976デフォルトの名無しさん (スフッ Sd7f-fSvC)
2023/04/18(火) 14:58:32.85ID:aePy3OZ8d 未初期化の自動変数には「不定値」が割り当てられる、と調べるたり自分が学んでいる本でも書いていますが、自分のコンパイラは常に「0」になっているようです
なぜでしょうか?
ちなみにgcc-10です gcc-11だと「不定値」になります
なぜでしょうか?
ちなみにgcc-10です gcc-11だと「不定値」になります
977はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f32-iKPJ)
2023/04/18(火) 15:29:21.41ID:rjFDtS/R0 不定の値とは「未規定の値又はトラップ表現」と規定されてる。
常に 0 であってもこの規定に反しないよ。
常に 0 であってもこの規定に反しないよ。
978デフォルトの名無しさん (スフッ Sd7f-7nfa)
2023/04/18(火) 16:27:26.25ID:U9oAz8h1d >>977 ありがとうございます
ちなみに「トラップ表現」とはなんでしょうか?
ちなみに「トラップ表現」とはなんでしょうか?
979デフォルトの名無しさん (スフッ Sd7f-foDO)
2023/04/18(火) 16:57:48.54ID:U9oAz8h1d 976です chatgptで調べました
C言語の仕様では、自動変数を初期化しない場合、その値は不定とされています。これは、コンパイラがメモリ上で変数を割り当てる際に、その領域が以前に使用されていたデータを含んでいる可能性があるためです。
しかしながら、一部のコンパイラでは、自動変数を0で初期化することがあります。これは、セキュリティ上の理由から、またはコードの可読性を向上させるために行われることがあります。
ただし、コンパイラが自動変数を0で初期化することが保証されているわけではありません。したがって、プログラマは自動変数を使用する前に必ず初期化するように注意する必要があります。
C言語の仕様では、自動変数を初期化しない場合、その値は不定とされています。これは、コンパイラがメモリ上で変数を割り当てる際に、その領域が以前に使用されていたデータを含んでいる可能性があるためです。
しかしながら、一部のコンパイラでは、自動変数を0で初期化することがあります。これは、セキュリティ上の理由から、またはコードの可読性を向上させるために行われることがあります。
ただし、コンパイラが自動変数を0で初期化することが保証されているわけではありません。したがって、プログラマは自動変数を使用する前に必ず初期化するように注意する必要があります。
980はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f32-iKPJ)
2023/04/18(火) 17:04:00.61ID:rjFDtS/R0 >>978
トラップ表現は「オブジェクト型の値を表現しないオブジェクト表現」ということになってる。
その型としてあり得ないビットパターンってこと。
オブジェクトとして格納されたトラップ表現を文字型ではない左辺値式として読みだした場合の結果は未定義となる。
副作用としてそのような表現が生成される場合も未定義。
C の仕様でいう未定義というのは「何が起きても (たとえば暴走しても) 良い」という意味なので実質的に禁止だと思ってもいいよ。
とはいえ整数型でトラップ表現があるアーキテクチャを私は見たことが無いけどな。
トラップ表現は「オブジェクト型の値を表現しないオブジェクト表現」ということになってる。
その型としてあり得ないビットパターンってこと。
オブジェクトとして格納されたトラップ表現を文字型ではない左辺値式として読みだした場合の結果は未定義となる。
副作用としてそのような表現が生成される場合も未定義。
C の仕様でいう未定義というのは「何が起きても (たとえば暴走しても) 良い」という意味なので実質的に禁止だと思ってもいいよ。
とはいえ整数型でトラップ表現があるアーキテクチャを私は見たことが無いけどな。
981デフォルトの名無しさん (スプッッ Sdff-ZLJR)
2023/04/18(火) 18:20:39.02ID:Qric2C4Yd トラップ表現を調べてみたけどほぼほぼ処理系定義絡みなのね
signed int16の0x8000は-32768かもしれないし、トラップ表現かもしれない
1の補数系でsigned int16の0xffffは0かもしれないし、トラップ表現かもしれない
int32* の4バイト境界に合ってないポインタ(int* p=0x0001)は、強制的に4バイト境界に直されるかもしれないし、トラップ表現かもしれない
signed int16の0x8000は-32768かもしれないし、トラップ表現かもしれない
1の補数系でsigned int16の0xffffは0かもしれないし、トラップ表現かもしれない
int32* の4バイト境界に合ってないポインタ(int* p=0x0001)は、強制的に4バイト境界に直されるかもしれないし、トラップ表現かもしれない
982デフォルトの名無しさん (スフッ Sd7f-foDO)
2023/04/18(火) 19:26:15.76ID:U9oAz8h1d >>980 ありがとうございます 勉強になりました
983デフォルトの名無しさん (テテンテンテン MM8f-/v6j)
2023/04/19(水) 02:26:26.48ID:Nl7uhZkpM 自分のコンパイラってのを明らかにしてくれ
どうしても言えないってならしょうがないが…
どうしても言えないってならしょうがないが…
984デフォルトの名無しさん (ワッチョイ 6746-KCd8)
2023/04/19(水) 02:43:50.96ID:MHEst9B30985デフォルトの名無しさん (ワッチョイ 5f4b-zTmk)
2023/04/19(水) 06:44:34.46ID:Dcht9s5K0 >>983
バーカ(笑)
バーカ(笑)
986デフォルトの名無しさん (ワッチョイ 2763-7nfa)
2023/04/19(水) 06:59:06.58ID:twYHK80b0 983息してるか?www
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★4 [BFU★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す [蚤の市★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 佳子さまがコロナ感染 [おっさん友の会★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【悲報】靖国参拝を批判する中国に内政干渉するなと騒ぐネトウヨが中国の内紛に干渉する理由、誰にもわからない🥺 [616817505]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 【悲報】ネトウヨ「なんで高市が謝るんだよ!岡田が謝れ!😡」 [359965264]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- エッヂ逝った?
