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/
前
http://echo.2ch.net/test/read.cgi/tech/1487757355/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 140 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8c-8ulf)
2017/05/11(木) 22:20:03.99ID:cn414UR90753デフォルトの名無しさん (ワイモマー MMbf-VsG/)
2017/07/07(金) 23:25:06.38ID:w6YiLhhJM うんうん…うん?
int a; // int
int *b; // intへのポインタ 型
int **c; // intへのポインタへのポインタ 型
ここまでわかる?
ここまで変数宣言時に*くっつくと型が変わる例
(こっち側考えないで) = c; // intへのポインタへのポインタ 型
(こっち側考えないで) = *c; // intへのポインタ 型
(こっち側考えないで) = **c; // int 型
ここまでわかる?
ここまで、式の途中で変数に*くっついてると型が変わる例
これだけのこと
int a; // int
int *b; // intへのポインタ 型
int **c; // intへのポインタへのポインタ 型
ここまでわかる?
ここまで変数宣言時に*くっつくと型が変わる例
(こっち側考えないで) = c; // intへのポインタへのポインタ 型
(こっち側考えないで) = *c; // intへのポインタ 型
(こっち側考えないで) = **c; // int 型
ここまでわかる?
ここまで、式の途中で変数に*くっついてると型が変わる例
これだけのこと
754デフォルトの名無しさん (ワイモマー MMbf-VsG/)
2017/07/07(金) 23:26:09.89ID:w6YiLhhJM755デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/07(金) 23:34:50.66ID:a0p8X5TA0 >>754
いや、マジでCの文法は直感的じゃないんだよ。(プログラミング時の論理イメージとずれる)
俺的には(既に書いたが)以下のほうが良かったと思うよ。
(void (*)(int)) signal(int sig, void (*func)(int)); // これで関数ポインタ宣言させろ
int* p, q, r; // これは全部ポインタ宣言にさせろ
とはいえ限られた記号を使って上手くそれなりに整合性良く纏めてあるとは思うが。
いや、マジでCの文法は直感的じゃないんだよ。(プログラミング時の論理イメージとずれる)
俺的には(既に書いたが)以下のほうが良かったと思うよ。
(void (*)(int)) signal(int sig, void (*func)(int)); // これで関数ポインタ宣言させろ
int* p, q, r; // これは全部ポインタ宣言にさせろ
とはいえ限られた記号を使って上手くそれなりに整合性良く纏めてあるとは思うが。
756デフォルトの名無しさん (ワッチョイ 9711-1B52)
2017/07/07(金) 23:37:20.26ID:EA9An3gB0 宣言で ポインタ型を示す時 *
ポインタの指し先の実体を求める時 *
変数のポインタを求める時 &
上2つが文法的にやっかいかな? 同じ記号使ってるし
ポインタの指し先の実体を求める時 *
変数のポインタを求める時 &
上2つが文法的にやっかいかな? 同じ記号使ってるし
757デフォルトの名無しさん (ワッチョイ 97c1-1B52)
2017/07/07(金) 23:38:35.07ID:9n40FStT0 >>753
多分その基本は理解できてると思います
ただstruct LIST *newcellがどうして**ptrと同格に扱われてるのかよく解らないというか・・・
*ptrでアドレスのやり取りできるんじゃないのって思ってしまうんです
でも実際は型が違う
どうして?っという感じです。
多分その基本は理解できてると思います
ただstruct LIST *newcellがどうして**ptrと同格に扱われてるのかよく解らないというか・・・
*ptrでアドレスのやり取りできるんじゃないのって思ってしまうんです
でも実際は型が違う
どうして?っという感じです。
758デフォルトの名無しさん (ワイモマー MMbf-VsG/)
2017/07/07(金) 23:45:37.17ID:w6YiLhhJM >>757
ポインタのことをアドレスだと考えるのはやめたほうが良い
ポインタは単なるアドレスなんかじゃないからね
そこには必ず型ってもんがあるの「〜へのポインタ」
ってなるからこそ色々できるんだけどその話は今は省略
> struct LIST *newcellがどうして**ptrと同格に扱われてる
同格に扱うってどういうこと?
ポインタのことをアドレスだと考えるのはやめたほうが良い
ポインタは単なるアドレスなんかじゃないからね
そこには必ず型ってもんがあるの「〜へのポインタ」
ってなるからこそ色々できるんだけどその話は今は省略
> struct LIST *newcellがどうして**ptrと同格に扱われてる
同格に扱うってどういうこと?
759デフォルトの名無しさん (ワッチョイ 97c1-1B52)
2017/07/07(金) 23:49:58.38ID:9n40FStT0760デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/07(金) 23:53:32.79ID:a0p8X5TA0761デフォルトの名無しさん (ワッチョイ 9711-1B52)
2017/07/07(金) 23:59:10.17ID:EA9An3gB0 みてないけど >>728 の第一引数は 引数の書き換え結果を呼び出し元に伝えたいケースなんじゃないの?
int の値を受けて その値の1大きい値を返す
引数で受けて書き換え結果を戻り値で返すなら
int func0(int arg) { return arg + 1; }
引数で受けて、引数の指し先を書き換えることで書き換え結果を呼び出し元に伝える
void func1(int* arg) { *arg = (*arg)+1; }
※ なお Cには参照型というのがないので
※ void func2(int arg) { arg = arg+1; } としても呼び出し元には 1増えた値が伝わらない
int a = 1;
a = func0(a); printf("%d\n", a); // a = 2 となる
func1(&a); printf("%d\n", a); // a = 3 となる
func2(a); printf("%d\n", a); // a = 3 のまま
int の値を受けて その値の1大きい値を返す
引数で受けて書き換え結果を戻り値で返すなら
int func0(int arg) { return arg + 1; }
引数で受けて、引数の指し先を書き換えることで書き換え結果を呼び出し元に伝える
void func1(int* arg) { *arg = (*arg)+1; }
※ なお Cには参照型というのがないので
※ void func2(int arg) { arg = arg+1; } としても呼び出し元には 1増えた値が伝わらない
int a = 1;
a = func0(a); printf("%d\n", a); // a = 2 となる
func1(&a); printf("%d\n", a); // a = 3 となる
func2(a); printf("%d\n", a); // a = 3 のまま
762デフォルトの名無しさん (ワイモマー MMbf-VsG/)
2017/07/08(土) 00:09:59.34ID:cmJEhNfHM763デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/08(土) 00:21:10.89ID:t7BT1SeM0 誰も見てないのが笑える。俺もだがw
質問者は分かってないようだが、
> 「struct LIST」型の変数の値を「struct LIST *」型の変数に自動的に変換することはできない」 (>>728)
ってのは要するに & か * を忘れたときの典型的なエラーで、
隣に人がいたら「サーセンwwwww」とか言って誤魔化して10秒で修正して再コンパイルする、
ただのtypo。
みんなこれを知ってるから誰もソースなんて見に行きません。
newcell?知らんがな。ソース?見るまでもなく & か * 忘れてるだけだろ、さっさと直せ、って感じ。
とはいえ、エアプがいないのはいいことだね。
質問者は分かってないようだが、
> 「struct LIST」型の変数の値を「struct LIST *」型の変数に自動的に変換することはできない」 (>>728)
ってのは要するに & か * を忘れたときの典型的なエラーで、
隣に人がいたら「サーセンwwwww」とか言って誤魔化して10秒で修正して再コンパイルする、
ただのtypo。
みんなこれを知ってるから誰もソースなんて見に行きません。
newcell?知らんがな。ソース?見るまでもなく & か * 忘れてるだけだろ、さっさと直せ、って感じ。
とはいえ、エアプがいないのはいいことだね。
764デフォルトの名無しさん (ワッチョイ 97c1-1B52)
2017/07/08(土) 00:30:18.82ID:P0Vqm6hU0 もしかしてvoid foo1(struct LIST *ptr) {struct LIST *b = ptr;}の場合に*ptrを使うとそれはアドレスを渡すのではなく
実数として渡してしまうから論理破綻しているということですか?
実数として渡してしまうから論理破綻しているということですか?
765デフォルトの名無しさん (ワイモマー MMbf-VsG/)
2017/07/08(土) 00:40:47.53ID:cmJEhNfHM やっぱ>>756さんの言ってることが問題な気がする
そういえば俺も最初はそこで混乱あったような気がする
int a = 100;
int *b = &a; // 1) intへのポインタ型のbに、intへのポインタを代入している
*b = 200; // 2) bが指してたint型の領域に、200を代入
printf("%d %d", a, *b);
ここなんだよなぁ
1)と2)が見た目似てるくせにやってることがテラ違うという
なんか懐かしいわ
そういえば俺も最初はそこで混乱あったような気がする
int a = 100;
int *b = &a; // 1) intへのポインタ型のbに、intへのポインタを代入している
*b = 200; // 2) bが指してたint型の領域に、200を代入
printf("%d %d", a, *b);
ここなんだよなぁ
1)と2)が見た目似てるくせにやってることがテラ違うという
なんか懐かしいわ
766デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/08(土) 00:41:41.51ID:t7BT1SeM0 >>761
× > ※ なお Cには参照型というのがないので
○ 参照が必要な場合は、ポインタを使って明示的に参照を渡す
だね。そしてC++の「参照」とJava等の「参照型」の物理的意味が異なるから
余計に話がおかしくなり、辻褄を合わせるために
「参照の値渡し(キリッ」とか言い出すという。
とりあえず生Cで「参照」という言葉は使われてないでしょ。
それを持ち出すのは余計に混乱するだけ。
K&R確認してみたが、
「Fortranのようなcall by referenceとは違い」のところでしか出て来ない。
これのおかげかFortranは再帰できない糞言語だった。(と聞いている)
そんな糞とは違う、まさに「ザクとは違うのだよ、ザクとは」の文脈で使われてる。
見た目だけ参照型が欲しければtypedefすればいいだけ。
(普通は余計に分かりにくくなるからしないが)
それをここで持ち出す意味が分からんね。
× > ※ なお Cには参照型というのがないので
○ 参照が必要な場合は、ポインタを使って明示的に参照を渡す
だね。そしてC++の「参照」とJava等の「参照型」の物理的意味が異なるから
余計に話がおかしくなり、辻褄を合わせるために
「参照の値渡し(キリッ」とか言い出すという。
とりあえず生Cで「参照」という言葉は使われてないでしょ。
それを持ち出すのは余計に混乱するだけ。
K&R確認してみたが、
「Fortranのようなcall by referenceとは違い」のところでしか出て来ない。
これのおかげかFortranは再帰できない糞言語だった。(と聞いている)
そんな糞とは違う、まさに「ザクとは違うのだよ、ザクとは」の文脈で使われてる。
見た目だけ参照型が欲しければtypedefすればいいだけ。
(普通は余計に分かりにくくなるからしないが)
それをここで持ち出す意味が分からんね。
767デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/08(土) 00:46:30.43ID:t7BT1SeM0768デフォルトの名無しさん (ワッチョイ 9711-1B52)
2017/07/08(土) 00:47:46.49ID:gQ2FFwnX0769デフォルトの名無しさん (ワッチョイ 976f-qSys)
2017/07/08(土) 00:50:34.05ID:YHFGbdic0 >>764
関数の引数で渡されるのは"同値のコピー"なのよ
void func1(int b) {...}
void func2(void) {
int a = 100;
func1(a);
}
func2からaを引数として関数func1に渡すと、func1では「aと同じ内容のコピーb」が用意される
func1内でどれだけbを書き換えようが所詮コピーなのでfunc1を抜ければbは破棄されaにはなんら影響がない
a自体を書き換えさせたいならaの内容ではなくaの場所を教える必要がある
それを実現するのがポインタで上の例なら
void func1(int *b) {...}
void func2(void) {
int a = 100;
func1(&a);
}
となりキミの当初の質問にも同じことが言える
*が何個重なろうが理由は同じ
関数の引数で渡されるのは"同値のコピー"なのよ
void func1(int b) {...}
void func2(void) {
int a = 100;
func1(a);
}
func2からaを引数として関数func1に渡すと、func1では「aと同じ内容のコピーb」が用意される
func1内でどれだけbを書き換えようが所詮コピーなのでfunc1を抜ければbは破棄されaにはなんら影響がない
a自体を書き換えさせたいならaの内容ではなくaの場所を教える必要がある
それを実現するのがポインタで上の例なら
void func1(int *b) {...}
void func2(void) {
int a = 100;
func1(&a);
}
となりキミの当初の質問にも同じことが言える
*が何個重なろうが理由は同じ
770デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/08(土) 01:02:46.45ID:t7BT1SeM0 つか質問者はC言語以外には何ができるんだ?
>>768
なんか噛み付いた感じになってすまんかった。
他言語ができれば「参照」の説明は意味はある。
この可能性を忘れていた。
ただまあ、Cはやっぱりその辺のところが古くて、
現実的に構造体の値渡しなんてほぼやらないし、(つか、必要性がない)
他言語みたいに「構造体は参照渡し」で固定してよかったと思うよ。
まだ黎明期でその辺のプログラミング作法自体がなかった時代だから無理ではあるが。
>>768
なんか噛み付いた感じになってすまんかった。
他言語ができれば「参照」の説明は意味はある。
この可能性を忘れていた。
ただまあ、Cはやっぱりその辺のところが古くて、
現実的に構造体の値渡しなんてほぼやらないし、(つか、必要性がない)
他言語みたいに「構造体は参照渡し」で固定してよかったと思うよ。
まだ黎明期でその辺のプログラミング作法自体がなかった時代だから無理ではあるが。
771デフォルトの名無しさん (ワッチョイ 97c1-1B52)
2017/07/08(土) 01:26:26.98ID:P0Vqm6hU0772デフォルトの名無しさん (ワッチョイ 9711-1B52)
2017/07/08(土) 01:30:54.87ID:gQ2FFwnX0773デフォルトの名無しさん (ワッチョイ 9fd7-Srbl)
2017/07/08(土) 01:43:27.53ID:zuW254gH0 >>728
俺もまだ見てないのだがw
**ptrを*ptrにしてもアドレスを渡すという役目はできます。その通りです。
void *ptrでもいいです。コンパイルエラーになるのはその後なのです。
あくまで処理に必要なのは struct LIST ** なので、キャストするなどすればコンパイルは通ります。
void *ptrで受けて struct LIST **_ptr = ptr; と代入して、以降_ptrを使うという方法もあります。
俺もまだ見てないのだがw
**ptrを*ptrにしてもアドレスを渡すという役目はできます。その通りです。
void *ptrでもいいです。コンパイルエラーになるのはその後なのです。
あくまで処理に必要なのは struct LIST ** なので、キャストするなどすればコンパイルは通ります。
void *ptrで受けて struct LIST **_ptr = ptr; と代入して、以降_ptrを使うという方法もあります。
774デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/08(土) 01:57:31.44ID:t7BT1SeM0 >>756
>>765
一応それは違うというほど違わなくて、だからって共通でいいのか?とも思うが、
そこを共通にしてしまっているから宗教論争になってる。
同様なものに「配列と配列へのポインタ」がある。
俺はやっぱり、
int* b = &a; // int*型(=intへのポインタ型)の変数 b に a のアドレスを代入
の方が好きだし、実際こう書く奴の方が多い。(と俺は思っている)
ただ、Cの文法的には765の記述が正しく、*はintではなくbと結合する。
ただし解釈は異なり、それはあくまでデリファレンスであり「宣言のときだけは別」ではない。
int a = 100;
int *b = &a; // 1回デリファレンスすると int になる b という変数に a のアドレスを代入
*b = 200; // bを1回デリファレンスしたもの(つまり100)に200を上書き
K&Rには*は逆参照演算子としか書いておらず、説明文は
> int *ip;
> は記号表現として、*ipという表現がintであることを表す。
となっている。
>>765
一応それは違うというほど違わなくて、だからって共通でいいのか?とも思うが、
そこを共通にしてしまっているから宗教論争になってる。
同様なものに「配列と配列へのポインタ」がある。
俺はやっぱり、
int* b = &a; // int*型(=intへのポインタ型)の変数 b に a のアドレスを代入
の方が好きだし、実際こう書く奴の方が多い。(と俺は思っている)
ただ、Cの文法的には765の記述が正しく、*はintではなくbと結合する。
ただし解釈は異なり、それはあくまでデリファレンスであり「宣言のときだけは別」ではない。
int a = 100;
int *b = &a; // 1回デリファレンスすると int になる b という変数に a のアドレスを代入
*b = 200; // bを1回デリファレンスしたもの(つまり100)に200を上書き
K&Rには*は逆参照演算子としか書いておらず、説明文は
> int *ip;
> は記号表現として、*ipという表現がintであることを表す。
となっている。
775デフォルトの名無しさん (ワッチョイ 97b6-zXdO)
2017/07/08(土) 06:16:14.83ID:utlt5XjQ0 >>774
自分もC言語覚えたての頃は、「int *」型という風に見ていた。
ポインタがあるんだからポインタを表す型がある方がわかりやすかった
イントロダクションとしてはポインタ型があるとみなしていいと思う。
でも言語仕様はK&Rのとおりで、初心者になる頃には正しく
理解できるほうがいい
自分もC言語覚えたての頃は、「int *」型という風に見ていた。
ポインタがあるんだからポインタを表す型がある方がわかりやすかった
イントロダクションとしてはポインタ型があるとみなしていいと思う。
でも言語仕様はK&Rのとおりで、初心者になる頃には正しく
理解できるほうがいい
776デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/08(土) 07:24:02.64ID:t7BT1SeM0 >>775
確認してみたが、ほとんどのサイトは int* p; ではなく int *p; だった。
有名どころではロベールが前者だが、他はほぼ全部後者。
C#は前者に仕様変更されている。
> int* p1, p2, p3; // Ok
> int *p1, *p2, *p3; // Invalid in C#
> https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/unsafe-code-pointers/pointer-types
特にint*型という理解で苦労した覚えはないが、(int *p, *q, *r;のみ例外)
文法的にはどうしても上記が引っかかるので説明サイトはほぼ全部後者になったのかな?
で、ヘルスバーグは糞だと判断して変更したと。
確認してみたが、ほとんどのサイトは int* p; ではなく int *p; だった。
有名どころではロベールが前者だが、他はほぼ全部後者。
C#は前者に仕様変更されている。
> int* p1, p2, p3; // Ok
> int *p1, *p2, *p3; // Invalid in C#
> https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/unsafe-code-pointers/pointer-types
特にint*型という理解で苦労した覚えはないが、(int *p, *q, *r;のみ例外)
文法的にはどうしても上記が引っかかるので説明サイトはほぼ全部後者になったのかな?
で、ヘルスバーグは糞だと判断して変更したと。
777デフォルトの名無しさん (ワッチョイ 7732-zXdO)
2017/07/08(土) 07:33:48.69ID:BPlXEDNj0 型に*を付けるのはC++の文化じゃないかな
Cだと識別子に付けるのが一般的だと思う
Cだと識別子に付けるのが一般的だと思う
778デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/08(土) 07:46:29.64ID:t7BT1SeM0779デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/08(土) 08:10:56.15ID:hvS2v9rj0 int*p;
int * q;
は少数派か
int * q;
は少数派か
780デフォルトの名無しさん (ワイモマー MMbf-VsG/)
2017/07/08(土) 09:38:58.20ID:cmJEhNfHM781デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/08(土) 09:53:29.46ID:t7BT1SeM0 >>772
>>780
ちなみにそれは何が分かりやすくなるんだ?
というか俺にはそれでどう勘違いしている奴を正しく導けるのか分からない。
ただし以下サイトでもそう言っているから、一部の人間に効果があるのは確実だとは思うが。
> ポインタの文法を説明するときに大切なことは、変数の宣言時初期化構文を見せないことです。
> http://pg-kura.hatenablog.com/entry/20120611/1339376977
>>780
ちなみにそれは何が分かりやすくなるんだ?
というか俺にはそれでどう勘違いしている奴を正しく導けるのか分からない。
ただし以下サイトでもそう言っているから、一部の人間に効果があるのは確実だとは思うが。
> ポインタの文法を説明するときに大切なことは、変数の宣言時初期化構文を見せないことです。
> http://pg-kura.hatenablog.com/entry/20120611/1339376977
782デフォルトの名無しさん (スップ Sd3f-AoMt)
2017/07/08(土) 13:09:09.14ID:/+Nzxl5ld 右辺値、左辺値の違いの分からんやつに
ポインタの正確な理解、運用は永遠に出来んよ。
ポインタの正確な理解、運用は永遠に出来んよ。
783デフォルトの名無しさん (ワッチョイ b7e3-rvkC)
2017/07/08(土) 13:22:39.20ID:8y6q1o6T0 ポインタの話は別としても、
変数を宣言時に初期化するのは良い方法だと思うが
変数を宣言時に初期化するのは良い方法だと思うが
784デフォルトの名無しさん (スプッッ Sd8b-AoMt)
2017/07/08(土) 13:48:34.76ID:I4XLIasbd int* a, b; が int *a, *b;と等価だと思ってるやつw
C++の流儀はこの誤解を助長する
C++の流儀はこの誤解を助長する
785デフォルトの名無しさん (ワッチョイ 9fea-rvkC)
2017/07/08(土) 14:16:33.13ID:POxX89aN0 *がintにかかるか、aにかかるかだね
intにかかる方がシステマティックではあるよね
intにかかる方がシステマティックではあるよね
>>785
宣言時と使用時で優先度が変わるのは好ましくない
宣言時と使用時で優先度が変わるのは好ましくない
787デフォルトの名無しさん (ワッチョイ 977f-KuRC)
2017/07/08(土) 15:49:17.90ID:lUvEvZ3o0 別物なんだから同じにする必要はないな。
788デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/08(土) 18:26:01.68ID:znuCL+sZ0789デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/08(土) 18:47:08.89ID:znuCL+sZ0 >>787
わざわざ同じでなくす必要はもっとない
わざわざ同じでなくす必要はもっとない
>>787
そうやって文法を増やすのは好ましくない
そうやって文法を増やすのは好ましくない
791デフォルトの名無しさん (ワッチョイ 97c1-1B52)
2017/07/08(土) 19:20:19.10ID:UbbmKSpA0792デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/08(土) 19:40:16.15ID:t7BT1SeM0793デフォルトの名無しさん (ワッチョイ 9f8f-gRQY)
2017/07/08(土) 19:47:16.06ID:HDF4cM220 >>792
Cに全く関係ないってのは言いすぎだけど、ポインタには関係ないのはその通り。
Cに全く関係ないってのは言いすぎだけど、ポインタには関係ないのはその通り。
794デフォルトの名無しさん (ワッチョイ 9f8f-gRQY)
2017/07/08(土) 19:50:13.79ID:HDF4cM220 ん?
ああ、でもコンストラクタシステムがない以上、気にするところではないのか。
失礼、Cには確かに関係ないね。
ああ、でもコンストラクタシステムがない以上、気にするところではないのか。
失礼、Cには確かに関係ないね。
795デフォルトの名無しさん (ワイモマー MMbf-VsG/)
2017/07/08(土) 20:40:01.20ID:cmJEhNfHM >>791
|
/ ̄ ̄ ̄\
/ .\
.| .∧ |
.| ./川\ |
\/┏┷┓\/
。┃お┃。
゙ # ゚┃め┃; 。
; 。 ・┃で┃・ #
。 ;゙ #┃と┃# 。
゙・# : ┃う┃。 ; 。
.;:# ゙。゚┃!┃゚ 。 #
; 。;; ゙.:。┗┯┛。 # : #
∧_∧ │
. ( ´・ω・)│
:/ つΦ
|
/ ̄ ̄ ̄\
/ .\
.| .∧ |
.| ./川\ |
\/┏┷┓\/
。┃お┃。
゙ # ゚┃め┃; 。
; 。 ・┃で┃・ #
。 ;゙ #┃と┃# 。
゙・# : ┃う┃。 ; 。
.;:# ゙。゚┃!┃゚ 。 #
; 。;; ゙.:。┗┯┛。 # : #
∧_∧ │
. ( ´・ω・)│
:/ つΦ
796デフォルトの名無しさん (ワッチョイ 9f11-d65a)
2017/07/08(土) 21:14:44.01ID:H/yQ/C3x0797デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/08(土) 21:31:33.01ID:znuCL+sZ0 >>796
おまえの定義では、どうなっていることを「組み込まれている」というんだ?
たとえば、
float a = sizeof(int);
これの動作過程の途中に生じる整数型は、コンパイラには組み込まれていないのか?
だとするならば、コンパイラは標準変換の規定に「準拠」することができないぞ
さあ答えろ
おまえの定義では、どうなっていることを「組み込まれている」というんだ?
たとえば、
float a = sizeof(int);
これの動作過程の途中に生じる整数型は、コンパイラには組み込まれていないのか?
だとするならば、コンパイラは標準変換の規定に「準拠」することができないぞ
さあ答えろ
798デフォルトの名無しさん (ワッチョイ 9f11-d65a)
2017/07/08(土) 22:10:39.54ID:H/yQ/C3x0799デフォルトの名無しさん (ワッチョイ b7db-TZYB)
2017/07/09(日) 05:03:16.31ID:W7Itegl80 組み込まれていない:stddef.hで定義されてるんだから組み込み型ではない
組み込まれてる:unsigned intかunsigned longかunsigned long longか知らんけど組み込まれてるだろ
ってことかすぃら?
組み込まれてる:unsigned intかunsigned longかunsigned long longか知らんけど組み込まれてるだろ
ってことかすぃら?
800デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/09(日) 05:59:52.53ID:DwPx7o2S0801デフォルトの名無しさん (ドコグロ MMbf-d65a)
2017/07/09(日) 06:59:17.53ID:ouwdb2hLM802デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/09(日) 07:40:42.30ID:DwPx7o2S0803デフォルトの名無しさん (ドコグロ MMdf-d65a)
2017/07/09(日) 13:14:16.68ID:Uu/MlKNRM804デフォルトの名無しさん (アウアウカー Sa2b-jwws)
2017/07/09(日) 14:30:35.01ID:1GYqbN7ba アホだのバカだの子供みてーなケンカすんなw
805デフォルトの名無しさん (ワッチョイ 9f6e-4BC7)
2017/07/09(日) 15:09:59.91ID:ZJXpL8k20 見苦しい喧嘩して何になるんだ?
806デフォルトの名無しさん (ドコグロ MMdf-d65a)
2017/07/09(日) 16:46:00.20ID:Uu/MlKNRM807デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/09(日) 18:27:56.89ID:DwPx7o2S0808デフォルトの名無しさん (ワッチョイ 9f11-d65a)
2017/07/09(日) 18:49:12.76ID:bCABOrL10810デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/09(日) 19:06:47.55ID:DwPx7o2S0 俺はしつこい
おまえの定義では、どうなっていることを「組み込まれている」というんだ?
たとえば、
float a = sizeof(int);
これの動作過程の途中に生じる整数型は、コンパイラには組み込まれていないのか?
だとするならば、コンパイラは標準変換の規定に「準拠」することができないぞ
おまえの定義では、どうなっていることを「組み込まれている」というんだ?
たとえば、
float a = sizeof(int);
これの動作過程の途中に生じる整数型は、コンパイラには組み込まれていないのか?
だとするならば、コンパイラは標準変換の規定に「準拠」することができないぞ
811デフォルトの名無しさん (スップ Sdbf-0UkT)
2017/07/09(日) 19:08:38.13ID:6MYOcrZ9d 他でやれ
812デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/09(日) 19:09:15.82ID:DwPx7o2S0 動作の実装と識別子の導入の区別もつかないアホが
どでかいブーメランほってやがるぜw
どでかいブーメランほってやがるぜw
813デフォルトの名無しさん (ワッチョイ 9f11-d65a)
2017/07/09(日) 19:22:24.50ID:bCABOrL10814デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/09(日) 19:42:37.88ID:DwPx7o2S0815デフォルトの名無しさん (ワッチョイ 9f11-d65a)
2017/07/09(日) 19:52:27.11ID:bCABOrL10 日本語が理解できてないんだろうな...
出してきた「意図」もわからんものにどう突っ込めと w
sizeof が size_t 型の値を返すのは当たり前で float とかワケわからんこと言われても困惑するだけ
出してきた「意図」もわからんものにどう突っ込めと w
sizeof が size_t 型の値を返すのは当たり前で float とかワケわからんこと言われても困惑するだけ
816デフォルトの名無しさん (ワッチョイ 9711-1B52)
2017/07/09(日) 20:27:57.13ID:aZRl9YVa0 仮に c++ の typeid のようなものが実装されてたら何を返すんだろう?
size_t に割あたってる整数の型であって size_t そのものは返さない気もするが
size_t に割あたってる整数の型であって size_t そのものは返さない気もするが
817デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/09(日) 21:16:46.06ID:DwPx7o2S0818デフォルトの名無しさん (ワッチョイ ffa2-KuRC)
2017/07/10(月) 00:20:27.86ID:LlABZZSK0 おいQZごみ回答はやめとけ
819デフォルトの名無しさん (ワッチョイ 9f11-d65a)
2017/07/10(月) 05:01:56.54ID:3theqA1Q0820デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/10(月) 05:25:51.74ID:JKtUlR/N0821デフォルトの名無しさん (フリッテル MM4f-/fb0)
2017/07/10(月) 06:04:11.75ID:1stf4kaQM アスペ同士の会話は訳がわからんな
822デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/10(月) 08:34:02.15ID:JKtUlR/N0 >>821
おまえも同類だ
おまえも同類だ
823デフォルトの名無しさん (ドコグロ MM8b-Ra9a)
2017/07/10(月) 09:14:14.93ID:ssjcNeI9M はぁ?お前だろ。
ってか誰だよ?
オレは誰だよ?
ってか誰だよ?
オレは誰だよ?
824デフォルトの名無しさん (スップ Sd3f-0UkT)
2017/07/10(月) 09:23:56.47ID:NWwU0Zhtd ここはしょうがくせいのたまりば?
825デフォルトの名無しさん (ワッチョイ 174b-R6aQ)
2017/07/10(月) 09:32:25.86ID:FFzIEFLy0 あー!授業中に2chしたらいーけないんだー!
826デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/10(月) 09:46:21.35ID:JKtUlR/N0827デフォルトの名無しさん (ワッチョイ 9f11-d65a)
2017/07/10(月) 10:48:23.17ID:3theqA1Q0828デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/10(月) 11:38:17.15ID:JKtUlR/N0829デフォルトの名無しさん (ワッチョイ 9f6f-WUUN)
2017/07/10(月) 11:59:47.48ID:uinqb5xX0 底が見えてきたな
830デフォルトの名無しさん (ワッチョイ ff1c-2mCk)
2017/07/10(月) 12:06:39.12ID:JKtUlR/N0 国会にもよく似たゴミが来てるぞ
http://snjpn.net/archives/24782
http://snjpn.net/archives/24782
831デフォルトの名無しさん (ワッチョイ 5711-rvkC)
2017/07/11(火) 18:55:41.44ID:dSS1j36W0 [][Tebla][]
}
000-"Yob*RtStrike"[%Kil\]MO,fla>%$9999VLTS
001-GYORLith"0\R"/"ESUBA"%$%
HADO-"EM","L","O","NU"###END
}
000-"Yob*RtStrike"[%Kil\]MO,fla>%$9999VLTS
001-GYORLith"0\R"/"ESUBA"%$%
HADO-"EM","L","O","NU"###END
832デフォルトの名無しさん (ワッチョイ 2a6c-S4qQ)
2017/07/13(木) 11:06:39.28ID:BCHZTwvD0 Makefileで、
.PHONY: doc
doc:
doxygen
みたいに毎回.PHONY書くのあほっぽいんだけど、1行にならん?
.PHONY: doc
doc:
doxygen
みたいに毎回.PHONY書くのあほっぽいんだけど、1行にならん?
833デフォルトの名無しさん (ワッチョイ 4a69-1jjp)
2017/07/13(木) 12:01:26.06ID:LenxTGcs0 C言語でインラインアセンブラが使える文法の違いってどこかに解説ありますか?
asm{}文の表記のしかたが違う
asm{}文の表記のしかたが違う
834デフォルトの名無しさん (スッップ Sd70-YkGU)
2017/07/13(木) 13:21:33.92ID:b1PvI/zld コンパイラの説明書!
835デフォルトの名無しさん (ワッチョイ 8a1c-UU3S)
2017/07/13(木) 16:20:17.23ID:PWiSD9vP0 ISO/IEC9899:2011で、asmについて書かれているのは、全文中でたったのこれだけ
J. 5.10 The asm keyword
The asm keyword may be used to insert assembly language directly into the translator output (6.8). The most common implementation is via a statement of the form:
asm ( character-string-literal );
asmはたぶんコンパイル結果にアセンブラを生中出しするために使われる
たいていこうなっている
asm(文字列リテラル);
つまりこれ以上はGNUやM$に聞けってこと
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html
https://msdn.microsoft.com/ja-jp/library/4ks26t93.aspx
J. 5.10 The asm keyword
The asm keyword may be used to insert assembly language directly into the translator output (6.8). The most common implementation is via a statement of the form:
asm ( character-string-literal );
asmはたぶんコンパイル結果にアセンブラを生中出しするために使われる
たいていこうなっている
asm(文字列リテラル);
つまりこれ以上はGNUやM$に聞けってこと
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html
https://msdn.microsoft.com/ja-jp/library/4ks26t93.aspx
836デフォルトの名無しさん (ワッチョイ 5c7a-KmKO)
2017/07/13(木) 17:03:33.50ID:32wk5maY0 そもそもの仕様として、
構造体のメンバーの参照に '.' と '->' を
使い分ける必要性がわからないんだけど、なぜ?
間接参照だと意識しろっていう教育的な意味以外思い付かん
構造体のメンバーの参照に '.' と '->' を
使い分ける必要性がわからないんだけど、なぜ?
間接参照だと意識しろっていう教育的な意味以外思い付かん
837デフォルトの名無しさん (ワッチョイ 386f-/Dy+)
2017/07/13(木) 17:24:51.23ID:9amqftWh0 (*hoge).piyo
hoge->piyo
どっちでもいいけど後者の方が簡単というだけの話
hoge->piyo
どっちでもいいけど後者の方が簡単というだけの話
838デフォルトの名無しさん (ワッチョイ 8a1c-UU3S)
2017/07/13(木) 18:47:04.29ID:PWiSD9vP0 そういうことじゃなく
Javaの参照ドットみたいなことに
なぜしなかったのか、だろ
ポインタを参照だと言い張るだけでいいのにと
Javaの参照ドットみたいなことに
なぜしなかったのか、だろ
ポインタを参照だと言い張るだけでいいのにと
839デフォルトの名無しさん (JP 0H99-QjT/)
2017/07/13(木) 20:54:14.63ID:VVeozCkKH 構造体は全部参照だということにしたいの?
それすると、宣言するときに領域確保して、
いらなくなったらガベコレするっていう機構を組み込んどく必要があって、
Cのシンプルさにまったく合わなくなる。
それすると、宣言するときに領域確保して、
いらなくなったらガベコレするっていう機構を組み込んどく必要があって、
Cのシンプルさにまったく合わなくなる。
840デフォルトの名無しさん (ワッチョイ 6e9a-YkGU)
2017/07/13(木) 20:55:07.17ID:lX8cJUTX0 違う意味だから違う記号
841デフォルトの名無しさん (ワッチョイ be02-7wp+)
2017/07/13(木) 21:00:00.33ID:5QMVP3z90 高橋麻奈も
おばさんになったな。
おばさんになったな。
842デフォルトの名無しさん (ワッチョイ 7e32-vfgv)
2017/07/13(木) 21:29:51.07ID:e9IZxggq0 >>832
毎回の意味がわからんな。
毎回の意味がわからんな。
843デフォルトの名無しさん (ワッチョイ f16a-KmKO)
2017/07/13(木) 22:00:17.18ID:EExJF9140844デフォルトの名無しさん (ワッチョイ 8a1c-UU3S)
2017/07/13(木) 22:09:19.10ID:PWiSD9vP0845デフォルトの名無しさん (ワッチョイ f0b6-MRQN)
2017/07/13(木) 22:11:04.90ID:WI/JuPuE0 ポインタなら->の方が分かりやすいでしょ
もしかして矢印って分からない?
もしかして矢印って分からない?
846デフォルトの名無しさん (ワッチョイ 3f11-1CH6)
2017/07/13(木) 22:11:58.75ID:LTIPW4bg0 -> で書いているのを . でも許したとして、コンパイラに不都合が出てくるんだろうか?
((struct foo*)0)->member ⇒ ((struct foo*)0).member
キャストの後の括弧がなくても通すと リテラルと繋がるから面倒をおこしそうだけども
(struct foo*)0->member ⇒ (struct foo*)0.member
そういうわけでもなさそうだし
((struct foo*)0)->member ⇒ ((struct foo*)0).member
キャストの後の括弧がなくても通すと リテラルと繋がるから面倒をおこしそうだけども
(struct foo*)0->member ⇒ (struct foo*)0.member
そういうわけでもなさそうだし
847デフォルトの名無しさん (ワッチョイ 6e9a-YkGU)
2017/07/13(木) 22:13:53.71ID:lX8cJUTX0 グローバル変数から関数の引数にしたりするときに、置換が面倒だと思うことはある
C++だと山椒があるんでそういうことも少ない
C++だと山椒があるんでそういうことも少ない
848デフォルトの名無しさん (ワッチョイ be02-7wp+)
2017/07/13(木) 22:40:18.99ID:5QMVP3z90 参照はピリリと辛いのさ
849デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/13(木) 22:48:52.06ID:ZRvPs5t50 >>846
思想としてそこまで意識して書き、ソース上にもその痕跡を残せってことでしょ。
他言語で言うプロパティの良し悪しと同じ議論だよ。
好き嫌いはあれども、正しい or 間違いの結論はでない。
コンパイラはエラーを検出できてるんだから、
その場合は . を -> と読み替えろ、というルーチンを入れれば君が欲しいものは簡単に作れる。
でも誰も用意しなかった。それが事実だね。
思想としてそこまで意識して書き、ソース上にもその痕跡を残せってことでしょ。
他言語で言うプロパティの良し悪しと同じ議論だよ。
好き嫌いはあれども、正しい or 間違いの結論はでない。
コンパイラはエラーを検出できてるんだから、
その場合は . を -> と読み替えろ、というルーチンを入れれば君が欲しいものは簡単に作れる。
でも誰も用意しなかった。それが事実だね。
850デフォルトの名無しさん (ワッチョイ f16a-KmKO)
2017/07/13(木) 23:28:37.17ID:EExJF9140851デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/14(金) 00:02:31.73ID:jsZNOhnp0 >>850
> 「教育的な意味」だけのことでいいんだな
>>839に答えは既に書いてあるだろ。アホなのか?
具体的にはスタック上に構造体を取って高速化する手法が使えなくなるんだよ。
(大抵の他言語では記述方法自体が用意されていない。
VC++/CLIではvalue型が用意されていて効果があることになっている。
が、ろくな説明が見当たらないorz)
古いが以下。
http://www.eonet.ne.jp/~maeda/cpp/value.htm
MS公式は以下。全く説明する気が無いw
https://msdn.microsoft.com/ja-jp/library/ke3a209d.aspx
というか、そこらへんが面倒だというのならJavaやC#使えって話でしかなく、
今の時代にC使うのならそこまで含めてチューニングする気で書け、でしかない。
> 「教育的な意味」だけのことでいいんだな
>>839に答えは既に書いてあるだろ。アホなのか?
具体的にはスタック上に構造体を取って高速化する手法が使えなくなるんだよ。
(大抵の他言語では記述方法自体が用意されていない。
VC++/CLIではvalue型が用意されていて効果があることになっている。
が、ろくな説明が見当たらないorz)
古いが以下。
http://www.eonet.ne.jp/~maeda/cpp/value.htm
MS公式は以下。全く説明する気が無いw
https://msdn.microsoft.com/ja-jp/library/ke3a209d.aspx
というか、そこらへんが面倒だというのならJavaやC#使えって話でしかなく、
今の時代にC使うのならそこまで含めてチューニングする気で書け、でしかない。
852デフォルトの名無しさん (ブーイモ MMfd-QjT/)
2017/07/14(金) 00:16:04.99ID:1+0wIQjnM 839だけど >>851 は周回遅れ。
構造体へのポインタでも、構造体でも、. を使う文法にできるんじゃねっていう主張。
今のところ俺もそれへの具体的な反論を用意できていない。
「教育的」っていうのは違うと思うがな。
構造体へのポインタでも、構造体でも、. を使う文法にできるんじゃねっていう主張。
今のところ俺もそれへの具体的な反論を用意できていない。
「教育的」っていうのは違うと思うがな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★2 [お断り★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★5 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★6 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★4 [BFU★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 【悲報】中国上海市民「総理は一般人じゃないんだからそんな発言したらダメですよ😅」ド正論を言われてしまう [359965264]
- 豊田章男「メイク・アメリカ・グレート・アゲイン!」高市早苗「80兆円送金よ~!」 [175344491]
- 【悲報】高市早苗さん、もう辞職しか選択肢がない… [271912485]
- 高市「中国とは安定的な関係を続けたい」習近平「☺」高市「台湾有事は日本有事!自衛隊を投入!」習近平「は?」 [165981677]
- 【急募】高市が来年いそうな場所 [237216734]
- 【ござる専🏡】風間🥷配信実況スレ🏯【風間いろは】
