X



C言語なら俺に聞け 151
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ cf8f-fy95)
垢版 |
2019/04/02(火) 11:23:37.62ID:SQXqRaAc0
!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
0095デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
垢版 |
2019/04/10(水) 17:20:34.39ID:qyNiIlQC0
記憶領域確保に失敗したとき
落ちないように頑張ってくれるのと
即落ちるのと

どっちがどうだったか忘れた
最近読んだどっかに書いてあった筈だけど思い出せん…

x86 限定で良いので挙動とコーディングの関係に心当たりのある方御教示ねがいます。。。
0112デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
垢版 |
2019/04/10(水) 21:26:31.69ID:qyNiIlQC0
いや
仕事で使ってませんから
そもそも「毎回」っていうほど書いてませんし

何らかのツールで勝手に入るので「敢えて書く必要性がない」ということなのでしょうか
それとも一律に「書くな」というルールが定着している組織が実在しているのでしょうか
0114デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
垢版 |
2019/04/10(水) 21:37:03.36ID:qyNiIlQC0
>>104 にて
scanf("%d", &x);

と書かれているのですが、ターミナルから9を80字入力されたらどうなさるおつもりなのでしょうか
また、signedともunsignedとも指定されておりませんが、その点はどのように汎用性を確保なさるのでしょうか
0122デフォルトの名無しさん (ワッチョイ 8b8f-ofH2)
垢版 |
2019/04/11(木) 00:04:19.55ID:SPJO7XdY0
>>121
> 例文:You shall die.
> 超訳:「死ね!」

さすがにそれは…

日本語の文章の方に "shall" は書かれてなかったもんで把握、と
示唆したつもりだったのですが、通じなかったようで、表現力につき反省する所しきりであります
0124デフォルトの名無しさん (ワッチョイ fb02-XGqV)
垢版 |
2019/04/11(木) 01:53:26.52ID:5ienNbe20
  *'``・* 。
  |     `*。
 ,。∩彡⌒ミ   *    みんなハゲにな〜れ
+  (´・ω・`) *。+゚
`*。 ヽ、  つ *゚*
 `・+。*・' ゚⊃ +゚
 ☆   ∪~ 。*゚
  `・+。*・ ゚
0125デフォルトの名無しさん (ワッチョイ 392d-XGqV)
垢版 |
2019/04/11(木) 07:54:50.71ID:YCq7KtVA0
>>118
4. 規格合致性
規格厳密合致プログラム(strictly conforming program)は,この規格で規定する言語機能及びライブラリ
だけを使用しなければならない(2)。さらに,いかなる未規定の動作,未定義の動作又は処理系定義の動作に依存する出力も生成してはならず,しかもどのような最低限の処理系限界も超えてはならない。

(2)規格厳密合致プログラムは,どの処理系でもサポートしているわけではない機能(附属書 F の中に例
がある。)を使うことができる。ただし,その機能を使うことができるのは,それが適切なマクロをもつ#ifdef 指令とそれに対応する#endif 指令とに囲まれている場合に限る。次に示すプログラム片がその例である。

#ifdef _ _STDC_IEC_559_ _ /* FE_UPWARD

が定義されている */

/* ... */

fesetround(FE_UPWARD);

/*

... */

#endif
0127 ◆QZaw55cn4c (ワッチョイ d347-yqpC)
垢版 |
2019/04/11(木) 20:58:24.95ID:mnND5pqz0
>>122
あくまで私見ですが、現代英語では will に単純に置き換えられるような shall の使い方はもうありえなく、
shall を使うのは shall を使う必然性があるから、だから、shall は辞書でいうところの「意志未来」であり、したがって shall を訳出しないのは不誠実な訳だとどうしても私は感じてしまいます…
0128デフォルトの名無しさん (ワッチョイ 8b8f-ofH2)
垢版 |
2019/04/11(木) 21:23:32.90ID:SPJO7XdY0
「英文読解」の場ではなかったので控えていたのですが

>>127
個人的には「こんなのを訳出させられた人は凄い」と思ってます

「原典は英語で日本語訳がある」もので「日本語訳が意味不明」の場合
原典で確認すると「訳出で明確ではない」部分が確認できるケースが多々あります

"shall" をどのように訳出するかは個人差ありますし
今回の箇所が「以前同じ文言があったので単純にコピペした」ものかどうかは確認していません


もちろん>>126さんが仰るように「強度の要請で助動詞を変える」ものもありえますが
C99の文書の場合は丁寧に "shall" の定義から書かれていますし、
何より "strictly conforming program" という表現は、明確に 4.5 での新情報です
0129デフォルトの名無しさん (トンモー MM4d-Ouf2)
垢版 |
2019/04/13(土) 04:36:48.17ID:/Uq84pFNM
昔の話。
若い頃K&Rの日本語版を買ってきて読み始めて、
間違いというか
サンプルとしてよろしくない
ところを見つけていた。

それが7年後に役立って
沢山仕事が入ってくるようになった。

本はキチンと読みましょう!
0132 ◆QZaw55cn4c (ワッチョイ d347-yqpC)
垢版 |
2019/04/14(日) 05:55:46.19ID:AVvjfIV70
>>131
「べし」が二人称主語のときは「当然〜するべき」「義務」をあらわすことが多いですね
ただしこの場合も、主観的な意見の場合・客観的な義務の場合の両方がありうるかもしれません
shall=べき、べし、というのはいい線いっていると思います
0133デフォルトの名無しさん (ワッチョイ 597b-/1Ht)
垢版 |
2019/04/14(日) 06:22:08.07ID:JgI3yl/w0
日常会話や文学なら "You shall die." を「汝死すべし」と訳して
原文のもつ「お前死んだ方がいいよ」と「お前はいつか死ぬであろう」の
両方のニュアンス(他の解釈もあるかも)を残すってのはアリだと思うけど、
技術的な文章では、複数の意味に取れる書き方はしないでしょ。
翻訳の読者が欲しい情報も、原文がどちらを意図してるのか、だろうし。
0138デフォルトの名無しさん (ワッチョイ 298f-Glgm)
垢版 |
2019/04/14(日) 09:54:03.65ID:/V8zrPr00
一年程度だが海外で仕事した経験のある俺にコメントさせてくれ。
shallにとくに意味はない。日本語に訳すのは難しいが方向性でいえば
汝死ぬ(shallなし)

汝はねぇ死ぬよ(shallあり)
かな。
つまり特に意味はない。特に強調してるわけでもないけど、つまり断定か。
0141 ◆QZaw55cn4c (ワッチョイ d347-yqpC)
垢版 |
2019/04/14(日) 10:50:12.57ID:AVvjfIV70
>>140
「意志未来」という言葉は辞書の言葉ですが、私の本意は >>121
つまり「規格」または「規格の書き手」が "You will die" という感情の含まれない淡白な表現を、それが実現するように強要する、それが "You shall die."
0142デフォルトの名無しさん (ワッチョイ 298f-Glgm)
垢版 |
2019/04/14(日) 11:15:43.43ID:/V8zrPr00
いや、ほんとに意味はないんだよ。書き手がなんか気持ち悪いからshallつけてるだけでshall抜きでもかわらん。
willとかshouldに比べてshallどうとかじゃなくて、willとかshouldがなかったらどうかを考えるべき。
0145デフォルトの名無しさん (ワッチョイ 818f-ofH2)
垢版 |
2019/04/14(日) 12:01:14.41ID:El+pt49w0
>>128
> 「英文読解」の場ではなかったので控えていたのですが
(中略)
> C99の文書の場合は丁寧に "shall" の定義から書かれています


これ以上、「C言語のスレ」として、どんな話題あるんですか
「ANSI C(なりC90なり)」「C95」「C11」を持ち出すなら意味があるかも知れませんが?
0147 ◆QZaw55cn4c (ワッチョイ d347-yqpC)
垢版 |
2019/04/14(日) 12:51:54.61ID:AVvjfIV70
>>144
その百人一首の上の句と下の句をつなげるように日本語と英語の一対一対応を増やしていくスタイルは、カルタが少ないうちはいいけれども腐るほど多くなったときに困りませんか?
でも、最終的には慣れればなれるほど自動的に丸暗記になるのだろうから(私も「you shall die =死ね」状態なのは事実)、語学に理屈付けは不要なのかもしれませんね…
0149デフォルトの名無しさん (アウアウウー Sa5d-clLQ)
垢版 |
2019/04/17(水) 19:18:17.08ID:xaCKxF64a
C言語で、配列を渡すときは&付けなくていいとありましたが
scanf("%c", &array[i][j]);
このときに&つけなならんのはなんでですか

cだとつけるのか二次元配列だとつけなきゃならないのか(根本的にわかってないかも)
そこら変詳しくおしえてもらえませんか
0150はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b3e-clLQ)
垢版 |
2019/04/17(水) 19:46:08.34ID:UWuCQ9XR0
>>149
配列は、条件を満たしたとき (というより条件を満たす場合の方が多いのだが……) にその先頭要素を指すポインタに型変換されるという特殊ルールがあるから。
配列 array を単に array と書いた場合には、 &array[0] に読み替えられると考えてもいい。
配列 array に & を付けて &array と書いた場合は「配列を指すポインタ」であって、「配列の先頭要素を指すポインタ」ではないことにも注意が要る。 (型が違う)

そのあたりのルールは歴史的経緯があってややこしいんだけど、この規則がないとそれはそれで記述がぐちゃぐちゃになるんでな……。
0151デフォルトの名無しさん (ワッチョイ 09da-La48)
垢版 |
2019/04/17(水) 20:36:55.41ID:VoxdaNRv0
>>149

int array[2][2]と仮定すると、array[0][0]の型はint
scanf()は渡されたアドレスを書き換える関数なので必要なのはint *
0154デフォルトの名無しさん (ワッチョイ 697b-Xu0i)
垢版 |
2019/04/18(木) 06:35:48.92ID:gmBt4t3M0
文字列(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 の質問では二次元配列と明記されてるから本質じゃないけど、
説明を厳密にしようとすると、触れないのは片手落ちになっちゃうよね。
& 演算子でアドレスを得るときの内部的な処理の周辺。
0156154 (ワッチョイ 697b-Xu0i)
垢版 |
2019/04/18(木) 07:30:33.11ID:gmBt4t3M0
ありゃ本当だ。&[0] は誤りだね。ご指摘ありがとう。

誤: scanf("%c%c", &[0], &s[1]); // s[0] と s[1] に1字ずつ格納
正: scanf("%c%c", &s[0], &s[1]); // s[0] と s[1] に1字ずつ格納
0159デフォルトの名無しさん (アウアウウー Sacd-kBNU)
垢版 |
2019/04/19(金) 12:39:59.72ID:U46FCs4Qa
かといってそんな書き方してるプログラムはサンプルプログラム以外では見たことがない。
0172デフォルトの名無しさん (ワッチョイ 3602-YIQo)
垢版 |
2019/04/20(土) 01:30:17.77ID:2mEBnGIe0
早く配列になりたい
0173デフォルトの名無しさん (ワッチョイ 69ad-61/s)
垢版 |
2019/04/20(土) 12:04:07.28ID:adBHY6Cw0
忙しかったものですから、ウルトラ亀レスで申し訳ありません。

もちろんK&Rは良い本だとは思いますが、
よくないところがあると書きましたら、「それどこですか?」
のような質問がきていたのですが、仕事に忙殺されてレスが遅くなりました。

例えば、K&Rのハッシュ探索のプログラム。
ソースを見ればバグがあるとすぐわかるはずです。
K&Rのソースは単なるサンプルです。
仕事で実際に使えるわけではありませんし、

吐き出すハッシュ値をチェックしてみてください。
そのソースをF社の東大卒のプログラマがパッケージに組み込んでしまい、
大きなバグを引き起こしました。
で、俺が呼ばれてソースを見た瞬間に原因がわかって直しました。
K&Rを読んだときに気が付いていたからです。

K&Rを読んだときに、気が付く人はすぐ気が付いていると思います。
自分で考える人です。
本当のプログラマです。
0174デフォルトの名無しさん (スプッッ Sd12-fGro)
垢版 |
2019/04/20(土) 13:35:25.67ID:UeTDxeBdd
>>173
自分で考えるのが良いってのは、プログラマに限らずなんでもそうだよね。
その上で本当のプログラマとやらにもとめられるのは、考えて理解することよりバグを出さないテストを行う能力だと思うね。
考えてもミスる時はミスるし。
場数を踏んだプログラマは、もちろんちゃんと考えるけど、その上で自分の理解やコードを信じない。
ちょっと話が違うかな。
0175デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
垢版 |
2019/04/20(土) 18:04:05.64ID:YpwC1XIf0
>>173
それはK&Rのよくないところか?

K&RはCとはどんな趣旨のものかを紹介する本で
アルゴリズムを正確に教える本ではない

単にCの機能を説明するために例を挙げただけのナンチャッテコードを
いきなり本番環境に持っていった東大卒とかぬかすやる気のねえクズと
大きな事故に至るまで欠陥を検出できない会社の検証ルールの問題だろうが
0176デフォルトの名無しさん (ワッチョイ 368c-HmQt)
垢版 |
2019/04/20(土) 18:21:44.59ID:rZAwW+3j0
在るプログラムを作るのは間違い。買うのが正しい。
0183デフォルトの名無しさん (ワッチョイ 69ad-61/s)
垢版 |
2019/04/21(日) 10:26:51.61ID:gW8lsVjX0
>>175
173です。
おっしゃるとおりです。
俺の言いたかったのは、まあそういう感じです。
K&Rの信奉者があまりに多いので
どゆふうに指摘していいのか困惑している次第です。

つまり、言語の紹介本としては良い本だと思いますけど、
それ以上ではない。
現在、英語版のK&Rしか私の本棚に見つからないけど、
PREFACEの15行目からは、
This book is meant to help the reader learn how to program in C.
と始まっています。
この部分、日本語版にはどのように翻訳されていたか失念しましたが、
まさに、そのとおりなのです。

しかし、ハッシュ値のところですけど、
あと数文字をコーディングするだけでまともなコードになるのに、
なぜしなかったのか?という疑問はあります。
0185デフォルトの名無しさん (トンモー MMd5-+96b)
垢版 |
2019/04/21(日) 10:51:08.83ID:MDootfcvM
>>179
Cを数年やってからC++を
やりましたけど
最初は全くわかりませんでしたよ。
C++に慣れるまで1年ぐらいかかったかな?
全く別の言語と思ったほうが
よろしいかと思います。
0186デフォルトの名無しさん (アウアウエー Sada-aFPd)
垢版 |
2019/04/21(日) 11:08:55.42ID:gKcyDuy9a
Cでインターフェース・抽象性を意識したプログラムを書いてたらそんなに変わらんと思う。
ただ現実としては委譲を使ってたところから無理して継承に適応するために混乱することはある。現場で待っているのは神クラス。
0191デフォルトの名無しさん (トンモー MMd5-+96b)
垢版 |
2019/04/21(日) 14:48:54.11ID:YKRN8m01M
34年間、ほぼ毎日プログラミングしてますよ!
定年になってもずっとやってると思います。
作りたいものが一杯有りすぎて体が2つ3つ欲しいです。
今、最も力を入れているのが人工知能です。
人類を滅ぼす悪魔のソフトを造るのが人生最大の目標です!
0192 ◆QZaw55cn4c (ワッチョイ 7247-hooH)
垢版 |
2019/04/21(日) 15:58:12.64ID:MozNv5pX0
>>191
>人類を滅ぼす悪魔のソフト
これにはとても興味がありますね

「人類を滅ぼす悪のソフトウェア」
うーん、ぱっと思いつくところではテトリスとか…
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況