!extend:checked:vvvvv:1000:512
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/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
※前スレ
C言語なら俺に聞け 151
https://mevius.5ch.net/test/read.cgi/tech/1554171817/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
C言語なら俺に聞け 152
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウウー Sa4f-7DQ/)
2019/06/17(月) 18:27:10.41ID:3L1/L9kLa478443 (ワッチョイ 9a2c-i8Xk)
2019/07/15(月) 20:35:21.08ID:y88H95dP0 >>474
「misra-c 2004」「misra-c 2012」で検索して!
「misra-c 2004」「misra-c 2012」で検索して!
479443 (ワッチョイ 9a2c-i8Xk)
2019/07/15(月) 20:37:59.21ID:y88H95dP0 他にも、MISRA-C では、2重ループ内から、一気に脱出できないから、フラグを持ちまわる事になる
このルールも嫌われる
このルールも嫌われる
480443 (ワッチョイ 9a2c-i8Xk)
2019/07/15(月) 20:48:48.44ID:y88H95dP0 組み込みとか医療用では、バグると簡単に人が死ぬから、
MISRA-C を勉強していない香具師が、コーディングするとヤバイ!
だから、コーディングできる資格を作るべきだっていう話も聞く
MISRA-C を勉強していない香具師が、コーディングするとヤバイ!
だから、コーディングできる資格を作るべきだっていう話も聞く
481デフォルトの名無しさん (ワッチョイ e368-BPOI)
2019/07/15(月) 20:50:33.69ID:dKUxLoi20 なんでルールブックが有料やねんあほか勝手にやってろ
482デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/15(月) 21:07:10.69ID:IpJNQ16e0483デフォルトの名無しさん (ワッチョイ 23b3-15OI)
2019/07/15(月) 21:19:39.89ID:pdudwpaZ0484デフォルトの名無しさん (ワッチョイ 5fc3-Z5NF)
2019/07/15(月) 21:36:18.18ID:r7SsHRFS0 4.12 必要 動的なメモリ割り当てを使用してはならない
って酷くね
って酷くね
485デフォルトの名無しさん (ワッチョイ 0e12-cAz/)
2019/07/15(月) 21:47:13.82ID:Xch0qlQL0 俺以外は絶対守れよって思うルールも多々ある
486デフォルトの名無しさん (ワッチョイ 9a01-DHp5)
2019/07/15(月) 21:57:44.30ID:ex33LrHm0487デフォルトの名無しさん (ワッチョイ e301-ihks)
2019/07/15(月) 21:58:24.78ID:QcIx6aGf0 関数の中盤以降からreturnするならともかく、早期returnまでも認めないのはナンセンスだよな。
杓子定規すぎるわ。
杓子定規すぎるわ。
488デフォルトの名無しさん (ワッチョイ 9a01-DHp5)
2019/07/15(月) 22:00:39.84ID:ex33LrHm0 >>484
組込みだと実行時間が読めなくなるのとフラグメンテーションで総容量足りててもエラーになることがあるからしょうがない
組込みだと実行時間が読めなくなるのとフラグメンテーションで総容量足りててもエラーになることがあるからしょうがない
489デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/15(月) 22:06:28.61ID:IpJNQ16e0490デフォルトの名無しさん (ワッチョイ 9a01-DHp5)
2019/07/15(月) 22:43:50.22ID:ex33LrHm0 MISRAをブランドとか言うアホがいるんだ…
まあ具体的な内容には突っ込めないグダグダ君だしなぁww
まあ具体的な内容には突っ込めないグダグダ君だしなぁww
491デフォルトの名無しさん (ワッチョイ 9a01-DHp5)
2019/07/15(月) 22:45:14.79ID:ex33LrHm0 そもそもうちはMISRAは参考にしてるけど全面適用なんてしてないし
492デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/16(火) 00:24:39.33ID:UHx9kM+ca >>491
いや、しろよ
いや、しろよ
493デフォルトの名無しさん (アウアウクー MM7b-WqwA)
2019/07/16(火) 00:48:27.21ID:/MIJx2vXM プログラムは書く人によって千差万別
書く物によっては複雑な物を書かなきゃならない
そしてその上でのバグ千差万別
ルールブックなんてプログラム書かない管理者がこれを守れば大丈夫(キリッ
ってするものだろう
書く物によっては複雑な物を書かなきゃならない
そしてその上でのバグ千差万別
ルールブックなんてプログラム書かない管理者がこれを守れば大丈夫(キリッ
ってするものだろう
494デフォルトの名無しさん (ワッチョイ 4e63-P44A)
2019/07/16(火) 01:07:51.42ID:EySzsoWc0 普通は大勢で開発するときに必要な取り決めだけどな
そういう規模で仕事しないなら,何しても良いけど
そういう規模で仕事しないなら,何しても良いけど
495デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/16(火) 01:37:13.82ID:UHx9kM+ca >>494
MISRAは明らかに小規模なプログラムのための規約だと思うよ
MISRAは明らかに小規模なプログラムのための規約だと思うよ
496デフォルトの名無しさん (ワッチョイ 4e63-P44A)
2019/07/16(火) 02:37:59.80ID:EySzsoWc0 大規模なプロジェクトのコーディング規約を決める人がここにいるとは思わないからね
小規模だと思うなら,そのルールでやれば良いんじゃない?
小規模だと思うなら,そのルールでやれば良いんじゃない?
497デフォルトの名無しさん (アウアウクー MM7b-WqwA)
2019/07/16(火) 03:09:26.20ID:FvAVzBqbM 大規模とか小規模とかじゃなく実際にプログラムを書いてると必要になったりとかあるって話で
プログラムを書いた事内物が大規模ではとかいってるのか
プログラムを書いた事内物が大規模ではとかいってるのか
498デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/16(火) 03:18:03.55ID:UHx9kM+ca そうそう、MISRAはクソ
499デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/16(火) 03:29:07.35ID:UHx9kM+ca MISRAを尊重するひとって、returnを書く位置によって返る先が変わると思ってるんだよ
500デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/16(火) 07:29:02.49ID:UAKGOqEv0 間違ったことばかり書いてあるわけじゃないけどね
現場にそぐわないスキル不足なやつを庇うところには同意しかねるわけよ
> ルール 8.14 必要 restrict型修飾子を使用してはならない
規格票が読めないようなアホの相手はやってらんね
C++が混ざるところでも対策は簡単だし
現場にそぐわないスキル不足なやつを庇うところには同意しかねるわけよ
> ルール 8.14 必要 restrict型修飾子を使用してはならない
規格票が読めないようなアホの相手はやってらんね
C++が混ざるところでも対策は簡単だし
501デフォルトの名無しさん (ワッチョイ 17d2-rBUL)
2019/07/16(火) 07:43:27.01ID:1j77iOOZ0 トヨタのやってることは一つのミスでも人が死ぬということだよ
もしrestrictを使って人が死んだら責任とれるの?
もしrestrictを使って人が死んだら責任とれるの?
502デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/16(火) 07:45:28.75ID:/V8NdDl/M それなら、人が死なないプロジェクトではMISRAは守る必要がないですね。
503デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/16(火) 07:58:46.16ID:UAKGOqEv0 >>501
規格票を確認しないやつにミスがどうたら言われたかねえぜ
規格票を確認しないやつにミスがどうたら言われたかねえぜ
504デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/16(火) 08:02:25.27ID:UAKGOqEv0 ○○を使って人が死んだら責任とれるの?
○○に何でも突っ込めるウルトラクソ論法
ポインタ、共用体、仮定義、数学関数、それから?
○○に何でも突っ込めるウルトラクソ論法
ポインタ、共用体、仮定義、数学関数、それから?
505デフォルトの名無しさん (アウアウウー Sa47-VBrH)
2019/07/16(火) 08:50:54.07ID:7HVrvnq4a >>501
お前が作ってるプログラムはテストしないのか?
お前が作ってるプログラムはテストしないのか?
506デフォルトの名無しさん (ワッチョイ 3e7c-P44A)
2019/07/16(火) 09:07:55.77ID:csbTSCSc0507デフォルトの名無しさん (ワッチョイ 1aa5-MLMy)
2019/07/16(火) 09:35:00.37ID:UXD1By8p0 上司のバカかバカの上司でも理解できるまでに破壊されたC言語だろ
それを規格と言ってるだけだ
安全かもしれないけど対照実験がないでしょ
安全であることをどうやって確かめたのか論文の欠片も見つからなかった
だからMISRAの安全神話は神話かデマかフェイクニュースだよ
それを規格と言ってるだけだ
安全かもしれないけど対照実験がないでしょ
安全であることをどうやって確かめたのか論文の欠片も見つからなかった
だからMISRAの安全神話は神話かデマかフェイクニュースだよ
508デフォルトの名無しさん (アウアウカー Sa43-NWea)
2019/07/16(火) 09:46:10.29ID:MyJUZjZxa プライドだけは高いこの道30年の社畜が書いた様なルールだよ。
「してはいけない」ばかりでこうしろという記述が圧倒的に少ない。
フレームワークという発想がない。指摘だけ。すべて勘と経験という名の錯覚に基づいてる。
あと内容的に「最適化はしてはいけない」とか書いておけばいいんじゃないかと思う。次は入れて欲しい。
「してはいけない」ばかりでこうしろという記述が圧倒的に少ない。
フレームワークという発想がない。指摘だけ。すべて勘と経験という名の錯覚に基づいてる。
あと内容的に「最適化はしてはいけない」とか書いておけばいいんじゃないかと思う。次は入れて欲しい。
509デフォルトの名無しさん (ワッチョイ 4e69-dwJn)
2019/07/16(火) 10:35:01.62ID:Yi/rfLM50510デフォルトの名無しさん (ワッチョイ 4e63-P44A)
2019/07/16(火) 12:58:57.36ID:EySzsoWc0 たまたま動いているのは
処理系のバグかも知れない
処理系のバグかも知れない
511デフォルトの名無しさん (ワッチョイ e301-QSGK)
2019/07/16(火) 13:18:30.94ID:uQ5be57j0 組込み系の開発経験者いなくて草
MISRA準拠が納品物の条件にあるんだよ
でもプロジェクト毎にカスママイズするから
100%適用するわけじゃないよ
わけわからんルールは適用除外してる
MISRA準拠が納品物の条件にあるんだよ
でもプロジェクト毎にカスママイズするから
100%適用するわけじゃないよ
わけわからんルールは適用除外してる
512デフォルトの名無しさん (ドコグロ MM77-DHp5)
2019/07/16(火) 14:13:08.82ID:i1fbuZ/pM513デフォルトの名無しさん (ワッチョイ 3e7c-P44A)
2019/07/16(火) 15:01:33.68ID:csbTSCSc0 >>511
8進数使うな、とかいやだよね
8進数使うな、とかいやだよね
514デフォルトの名無しさん (ワッチョイ 4e69-dwJn)
2019/07/16(火) 15:05:03.91ID:Yi/rfLM50 エディタ上での見栄えで桁合わせに 空白を使わず 0 で補ってやらかす
515デフォルトの名無しさん (ワッチョイ 4e63-P44A)
2019/07/16(火) 15:14:31.06ID:EySzsoWc0516デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/16(火) 15:27:11.60ID:UHx9kM+ca バイトが6bitの時は便利だったとかいう話だけど、今要らんよね
emacs使っててエンコードがアレだと出てくるね
emacs使っててエンコードがアレだと出てくるね
517デフォルトの名無しさん (ワッチョイ 4e69-dwJn)
2019/07/16(火) 15:32:14.71ID:Yi/rfLM50 文字列で [ESC] を埋めるのに \033 を使ってるのを見るぐらい
(2進数のリテラルをマクロでなんとかするとき 一時的に8進化するけど 中の話)
(2進数のリテラルをマクロでなんとかするとき 一時的に8進化するけど 中の話)
518デフォルトの名無しさん (ワッチョイ e301-S8wx)
2019/07/16(火) 15:40:10.80ID:uQ5be57j0 大昔のアーキテクチャは18bit,24bit とかで3bit 区切りが扱いやすかった
今は16,32,64と16進数が扱いやすいって話だね
ゼロ始まりは8進数というのはB言語からきたらしいよ
今は16,32,64と16進数が扱いやすいって話だね
ゼロ始まりは8進数というのはB言語からきたらしいよ
519デフォルトの名無しさん (ドコグロ MM77-DHp5)
2019/07/16(火) 15:44:50.30ID:i1fbuZ/pM520デフォルトの名無しさん (アークセー Sx3b-GinL)
2019/07/16(火) 16:30:56.95ID:SpxSpG+wx \0 … 8進数
\x0 … 16進数
\x0 … 16進数
521デフォルトの名無しさん (ワッチョイ 2395-q5pO)
2019/07/16(火) 16:37:07.34ID:cpfSTA9t0 >>487
if の nest が深くなってしまう?
if の nest が深くなってしまう?
522デフォルトの名無しさん (ワッチョイ 4e69-dwJn)
2019/07/16(火) 16:54:01.54ID:Yi/rfLM50 >>521
教条主義的に守るなら そうせざるを得ないだろうね
if (エラー) return ; // 即脱出
後続コード
return ; // 最終
即脱出を禁ずるなら
後続コードは即脱出条件とは排他的なので if (or else) 内に収めるしかない
if (!エラー) {
後続コード
}
return ; // 最終
教条主義的に守るなら そうせざるを得ないだろうね
if (エラー) return ; // 即脱出
後続コード
return ; // 最終
即脱出を禁ずるなら
後続コードは即脱出条件とは排他的なので if (or else) 内に収めるしかない
if (!エラー) {
後続コード
}
return ; // 最終
523デフォルトの名無しさん (ワッチョイ 4e63-P44A)
2019/07/16(火) 16:58:26.41ID:EySzsoWc0 goto ___exit; /* 震え声 */
524デフォルトの名無しさん (ワッチョイ 4e69-dwJn)
2019/07/16(火) 16:59:45.97ID:Yi/rfLM50 多分 goto も塞がれてる気配w
525デフォルトの名無しさん (ワッチョイ e301-S8wx)
2019/07/16(火) 17:24:48.72ID:uQ5be57j0 うちはreturnは最後に一つのみってやつは適用除外になってる
理由はネストが深くなって読みづらくなるから
gotoもネストしたループから一気に抜ける場合のみ使ってもよいことになってる
フラグ使ってbreakで抜けるより読みやすいからね
理由はネストが深くなって読みづらくなるから
gotoもネストしたループから一気に抜ける場合のみ使ってもよいことになってる
フラグ使ってbreakで抜けるより読みやすいからね
526デフォルトの名無しさん (アウアウウー Sa47-ihks)
2019/07/16(火) 17:27:15.45ID:glyNXuyHa もちろんgotoも禁止さ。
あと、各関数の頭で引数チェックも必須なのでreturn禁止とのコンボでほぼ必ず正常系処理のネストが一段以上深くなる。
引数チェック必須はISO26262だったかもしれん。
あと、各関数の頭で引数チェックも必須なのでreturn禁止とのコンボでほぼ必ず正常系処理のネストが一段以上深くなる。
引数チェック必須はISO26262だったかもしれん。
527デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/16(火) 17:27:59.62ID:UHx9kM+ca 途中のreturn禁止を徹底するなら、ifとかelseの後に2行以上書くの禁止にした方がいいね。
代入だけ許容するくらいでいい。
代入だけ許容するくらいでいい。
528デフォルトの名無しさん (スフッ Sdba-Z5NF)
2019/07/16(火) 17:28:40.15ID:T78CNDqDd >>513
0は0x0とか書かなきゃいけないんかね
0は0x0とか書かなきゃいけないんかね
529デフォルトの名無しさん (ワッチョイ 5fd2-TPoM)
2019/07/16(火) 18:10:37.85ID:QICQY/wp0 >515
そりゃもう512色カラー設定に(ry
そりゃもう512色カラー設定に(ry
530デフォルトの名無しさん (スップ Sd5a-AthE)
2019/07/16(火) 18:31:58.85ID:2nARKc5Ld ここまできたらC言語も禁止だな。
pythonでコーディングしてコンパイルしてやればいい。
pythonでコーディングしてコンパイルしてやればいい。
531デフォルトの名無しさん (ワッチョイ 5ba0-P44A)
2019/07/16(火) 18:35:56.79ID:/Cc9wbE10 結構前から言われてない?
「C言語を使う必要が無いなら使うな」と
「C言語を使う必要が無いなら使うな」と
532デフォルトの名無しさん (アウアウウー Sa47-KZVA)
2019/07/16(火) 18:47:43.53ID:K50k857la pythonを使って人が死んだら責任とれるの?
533デフォルトの名無しさん (スップ Sd5a-AthE)
2019/07/16(火) 18:54:47.98ID:2nARKc5Ld >>532
大丈夫さ。プログラム全体をtryで囲んで引っ掛かったらprint("手動運転に切り替てください")のコンボがある。
大丈夫さ。プログラム全体をtryで囲んで引っ掛かったらprint("手動運転に切り替てください")のコンボがある。
534デフォルトの名無しさん (ワッチョイ e301-S8wx)
2019/07/16(火) 18:58:26.32ID:uQ5be57j0 pythonでOSやデバドラ書けるようになったら考えるわ
535デフォルトの名無しさん (アークセー Sx3b-GinL)
2019/07/16(火) 20:05:19.62ID:WsWptbblx #define xxx 06
#define yyy 07
//#define zzz 08 // なぜかエラーになる
#define yyy 07
//#define zzz 08 // なぜかエラーになる
536デフォルトの名無しさん (アウアウウー Sa47-KZVA)
2019/07/16(火) 20:31:07.37ID:K50k857la なぜかはひみつ
537デフォルトの名無しさん (ブーイモ MM26-cAz/)
2019/07/16(火) 20:54:46.50ID:GCGNUpCjM >>535
なんてありがちな…
なんてありがちな…
538デフォルトの名無しさん (ブーイモ MM26-cAz/)
2019/07/16(火) 21:03:30.93ID:GCGNUpCjM539デフォルトの名無しさん (アウアウウー Sa47-KZVA)
2019/07/16(火) 21:05:08.13ID:K50k857la 祈りが足りないからだな
540デフォルトの名無しさん (ワッチョイ e301-S8wx)
2019/07/16(火) 21:08:14.38ID:uQ5be57j0 ちょっと前に8進数が〜ってやってるのに
あ、ネタかw
あ、ネタかw
541デフォルトの名無しさん (ワッチョイ 5ba0-P44A)
2019/07/16(火) 21:22:48.20ID:/Cc9wbE10 このスレの人って少し前のレス読まないよね
542デフォルトの名無しさん (ワッチョイ e368-BPOI)
2019/07/16(火) 21:31:28.73ID:7JXDuVC90 const char *sの順番が納得いかない
直感的にはchar * const sだろうが!!
直感的にはchar * const sだろうが!!
543デフォルトの名無しさん (ワッチョイ 5fc3-Z5NF)
2019/07/16(火) 21:32:10.10ID:W8tOKWg20 char const*だろ?
544デフォルトの名無しさん (ワッチョイ db8f-AthE)
2019/07/16(火) 22:16:46.03ID:Qe+dZ6A/0 * const char s
じゃね?
じゃね?
545デフォルトの名無しさん (ワッチョイ db8f-AthE)
2019/07/16(火) 22:17:34.37ID:Qe+dZ6A/0 おれは何を言ってるんだ??
546デフォルトの名無しさん (アークセー Sx3b-GinL)
2019/07/16(火) 22:20:37.80ID:dxLim7GAx >>542
>const char *sの順番が納得いかない
>直感的にはchar * const sだろうが!!
前者はポイントされる文字列が const で、後者はポインタ自体が const でしょ
>const char *sの順番が納得いかない
>直感的にはchar * const sだろうが!!
前者はポイントされる文字列が const で、後者はポインタ自体が const でしょ
547デフォルトの名無しさん (ワッチョイ e301-S8wx)
2019/07/16(火) 22:42:49.53ID:uQ5be57j0 const char* const s
これも直感的じゃないって言うんだろうか
これも直感的じゃないって言うんだろうか
548デフォルトの名無しさん (アークセー Sx3b-GinL)
2019/07/16(火) 22:43:19.23ID:dxLim7GAx 546です
すみません、それを踏まえてということか…
すみません、それを踏まえてということか…
549デフォルトの名無しさん (ワッチョイ 5a73-q5pO)
2019/07/16(火) 22:50:32.56ID:g+WSNcLQ0 const は後置で書いたほうが整合性が取れる
char const * const s:
しかし、見た目的にかわいいのは前置である
const char * s;
私はかわいいのが好きである
よって前置は使わない
char const * const s:
しかし、見た目的にかわいいのは前置である
const char * s;
私はかわいいのが好きである
よって前置は使わない
550デフォルトの名無しさん (ワッチョイ 5a73-q5pO)
2019/07/16(火) 22:58:11.13ID:g+WSNcLQ0 そこで私が提案したいのが「strong」である
strongは修飾したデータをすべてconstにする
つまり
char const * const s;
と
strong char * s;
は等価である
strongは修飾したデータをすべてconstにする
つまり
char const * const s;
と
strong char * s;
は等価である
551デフォルトの名無しさん (ワッチョイ ba52-QpLE)
2019/07/16(火) 23:13:59.86ID:ICazHXPW0 >>550
安易な予約語の追加は嫌われるよ
安易な予約語の追加は嫌われるよ
552デフォルトの名無しさん (ワッチョイ 4e63-P44A)
2019/07/16(火) 23:18:11.31ID:EySzsoWc0 「strongがやられたようだな…」
「フフフ…奴は四天王の中でも最弱…」
「フフフ…奴は四天王の中でも最弱…」
553デフォルトの名無しさん (ワッチョイ 5ba0-P44A)
2019/07/16(火) 23:19:03.80ID:/Cc9wbE10 <strong>char* s</strong>
554デフォルトの名無しさん (ワッチョイ e301-P44A)
2019/07/16(火) 23:22:51.61ID:uQ5be57j0 stringと間違えそうで嫌だなw
readonlyはc#で使ってるしな
やっぱconstだな
readonlyはc#で使ってるしな
やっぱconstだな
555デフォルトの名無しさん (ワッチョイ 7602-24gz)
2019/07/16(火) 23:40:17.89ID:awioItM70 大文字で CONST にするとか。
556デフォルトの名無しさん (スップ Sd5a-sMSa)
2019/07/17(水) 04:24:07.40ID:CqcyHUxLd フン
char *const_s
char *const_s
557デフォルトの名無しさん (ワッチョイ e368-BPOI)
2019/07/17(水) 06:33:32.66ID:Pp4wfZXK0 >>546
const int a → constなint型のa
const char *s → constなchar *型のs
constなのはchar *つまりポインタ(直感)
char * const s → char *型のconstなs
constなのはsつまり文字列自体(直感)
なんで逆!!
const int a → constなint型のa
const char *s → constなchar *型のs
constなのはchar *つまりポインタ(直感)
char * const s → char *型のconstなs
constなのはsつまり文字列自体(直感)
なんで逆!!
558デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/17(水) 06:46:44.61ID:NB17uhF90 > const char *s → constなchar *型のs
ギャグだよな?
ギャグだよな?
559デフォルトの名無しさん (ワッチョイ 9ada-Bj8P)
2019/07/17(水) 06:57:50.40ID:i06pHchL0 宣言は右から左に読む
const等の修飾は左にかかる
char const * const s; // sは、const *である、const char型の
右にかかるなら↓のように書けないとおかしいがこれは構文エラーである
const char const *s;
変数名はただの識別子で、ある領域にsという名前を付けただけにすぎない
constやvolatileは型修飾子であり、これらが付くのは型に対してである
〜という領域を、以後sと呼ぶ、である
const等の修飾は左にかかる
char const * const s; // sは、const *である、const char型の
右にかかるなら↓のように書けないとおかしいがこれは構文エラーである
const char const *s;
変数名はただの識別子で、ある領域にsという名前を付けただけにすぎない
constやvolatileは型修飾子であり、これらが付くのは型に対してである
〜という領域を、以後sと呼ぶ、である
560デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/17(水) 07:14:03.66ID:NB17uhF90 ちげーよ
宣言は真ん中から左右に読むんだよ
char const *(* const s)[1];
宣言は真ん中から左右に読むんだよ
char const *(* const s)[1];
561443 (ワッチョイ 9a2c-i8Xk)
2019/07/17(水) 09:21:48.88ID:u050lnGw0 >>526
引数チェックに関しては、Java のコーディングルールでは、
外部の人用のAPI、つまりpublic な関数には、必要
一方、そのモジュール・クラスの実装者が使う、
内部的なAPI、つまりprivate な関数には、いらない
既にどこかで、エラーチェックしてるから、何回も同じエラーチェックするのは、無駄
引数チェックに関しては、Java のコーディングルールでは、
外部の人用のAPI、つまりpublic な関数には、必要
一方、そのモジュール・クラスの実装者が使う、
内部的なAPI、つまりprivate な関数には、いらない
既にどこかで、エラーチェックしてるから、何回も同じエラーチェックするのは、無駄
562デフォルトの名無しさん (ワッチョイ 23b3-15OI)
2019/07/17(水) 21:08:01.97ID:E0YvS3zE0 const char *sは*sがconst
つまりポインタsの指すアドレスにある値が不変だけどsがどこを指すのかは可変
char *const sはsがconst
つまりポインタsがどこを指すかは不変だけどsの指すアドレスにある値は可変
大体こんな認識で合ってる?
つまりポインタsの指すアドレスにある値が不変だけどsがどこを指すのかは可変
char *const sはsがconst
つまりポインタsがどこを指すかは不変だけどsの指すアドレスにある値は可変
大体こんな認識で合ってる?
563デフォルトの名無しさん (ワッチョイ e368-BPOI)
2019/07/17(水) 23:04:57.90ID:Pp4wfZXK0 あってるけど納得いかないって話
1つ目がまず何で*sにかかるんだよ
自然に読んだらconstはchar *にかかるだろ
右から読むとか頭おかしいわ、アラビア語かよ
1つ目がまず何で*sにかかるんだよ
自然に読んだらconstはchar *にかかるだろ
右から読むとか頭おかしいわ、アラビア語かよ
>>563
char * s;
に 1 個の const を追加するとき、形式的に追加できる場所は 4 箇所
a) char * s const;
b) char * const s;
c) char const * s;
d) const char * s;
このうち a) はコンパイルできない
b) c) は可能だが、の二つの間で意味は異なる
d) は本来ならエラーであるべきだと私は考えているが、実際には c) と一緒の意味になっている
char * s;
に 1 個の const を追加するとき、形式的に追加できる場所は 4 箇所
a) char * s const;
b) char * const s;
c) char const * s;
d) const char * s;
このうち a) はコンパイルできない
b) c) は可能だが、の二つの間で意味は異なる
d) は本来ならエラーであるべきだと私は考えているが、実際には c) と一緒の意味になっている
565デフォルトの名無しさん (ワッチョイ 2395-q5pO)
2019/07/17(水) 23:34:56.30ID:RL7WDafS0 C言語使う時はいつ?
早いコードが欲しい時
メモリー消費に無駄のないコードが欲しい時
他ある?
早いコードが欲しい時
メモリー消費に無駄のないコードが欲しい時
他ある?
>>565
他の言語はほとんどわからず(かじってはみたものの使えるまでにはMPがあがらず)、C/C++ でしかまともに書けないし発想できないからです…
他の言語はほとんどわからず(かじってはみたものの使えるまでにはMPがあがらず)、C/C++ でしかまともに書けないし発想できないからです…
567デフォルトの名無しさん (ワッチョイ db8f-AthE)
2019/07/17(水) 23:42:49.57ID:FDkzfNlT0 >>563
実はアラビア語って可能性はないのか?
実はアラビア語って可能性はないのか?
568デフォルトの名無しさん (ワッチョイ e368-BPOI)
2019/07/17(水) 23:49:47.36ID:Pp4wfZXK0 そもそもconst char *sの宣言の時の切れ目がconst / char / *s なのも何だかなぁ
const / char * / s でconstはchar *にかかれよjk
現実に間違ってるのは渋々受け入れてるけど開発者が許せない
const / char * / s でconstはchar *にかかれよjk
現実に間違ってるのは渋々受け入れてるけど開発者が許せない
569デフォルトの名無しさん (アークセー Sxa3-F8Mm)
2019/07/18(木) 00:00:28.28ID:OLFUgkogx >>564
自分は b or(and) d かなー
自分は b or(and) d かなー
570デフォルトの名無しさん (ワッチョイ 3f52-5sVo)
2019/07/18(木) 00:33:34.97ID:Nr80YdQr0 >>565
他に思い付くところとしては、
組み込み環境などで、C言語以外の選択肢がない、または他の言語で実行できる環境を整えるよりCを使った方が楽な場合。
外部のライブラリのインタフェースがC言語で、呼び出す部分をCで作る方が楽な場合。
バイナリファイルの操作などポインタ操作を使って実装しやすい場合。
他に思い付くところとしては、
組み込み環境などで、C言語以外の選択肢がない、または他の言語で実行できる環境を整えるよりCを使った方が楽な場合。
外部のライブラリのインタフェースがC言語で、呼び出す部分をCで作る方が楽な場合。
バイナリファイルの操作などポインタ操作を使って実装しやすい場合。
571デフォルトの名無しさん (ワッチョイ 3f52-5sVo)
2019/07/18(木) 00:48:28.58ID:Nr80YdQr0572デフォルトの名無しさん (ワッチョイ 4fd2-ulaa)
2019/07/18(木) 05:33:10.45ID:yO5P6Jqp0 char *s
の意味は*sはchar型だよって意味で
sはchar *型だよって意味じゃないよ
の意味は*sはchar型だよって意味で
sはchar *型だよって意味じゃないよ
573デフォルトの名無しさん (スップ Sddf-1UnR)
2019/07/18(木) 05:43:05.99ID:xY9KzRxOd574デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/18(木) 06:48:06.17ID:2qyz/4gG0575デフォルトの名無しさん (ドコグロ MM5f-FX/1)
2019/07/18(木) 07:54:18.60ID:kb0ZHGx0M *と*const があると憶えるべき。
576デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/18(木) 09:56:03.22ID:q9HPUerJa >>563
ポインタを表す * が型にくっついてるんじゃなくて変数にくっついてるからでは?
分かりにくいなら typedef でポインタの型を作ってそれを使えばいいんじゃないな。
右から読む事に関しては英語を日本語に翻訳する時に順序を入れ換えた方が自然な感じになる事があるのでなんとも言えんな。漢文のレ点みたいなものもあるしな。
日本語とは逆順の方が自然な表現になる言語はある。そして歴史的な事情で混在してしまっているのもある(アメリカでの年月日が月日年の順だとか)。
生まれながらにしてその言語使ってればその人にとってはそれが一番自然な表現だからな。
ポインタを表す * が型にくっついてるんじゃなくて変数にくっついてるからでは?
分かりにくいなら typedef でポインタの型を作ってそれを使えばいいんじゃないな。
右から読む事に関しては英語を日本語に翻訳する時に順序を入れ換えた方が自然な感じになる事があるのでなんとも言えんな。漢文のレ点みたいなものもあるしな。
日本語とは逆順の方が自然な表現になる言語はある。そして歴史的な事情で混在してしまっているのもある(アメリカでの年月日が月日年の順だとか)。
生まれながらにしてその言語使ってればその人にとってはそれが一番自然な表現だからな。
577デフォルトの名無しさん (スップ Sddf-1UnR)
2019/07/18(木) 10:04:50.81ID:xY9KzRxOd■ このスレッドは過去ログ倉庫に格納されています
ニュース
- (社説)国旗損壊罪の新設案 窮屈な社会が待っていないか:朝日新聞 ★2 [少考さん★]
- 「日本は安い」海外客は“歴史的円安”で大奮発 節約日本人は“クマなし県”に殺到 [ぐれ★]
- 尖閣周辺に中国船、10日連続 いずれも機関砲搭載 [蚤の市★]
- こども食堂、全国で1万か所超す「誰もが立ち寄れる地域のインフラに」…物価高「涙を流す人もいて深刻」 [煮卵★]
- 【石破茂前首相】おこめ券配布に異議「その原資は何ですか?国民の税金でしょう?」 ★2 [ぐれ★]
- 高市早苗首相への“女性からの厳しい指摘”に「女性の敵は女性なのか」の議論勃発 日本社会に色濃く残る男尊女卑の風潮が… [少考さん★]
- 【悲報】外国人「フリーレンを黒人にしてみたよ!」→日本人さん、ブチギレwwwwwwwwwwwwwwwwwww [839150984]
- 少子化って試験管ベビーで解決できるよな
- 統一教会、台湾で政党になって公明党的ポジションにいたww [347751896]
- __イスラエルの国家安全保障担当大臣、占領下エルサレムでの子供公演を上演直前にイスラエル情報機関に中止させる [827565401]
- たすけて!レースカーテンのサイズがわからない!
- 【悲報動画】高市、G20で英語も出来ず人脈も無いのでずっと張り付いた笑顔でキョロ充ムーブ😭サナ…俺悔しいよ [359965264]
