C言語なら俺に聞け 157

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
垢版 |
2021/06/28(月) 11:22:51.50ID:so+vl3vs0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
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/

※前スレ
C言語なら俺に聞け 156
https://mevius.5ch.net/test/read.cgi/tech/1601271690/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/08/27(金) 12:26:48.67ID:nK81wxcE0
>>474
馬鹿なの?主要pfのintサイズも知らないのかよ
2021/08/27(金) 12:55:50.72ID:5AM8fV7q0
日本語でおk
2021/08/27(金) 14:37:29.53ID:nK81wxcE0
うわ基地外に触っちまった
2021/08/27(金) 15:11:03.04ID:28SvbL190
友達いて良かったじゃないか
2021/08/27(金) 18:08:24.28ID:5AM8fV7q0
よしてくれ
直接的な罵倒語で話す次元のやつと一緒にすんな
480デフォルトの名無しさん (ワッチョイ 4281-bHCE)
垢版 |
2021/08/27(金) 19:45:46.03ID:dNdDj0y10
>>479
○すぞ
2021/08/27(金) 22:47:56.20ID:3kbeL8sr0
愛すぞ
2021/08/27(金) 23:16:53.36ID:fvnuyojga
推すぞ
2021/08/27(金) 23:51:09.87ID:5LgeY8Yf0
スッゾオラー!
484デフォルトの名無しさん (アウアウクー MM11-bmw4)
垢版 |
2021/08/28(土) 00:56:23.65ID:TAUITiELM
>>479
諭すぞ
2021/08/28(土) 01:07:55.46ID:ArBPUbYg0
宿題のことも思い出してやって
486デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
垢版 |
2021/08/28(土) 02:24:48.25ID:Kasf1Z4n0
>>358
レターは文字の集合。キャラクターとしたのは文字として認識していない記号等を含めたため。
487デフォルトの名無しさん (ワッチョイ 4281-bHCE)
垢版 |
2021/08/28(土) 14:36:23.66ID:0ROz2KLh0
>>486
なるほど
488デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
垢版 |
2021/08/28(土) 19:25:44.91ID:Kasf1Z4n0
>>487
制御文字を含めたのも理由かな
489デフォルトの名無しさん (ワッチョイ 4281-bHCE)
垢版 |
2021/08/28(土) 19:26:13.75ID:0ROz2KLh0
>>488
なるほど
490デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
垢版 |
2021/08/28(土) 19:38:40.56ID:Kasf1Z4n0
文字のことをキャラクターと呼び始めたのはC言語じゃねえよ。

13年前にできたCOBOLですらキャラクターと呼んでんだぜ?
491デフォルトの名無しさん (ワッチョイ fdad-9F4v)
垢版 |
2021/08/28(土) 19:51:11.77ID:foB6MXRR0
俺に聞けって言われてもな
なに聞いたらいいかわからん
変に言語のマニアックな知識つけるより、アルゴリズム沢山知ってた方がいいと思うから言語や開発環境についてはvalgrindとかcmakeとか基本的なことを身に付いてればそれで十分だと思ってるわ
だからすまんけど聞きたいことはない
2021/08/28(土) 19:58:54.24ID:J7/U097I0
>>490
> 13年前にできたCOBOL

?
2021/08/28(土) 20:03:04.96ID:ArBPUbYg0
C言語が1972年、COBOLが1959年
こういうことを言いたいのでは無いか?
2021/08/28(土) 20:08:53.74ID:GTTRCLIA0
子供の英会話聞いてるとletter aとか頻出するが、まだキャラクターは出てこないな。
495デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
垢版 |
2021/08/28(土) 21:27:40.38ID:Kasf1Z4n0
キャラクターの本来の意味は文字じゃないんだぜ?
あたりまえなんだぜえ?
496デフォルトの名無しさん (ワッチョイ ad85-Wwpo)
垢版 |
2021/08/29(日) 01:18:09.40ID:TPHdi4yb0
>言いたいのでは無いか?

ここの「無い」に漢字を使うことに違和感感じるのは漏れだけ?
497デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
垢版 |
2021/08/29(日) 01:49:09.89ID:HDdtcjYC0
「〇〇ではないのか。」の「ない」は形容詞。

ただし、これは形容詞を代用した言い回しなので、「無い」とはっきり形容とわかる使い方以外の場合は、日本語のおかしさが出てしまうので違和感がある。

そもそもわざわざ「ない」を「無い」と書く必要がない。戦後教育では漢字で書かなくてもわかることは仮名で書くと決めて、学校では漢字で書かないよう指導しているのに、漢字で書くやつはそれをすっかり忘れているだけだ。
2021/08/29(日) 01:52:08.61ID:5p1Kcso30
割とどうでもいい話だな
国語教育スレにでもうつってそこで続けてくれ
2021/08/29(日) 02:38:33.54ID:7/doTy/i0
> 違和感感じる

に違和感覚えるのは漏れだけ?
500デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
垢版 |
2021/08/29(日) 02:48:49.23ID:HDdtcjYC0
>>499
それもネチネチ30年以上も言われたが、単に字面が醜いという話で終わった。

覚えるも感じるも同じ意味で使っている。日本語は同じ漢字が続くときれいに見えないので変えたくなる。
501デフォルトの名無しさん (ワッチョイ 02ad-U7Lh)
垢版 |
2021/08/29(日) 04:28:31.20ID:Lt7wAmk40
無いと言えばこの前ドイツ語の映画で Nein って言ってる時に日本語字幕に「無い」と出ていて一致していて笑った。
502デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
垢版 |
2021/08/29(日) 05:28:11.66ID:HDdtcjYC0
>>501
否定の言葉の発音がNで始まるのは人類共通
503デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
垢版 |
2021/08/29(日) 05:30:35.87ID:HDdtcjYC0
人類が言葉を話す前の拒否を表す叫びが言葉になったのだろう。
2021/08/29(日) 08:16:38.59ID:0FIWs/PL0
いやだ!
やめろ!
はNじゃないけど
2021/08/29(日) 08:19:11.41ID:z+CvjRY2a
スモモモモモモモモ
2021/08/29(日) 08:43:55.40ID:kXE2QuW0K
>>501
「無いん」ならもっと良かったw

>>502
韓国語だと、YESがネーでNOがアーニョ
507デフォルトの名無しさん (ワッチョイ 2236-u6Y8)
垢版 |
2021/08/29(日) 08:46:40.86ID:XBz6dM210
離散データを連続データのように見せかけるフィルターを作りたい。
アルゴリズム名を教えてください。
2021/08/29(日) 08:51:04.40ID:s3BI9dN30
不是

Nで始まるどころか含まれてもいない
509デフォルトの名無しさん (ワッチョイ 3d5f-Wwpo)
垢版 |
2021/08/29(日) 09:56:38.96ID:Qq6uUubw0
_countof を使うべきですか?
https://docs.microsoft.com/ja-jp/cpp/c-runtime-library/reference/countof-macro?view=msvc-160
もっと良い計数方法ありますか?
510デフォルトの名無しさん (ワッチョイ 3d5f-Wwpo)
垢版 |
2021/08/29(日) 10:01:34.24ID:Qq6uUubw0
>>502
フランス語には何故 pas があるの?
2021/08/29(日) 10:14:57.45ID:LcGcn6bDF
>>509
https://marycore.jp/prog/c-lang/countof-array-and-sentinel-value/
2021/08/29(日) 16:11:09.82ID:bszwbM+aH
>>510
https://dictionary.sanseido-publ.co.jp/column/ghf23
2021/08/29(日) 16:24:27.16ID:Gww7yuPw0
>>510
neの発音が小さくて聞き取れないから付けることになった
2021/08/29(日) 17:57:42.29ID:Lt7wAmk40
nulぽ
2021/08/29(日) 18:16:18.76ID:jyQ+I+xW0
   ( ・∀・)   | | ガッ
  と    )    | |
    Y /ノ    人
     / )    <  >__Λ∩
   _/し' //. V`Д´)/ ←>>514
  (_フ彡        /
2021/08/29(日) 18:44:57.73ID:5p1Kcso30
日本語だとにゃー、英語だとmew
2021/08/29(日) 19:19:21.76ID:XBz6dM210
投稿するスレッドを間違えてしまったかもしれません。>>507
それ以後、いろいろ調べつづけましたが、
どうやら内挿法とか補間法とか呼ばれていることが分かりました。
そのためのアルゴリズムを探してみます。
ありがとうございました。
2021/08/29(日) 19:26:53.70ID:5p1Kcso30
宿題スレやお題スレなら、反応があるかも知れん
2021/08/29(日) 19:40:59.03ID:XBz6dM210
離散的なデータのプロットから滑らかな曲線を得たいのですが、
ベジェ曲線を使う必要があるため、それも計算する必要があります。
ではこの辺でさようなら。
520デフォルトの名無しさん (アウウィフ FF85-4thN)
垢版 |
2021/08/30(月) 14:56:32.12ID:a7szkEqkF
FFT
2021/08/30(月) 17:40:48.45ID:7tjRHlOya
Final Fantasy XII
2021/08/30(月) 22:24:16.28ID:u8tdK0uP0
与えられた離散的な点を必ず通る曲線なのか適度に近いとろこを通す曲線なのか
2021/08/31(火) 20:16:31.77ID:5EZjygd6a
Fire Fox TV
2021/09/01(水) 07:07:18.21ID:idZ7WXfL0
>>522
必ず通るようにしたいです。最小二乗法のようなものじゃないです。
2021/09/01(水) 09:37:56.74ID:BXH5CjID0
スプライン補間
https://github.com/okumuralab/algo-c/blob/master/src/spline.c
2021/09/02(木) 18:15:48.70ID:E4GAaWam0
>>525
サンキュー、サー!
2021/09/11(土) 14:53:10.23ID:H4dj0oy10
代入時など左辺に&をつけない理由って、元々左辺の変数はその変数のアドレスを示しているんですか?
2021/09/11(土) 17:29:15.71ID:fnRem4gD0
左辺にアドレス値を書いても、そのアドレスに格納してくれるわけではない
2021/09/11(土) 19:49:04.18ID:UoYK8G+w0
変数は(多くの場合)メモリ上に置かれる
a=bの式をコンパイラは「bのアドレスのメモリにある値をaのアドレスのメモリにコピーする」と解釈する

でもそれをソースコード上で&a=&bと書かせてもお得なことはないよね
言語上では「a, bは(抽象化された)変数」で、その変数への代入は「a=b」でいいよね
2021/09/11(土) 20:30:31.76ID:IpYcp5mx0
>>527
C++だと参照型が近いけど、あれはあれで窮屈ながらも、便利っちゃ便利かもな。
でもポインタ幅きかせてるCであえて拡張したい記法かといえば微妙よね。
void func(char &c) { c *= 2; }
みたいなのね。
2021/09/11(土) 22:33:45.82ID:H4dj0oy10
皆さんありがとう
scanfで変数に&を付ける理由はいろんなとこに書いてあるんだけど、
それならなんで普通の代入の時に&を付けないんだ?
って疑問に思ってました
2021/09/11(土) 23:06:30.86ID:LC2TQyRsa
void f(int *p)
{ *p = 1; }

….
int i;
i = 0;
printf("%d\n"); // 0
f(&i);
printf("%d\n"); // 1
2021/09/12(日) 00:21:46.80ID:F+ZN0nvA0
scanfに限らず、関数に変数を渡すと、その関数は、
渡された変数の値を受け取れるだけで、
変数の値の書き換えは出来ません
書き換えて欲しいときは、書き換える場所を関数に教えます

普通の代入の時は、その変数を直接操作できるので
あえてアドレス表記する必要が無いです
534デフォルトの名無しさん (ワッチョイ eaad-pW2y)
垢版 |
2021/09/12(日) 02:58:55.75ID:zHKafq1A0
memcpy(&a, &b, sizeof(a));

なんてことを、昔々構造体の変数の代入が出来ないCのサブセットのコンパイラでやったことがあったような気がするが、もはや記憶も曖昧になるぐらいの大昔。時の経つのは早いものぢゃ。
2021/09/12(日) 10:12:20.10ID:BvG4P5vd0
サブセットつーか、そもそもK&R Cは構造体代入できないね
2021/09/12(日) 14:36:50.48ID:Yq9DVfRn0
>>531
int c;に対して&c = 100という記述はだめなのって疑問かな?
代入演算子は左辺に変数を置いて値を書き込む特別な演算子だけど、
それをその変数の型を含むアドレス値を左辺に置いてそのアドレスに
書き込むという定義とするわけだ。

定義自体がややこしいし、
アドレス全面押しにする理由がない(むしろ遮蔽したい)、
頻繁に用いる演算子ゆえタイプ数が増えたりするのは好まない、
などメリットがないのだろうね。

=と==を=にまとめてしまって、代入時は&付けるという方向は
あるかも知れませんが、コード中代入のが多いでしょうから、
代入をシンプルにしたのではと。
2021/09/12(日) 14:42:45.51ID:BvG4P5vd0
FORTRANの代入を真似ただけだろ
538デフォルトの名無しさん (ワッチョイ eaad-dGLa)
垢版 |
2021/09/13(月) 01:06:14.49ID:MTzB4xqO0
>>535
あ。そうだったっけ。忘れてた。
539デフォルトの名無しさん (ワッチョイ eaad-dGLa)
垢版 |
2021/09/13(月) 01:13:16.73ID:MTzB4xqO0
int c;
*(&c) = 1;
ていうのなら出来る。
コンパイラは何の警告も出さずにコンパイルするかも知れないが、結局 c = 1; をやっているのと同じコードが出力されると思う。
2021/09/13(月) 01:28:42.84ID:b2LY5t5P0
代入演算子の左辺に現れることが出来るのは変更可能な左辺値 (modifiable lvalue) で、
>>539 の例はその条件を満たす。

>>527
たとえば
int c = 1;
a = 2;
というのは C では有効なコードだけれど、変数を評価すると格納されている値になるというルールを
そのまま適用すると
1 = 2;
になってしまっておかしい、左辺は「場所」でないといけないという感覚はとても良い感性なのだけれど、
左辺がアドレスということにしたとしてもアドレスはポインタ型の「値」でしかないのでそれはそれで
なんだか変なことになる。
結局は特別な規則を導入必要はあって、 C においてはそれが lvalue という概念というわけ。
2021/09/13(月) 07:34:08.89ID:wBWjVwq/M
わざとやってるのか知らんけどコードくらいまともに書けよ
542デフォルトの名無しさん (スプッッ Sd12-dgdc)
垢版 |
2021/09/13(月) 09:12:44.29ID:BLplThEad
>>531
C++は面倒なことになったな
#include <iostream>

using namespace std;

int main(int ac, char **av)
{
int a = 3;
int &b = a;
cout << a << b << endl;
return 0;
}
2021/09/13(月) 09:47:47.66ID:B8QV0Pmm0
ここはCスレ
2021/09/13(月) 13:35:49.31ID:lh01OzgJa
>>532
誤>printf("%d\n"); // 0

正>printf("%d\n", i); // 0

いまさらですが、第2引数が欠落していました
失礼しました
2021/09/13(月) 16:53:30.27ID:XjglcLZY0
副作用をポインタを経由して呼び出し元に伝播する ポインタ渡し
引数変数への代入がそのまま呼び出し元の変数に反映される 参照渡し(C言語には無い)
2021/09/13(月) 16:57:08.25ID:XjglcLZY0
関数の壁(呼び出し元と 呼び出された関数内の記述)を超えるときに & を使って壁を越える工夫をする
同じコード内の変数への代入ならば不要
2021/09/13(月) 17:04:06.19ID:JA2CmiO7M
&使わないと釣り銭をもらえない
2021/09/13(月) 17:52:01.78ID:b2LY5t5P0
C の仕様では引数は一貫して値渡しで、その値の型がポインタ型のこともあるという理屈になってる。
(仕様の理屈はともかくポインタの活用の仕方としてポインタ渡しと呼ぶことを否定するわけではない。)
549デフォルトの名無しさん (ワッチョイ a95f-q+67)
垢版 |
2021/09/13(月) 17:58:15.13ID:+BvkCNRX0
C言語は昔からアドレス渡しと言っているけどな。
550デフォルトの名無しさん (ワッチョイ a95f-q+67)
垢版 |
2021/09/13(月) 18:00:26.00ID:+BvkCNRX0
ポインタ渡しだとポインタ変数限定みたいに捉えてしまいそうだなw
551デフォルトの名無しさん (ワッチョイ 5985-dgdc)
垢版 |
2021/09/13(月) 20:02:35.33ID:LTFifztG0
「アドレス渡し」の方がアセンブラに近い
ただしポインタ型のサイズで加減するアドレッシング機能付き
「ポインタ渡し」はPASCAL由来やろ

あと配列のサイズも一緒に渡す機能は付いてたらよかったのになーともたまに思う
552デフォルトの名無しさん (ワッチョイ a95f-q+67)
垢版 |
2021/09/13(月) 21:18:13.15ID:+BvkCNRX0
OSを作るために作られたのに
2021/09/14(火) 01:01:51.69ID:cEQHQvCwa
ポインタには型があるから、オブジェクトの大きさも、structへのポインタなら、各メンバへのオフセットや大きさやら…
554デフォルトの名無しさん (ワッチョイ a95f-q+67)
垢版 |
2021/09/14(火) 06:05:05.77ID:48wIBTET0
>>553
型はあってないようなもの
2021/09/14(火) 07:07:50.62ID:TY9EyEr50
カーニハンは辛辣なPascal批判の論文書いてるね
2021/09/14(火) 07:08:21.19ID:TY9EyEr50
これ
http://www.lysator.liu.se/c/bwk-on-pascal.html
2021/09/14(火) 07:16:50.67ID:0vgLnSzd0
>>556
論文って開いてみたら、タイトルクソワロタ。
2021/09/14(火) 07:26:42.56ID:TY9EyEr50
よかったね
2021/09/14(火) 09:36:35.35ID:Hja/bGISM
卒論のテーマはこれで決まりだな
2021/09/14(火) 10:50:21.10ID:5Y/jembp0
アドレス私って、
b = a;
c = a;
とかやってて、a=0にすると、bもcも0になるってこと?
2021/09/14(火) 11:31:36.84ID:TY9EyEr50
それは参照だ
C++のな

Cでやるなら
#define b a
#define c a
562デフォルトの名無しさん (エムゾネ FF0a-dgdc)
垢版 |
2021/09/14(火) 13:58:37.43ID:eQ96wDaCF
>>557
Matz の論文は I hate C++ だぞω
563デフォルトの名無しさん (ワッチョイ a95f-q+67)
垢版 |
2021/09/14(火) 15:48:56.00ID:48wIBTET0
>>556
性能重視の部分は考え方の違いだな。UNIXを作るにあたって不要な部分を取り除いた結果がC。
564デフォルトの名無しさん (ワッチョイ a95f-q+67)
垢版 |
2021/09/14(火) 15:51:55.83ID:48wIBTET0
>>560
メモリのアドレスを直接、渡すから、呼び出し元の領域をそういうふうに直接、触ることになる。
2021/09/14(火) 17:38:29.69
私は pascal は好きなんですけど‥‥
566デフォルトの名無しさん (ワッチョイ eaad-pW2y)
垢版 |
2021/09/14(火) 23:42:22.10ID:/drSXHoF0
Delphiは昔使ってたな。拡張しまくったPascalというかなんというか。
567デフォルトの名無しさん (ワッチョイ a95f-q+67)
垢版 |
2021/09/15(水) 00:41:20.00ID:h1CB84tY0
アセンブラのようなことができた方がいいというのが出発点だからなあ
2021/09/15(水) 01:36:14.40ID:/JHaU2Oz0
今でこそ C は低レイヤ寄りと見做されるけど「高級言語で OS を書きたい」というモチベーションから作られている。
おそらく当時の感覚からすればむしろアセンブラ的な世界からの脱却だったんじゃないかな。
歴史的経緯はある程度は記録を辿れるけど時代を背景にした「感覚」というのは現代人からはなかなか掴みづらくてあくまでも想像だけど。
569デフォルトの名無しさん (ワッチョイ a95f-q+67)
垢版 |
2021/09/15(水) 05:11:14.87ID:h1CB84tY0
おおざっぱに言うとアセンブラの見た目を変更したのがC
2021/09/15(水) 07:08:27.66ID:+suq2kti0
アセンブラの無駄のなさと、高級言語の移植性の、両取りを狙う試みだね
2021/09/15(水) 14:05:30.69
それはどうでしょうか‥
turbo c の asm 文抜きのいきなりインラインはよく使っていましたが、そんな turbo c でもキャリーフラグを直接使えなかった気がします、そんな記憶がふつふつと
2021/09/15(水) 14:16:20.72ID:+suq2kti0
ローテート命令はキャリーありの9bit循環とキャリーなしの8bit循環があるから
そこまで言語では面倒見きれなかったってだけ
ステータスレジスタを陽に記述すると移植性なくなるが
そんなことしなくても当時のUNIXの95%を記述できたしな
2021/09/15(水) 15:25:36.81ID:23VOu0KJM
#ifdef flagresister取得可能(ならば)
専用式
#elseif
~
2021/09/15(水) 15:31:31.69ID:23VOu0KJM
みたいな専用式を言語仕様に含めたやり方も出来たかもしれん
当時の演算能力内でwrite once,RA かつアカデミック感目指してomit しちゃったんかな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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