[表示 : 全て 最新50 1-99 101- 201- 2ch.scのread.cgiへ]
Update time : 02/26 17:29 / Filesize : 43 KB / Number-of Response : 217
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語の設計ミスった危険な関数トップ10決めようぜ



1 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 12:23:44.93 ID:T7Jjyyy1.net]
gets関数とか

その他の例
https://www.jpcert.or.jp/sc-rules/c-msc24-c.html

2 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 15:39:01.67 ID:IZBPdnFY.net]
Anal

3 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 14:16:12.00 ID:TbHXN4jn.net]
当時の設計なら、gets の仕様はああなる。

4 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 14:46:28.12 ID:vYD7HZZ7.net]
gets()をゲッツ、puts()をプッツと読んでたな

5 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 14:53:55.43 ID:eCK2aX+t.net]
strtokの読み方で出身地が分かる

6 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 15:15:08.67 ID:vYD7HZZ7.net]
>>5
それはストアトークと読んでた

7 名前:デフォルトの名無しさん [2019/11/23(土) 04:11:30 ID:l4WHmfnE.net]
最大のミスは、文字列そのものをデータ型としては持たずに、
文字列はヌルで終端された不定長の文字の配列であるとしたことにある。

8 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 06:08:18 ID:eMnkZzKn.net]
どうすれば良かった?

9 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 06:14:02 ID:GXkG1Oic.net]
関数だっつうてんのに

10 名前:デフォルトの名無しさん mailto:sage [2019/11/25(月) 21:55:20.72 ID:E+NtJXA3.net]
scanfだろjk



11 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 04:12:31.62 ID:As19A6dg.net]
putchar()はプッチャーと読んでいた

12 名前:デフォルトの名無しさん [2019/11/26(火) 12:29:09 ID:dAEqoOXB.net]
scanf
strtok
feof

13 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:24:02.10 ID:feqSm/53.net]
C言語の関数名ってまだリンカがシンボルの先頭から6文字までしか認識しなかった頃の名残だしな
変な短縮形が多い

14 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 03:05:40.28 ID:nQw9n1Di.net]
strcpy()とか意図しようがしまいが簡単にメモリをぶっ壊せる
よくよく考えるとキチガイ過ぎる

15 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 12:17:59 ID:zdI/1sLa.net]
C言語に安全性を求めるのは違う

16 名前:デフォルトの名無しさん [2019/11/27(水) 12:31:41 ID:KtqS+hCI.net]
time
localtime

17 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 13:15:40 ID:MN5dlGGA.net]
>>15
ほんそれ

18 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 13:50:48 ID:pAkxzJaX.net]
>>15
根本的な所を勘違いしてる。

C言語で安全性が求められないからと言って、
C言語で作ったアプリには安全性は求められるだろ?

例えば、getsは安全に使うことが不可能なんだよ。

19 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 14:42:57.39 ID:MN5dlGGA.net]
大昔に出来た関数なんだから多くを求めるな

20 名前:デフォルトの名無しさん mailto:sage [2019/11/30(土) 20:36:22.78 ID:4Da+M2q+.net]
>>11
俺はプッキャーだった



21 名前:デフォルトの名無しさん mailto:sage [2019/11/30(土) 20:38:28.97 ID:4Da+M2q+.net]
>>18
> 例えば、getsは安全に使うことが不可能なんだよ。
ならgetsを使わずにgetcでやればいいだけ

22 名前:デフォルトの名無しさん mailto:sage [2019/11/30(土) 21:25:24.92 ID:vRr1Hx4s.net]
安全は考えないで設計したのでミスってはいない

23 名前:デフォルトの名無しさん mailto:sage [2019/11/30(土) 22:19:14.33 ID:Zwer7NNs.net]
アブドーラ・ザ・プッチャー

24 名前:デフォルトの名無しさん mailto:sage [2019/12/01(日) 10:49:26.54 ID:uAQAPMuh.net]
組み込みでC言語は使うけど、10個以上の標準関数って使わないな...。

25 名前:デフォルトの名無しさん mailto:sage [2019/12/01(日) 12:47:24.87 ID:p3Z7Nr0h.net]
memcpy / memset / memcmp
strlen / str(n)cpy / str(n)cmp / str(n)cat

これで10個

26 名前:デフォルトの名無しさん mailto:sage [2019/12/01(日) 13:17:11.11 ID:W5IIwakz.net]
組み込みで文字列扱わないことも多いね。
どんな製品でもほぼ使うのはmemset、memcpy、memcmpぐらいじゃない?

27 名前:デフォルトの名無しさん mailto:sage [2019/12/01(日) 17:41:11.15 ID:YWi4MX0G.net]
>>25

>>1のリンク先より

未チェックの時代遅れの関数
以下の関数を、未チェックの時代遅れの関数と定義する。
memcpy, strcpy, strncpy, strcat, strncat (一部抜粋)


半分あてはまってるなw

>>26
memcpyは危険なので使うのはやめましょう

28 名前:デフォルトの名無しさん mailto:sage [2019/12/01(日) 20:53:25.46 ID:IKYJT3WJ.net]
C言語ではなく標準ライブラリの話かい。

29 名前:デフォルトの名無しさん mailto:sage [2019/12/01(日) 21:25:08.28 ID:7gLQ63yc.net]
アセンブラより安全なら良いじゃん

30 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 00:51:13 ID:RIgVO6ZZ.net]
memcpyが危険とか言うなら
C言語使うなってことになる



31 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 00:53:00 ID:RIgVO6ZZ.net]
>>28
標準じゃない関数だと...
失敗談みたいなのを期待してた?

32 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 02:04:59 ID:AAYR8Yqw.net]
>>1
セキュリティ考慮していない元関数より、代替関数の設計ミスが酷いな

strtodとかなにこれw
エラーの返し方がアホすぎる

33 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 06:48:47 ID:kJrDK+4B.net]
>>32
> strtodとかなにこれw
> エラーの返し方がアホすぎる
そう言うのは改善案を提案しないと単なるアホの独り言にしかならんぞw

34 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 13:15:48 ID:EYnQFBh2.net]
一体どういう考えで昔の人は、getsの仕様はあれでOKだと思ったんだろう?
どう考えてもバッファオーバーフローするやん?
しない方法なんて存在するの?

35 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 13:18:13 ID:xJykAg3Z.net]
バッファオーバーフローしないデータを食わせれば良い
わざわざ変なデータを入力するヤツが悪い

って考えの時代の関数だ

36 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 13:41:09 ID:EYnQFBh2.net]
でもさ、getsってキーボード入力やろ?

37 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 15:30:07.33 ID:LC/c96JG.net]
gets は、もう、標準ライブラリにも入っていないので許せ

38 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 18:02:20.65 ID:kmSxls5X.net]
>>36
わざわざ変なデータを入力するヤツが悪い

39 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 18:41:59.62 ID:E2hgf+6B.net]
ダンディ坂野「gets!!」

40 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 20:50:15.44 ID:kJrDK+4B.net]
>>36
1行80文字とかって決め打ちできる環境なんでしょ
自分しか使わないようなツールとかならこれで十分
って考え



41 名前:デフォルトの名無しさん [2019/12/03(火) 01:51:02 ID:dBsSbed7.net]
8ビットの整数型を char などというものにしたのも、アメリカ人は
自分たちの英語しか知らない田舎者であることを如実に表している。

42 名前:デフォルトの名無しさん [2019/12/03(火) 09:14:31 ID:yN5r9ueQ.net]
>>40
64kbでも広大な空間だったな

43 名前:デフォルトの名無しさん mailto:sage [2019/12/03(火) 12:22:07.21 ID:90Sp73uq.net]
>>41
実に田舎者の考え方で笑える
逆だよ、都会の人間は都会のことしか知らないし知る必要がない
なぜか田舎の人間は都会のことも知ろうとするw

44 名前:デフォルトの名無しさん mailto:sage [2019/12/03(火) 12:29:35.88 ID:Uh1tIUQA.net]
> 逆だよ、都会の人間は都会のことしか知らないし知る必要がない
だから世界が狭くて無知になりやすい

> なぜか田舎の人間は都会のことも知ろうとするw
だから世界が広い

45 名前:デフォルトの名無しさん [2019/12/03(火) 12:51:15.68 ID:dBsSbed7.net]
井の中の蛙 大海を知らず
されど空の蒼さを知る

46 名前:デフォルトの名無しさん mailto:sage [2019/12/03(火) 13:25:13 ID:g2sdmHcp.net]
C言語が出来た時の時代を考えれば十分

「変数名に日本語が使えない言語は糞」
って時代もそのうち来るよ

47 名前:デフォルトの名無しさん mailto:sage [2019/12/03(火) 19:14:24.81 ID:90Sp73uq.net]
>>44
残念ながらそうはなってないんだなw
狭く深くっていう世界だから
要するに田舎でな何をするにもオーバーヘッドが大きいってことな
今はネットでだいぶマシになったけどネット以前の情報収集考えたらアホでもわかる話

48 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 02:33:17 ID:aqWVKWA+.net]
アホなデータ食わせるアホなやつのために堅牢な仕組みにする必要はない

49 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 01:29:51.60 ID:7IDmuKiG.net]
>>41
元々は9bit

50 名前:デフォルトの名無しさん [2019/12/11(水) 06:55:08.36 ID:IbA4V9X0.net]
>>46
メモリが640kバイトしか使えなかった頃からのものだしな



51 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 07:59:10 ID:yA/FdCBI.net]
>>5
ストラトック

52 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 15:20:43 ID:JkExA39E.net]
大昔って端末やエディタなんかでも1行256とか1024バイト程度しか扱えなかったばず

53 名前:デフォルトの名無しさん [2019/12/11(水) 15:32:22.68 ID:8OP/pbId.net]
256 の時代は割と長かった希ガス

54 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 06:37:32.10 ID:o1f1J6fH.net]
昔は1行の長さを先に決めてファイルをクリエイトしました
途中で変更はできません

55 名前:デフォルトの名無しさん [2019/12/14(土) 13:26:55.02 ID:TlZt0bii.net]
関数そのものじゃないが
breakにラベル指定出来なかったのは設計ミスやろ

56 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 13:54:03.80 ID:JwYnIOEa.net]
その為のgoto

57 名前:デフォルトの名無しさん [2019/12/14(土) 22:43:29.04 ID:8CJijD11.net]
gotoはラベルのスコープが広いから使いにくい。ループごとに別のラベル名を
付けないといけないし、ラベル名を別のループ用のものと書き間違えると
意図しない所へ飛んで行ってしまう。スパゲッティでバグの元。

ループにラベルを付ければ、スコープがそのループ内に限定され、そのループの
外にある別のループに同じラベル名を付けることができるから、書きやすく
読みやすい。例えば、こんな感じ。

for @outer (i = 1; i <= 3; i++) {
  for (j = 1; j <= 3; j++) {
    printf("%d, %d\n", i, j);
    if (i * j > 3) break @outer;
  }
}
for @outer (i = 1; i <= 5; i++) {
  for (j = 1; j <= 5; j++) {
    printf("%d, %d\n", i, j);
    if (i * j > 5) break @outer;
  }
}

58 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 22:45:51.60 ID:JwYnIOEa.net]
単純に
breakする数を指定出来るだけで良い

59 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 06:50:28 ID:6aWNd1w0.net]
>>58
ネストの数を数えるとか最低だと思う

60 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 07:00:06.17 ID:a0yEED8b.net]
1000行のコードでbreak 7;とかされても、
どこに抜けるかわからんよな!



61 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 09:51:38 ID:5sPbacoo.net]
ネストの数がわからないような巨大な構造は
それだけで最低だ
そんなんだと名前付きループにした所で
@outerなんて名前が使い回されて
同じ名前のループがネストされて
それこそ難読コードになる
それならユニークなラベルによるgotoの方が良い

>>57くらいのループなら
break 2;
は名前を考える手間が無くて楽だし
見にくくもない

62 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 09:57:28 ID:5sPbacoo.net]
とは書いたけど
どっちも有るならどっちも欲しい

どっちかだけげならbreak 2;の方が欲しい
って感じ

63 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 10:52:04 ID:6aWNd1w0.net]
>>61
> そんなんだと名前付きループにした所で
> @outerなんて名前が使い回されて
> 同じ名前のループがネストされて
> それこそ難読コードになる
無能の妄想w

64 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 11:05:09 ID:5sPbacoo.net]
ループの先頭、ループの終わり、break部分
3箇所見ないとダメってだけでダメな仕様

65 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 12:32:17.60 ID:bDjAMWVj.net]
>>64
なぜか自分の前提は
> >>57くらいのループなら
なのにラベルにした途端にループの頭とbreakとループの終わりが一瞥でわからないとかアホすぎ

66 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 12:36:08.74 ID:5sPbacoo.net]
大きければgoto
小さければbreak n

67 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 12:38:50.49 ID:5sPbacoo.net]
名前を付ける手間を許容するならgotoという解決法が既にある

68 名前:デフォルトの名無しさん [2019/12/15(日) 13:48:44.02 ID:o9m7qUoD.net]
>>60
ネスト変わるような変更あるたびにbreakの引数勝手に書き換えてくれるエディタとかマクロが流行る

69 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 16:33:57.62 ID:bDjAMWVj.net]
>>67
ifとgotoあるからforもwhileもdoも要らんという主張か
本物のプログラマーだなw

70 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 16:52:03.21 ID:u46gpj2V.net]
歪んだ教育のせいで
gotoに拒絶反応を示す人が多いんだよな

2重ループを抜けるなら素直にgotoを使えって



71 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 16:53:29.68 ID:pTp+dpJs.net]
アセンブラの
jmp 1f
とかを C でやりたいという話なのか?
やってみりゃいいじゃん。プリプロセッサの出力を処理すればいい。
1 パスで出来ると思うよ。
ひょっとしてもう誰かがやってるかも。

72 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 18:05:59.04 ID:5sPbacoo.net]
for (i = 1; i <= 3; i++) {
  for (j = 1; j <= 3; j++) {
    printf("%d, %d\n", i, j);
    if (i * j > 3) goto outer;
  }
} outer:;

73 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 18:58:38.98 ID:5sPbacoo.net]
for (i = 1; i <= 3; i++) {
  for (j = 1; j <= 3; j++) {
    printf("%d, %d\n", i, j);
    if (i * j > 3) goto outer;
  }
}
printf("complete\n");
outer:;

74 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 19:01:19.97 ID:5sPbacoo.net]
わざわざ言語拡張しなくても
>>57以上の事が実現出来る

75 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 09:05:52 ID:AI1GDY0I.net]
ラベルのスコープを狭くしたいという話のようだから
マクロの中で使ってこそ真価を発揮するんじゃないかな。
フル仕様のパースが必要というわけではなく、かなり手抜きできそうではある。
あれば便利というのは否定しないが、C でそこまで必要かというと…

76 名前:デフォルトの名無しさん [2019/12/16(月) 12:33:03.93 ID:0jmxiGrg.net]
{
goto hoge;
hoge:;
}
{
goto hoge;
hoge:;
}
これで二重になってたら困るしある意味なってなくても困るな

77 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 13:21:05.83 ID:ZZ8St2Js.net]
マクロで二重以上のループってのもなかなか考えづらいなあ

一応、ラベル名をパラメータとする手もある

使う側のコストを考えるとgotoの為にパラメータを増やさないよな
gotoを使わない主義者がよくやってるように
余分な変数を使って実装するんだろうね

78 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 13:23:11.26 ID:ZZ8St2Js.net]
アセンブラだとマクロローカルラベルってのがあったりする
ラベルを頻繁に使うので

あと
@@/@b/@fのように、
直近のラベルを指定する仕組みもある

79 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 13:28:49.41 ID:ZZ8St2Js.net]
>>72 >>73 みたいなのって
gotoの使いどころだと思うんだけだ
gotoを使わない人はどう書いてるの?

特に >>57 の答えを聞いてみたい

80 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 15:17:28.75 ID:arH1mwfY.net]
void print_data(void) {
 for (i = 1; i <= 3; i++) {
   for (j = 1; j <= 3; j++) {
     printf("%d, %d\n", i, j);
     if (i * j > 3) return;
   }
 }
}
print_data();
printf("complete\n");



81 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 16:34:59.64 ID:/0yHEQmX.net]
outer より後に処理が続く場合は?

82 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 16:51:44.02 ID:arH1mwfY.net]
void print_data(void) {
 for (i = 1; i <= 3; i++) {
   for (j = 1; j <= 3; j++) {
     printf("%d, %d\n", i, j);
     if (i * j > 3) return;
   }
 }
}
print_data();
outer より後に処理が続く場合
printf("complete\n");

83 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 16:55:03.26 ID:arH1mwfY.net]
"短い処理"をいちいち関数にしなくて済むから、break 2とかはあってもいいが、
長い処理は関数にしてないとろくにテストできないんだからgotoなんていらない

84 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 19:03:13.17 ID:4DgO9d+i.net]
じゃあ>>57もいらないね

85 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 19:09:09.12 ID:lsrBHsJG.net]
gotoの基本的な使い方くらい知っておいた方が良いかと
ループを抜ける為だけに関数を分けないといけなくなるし
挙げ句の果てに言語の欠陥とか言い出す

86 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 20:06:51.00 ID:3ha1TSe5.net]
今のC言語ではネストしたループから抜けるのはフラグを使うかgotoしかないからたいていgoto使ってるけどgotoなんて野蛮なものはできたら使いたくないから他の言語で実装されてるラベル付きbreakなりレベル付きbreakが欲しいって話だろ
今更gotoの基本的な使い方ガーとか言ってる奴はどんだけ低レベルなんだよw

87 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 20:09:28.82 ID:xr9KOlE0.net]
あれ?
returnで抜ける為に関数に分けるんじゃなかったの?

88 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 20:21:09.65 ID:xr9KOlE0.net]
gotoは野蛮とかいう歪んだ教育のせいで
わざわざ変数を定義したりわざわざ関数を分けたりして
わざわざ見にくいコードにしちゃう

生でポインタを扱う野蛮なC言語なんか使わないで
上品な言語を使った方が良いよ

89 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 20:28:02.60 ID:jL52ryYk.net]
gotoじゃなくてgodowntoなら誰も文句言わなかった

90 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 20:47:58.36 ID:LjjtFzBx.net]
自分は小規模な字句解析みたいなのでもgoto使うことがある。
ラベルで状態を表してgotoで遷移する。
goto使わなかったら状態を変数に入れて、
ループの中でswitchで場合分けするようなコードになって辛い。



91 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 20:52:55.59 ID:DbnQVwfE.net]
ループの中のswitchでループを抜けるのに
gotoを使うんじゃ?

92 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 21:41:34.22 ID:wRV+mRkt.net]
次の状態を返す関数ポインタでループすればいんじゃないの?

93 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 21:45:33.24 ID:jhycq5nX.net]
そんな野蛮なことはしません

94 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:12:14.62 ID:arH1mwfY.net]
>>87
returnで抜けるためというか、

1. gotoで抜けたい
2. 関数にするか
3. あ、そもそもコードが複雑なんだな
4. 関数にして正解だった

こんな感じかな。

gotoで抜けたいと思う=コードが複雑になってるという警鐘だと思ってる。

95 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:22:18.57 ID:xr9KOlE0.net]
>>82みたいな意味不明な関数の分け方をすると
>>57は、より複雑な記述をしたいっていう主張だし

gotoに親を殺された人の言うことは支離滅裂
理由が後付けだからそうなる

96 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:27:34.28 ID:arH1mwfY.net]
> で>>82みたいな意味不明な関数の分け方をすると

なんで意味不明?
そもそもその処理に意味をもたせてから言おうよw
処理に意味をもたせると、関数にしたほうが良いと思うからさ

97 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:32:01.57 ID:arH1mwfY.net]
> 理由が後付けだからそうなる

質問の方が先なのに、理由を先に言えるわけがないw

Q. 多重ループから抜けるのに、gotoは必要ですか?
A. 必要ありません。多重ループが必要になるぐらい複雑なら関数にしますから


これが普通だから、後付にはならないよね。

98 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:37:09.13 ID:xr9KOlE0.net]
じゃ>>57も当然不要ですね

99 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:38:17.80 ID:arH1mwfY.net]
そんなにくり返し言わなくても、最初から不要だしw

100 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:39:57.37 ID:xr9KOlE0.net]
じゃあ>>57はどういうつもりで書いたんでしょうかね?



101 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:40:50.59 ID:LjjtFzBx.net]
gogoサイコーっす

102 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:41:03.68 ID:LjjtFzBx.net]
間違えたw goto

103 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:42:13.32 ID:xr9KOlE0.net]
話を戻して

・ループを抜けた後に関数の後処理が必要な場合
・ループを抜けた後にローカル変数を使った処理をする場合
・他、意味的に関数内で処理したい場合

はどうするの?

104 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:44:03.17 ID:arH1mwfY.net]
> ・ループを抜けた後に関数の後処理が必要な場合
前処理を関数の中でするな

> ・ループを抜けた後に関数の後処理が必要な場合
戻り値を返せ

>・他、意味的に関数内で処理したい場合
自分で具体例が思いつかないなら出すな

105 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:45:01.13 ID:arH1mwfY.net]
コピペミスったな

>・ループを抜けた後にローカル変数を使った処理をする場合
戻り値を返せ

106 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:48:10.00 ID:xr9KOlE0.net]
>>104
なぜ?

107 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:52:22.49 ID:arH1mwfY.net]
>>106
なにが?

ってか、もう少し具体例を書けよ。
それみれば設計がおかしいという結論になる

例えて言うなら、パーサーの処理の中でネットワークにアクセスしたい時困るから
ネットワークモジュールはグローバルにアクセスできるようにしておくべき
みたいなことを言ってるようなもんだよ。それは設計がおかしい。

108 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:54:10.44 ID:xr9KOlE0.net]
int func(int n){
ロック
ループ
アンロック
return 結果;
}

109 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:55:55.89 ID:xr9KOlE0.net]
int func(int n){
ループ
値を加工
return 値
}

110 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 22:58:13.41 ID:arH1mwfY.net]
>>108
「ループ」という言い方がおかしい。
ループで「実装」しているのであって
やっているのはなにかの「処理」だろう?


int func(int n){
ロック
処理
アンロック
return 結果;
}


「処理」という名前をつけたくなるならば、
そこは独立した関数にするべきだろう



111 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:02:27.04 ID:xr9KOlE0.net]
double sigma(const double *a){
ループで総和と2乗和と数を計算
標準偏差を計算
return 標準偏差
}

112 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:04:47.03 ID:xr9KOlE0.net]
int func(int n){
int a[10] = {0};
ループ
aから値を計算
return 値
}

113 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:06:46.75 ID:xr9KOlE0.net]
いくらでも思い浮かぶ

114 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:07:37.81 ID:LjjtFzBx.net]
全部関数に分けろって言われて終わりそう

115 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:09:19.22 ID:xr9KOlE0.net]
分ける理由がない

116 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:10:06.65 ID:xr9KOlE0.net]
>>112を分けてみて

117 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:17:03.74 ID:xr9KOlE0.net]
関数分けってのは意味、機能、汎用性、...で分けるべきであって
単にループを抜けるのにreturnを使いたいから分けるとかを考えるべきじゃない

118 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:23:11.90 ID:xr9KOlE0.net]
素直にgotoの使い方を覚えた方が良いよ
意地はってないで

119 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:42:01.03 ID:arH1mwfY.net]
>>118
だから意味とか汎用性とかで分けると
自然にループに抜けるときにreturnを使えば良くなるんだよ

120 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:45:51.39 ID:jL52ryYk.net]
gotoでもreturnでも読めれば良い
但し1関数50行以上は読めないんで宜しく



121 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:48:10.14 ID:arH1mwfY.net]
>>112
だから「ループ」と書くなっちゅうねんw
関数を設計するならこんな感じやろ?

int func(int n){
int a[10] = {0};
memset_random(a, sizeof(a)); // a配列をランダムな値で埋める
int chksum = chksum(a, sizeof(a)); // a配列のチェックサムを計算
return 値
}

関数の中でループしてようが何して用が関係ないわ

122 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:55:19.85 ID:xr9KOlE0.net]
sizeof(a) とか書くレベルの相手してたのか
アホらしい

123 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 00:04:36.92 ID:JvBVW/sd.net]
>>119
じゃあ普通のbreakもいらないね
まさか使ってないよね

124 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 06:41:54.53 ID:YMIUnRyv.net]
まあgotoあればbreakは要らんわなw
そんな言語は使いたくないけど

125 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 07:00:38.11 ID:JvBVW/sd.net]
gotoもbreakもいらないって

126 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 07:10:23.36 ID:JvBVW/sd.net]
gotoもbreakも無い
ループを抜けるときはreturn
switchを抜ける時もreturm
関数は単一の処理しか出来ない

こんな言語はイヤだね

127 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 07:23:38.89 ID:JvBVW/sd.net]
後に退けなくなったアホの作る言語

128 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 07:39:52.35 ID:odSFZTU+.net]
gotoの使い方

www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03005.html
www9.plala.or.jp/sgwr-t/c/sec06-6.html
tomeapp.jp/archives/1029
opencv.jp/opencv-2svn/c/core_utility_and_system_functions_and_macros.html

129 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 08:49:57.51 ID:QeraReD1.net]
たとえ相手がアホであっても、しつこく絡むのもまたアホだと思うんだが…

130 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 12:33:06.04 ID:vDeQfs2U.net]
自分より下の人間を叩くしか能がないんだろ
ID:arH1mwfYなんてスルーでいいと思うんだがそれしか叩けないからいつまでたっても終わらないw



131 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 13:15:29.02 ID:GBggCGQK.net]
雑談スレだしネタも無いから良いんじゃね?

132 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 18:32:11.83 ID:x9hYOthl.net]
String型が無いって死ぬほど不便なんだが

133 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 19:06:56.22 ID:p6v4J1KY.net]
他の言語を使ってください

134 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 19:18:33.78 ID:6LhBKKEf.net]
>>132
自分で似たようなものを作ればいいだろ。汎用的なものがあっても使い勝手や性能で何かしら不満が出るのだから、自分の要求に合致するものを自分で作りな。

135 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 20:52:31.46 ID:QeraReD1.net]
特定の用途においてローカルラベルが役に立つことも無くはないかもしれないな。
自分でそれをやるかどうかは別にして。
いずれにせよ、gcc では式の中で変数を宣言できるのだから
ローカルラベルが可能になっても驚かないよ。

136 名前:132 mailto:sage [2019/12/18(水) 23:56:34.28 ID:9RDvo6To.net]
typedefを使用
https://pastebin.com/iX2DDpRA

137 名前:デフォルトの名無しさん [2019/12/19(木) 00:12:48.48 ID:vqVcyk4J.net]
PHPはbreakにネスト数指定できるよな

138 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 09:03:44.36 ID:vjQjJ4nK.net]
C言語の開発者によるgoto文の使い方を対象とした実証研究の結果、「goto文は無害だと考えられる」
https://developers.srad.jp/story/15/02/14/2017207/

139 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 16:51:03.60 ID:86m15ms9.net]
longjmp についても調査してほしいな。
特に例は挙げないが、誰もが使っているようなプログラムでも結構使われてる。

140 名前:デフォルトの名無しさん [2019/12/19(木) 16:57:20.13 ID:+cpLTGtZ.net]
static



141 名前:デフォルトの名無しさん mailto:sage [2019/12/25(水) 01:15:13 ID:k3ZI/Zl3.net]
>>139
それは代わりがない。

142 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 10:18:18.26 ID:tNMImStE.net]
>>7
大発明なんbだけどな、
リスクも大きい

143 名前:デフォルトの名無しさん [2020/07/09(木) 10:22:15.80 ID:vrNDocOm.net]
発明って言うか当時はそれが普通だったろ

144 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 10:51:31.74 ID:I92CxMlL.net]
longjmpは「設計上のミス」ではないんでは。
むしろそういう動作をする目的で設計・導入されたように思えるけど
(longjmpに関するRationaleを読んでないので当てずっぽうw)

145 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 16:31:13 ID:KHuqFwsC.net]
>>5
エスティーアールトゥーケー

146 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 21:58:30.04 ID:Zo8nB2NL.net]
例外は setjump、longjumpて実装されてるんじゃないのかな?
違うのかな?

147 名前:デフォルトの名無しさん mailto:sage [2020/07/10(金) 22:03:48.37 ID:AfLodKTd.net]
>>143
普通じゃない
当時はPascalの文字数+文字列が普通

148 名前:デフォルトの名無しさん [2020/07/10(金) 22:26:03 ID:U1HXCT7S.net]
returnが1変数しか対応していないこと。

ポインター祭りになって可読性がウンコになる

149 名前:デフォルトの名無しさん mailto:sage [2020/07/10(金) 23:11:39.81 ID:7RoGj1wV.net]
>>148
可読性がうんこなのはお前の能力が足りないから

150 名前:デフォルトの名無しさん [2020/07/11(土) 00:22:05.38 ID:UdJEarb2.net]
いろんな言語たらい回しにされるって不幸だよね。

こういうノーガキ垂れる奴がウチの職場にいなくて良かった〜ヽ(´▽`)/



151 名前:デフォルトの名無しさん [2020/07/11(土) 10:50:20.85 ID:J0INoyBc.net]
>>147
OSのAPIは文字数じゃなくて
文字列byte列+デリミタ'$'
みたいなのが多かったぞ

152 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 12:01:47 ID:2M7rjl8q.net]
>>151
それはCP/Mの文字列出力がそうなっていただけ
入力はC言語のfgets()なんかみたいにデリミタの '$' を付加したりしないよ

153 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 23:02:45.45 ID:wT5X8b6q.net]
MASM もそうだけど、$ は実際にメモリに配置されるのですか?
それとも、db(アセンブラ命令)で長さを省略するためのものですか?

154 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 23:04:50.81 ID:wT5X8b6q.net]
すみません、>>153 です
送信した瞬間に自分の発言の矛盾に気がつきました…

155 名前:デフォルトの名無しさん mailto:sage [2020/07/13(月) 19:12:30.84 ID:Xa4f7njE.net]
>>146
longjumbと例外に関して
すばらしい文書があるからお読みなさって。
www.nurs.or.jp/~sug/a/super/longjmp.htm#sec36

156 名前:デフォルトの名無しさん [2020/07/13(月) 19:20:56.50 ID:WBkWHxcT.net]
そっちは Not Found ですよ
www.nurs.or.jp/~sug/soft/super/longjmp.htm

157 名前: mailto:sage [2020/07/13(月) 20:53:25.68 ID:p7kPKe7n.net]
>>156
ありがとうございます、昔に読んだのに URL を失ってしまって…ずっと探していたんです

158 名前:デフォルトの名無しさん mailto:sage [2020/07/13(月) 21:24:21.32 ID:jVM2RLmn.net]
>>155
ありがとうございます >>146 です
拝見いたします

159 名前:デフォルトの名無しさん mailto:139 [2020/07/14(火) 09:59:19.87 ID:obK0XQNS.net]
ありがとうございます。いや、longjmp をdisるような意図は無かったんだけど。
「シグナルとコールバック」も勉強になります。

www.nurs.or.jp/%7Esug/soft/super/signal.htm

この辺りは man を読んでも使い方が解りにくいので…

160 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 11:48:35.85 ID:3i8DjqKb.net]
_sが付いてるやつ使えよ



161 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 17:59:38.38 ID:lDwsy5iU.net]
関数じゃないけどこれやろ
If the unsigned type has conversion rank greater than or equal to the rank of the signed type, then the operand with the signed type is implicitly converted to the unsigned type.
うんこ

162 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 18:32:54.36 ID:lDwsy5iU.net]
プログラマを信じろと言うけどさ
じゃあ暗黙の型変換とか余計な節介やめてくれねーかな

163 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 18:36:26.66 ID:HkPQV5tP.net]
cでまともに算数出来れば一人前

164 名前:デフォルトの名無しさん mailto:sage [2021/07/18(日) 03:12:16.30 ID:a6CF+eHw.net]
暗黙が嫌なら明示しろよばかじゃないの?

165 名前:デフォルトの名無しさん mailto:sage [2023/01/02(月) 19:09:01.78 ID:N1W2ThUk.net]
>>162
暗黙の型変換はワーニング出るようにできなかったっけ?

166 名前:デフォルトの名無しさん mailto:sage [2023/05/10(水) 10:41:52.89 ID:zbvSAEuT.net]
>>138
まとめがおかしい
啓蒙活動の結果gotoの有害な使い方は極めて少なくなった
というべきだろう

167 名前:デフォルトの名無しさん mailto:sage [2023/08/04(金) 19:33:28.29 ID:+XXFTri2.net]
ken thompsonがcreat()の最後のeを省いたのは失敗だったと
直すとしたらそこを直したいと

168 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 15:27:11.03 ID:0JeuaQMM.net]
失敗は成功への近道だと思って取り組んでみよう。

169 名前:デフォルトの名無しさん mailto:sage [2023/09/30(土) 09:21:33.38 ID:z8ssgezC.net]
(”ロ”;)ゲゲッ!!

170 名前:デフォルトの名無しさん mailto:sage [2023/10/03(火) 12:21:18.69 ID:QaeBAOHS.net]
型省略でintと看做すのはミスだろ



171 名前:デフォルトの名無しさん mailto:sage [2023/10/04(水) 22:29:38.55 ID:pmZG4qtZ.net]
>>170
K&Rの頃との互換性の為じゃないかな。

Cは、兎に角モノグサの為の様な仕様が多いよね。
一度馴染むと、BASICですら面倒くさい。

172 名前:デフォルトの名無しさん [2023/10/05(木) 17:05:36.61 ID:WXXGTjkD.net]
まんどくせ

173 名前:デフォルトの名無しさん [2023/10/05(木) 19:40:42.12 ID:KP6Kmsv6.net]
ポインタ渡し全般かな

174 名前:デフォルトの名無しさん [2023/10/05(木) 22:17:24.30 ID:nm5oakcJ.net]
Cの型はある意味pythonより弱い

175 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 11:48:43.75 ID:QSI1NZ2Z.net]
ある意味というか、Pythonは一応強い型付けでしょ。

176 名前:デフォルトの名無しさん [2023/10/07(土) 11:51:33.89 ID:SZDGKzpf.net]
Cに型なんかあって無い様なもんだしな

177 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 17:38:41.59 ID:2aizzJpQ.net]
>>1
fgets知らんのかな
getsなんて使わない
どうしても使う時はfgets(buf,size,stdin)とすればいいだけ

178 名前:デフォルトの名無しさん [2023/10/08(日) 10:11:26.30 ID:CrdCteTP.net]
>>176
Cはアセンブラで言うところのアドレッシングが充実

179 名前:デフォルトの名無しさん [2023/10/09(月) 15:00:06.76 ID:gMk1hFfQ.net]
マクロが真っ黒

180 名前:デフォルトの名無しさん mailto:sage [2023/10/15(日) 02:11:48.65 ID:LZ9c8wO/.net]
∑(ノ▼ο▼)ノ オォオォオ!!



181 名前:デフォルトの名無しさん [2023/10/16(月) 09:47:48.72 ID:kgcCjrnK.net]
DDoS回避したみたいね

182 名前:デフォルトの名無しさん [2023/10/17(火) 11:44:25.59 ID:xDsy3kB7.net]
atan
(atan2の方じゃなくて)

183 名前:デフォルトの名無しさん [2023/10/18(水) 07:26:03.37 ID:rpmqe4zi.net]
くせの強いscanf()とか

184 名前:デフォルトの名無しさん [2023/10/18(水) 07:26:15.66 ID:rpmqe4zi.net]
くせの強いscanf()とか

185 名前:デフォルトの名無しさん [2023/10/18(水) 14:31:46.14 ID:UTD5vf1X.net]
visual studioでscanf()使ったらエラーになった

186 名前:デフォルトの名無しさん [2023/10/18(水) 14:31:57.74 ID:UTD5vf1X.net]
visual studioでscanf()使ったらエラーになった

187 名前:デフォルトの名無しさん [2023/10/20(金) 09:24:01.14 ID:/M3RKJCH.net]
free()

188 名前:デフォルトの名無しさん [2023/12/15(金) 15:34:51.20 ID:dazO4Xak.net]
sprintf()

189 名前:デフォルトの名無しさん [2023/12/15(金) 19:08:18.36 ID:G9PP9IbeA]
リスキリング(笑)とかほざいて税金泥棒と゛もが新たな利権のネ夕披露しまくっててバカ丸出しだよな
日本中航空騒音まみれにして私権侵害して勉強妨害してアプリのひとつも作れないガイシ゛だらけにして
知的産業に威力業務妨害して壊滅させたてめえら何ひとつ価値生産できない地球に湧いた害蟲の税金泥棒こそ小学生からやり直せや
小学生以下の無能公務員どもが利権拡大させて私腹を肥やす目的でマイナンバーだのと個人情報収集して漏えいさせてやがるし
自カで開発もて゛きずグーク゛ル依存サイトしか作れないナマポ集団NTTた゛のによるセキュリティの欠片もないポンコツサイトだらけ
都心まで数珠つなぎで私権侵害してコロナに温室効果ガスにとまき散らして気候変動災害連発させて人を殺す強盗殺人推進して
エネ価格に物価にと暴騰させて健常者の人生を破壊するこうした他人の権利を強奪して私腹を肥やすテロリストを根絶やしにするのが先た゛ろ
つかアプリとか小学生でも独学で作れるわけだが税金もらわなきゃアプリの使い方すら習得て゛きないとかマジ小学生やれよ税金泥棒
(情報サイ├) ttρs://www.call4.jp/info.ρhp?type=iтems&id=I0000062
tΤps://haneda-project.jimdofree.com/ , tΤps://flight-route.com/
ttΡs://n-souonhigaisosyoudan.amebaownd.Com/

190 名前:デフォルトの名無しさん [2023/12/17(日) 07:31:47.54 ID:9k4gJxXV.net]
fopen()



191 名前:デフォルトの名無しさん [2023/12/17(日) 08:12:54.14 ID:9k4gJxXV.net]
ctime()

192 名前:デフォルトの名無しさん [2023/12/31(日) 16:48:51.59 ID:vzW4N1bb.net]
fopen

193 名前:デフォルトの名無しさん [2024/01/06(土) 17:10:43.88 ID:3kEfHLiK.net]
strtok

194 名前:デフォルトの名無しさん [2024/02/01(木) 07:45:39.19 ID:aKV2ok3G.net]
freopen()

195 名前:デフォルトの名無しさん mailto:sage [2024/02/01(木) 10:15:46.72 ID:oHnzHX84.net]
アセンブラの補助言語に何期待してスレ立ててんだかw

196 名前:デフォルトの名無しさん [2024/03/16(土) 16:31:48.55 ID:YyexUT5o.net]
tmpnam()

197 名前:デフォルトの名無しさん [2024/04/02(火) 13:56:34.07 ID:OXdmWprY.net]
getenv

198 名前:デフォルトの名無しさん mailto:sage [2024/04/02(火) 20:32:38.29 ID:yb6rvSIG.net]
知ってる関数を並べるスレ
それにしても知らな過ぎるけどw

199 名前:デフォルトの名無しさん mailto:sage [2024/04/08(月) 01:34:00.49 ID:BIzdd6FB.net]
C言語自体が設計ミス

200 名前:デフォルトの名無しさん [2024/04/19(金) 05:42:28.44 ID:uD5nyH4z.net]
C言語はUNIXを作るために作ったんだから、それを流用したせいで、アプリケーションの作成には合わないところがあるのは当然。



201 名前:デフォルトの名無しさん mailto:sage [2024/04/20(土) 15:12:18.54 ID:CogYy1zn.net]
https://ja.wikipedia.org/?curid=1022

「UNIXを開発するためにC言語が作り出された」と言われることがあるが、「The Development of the C Language」によると、これは正しくなく、経緯は以下の通りである。
C言語は、当初はあくまでもOS上で動くユーティリティを作成する目的で作り出されたものであり、OSのカーネルを記述するために使われるようになるのは後の展開である。

202 名前:デフォルトの名無しさん [2024/10/02(水) 13:09:25.40 ID:XbzwGALZ.net]
char *a と char a[] を関数の引数でも一緒にしてしまったところ

203 名前:デフォルトの名無しさん mailto:sage [2024/10/04(金) 12:11:23.07 ID:swUgCMz+.net]
>>202
そこは長所では・・・?

204 名前:デフォルトの名無しさん [2024/10/04(金) 13:36:09.69 ID:RixEjMnj.net]
長所だらけで困るわ

205 名前:デフォルトの名無しさん mailto:sage [2024/10/06(日) 00:28:28.16 ID:k+hD1Cqq.net]
配列からポインタへの暗黙の変換があるんだから型としては別で良かったんだよ
おかげで配列全体の値渡しや代入ができなくなってしまった

206 名前:デフォルトの名無しさん mailto:sage [2024/10/06(日) 00:39:07.43 ID:MZAtOKFs.net]
無意識にそんなムダなことやられても困る
mallocとか使って明示的にやれるからいいだろ

207 名前:デフォルトの名無しさん mailto:sage [2024/10/06(日) 12:12:21.53 ID:onWt8ZIM.net]
値で渡したかったら構造体で包めばいいし
逆に配列を値渡しするような言語って少ないんじゃないの
参照渡しするのばっかりだろ

208 名前:デフォルトの名無しさん mailto:sage [2024/10/06(日) 13:06:18.36 ID:k+hD1Cqq.net]
一貫性のない型があるとジェネリクスに支障が出る
C++はそれですごい苦労した挙句std::arrayみたいな馬鹿みたいなものができた

209 名前:デフォルトの名無しさん mailto:sage [2024/10/07(月) 10:27:10.86 ID:1tKKan7C.net]
>>207
結局フレキシブル構造体が仕様として認められてる以上、実体渡しも信用ならんのよ
struct chinko{
int a;
char b[0];
};

gccならこんなうんちもある
struct unko{
int a[0];
char b[0];
};

210 名前:デフォルトの名無しさん [2024/12/13(金) 17:18:33.74 ID:cICuvaCO.net]
C++で気をつけなければならないのは
size_t i=10;
double x=3-i;
十分地獄を堪能できる。C言語もunsigned int使えば同じか



211 名前:デフォルトの名無しさん [2024/12/13(金) 20:54:34.36 ID:3kdcRUf+.net BE:629052145-2BP(1000)]
sssp://img.5ch.net/ico/nida.gif
EchoAPIをVS Codeで使い始めてから、開発プロセスが大きく変わった

212 名前:デフォルトの名無しさん [2024/12/21(土) 10:57:59.51 ID:bIHzWCsd.net]
strlen

213 名前:デフォルトの名無しさん [2024/12/21(土) 17:09:02.79 ID:SDOaO/8s.net]
シュトーレン

214 名前:デフォルトの名無しさん mailto:sage [2024/12/22(日) 22:33:54.16 ID:63BRvCCZ.net]
fork;execvp

215 名前:デフォルトの名無しさん mailto:sage [2024/12/29(日) 07:02:35.25 ID:pX0TYs46.net]
C言語には、組み込み関数なんてmainしか無いと思うなあ。

216 名前:デフォルトの名無しさん mailto:sage [2024/12/29(日) 10:09:42.10 ID:Jnwqtt+s.net]
面倒くさいからPOSIXは組込み扱いでいいよ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<43KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef