- 1 名前:デフォルトの名無しさん [2019/04/02(火) 11:23:37.62 ID:SQXqRaAc0.net]
- !extend:checked:vvvvv:1000:512
C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C11 www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C99 www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf kikakurui.com/x3/X3010-2003-01.html C FAQ 日本語訳 www.kouno.jp/home/c_faq/ JPCERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 77 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 11:16:06.57 ID:9YALwuYf0.net]
- >>70
だよな []こそ諸悪の根元 自動変数と仮引数と外部宣言でみんな意味違うとか 気が狂ってるとしか思えない
- 78 名前:デフォルトの名無しさん [2019/04/10(水) 11:23:36.81 ID:7gi5m8N9a.net]
- そして「C言語はおかしい」と満場一致で結論が出て、また新たな言語が作られるのであった。
完
- 79 名前:デフォルトの名無しさん [2019/04/10(水) 11:25:19.17 ID:lv7m7vwC0.net]
- ここが変だよC言語って本が昔売られてたな。。。
- 80 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 12:05:09.58 ID:JKE/90g3a.net]
- >>73
俺は安全のために実体渡すし返すよ、割と
- 81 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 12:29:04.23 ID:bjp/36w+M.net]
- >>73
たまから、構造体はint, doubleとかの変数と同じく値渡しで一貫してる 配列がおかしいだけ
- 82 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 14:02:32.11 ID:pgm3XBSH0.net]
- 不定と未定義がある限り、C言語はおかしくあり続けるのだ。
- 83 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 14:28:30.84 ID:qyNiIlQC0.net]
- >>77
仮引数にconstはダメ?
- 84 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 14:46:53.80 ID:9YALwuYf0.net]
- >>77
const使わんの? ・・・て、先に誰か言ってるな
- 85 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 14:49:44.54 ID:9YALwuYf0.net]
- >>78
intが値渡しと決められた理由は理解してるか? 配列みたいに暗黙のアドレス演算子にもやればできた話で そのほうがおまえさんの主張する一貫性にも叶うわけだが
- 86 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 14:51:22.98 ID:hStfijf/0.net]
- by val と by ref でうあぁぁぁ
- 87 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 15:21:31.93 ID:Y9aQW1ZLa.net]
- >>80
そりゃ、付けられるときは基本いつでもconstですよ だからなに
- 88 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 15:49:26.74 ID:qyNiIlQC0.net]
- >>84
付けられないときってどんなときでしょう
- 89 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 15:56:55.75 ID:9YALwuYf0.net]
- >>84
77で「安全のために」って言っているのを 誤って変更してしまうのを防ぐためと読んでいたが これがそもそも違うのか?
- 90 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 16:15:30.28 ID:Y9aQW1ZLa.net]
- >>86
変更しようがしまいが、意図があろうがなかろうが、コンテクストを分けるためですよ。
- 91 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 16:36:22.97 ID:9YALwuYf0.net]
- >>87
へー、じゃあ関数を呼び出すたびごとにプロセス生成とかすんの?
- 92 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 16:51:52.86 ID:Y9aQW1ZLa.net]
- >>88
なんで? チミは頻繁にグローバル変数を使うってこと?やめたほうがええよ
- 93 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 16:58:14.51 ID:9YALwuYf0.net]
- >>89
なんでグローバル変数を使っちゃいかんのだ? スタックにしまえば安全だと思っているならおめでたいやつよ
- 94 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:08:01.10 ID:Y9aQW1ZLa.net]
- >>90
グローバル変数だめでしょ。 スタックってなんのこと?まさか関数呼び出しとスタックがセットだと思ってる?
- 95 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:12:08.62 ID:9YALwuYf0.net]
- >>91
なんでと聞いている 答えてくれ
- 96 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:16:15.00 ID:Y9aQW1ZLa.net]
- >>92
そんなもん、密結合・低凝集を実現する目的でしか役に立たんからですよ。
- 97 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:18:23.20 ID:9YALwuYf0.net]
- >>93
仮引数と自動変数が置かれるスタックもグローバルなんだが そのせいで密結合・低凝集になったりしているか?
- 98 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:20:34.39 ID:qyNiIlQC0.net]
- 記憶領域確保に失敗したとき
落ちないように頑張ってくれるのと 即落ちるのと どっちがどうだったか忘れた 最近読んだどっかに書いてあった筈だけど思い出せん… x86 限定で良いので挙動とコーディングの関係に心当たりのある方御教示ねがいます。。。
- 99 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:34:07.04 ID:VhJLBw5p0.net]
- こんな便所みたいなところでばっちばちでワロタ
- 100 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:36:28.06 ID:Y9aQW1ZLa.net]
- >>94
そうそう、だからポインタを使わないのがいいね
- 101 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:39:25.15 ID:Y9aQW1ZLa.net]
- 構造体に限った話でもないが、グローバル変数のポインタが引数として渡され、更にそういう関数が多段に続いたコードとか地獄だよ。
誰かが止めねばならんよ。
- 102 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:44:54.12 ID:9YALwuYf0.net]
- >>97
あ、おまえさんそっち系か ・・・なんでCなんか使うの?
- 103 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:46:05.16 ID:9YALwuYf0.net]
- >>98
グローバル変数をポインタ渡しは意味あるでしょ スコープを指定する、的なやつ
- 104 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:48:27.03 ID:Y9aQW1ZLa.net]
- >>100
マジ意味わからん
- 105 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 17:52:02.02 ID:9YALwuYf0.net]
- >>101=97
二度も言わなくていいよ
- 106 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 18:00:58.67 ID:9QKNNv28a.net]
- >>102
いや、100の解説してくれや
- 107 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 18:05:19.14 ID:9YALwuYf0.net]
- >>103
#include <stdio.h> int x, y; int main(void) { scanf("%d", &x); scanf("%d", &y); return 0; } 暗黙にxに書き込む関数とscanfは どっちが汎用性が高いか どっちが見通しがい
- 108 名前:いか
考えてみな [] - [ここ壊れてます]
- 109 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 18:07:33.40 ID:Y9aQW1ZLa.net]
- >>104
xとyを比較したらええんか?
- 110 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 18:09:36.68 ID:9YALwuYf0.net]
- >>105
おまえさんに解らせることはもう諦めた 放っといてくれ
- 111 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 18:17:20.49 ID:9YALwuYf0.net]
- 俺はいま103に説明しているんだ
- 112 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 18:41:36.83 ID:BTPtEuL0a.net]
- いや、同一人物だぞ
- 113 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 19:37:58.47 ID:WZ2DAnxG0.net]
- >>82でイミフなこと言ってるなって思ったら単なる基地外やんw
- 114 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 20:25:42.75 ID:qyNiIlQC0.net]
- 結局「constを仮引数に使えないとき」というのがどんなときなのが全く分からず
「規格通りに書いてはならない」ケースが実
- 115 名前:在したのかしら []
- [ここ壊れてます]
- 116 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 20:33:10.76 ID:Y9aQW1ZLa.net]
- >>110
え、毎回書いてるの?
- 117 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 21:26:31.69 ID:qyNiIlQC0.net]
- いや
仕事で使ってませんから そもそも「毎回」っていうほど書いてませんし 何らかのツールで勝手に入るので「敢えて書く必要性がない」ということなのでしょうか それとも一律に「書くな」というルールが定着している組織が実在しているのでしょうか
- 118 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 21:33:55.83 ID:9YALwuYf0.net]
- >>109
そうか、82がおまえさんはイミフなのか 悪いけど匙を投げるね
- 119 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 21:37:03.36 ID:qyNiIlQC0.net]
- >>104 にて
scanf("%d", &x); と書かれているのですが、ターミナルから9を80字入力されたらどうなさるおつもりなのでしょうか また、signedともunsignedとも指定されておりませんが、その点はどのように汎用性を確保なさるのでしょうか
- 120 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 21:55:23.88 ID:9YALwuYf0.net]
- >>114
俺に聞くな、規格票を嫁 kikakurui.com/x3/X3010-2003-01.html 104のコードが規格厳密合致プログラム(strictly conforming program)であることのみここに宣言する この命題を反証されたら、潔く敗北を認める では貴殿の返答を待つ
- 121 名前:さまよえる蟻人間 mailto:sage [2019/04/10(水) 21:59:49.17 ID:QzOhMry80.net]
- intだけだったらsigned intになるっしょ。
近代的な環境なら、正しく書式を設定すればscanfはオーバーフローしない。
- 122 名前:さまよえる蟻人間 mailto:sage [2019/04/10(水) 22:19:22.09 ID:QzOhMry80.net]
- shortはsigned short、
longはsigned longだが、 charはコンパイラの設定によりsignedにもunsignedにもなる。普通はsignedだがな。
- 123 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 23:14:07.61 ID:qyNiIlQC0.net]
- >>115
> 規格厳密合致プログラム 残念ながら、リンク先の日本語文章に定義が無く意味不明だったため これから英文を読むことにします 型の件含め、皆様の御教示に感謝します
- 124 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 23:41:09.21 ID:qyNiIlQC0.net]
- "shall" の訳文に、筆者の苦悩のようなものが見受けられました
その点ふくめ、私は知らないことが非常に多いようで、ご迷惑をおかけしました
- 125 名前: mailto:sage [2019/04/10(水) 23:46:11.63 ID:57hoitEO0.net]
- >>65
>>56 struct S { int a[65536]; };
- 126 名前: mailto:sage [2019/04/10(水) 23:49:04.71 ID:57hoitEO0.net]
- >>119
規格の中に現れる shall は十中八九「話者の意思」を示す 例文:You shall die. 超訳:「死ね!」
- 127 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 00:04:19.55 ID:SPJO7XdY0.net]
- >>121
> 例文:You shall die. > 超訳:「死ね!」 さすがにそれは… 日本語の文章の方に "shall" は書かれてなかったもんで把握、と 示唆したつもりだったのですが、通じなかったようで、表現力につき反省する所しきりであります
- 128 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 00:44:10.66 ID:Nah1Abkj0.net]
- I shall return 0.
- 129 名前:デフォルトの名無しさん [2019/04/11(木) 01:53:26.52 ID:5ienNbe20.net]
- *'``・* 。
| `*。 ,。∩彡⌒ミ * みんなハゲにな〜れ + (´・ω・`) *。+゚ `*。 ヽ、 つ *゚* `・+。*・' ゚⊃ +゚ ☆ ∪~ 。*゚ `・+。*・ ゚
- 130 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 07:54:50.71 ID:YCq7KtVA0.net]
- >>118
4. 規格合致性 規格厳密合致プログラム(strictly conforming program)は,この規格で規定する言語機能及びライブラリ だけを使用しなければならない(2)。さらに,いかなる未規定の動作,未定義の動作又は処理系定義の動作に依存する出力も生成してはならず,しかもどのような最低限の処理系限界も超えてはならない。 (2)規格厳密合致プログラムは,どの処理系でもサポートしているわけではない機能(附属書 F の中に例 がある。)を使うことができる。ただし,その機能を使うことができるのは,それが適切なマクロをもつ#ifdef 指令とそれに対応する#endif 指令とに囲まれている場合に限る。次に示すプログラム片がその例である。 #ifdef _ _STDC_IEC_559_ _ /* FE_UPWARD が定義されている */ /* ... */ fesetround(FE_UPWARD); /* ... */ #endif
- 131 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 09:09:31.46 ID:AbBe4c020.net]
- RFCなんかである要請の強度( MUST SHALL MAY ) みたいに使う用語の縛りはない?
- 132 名前: mailto:sage [2019/04/11(木) 20:58:24.95 ID:mnND5pqz0.net]
- >>122
あくまで私見ですが、現代英語では will に単純に置き換えられるような shall の使い方はもうありえなく、 shall を使うのは shall を使う必然性があるから、だから、shall は辞書でいうところの「意志未来」であり、したがって shall を訳出しないのは不誠実な訳だとどうしても私は感じてしまいます…
- 133 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 21:23:32.90 ID:SPJO7XdY0.net]
- 「英文読解」の場ではなかったので控えていたのですが
>>127 個人的には「こんなのを訳出させられた人は凄い」と思ってます 「原典は英語で日本語訳がある」もので「日本語訳が意味不明」の場合 原典で確認すると「訳出で明確ではない」部分が確認できるケースが多々あります "shall" をどのように訳出するかは個人差ありますし 今回の箇所が「以前同じ文言があったので単純にコピペした」ものかどうかは確認していません もちろん>>126さんが仰るように「強度の要請で助動詞を変える」ものもありえますが C99の文書の場合は丁寧に "shall" の定義から書かれていますし、 何より "strictly conforming program" という表現は、明確に 4.5 での新情報です
- 134 名前:デフォルトの名無しさん [2019/04/13(土) 04:36:48.17 ID:/Uq84pFNM.net]
- 昔の話。
若い頃K&Rの日本語版を買ってきて読み始めて、 間違いというか サンプルとしてよろしくない ところを見つけていた。 それが7年後に役立って 沢山仕事が入ってくるようになった。 本はキチンと読みましょう!
- 135 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 12:55:05.18 ID:hvrKDDfY0.net]
- >>129
面白そうな話の気もするが、抽象的すぎてよくさっぱりわからん。 せっかくだしもう少し詳しく教えて欲しい。
- 136 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 04:54:50.50 ID:jIyXk5jhp.net]
- You shall die.
日本語の古語にすると分かりやすい 汝死すべし shallはべしに近い
- 137 名前: mailto:sage [2019/04/14(日) 05:55:46.19 ID:AVvjfIV70.net]
- >>131
「べし」が二人称主語のときは「当然〜するべき」「義務」をあらわすことが多いですね ただしこの場合も、主観的な意見の場合・客観的な義務の場合の両方がありうるかもしれません shall=べき、べし、というのはいい線いっていると思います
- 138 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 06:22:08.07 ID:JgI3yl/w0.net]
- 日常会話や文学なら "You shall die." を「汝死すべし」と訳して
原文のもつ「お前死んだ方がいいよ」と「お前はいつか死ぬであろう」の 両方のニュアンス(他の解釈もあるかも)を残すってのはアリだと思うけど、 技術的な文章では、複数の意味に取れる書き方はしないでしょ。 翻訳の読者が欲しい情報も、原文がどちらを意図してるのか、だろうし。
- 139 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 06:41:56.55 ID:Sc1FWDft0.net]
- shall
〜するものとする。
- 140 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 08:56:50.49 ID:/sR0LrTu0.net]
- ISO9001の要求事項とか見たことないのか?
Shall: しなければいけない Should: した方が良い って訳すのは常識だぞ
- 141 名前: mailto:sage [2019/04/14(日) 09:36:41.79 ID:AVvjfIV70.net]
- >>135
>>121 >>127 のとおり、shall は単純未来の可能性は捨て一律に意志未来に決め打ちしちゃっていいってことですね…
- 142 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 09:43:00.26 ID:zcg/ytHt0.net]
- 英会話スレ
- 143 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 09:54:03.65 ID:/V8zrPr00.net]
- 一年程度だが海外で仕事した経験のある俺にコメントさせてくれ。
shallにとくに意味はない。日本語に訳すのは難しいが方向性でいえば 汝死ぬ(shallなし) ↓ 汝はねぇ死ぬよ(shallあり) かな。 つまり特に意味はない。特に強調してるわけでもないけど、つまり断定か。
- 144 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 10:09:12.15 ID:zcg/ytHt0.net]
- 余計分かりにくい
- 145 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 10:38:07.79 ID:/sR0LrTu0.net]
- >>136
未来とか関係ない そうしないと規格に合致しねーぞって言うある意味条件だよ
- 146 名前: mailto:sage [2019/04/14(日) 10:50:12.57 ID:AVvjfIV70.net]
- >>140
「意志未来」という言葉は辞書の言葉ですが、私の本意は >>121 つまり「規格」または「規格の書き手」が "You will die" という感情の含まれない淡白な表現を、それが実現するように強要する、それが "You shall die."
- 147 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 11:15:43.43 ID:/V8zrPr00.net]
- いや、ほんとに意味はないんだよ。書き手がなんか気持ち悪いからshallつけてるだけでshall抜きでもかわらん。
willとかshouldに比べてshallどうとかじゃなくて、willとかshouldがなかったらどうかを考えるべき。
- 148 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 11:36:05.15 ID:xBNIHV910.net]
- そもそも他言語を日本語で正確に訳せるってのは幻想でしかないから
規格でshallやshall notについて扱いが明記されてる(C11なら4.1〜4.2)以上それが全てでしょ
- 149 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 11:56:00.83 ID:CLAWTkIiM.net]
- >>141
だからお前さんの本意とかはどうでもいい 規格でのshall/shouldの解釈は > Shall: しなければいけない > Should: した方が良い って訳すのは常識って話
- 150 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 12:01:14.41 ID:El+pt49w0.net]
- >>128
> 「英文読解」の場ではなかったので控えていたのですが (中略) > C99の文書の場合は丁寧に "shall" の定義から書かれています これ以上、「C言語のスレ」として、どんな話題あるんですか 「ANSI C(なりC90なり)」「C95」「C11」を持ち出すなら意味があるかも知れませんが?
- 151 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 12:28:26.87 ID:xBNIHV910.net]
- あと、そんなに辞書が好きならshallに「(法律・商業)〜(すべき)である, 〜(するもの)とする, 〜のこと」ってあるからそれが一番近いと思うよ
- 152 名前: mailto:sage [2019/04/14(日) 12:51:54.61 ID:AVvjfIV70.net]
- >>144
その百人一首の上の句と下の句をつなげるように日本語と英語の一対一対応を増やしていくスタイルは、カルタが少ないうちはいいけれども腐るほど多くなったときに困りませんか? でも、最終的には慣れればなれるほど自動的に丸暗記になるのだろうから(私も「you shall die =死ね」状態なのは事実)、語学に理屈付けは不要なのかもしれませんね…
- 153 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 17:36:41.54 ID:LDzja3MF0.net]
- C95って何?
ああAMD1のことか、一瞬ぎくっとした しかしあの文脈では、それを言うならC99だろ
- 154 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 19:18:17.08 ID:xaCKxF64a.net]
- C言語で、配列を渡すときは&付けなくていいとありましたが
scanf("%c", &array[i][j]); このときに&つけなならんのはなんでですか cだとつけるのか二次元配列だとつけなきゃならないのか(根本的にわかってないかも) そこら変詳しくおしえてもらえませんか
- 155 名前:はちみつ餃子 mailto:sage [2019/04/17(水) 19:46:08.34 ID:UWuCQ9XR0.net]
- >>149
配列は、条件を満たしたとき (というより条件を満たす場合の方が多いのだが……) にその先頭要素を指すポインタに型変換されるという特殊ルールがあるから。 配列 array を単に array と書いた場合には、 &array[0] に読み替えられると考えてもいい。 配列 array に & を付けて &array と書いた場合は「配列を指すポインタ」であって、「配列の先頭要素を指すポインタ」ではないことにも注意が要る。 (型が違う) そのあたりのルールは歴史的経緯があってややこしいんだけど、この規則がないとそれはそれで記述がぐちゃぐちゃになるんでな……。
- 156 名前:デフォルトの名無しさん [2019/04/17(水) 20:36:55.41 ID:VoxdaNRv0.net]
- >>149
int array[2][2]と仮定すると、array[0][0]の型はint scanf()は渡されたアドレスを書き換える関数なので必要なのはint *
- 157 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 23:51:24.14 ID:LDzja3MF0.net]
- >>149
[]は、配列を、配列でなくす(要素にする)演算子だからだ
- 158 名前:デフォルトの名無しさん mailto:sage [2019/04/18(木) 04:53:03.15 ID:3hgPbfMt0.net]
- 文字列とscanf
- 159 名前:デフォルトの名無しさん mailto:sage [2019/04/18(木) 06:35:48.92 ID:gmBt4t3M0.net]
- 文字列(Cでは'\0'終端のchar配列)を格納できる変数 char s[SIZE]; に対して、
文字列を格納したい場合は scanf("%s", s); // 連続したメモリ領域 s[0], s[1], s[2] ... に格納 配列名 s は &s[0](配列の先頭要素へのポインタ)と、値と型が等しい 1文字だけ格納したい場合は scanf("%c%c", &[0], &s[1]); // s[0] と s[1] に1字ずつ格納 &s[0] は s と同じだが、 &s[1] との対応から &s[0] と書く方が分かりやすい 「配列名が暗黙に先頭要素へのポインタに変換される」話と、 「何を操作しているかをソースの書き方で明瞭に表現しようぜ」って話と、 整頓されずに混乱してるんじゃないかな。 「Cでは“文字列”とは何か」も絡んでるかも。 それに加えて、2次元配列という、これまたCではやや微妙な問題が噛んでるし。 char array[ROW][COLUMN]; // charの2次元配列 char *array[LINE]; // charへのポインタの1次元配列 >>149 の質問では二次元配列と明記されてるから本質じゃないけど、 説明を厳密にしようとすると、触れないのは片手落ちになっちゃうよね。 & 演算子でアドレスを得るときの内部的な処理の周辺。
- 160 名前:デフォルトの名無しさん mailto:sage [2019/04/18(木) 06:48:49.78 ID:o0KoJkQh0.net]
- &[0]なんて構文ねえよ
よりにもよって、そんなとこtypoしちまったら致命傷だろうが
- 161 名前:154 mailto:sage [2019/04/18(木) 07:30:33.11 ID:gmBt4t3M0.net]
- ありゃ本当だ。&[0] は誤りだね。ご指摘ありがとう。
誤: scanf("%c%c", &[0], &s[1]); // s[0] と s[1] に1字ずつ格納 正: scanf("%c%c", &s[0], &s[1]); // s[0] と s[1] に1字ずつ格納
- 162 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 12:12:59.76 ID:Nwj37sNi0.net]
- C言語ってarray[3]だけじゃなくて3[array]もできるんだね
[]が演算子って今更知った
- 163 名前:はちみつ餃子 mailto:sage [2019/04/19(金) 12:21:05.01 ID:mypEidUJ0.net]
- >>157
array[3] は *(array+3) と等しい、構文糖であるということになっているので結果的にそうなった。
- 164 名前:デフォルトの名無しさん [2019/04/19(金) 12:39:59.72 ID:U46FCs4Qa.net]
- かといってそんな書き方してるプログラムはサンプルプログラム以外では見たことがない。
- 165 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 12:58:54.90 ID:8C7kRl9M0.net]
- これとか
https://www.ioccc.org/2018/burton1/prog.c
- 166 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 15:31:03.70 ID:y1N4KfNld.net]
- >>157
コレ好き。たまーに混ぜ込んでおいてレビュー担当迷わせるの楽しい。
- 167 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 16:22:40.20 ID:t0MiT6LCM.net]
- >>161
作法違反で低評価になるだけじゃねw
- 168 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 16:50:40.06 ID:8C7kRl9M0.net]
- スキルの使い途を間違えているな
弱い者いじめではなく生産に使え チーム得点につながらない無駄なことをするやつを 上司は冷ややかに見ているぞ
- 169 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 17:06:38.82 ID:GSI3q7h60.net]
- 初めて5[a]がOKなんだと知ったときの感動を思い出せ。そんな感動と興奮を仕事に散りばめてくれるエンターテイナーだよ。
- 170 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 17:07:35.94 ID:GSI3q7h60.net]
- buf[5[buf]]
- 171 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 19:15:23.29 ID:g/tNuT86M.net]
- Cに配列なんて概念なくて、
配列宣言っぽく見えるのはポインタ宣言とallocaの構文糖だという 言語だったらよかったのに。
- 172 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 22:01:37.69 ID:8C7kRl9M0.net]
- いや、それは困る
ポインタが指す先の実体は いつかどこかで配列になれなきゃ話が発散してしまう
- 173 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 22:17:39.05 ID:jGjLpvILa.net]
- だから、これは配列ではないという結論になる
- 174 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 23:18:20.25 ID:UowN6RnT0.net]
- "0123456789abcdef"[n % 10]
- 175 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 23:34:23.62 ID:8C7kRl9M0.net]
- アホ
n % 16だろうが
- 176 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 00:07:20.17 ID:WPUlIDDo0.net]
- >>169
つよい
- 177 名前:デフォルトの名無しさん [2019/04/20(土) 01:30:17.77 ID:2mEBnGIe0.net]
- 早く配列になりたい
|

|