C言語なら俺に聞け 141

レス数が1000を超えています。これ以上書き込みはできません。
1 デフォルトの名無しさん 2017/07/17(月) 21:06:47 ID:
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/


https://2ch.live/cache/view/tech/1494508803
http://www.geocities.jp/c_cpp_cs/about_c/

2 デフォルトの名無しさん 2017/07/17(月) 21:15:16 ID:
< `∀´>ニダー

3 デフォルトの名無しさん 2017/07/17(月) 21:41:46 ID:
#include < `∀´>

4 デフォルトの名無しさん 2017/07/17(月) 21:56:04 ID:
>>1


>>994
>だからgotoでどうやってやるんだよ
>戻り番地の意味わかる?

できないわけがないってw gotoで飛んでgotoで戻りゃいいんだから
非同期なら別関数にする必要があるが

5 デフォルトの名無しさん 2017/07/17(月) 21:57:25 ID:
ちょっと書いてみてよ

6 デフォルトの名無しさん 2017/07/17(月) 21:58:43 ID:
プログラムカウンタをスタックに積まないでコール元に戻れるわけ無いだろ
プログラムの動作原理を知らなさ過ぎる

7 デフォルトの名無しさん 2017/07/17(月) 22:02:11 ID:
逆に関数内関数じゃないとできない処理ってどんなの?

8 デフォルトの名無しさん 2017/07/17(月) 22:08:32 ID:
Python信者がうるさいのでもう一度書いておくと、以下URLの下のほう、
> しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> http://www.isc.meiji.ac.jp/‾mizutani/python/recursive_call.html
これはJavaScriptは通るんだよ。
つーか、他言語は多分全部通る。落ちるのはPythonだけ。
お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。

9 デフォルトの名無しさん 2017/07/17(月) 22:16:47 ID:
前スレ>>995
990にレスが付いているのはヘッダについてか?
それなら俺はGCCに「自動ヘッダ生成器」を組み込んでくれよと思う。
というかCはヘッダで妙なトリック使いすぎてて自動生成できる状況ではないのだとは思うが、
それなら足りない関数だけでも自動で追加してくれよ、と思う。

つっても「後方参照」できるようになれば解決する話で、
マジでこれをいまだに放置している理由はよく分からん。
というか、俺に反論している連中ですらこれについては多分賛成なんだよな?
「後方参照」出来ない方がいいんだ!って理由がある奴っていないだろ。
だからこそ、Pythonが出来ないのがアホすぎて際立つわけでね。

10 デフォルトの名無しさん 2017/07/17(月) 22:25:47 ID:
前後を理解してないバカは参加するな
ID:LYlgQVUQ お前のことだ

11 デフォルトの名無しさん 2017/07/17(月) 22:28:20 ID:
何でわっちょい無くなったの?

12 デフォルトの名無しさん 2017/07/17(月) 22:32:47 ID:
>>11
お、確かにそうだな。
俺はワッチョイありの新スレが立ったらそっちに動くって事で問題ない。
(つってももうこの話は終わりそうだが)

13 デフォルトの名無しさん 2017/07/17(月) 22:43:11 ID:
>>4
> gotoで戻りゃいいんだから
だからどこに戻るんだよ? w

> 非同期なら別関数にする必要があるが
戻り番地も知らん奴が非同期とか笑えるわ

>>7
ないでしょ
ローカル変数でないとできない処理を聞いてるのと同じ

14 デフォルトの名無しさん 2017/07/17(月) 22:53:34 ID:
>>13
だからできるでしょ
俺は同じようには書けないが同じ処理はできると言ってるの
新たにスタック積む話なんか初めからしてないぞw

15 デフォルトの名無しさん 2017/07/17(月) 22:53:37 ID:
>>8
> > しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> > http://www.isc.meiji.ac.jp/‾mizutani/python/recursive_call.html
まだやってるのかよ w
他の言語に倣うなら頭に
def main:
print func_a(5)
って書いて最後に
if __name__ == 'main':
main()
書けばいいだけ

> お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。
お前がPython知らんだけ

16 デフォルトの名無しさん 2017/07/17(月) 22:59:52 ID:
x86なら ENTER/LEAVEで実装されているな
出来るっていうならコードで示せよ

17 デフォルトの名無しさん 2017/07/17(月) 23:01:17 ID:
>>14
void f( ){
 void g( ){
  ...
 }
 g();
 g();
}
goto 使って同じ処理書いてみろよ

18 デフォルトの名無しさん 2017/07/17(月) 23:02:18 ID:
           / ̄\
           |    |
           \_/
             | __
            ┴´   ``ヽ   
          /::::::::::|::::::    `ヽ       gotoで戻りゃいいんだから!!
         /:::\::::::::<● >   `ヽ  
    ((   / <●>::::::::::⌒      )   
        |  ⌒(_人__)       ノ | |  
        ヽ    )vvノ:      / ノノ
          ヽ (__ン       人
         人           \
        /

19 デフォルトの名無しさん 2017/07/17(月) 23:07:04 ID:
>>15
だからそれはできるうちに入らないんだよ。
どうにもPython信者には通じないようだが。

20 デフォルトの名無しさん 2017/07/17(月) 23:13:04 ID:
>>17
void f( ){
void *ret;
goto a;
g:
printf("g¥n");
goto *ret;
a:
printf("a¥n");
ret = &&b;
goto g;
b:
printf("b¥n");
ret = &&c;
goto g;
c:;
printf("c¥n");
}

21 デフォルトの名無しさん 2017/07/17(月) 23:18:43 ID:
ID:PKmAGp8Mはプログラムの動作原理なーんも分かってない

22 デフォルトの名無しさん 2017/07/17(月) 23:21:10 ID:
>>15で出来るうちに入らないとかいちゃもんつけたいだけやん
それCで関数の外にprintf書いてコンパイル通らなくて発狂してるようなもんだから

23 デフォルトの名無しさん 2017/07/17(月) 23:25:27 ID:
いや、こんなこと書いたら揚げ足とってアホ認定されそうだから重ねておくけど、上のレスではコードの見た目の話に話を絞ってある
その範囲では、関数外に書いても通るだけ有難く思うべきである

24 デフォルトの名無しさん 2017/07/17(月) 23:27:45 ID:
>>20
まあ俺はそっちの話にあんまり突っ込む気はないんだけどさ、、、

アイデアは理解した。
が、そのラベルの使い方が保障されてるかというと、かなり微妙だと思う。
俺は仕様には詳しく無いからなんともいえないが。
とはいえ、実際はそれで動くケースが大半だとも思う。

25 デフォルトの名無しさん 2017/07/17(月) 23:29:34 ID:
>>19
さっきからプロトタイプ宣言を書く書かないの話して、中身で使うだけの関数を下に書ければ見やすい的なことを言ってなかった?
その観点から言って、>>15にどんな問題があるの?

26 デフォルトの名無しさん 2017/07/17(月) 23:35:29 ID:
実用上問題なくてもイチャモンつけたいだけw

27 デフォルトの名無しさん 2017/07/17(月) 23:51:06 ID:
>>22-23,25,26
だからPython信者はアホなんだよ。何度も言っている通り、

JavaScriptは以下のコードが動く=後方参照できる
Pythonは以下のコードが動かない=後方参照できない

といっているだけ。マジで分かれよアホ。
以下コードをブラウザ上でF12押してコピペしてみろ。動くから。

(function(){
say_hello();
say_world();
function say_hello(){console.log('hello');}
function say_world(){console.log('world');}
})()

Cはこの順に配置しようとすると《歴史的理由で》プロトタイプ宣言が必要。しかしやれば出来る。
Pythonはこの順に配置することがどうやっても出来ない。だから糞。

CもJavaScriptも設計者の自由を制限しない言語だ。
子関数をどこに配置するのが良いのかは設計者が考え、最適化できる。
これがCやJavaScriptの思想。

対してPythonは設計者の自由を制限し、
設計者ごとに異なる部分が無いことこそが読みやすさだと嘯く。
それはPythonerは馬鹿であると定義しているのと同じ。

だってCでもJavaScriptでも、Pythonと同じ順に配置は出来るのだから、
Pythoner以上の脳みそがあればPythonより読みやすく書くことは出来る。
もちろん馬鹿が書けばPython以上に読みにくくなるが、それはそういう仕様だ。(馬鹿は死ねという仕様)
Python馬鹿がCスレまで来て思想が全く異なることを理解せずに喚いているから話が通じない。
Pythonは馬鹿用言語だということを自覚しろアホ。

28 デフォルトの名無しさん 2017/07/17(月) 23:55:03 ID:
なんか問題あったかい?
ラベルのポインタはGCCとclangは対応してる
標準じゃなく拡張だけどなw

29 デフォルトの名無しさん 2017/07/17(月) 23:55:41 ID:
>>27
で、どんな問題があるの?

30 デフォルトの名無しさん 2017/07/17(月) 23:57:28 ID:
>>27
まずCスレでPythonの話題持ち出したお前が何言ってんの?w

31 デフォルトの名無しさん 2017/07/18(火) 00:06:20 ID:
>>27
うわー最初は
viod say_hello(count){
if (--count<0) return;
printf("hello");
say_world(count);
}
void say_world(count){
printf(" world!¥n");
say_hello(count);
}
みたいな例を出してたのに、それが出来ると分かるないなやわざわざPythonで出来ない例持ち出して来てら
これアンチしたいだけじゃん

32 デフォルトの名無しさん 2017/07/18(火) 00:08:33 ID:
>>28
いや、ラベルって「そこから下」に対しては保証されてるが、
「そこから上」って保証されてるか?
まあこの言い方では通じないと思うから具体的に書くと、

(A)
label:
(B)

で(B)側にゴミがない=次の命令がすぐ詰まっていてそこにJUMPすれば動作する
ことは保障されていると思う。これは普通の使い方だから。
ただ、上から流れてきたときに、(A)側にパディングされてたりしないか?というのは微妙で、
x86だとイミディエートに十分な長さがあるから問題ないとして、
16bitとか8bitとかの場合、コード領域にイミディエートを積んでいることは普通にあって、
しかも結構適当な場所に吐かれていた記憶が。
だからコンパイラ側に「ここは明らかに通らない」という風に見える場所はかなり危険かと。

ただし既に言っているが、俺は仕様には詳しく無いから、なんともいえないのだが。

33 デフォルトの名無しさん 2017/07/18(火) 00:20:24 ID:
>>32
この場合実行時にジャンプ先のアドレスを代入するのでその手の問題は無いでしょう
https://docs.oracle.com/cd/E19205-01/821-0386/bjabt/index.html

34 デフォルトの名無しさん 2017/07/18(火) 00:21:58 ID:
>>29
子関数を下に書いた方が分かりやすいときに、それが出来ないのが問題。

>>31
それは俺の間違いだった。俺が思っていたほどは糞ではないのも事実だ。
ただしやっぱりJavaScriptやCと比べたら糞だよ。

しかしお前らも知っていると思うが、
Pythonの最大の糞ポイントはラムダに式しか書けない事だろ。
つか、糞ポイントがぽこぽこ出せる時点で糞言語なのは確定なんだよマジで。
そしてCやJavaScriptの思想とは対極にあるのがPythonだ。
それを使うのはお前らの自由だが、それをCスレで喚くのはキチガイだ。
C的価値観からするとPythonなんてキチガイ馬鹿用言語だよ。
逆にお前らがPythonスレで
「Cみたいなシートベルトもエアバッグもない車に今更乗れるか!」って
言ってりゃいいんだよ。

というわけでお帰りくださいマジで。
俺は思想的にPythonとは合わないから、自主的に使うことはないと思います。

35 デフォルトの名無しさん 2017/07/18(火) 00:25:56 ID:
>>28,33
ああすまん間違えた。確かに問題ない。普通の使い方だ。
俺が勘違いしてた。

36 デフォルトの名無しさん 2017/07/18(火) 00:30:29 ID:
>>32
コード領域にイミディエイト積んでいるのは当たり前
イミディエイトは即値
アセンブリコードのニーモニックでオペコードに直接データ(値)を指定するのだから
コード領域にしかイミディエイト値は存在し得ない

37 デフォルトの名無しさん 2017/07/18(火) 00:31:52 ID:
>>34
そもそも最初にCスレにPythonの話題を書き込んだのは君なのに何言ってんの?
こっちはそもそもPythonを擁護してるんじゃなくて君の言っていることの変な部分を指摘してるだけだぞ

38 デフォルトの名無しさん 2017/07/18(火) 00:34:45 ID:
>>34
なんか知らんがHaskellみたいな順序に依存しない言語がおまいさんにあってる気がする。

39 デフォルトの名無しさん 2017/07/18(火) 00:44:21 ID:
>>36
いや、オペランドの長さが足りなかった場合、
中途半端なところにデータ領域を確保するCPUもあるって事。

>>38
Haskellは意識高すぎて無理だった。
てかあれ、遅延評価以外目新しくないよな?
そしてその遅延評価はC++にテンプレートでパクられてて笑ったが。
あれでC++のテンプレートの汎用性の高さに驚いたよ。

ちなみに、他言語のすごいコードって知ってるか?見てみたいとは思うから。
例えばCなら、LinuxのカーネルやGit(作者同じ)がそうだし、
C++ならchromeやV8が多分そう(といっても割とCらしいが)
PythonやHaskellって喚いているだけで現物がなくね?
所詮スクリプトで使い捨てコードが多いってことか?

40 デフォルトの名無しさん 2017/07/18(火) 00:47:51 ID:
>>39
PythonアンチカスPythonアンチスレに行け
二度とこのスレでPythonの名を出すな

41 デフォルトの名無しさん 2017/07/18(火) 00:55:04 ID:
そういやgotoで思い出したが、
マルチレベルbreakはあってもいいと思うけどね。
gotoがあればなあ、ってのは大体このケースだろうし。

オレオレパーサも組めない範囲でもないんだろうけど、
やっぱ誰かががっつりデバッグ済みにしてくれてるのを使いたいよ。

42 デフォルトの名無しさん 2017/07/18(火) 01:00:22 ID:
>41
その用途に最も近いのは例外処理のtry-cattch構文だろうな
C言語では使えないけど

43 デフォルトの名無しさん 2017/07/18(火) 01:00:53 ID:
try-catch

44 デフォルトの名無しさん 2017/07/18(火) 01:03:09 ID:
try-catch遅くなかった?

45 デフォルトの名無しさん 2017/07/18(火) 01:03:12 ID:

そのCスタイル22k行のコードはどういう書き方をしてたから読みやすかったんだ?

46 デフォルトの名無しさん 2017/07/18(火) 01:06:51 ID:
>>44
遅いって一体…
try-catch使える独自拡張とかあったっけ?

47 デフォルトの名無しさん 2017/07/18(火) 01:09:17 ID:
>>46
あー、遅かった気がするのはC++の話だわ
まあ例外処理が速い言語なんてないと思うけどさ

48 デフォルトの名無しさん 2017/07/18(火) 01:10:26 ID:
setjmp, longjmp はペア

49 デフォルトの名無しさん 2017/07/18(火) 01:11:57 ID:
>>42
いやtry-catchはだいぶ違うぞ。

てかあれはC的エラー処理とは逆を行っている。
ただ最近は非同期が流行りだしてtry-catchでは対応できなくて
値埋め込み≒C的にはなってきてる。
個人的にはtry-catchは要らないなあ。

マルチレベルブレークはまあ、フラグ使って書けはするが、
見た目汚いから何とかならんのか、といったところ。
どっちかというとショートカット論理に使う。

50 デフォルトの名無しさん 2017/07/18(火) 01:21:43 ID:
>>34
Pythonがゴミだからなんなの? わざわざCスレでPythonアンチしていい理由にはならないよね
しかもあんな的外れで何も知らないこと丸わかりなアンチ書き込みしたら対象がどんな言語であっても荒れるに決まってるよね?
帰るのは君だよ

51 デフォルトの名無しさん 2017/07/18(火) 01:32:30 ID:
>>39
すごいコードってのが分からんが、Haskellのprintfはコード見れるけど全く分からん。
(Hoogleでprintfで検索してソース覗く)

型推論出来れば普通のprintfにも、フォーマット済の文字列欲しい時はsprintf的にも使える関数なんだが。。。

52 デフォルトの名無しさん 2017/07/18(火) 02:23:27 ID:
>>51
おうサンクス。見てみたがなるほど分からん。
つっても俺はHaskellの文法も覚えてないレベルなんだが。

ただまあ、その仕様なら、確かに短いのかもね。
GNUのprintfって確か400行程度でgotoが20個くらいあるトンデモコードだったはずだが、
(探したけどすぐには出てこなかった)
それよりも仕様は大きいからねえ。

53 デフォルトの名無しさん 2017/07/18(火) 02:24:26 ID:
>>51
> すごいコード
これな。
俺が思うに問題はこういう「下位コード」ではなくて、
printfやオブジェクトを呼び出す「中位コード」の書きやすさだと思うんだよ。
関数型の連中と話していて違和感を感じるのはそこで、
奴らは10行のコードを5行にすることに精を出しているが、
10k行のコードを5k行にすることには興味が無いように見える。

実際のアプリを書いていて差が出るのはそこで、
Cはその点、最適なデータ構造を目指す、という方向に特化している。
だから構造体ポインタの塊になってしまうわけでさ。
それをもうちょっと自動的に取り扱おうとするとオブジェクト指向になり、C++になる。

で、そこらへんの「中位コード」のサンプルが無いんだよ。
具体的には10k-数万行を必要とするOSSアプリ。
Cの場合はこれはいくらでもあって、既に書いた通りlinuxやGit等。
C++ならFireFoxでもchromeでも、OSSで開発されているからいくらでも読める。
JavaScriptは最近atomエディタというのが出てきた。まあそれ以前から見放題ではあったが。
これに対して、「Haskell製の有名アプリ(OSS)」ってないよね?
(というか俺が知らないだけではあるが)

関数型の連中はCみたいな手続き型を悪く言うのだけど、それは全て下位コードなんだよ。
そして現実的には、下位コードなんて短く書けても大して意味無いんだよ。
どうせ読まないから。(名前がprintfな時点で読み飛ばし決定だし)
ただ、短く書けること自体はやはりすごくて、ポテンシャルがあるのは認めるが、
それが本当に使い物になるのか?については俺はちょっと疑問なんだ。
だから実際に動いているものを見て、どうなのか確認したいわけでさ。

というわけでHaskell製の有名OSSアプリあったら教えてください。

54 デフォルトの名無しさん 2017/07/18(火) 02:49:55 ID:
>>27
LLで関数をオブジェクト扱いするような言語だと宣言前の関数を呼び出せるの相性悪いんだよね

一応確認して見た(シェルスクリプトみたいな特殊なものは無視)
Ruby→呼べない
perl→呼べない
lua→呼べない

PHP→呼べる(ただし、条件分岐内などの文脈で宣言されていない関数のみ)
JavaScriptl→呼べる(関数宣言「文」のみ)

JavaScriptの「巻き上げる」っていう仕様は結局わかりにくくて、ECMAScript以外で採用してる言語はないはず

55 デフォルトの名無しさん 2017/07/18(火) 03:10:01 ID:
>>53
Pandocは現状かなり知名度あるんじゃないかな
https://github.com/jgm/pandoc

適当にググったらMoongiftのHaskellタグのやつそこそこあった
http://www.moongift.jp/tag/haskell

Pythonに関しては現物を見たことないの常識的にやばいと思うが・・・
機械学習とか数値処理とかの学術系はpython無双だし、Ansibleやyumみたいな管理系統、GUIソフトですらお前Python通って時がちらほら
Googleも社内標準言語にPython入ってて、Githubにもいくつか公開されてるな

56 デフォルトの名無しさん 2017/07/18(火) 05:04:08 ID:
>>20
それ再起呼び出しに対応できないことぐらいは理解してるよね?

57 デフォルトの名無しさん 2017/07/18(火) 05:45:17 ID:
>>56
そもそも、Cでは大抵別の関数に切り出すからそんな心配いらんよ

58 デフォルトの名無しさん 2017/07/18(火) 08:27:43 ID:
>>57
はあ?
ローカル関数でも再起は普通に使うし心配いらんって言われても困るわ
むしろお前の頭の方が心配だよ w

59 デフォルトの名無しさん 2017/07/18(火) 08:41:06 ID:
別の関数として切り出しているから再起が出来るということだろ
無名関数の場合は再起には工夫が必要
>>20は無名関数とすら呼べない代物ではあるが…
https://ja.wikipedia.org/wiki/%E7%84%A1%E5%90%8D%E5%86%8D%E5%B8%B0

60 デフォルトの名無しさん 2017/07/18(火) 08:58:56 ID:
心配性だねえ
再帰な

61 デフォルトの名無しさん 2017/07/18(火) 10:00:20 ID:
>> https://mevius.2ch.net/test/read.cgi/tech/1494508803/990

> しかしヘッダファイルを用意するなんて完全に二度手間だし、

失笑
仕様と実装に分けて管理することが何の二度手間なんだよボケ
APIだとかインターフェイスだとかみんなそうだろうが


> コンパイラが自動的にやれよマジで、と思ったことは無いのか?

あああるよ
内製でサクッと作れてしまうほど簡単なことだからなおまえには簡単じゃないかも知れんがw


> 面倒ならなしでよし、

そうなってるだろうが、まさか知らんのか?


> その場合はコンパイラが勝手に探してくる、

これがおまえの言う「自動化」か
ワードやエクセルが「自動で」いらんことしやがるようなのがコンパイラにもついていて欲しいのかw
俺は反対、ライブラリをバージョン管理してるときなど断りもなく最新だか旧版だかとやられたら殺意がわく


> お前みたいに疑問を持ってない奴

疑問は持つぜ
おまえみたいに間違った正義を説くアホは見逃してねえだろ

62 デフォルトの名無しさん 2017/07/18(火) 11:46:36 ID:
CL /Zg じゃあかんのけ?

63 デフォルトの名無しさん 2017/07/18(火) 12:41:25 ID:
>>59
無名関数の話なんて誰もしてないから無駄に絡んでこないでくれ

64 デフォルトの名無しさん 2017/07/18(火) 12:41:58 ID:
まだ続いてたのか……
仕様に不満があるのは理解できた。同意できるかどうかはともかく。
そろそろ、「不満があるから何をしてるのか」という話を聞きたいな。

65 デフォルトの名無しさん 2017/07/18(火) 14:49:00 ID:
そもそも個人的にPythonをプログラムと呼ぶのに違和感ある
Pythonはスクリプトだろ

66 デフォルトの名無しさん 2017/07/18(火) 15:27:18 ID:
お願いします。どうしても、課題ができません。どなたかわかる方いませんか?

text.txtというファイルに以下のような個人情報が保存されているとする。これを読み込み、実行例のように画面に出力するプログラムを作成しなさい。

ヒント: 氏名の読み込みでは"name: %s¥n"のような変換仕様を用いると良い。

▼text.txtの内容
name: Ichiro
age: 20
weight: 65.5
e-mail: ichiro@foo.bar
▼実行例
氏名: Ichiro
年齢: 20
体重: 65.5
Eメール: ichiro@foo.bar

67 デフォルトの名無しさん 2017/07/18(火) 15:27:59 ID:
#include <stdio.h>

int main(void)
{
int x;
double b;
char str[100];

FILE*fp;
fp=fopen("test.txt","r");

if(fp==NULL){
printf("ファイルをオープンできませんでした。¥n");
return 1;
}else{
printf("ファイルをオープンしました¥n");

}

68 デフォルトの名無しさん 2017/07/18(火) 15:28:25 ID:
fscanf(fp,"name:%s",&str);
printf("氏名:%s¥n",str);
fscanf(fp,"age:%d",&x);
printf("年齢:%d¥n",x);
fscanf(fp,"weight:%d",&b);
printf("体重:%.1lf¥n",b);
fscanf(fp,"e-mail:%s",&str);
printf("Eメール:ichiro@foo.bar¥n",str);

printf ("ファイルを読み込みました¥n");
fclose(fp);
printf("ファイルをクローズしました¥n");
return 0;


}

69 デフォルトの名無しさん 2017/07/18(火) 18:43:44 ID:
Makefileの書き方で質問なんだけど

all: hoge piyo fuga

みたいな行があるとして、 依存ファイルを変数みたいに使いたいんだけど
どう書いたらいいの? いちいち

HOGE := hoge piyo fuga
all: $(HOGE)

みたいに書かないとだめなの?

70 デフォルトの名無しさん 2017/07/18(火) 20:34:14 ID:
>>69
とりあえず俺は知らないんだけど、参考文献どうぞ。
https://www.oreilly.co.jp/library/4873112699/
無料でpdfダウンロードできる。

71 デフォルトの名無しさん 2017/07/18(火) 21:58:43 ID:
>>66
課題なら、>>68で十分なのだろうけど実務で使うときは幅指定必須なので、先生に聞いとけ~

%100s%*とかね。

72 デフォルトの名無しさん 2017/07/18(火) 22:05:43 ID:
>>69
変数みたいにつかって何したいかわからんな。
makefileってそういうものだとしか、言えない。

依存関係は依存するファイルをコンパイラが出力してくれるから、それをincludeするなんてのも良くある。

73 デフォルトの名無しさん 2017/07/18(火) 23:26:17 ID:
>>68
惜しいな。

> fscanf(fp,"weight:%d",&b);

ヒント: % の後。

74 デフォルトの名無しさん 2017/07/18(火) 23:30:58 ID:
>>68
もう一箇所。

> fscanf(fp,"e-mail:%s",&str);
> printf("Eメール:ichiro@foo.bar¥n",str);

惜しいな。strに読む所は良い。その後、それを出す所。これだと固定の文字列が出るだけだよね。

75 デフォルトの名無しさん 2017/07/18(火) 23:36:18 ID:
専門学校一年です
プログラム言語っていくつも必要?応用性ある最強言語一つあればいいんでないの?

76 デフォルトの名無しさん 2017/07/18(火) 23:48:43 ID:
>>46,48
なんか実装している奴いるぞ。
http://www.nurs.or.jp/‾sug/soft/super/longjmp.htm
http://www.nurs.or.jp/‾sug/soft/java/java25.htm

77 デフォルトの名無しさん 2017/07/18(火) 23:49:23 ID:
>>54
Perlは出来るぞ。
Rubyは出来ないようだが。これは予想外だった。つかMatzはこっち側のはずだが。
luaは出来ないね。LiveDemoで確認した。
http://d.hatena.ne.jp/perlcodesample/20080615/1213501216
https://soudan1.biglobe.ne.jp/qa776599.html

JavaScriptが文だけなのは全く問題ない。以下コードは動く。
代入は他文と同様上から順に評価されるだけであって、シンボルは見えてる。

(function(){
say_hello();
var say_something = say_world;
say_something();
function say_hello(){console.log('hello');}
function say_world(){console.log('world');}
})()

> JavaScriptの「巻き上げる」っていう仕様は結局わかりにくくて
これは俺は「分かりにくい」というのが理解不能で、単に関数スコープなだけだ。
Cで言うANSI以前の「ド頭で全部宣言しとけ」でしかない。(C89と言うのか?)
ここで間違ったらCはSyntaxErrorだったはずだが、
JavaScriptの場合はそこらへんがユルくて、
「どこで宣言しても頭で宣言したことにして、エラー無しで動作」となるだけ。

Rubyが出来ないのはMatzが方針を間違えてるね。
「全部先に宣言した方が読みやすい」ってのはMatzの意見であって、
全員がそう思っているわけではない。だからRubyの思想なら制限しては駄目だ。一貫性がない。
逆にPythonはユーザーごとのばらつきこそが可読性を低下させるという思想だから、
制限するべきだし、実際にそうなっているから問題ない。こちらは一貫性がある。
結果、俺にとってはRubyも糞だと判明しだだけだな。

78 デフォルトの名無しさん 2017/07/18(火) 23:50:25 ID:
>>55
> 機械学習とか数値処理とかの学術系
あまり詳しくはないが、MLとかは当てにならん。
あれらはループがえぐいだけで中身は大した事はない。
大半が下位コード、1k行か精々3k行程度のはずで、俺なら使い捨てにする。
しかも自分の環境で動けばいいだけのイージーモードだ。
がっつり保守されてる奴を見ないと実用上の向き不向きは分からん。
ウォーターフォールで作ればアホでも綺麗に作れるのは当たり前であって、
問題はそこからの耐性だから。
本来のOOPもそこからのスタートだったろ。
最近のOOPは若干暴走気味で、設計の設計の設計みたいな感じになっている奴も多いが。

で、教えてもらって文句を言うのも悪いんだが、、、
> pandoc
マークアップコンバータは再帰で実装できるからHaskell向きかもしれん。
ただこれもかなり簡単で、しかもどの言語でも実装できる代物でしかない。
要するに再帰とストリング系が強ければいけるから、
LL言語ならどれを使っても問題ないし、苦労もしないだろう。
Haskellを使ったからこそ生きる、というものではないと思う。

Cが使われている現場は、Cでしか書けないから、だ。
それはお世辞にも生産性が高いとはいい難いことの裏返しではあるが、
linuxKernelについてはLinus自身がC++では無理だったと言っているし、
Gitについても同様だ。
> gitのような、効率を第一の目的としたのには、C++の「利点」とやらは大失敗なんだよ。
> 実際のところ、LinuxではC++を試したことがある。1992年のことだった。
> 結果はクソだった。マジで、カーネルコードをC++で書くのは、ド低脳の考えだ。
> https://cpplover.blogspot.jp/2013/05/linus-torvalsc.html
実際Git全盛だし、Linuxについても
「安全なOOPでカーネルを書き直そう!」という話が10年程前には在った筈だが、
今全く聞かないので、完全にポシャったのだろう。
結果的にLinusの意見の正しさを証明している。

79 デフォルトの名無しさん 2017/07/18(火) 23:51:25 ID:
Haskellの売りは遅延評価だろ?
ならば、遅延評価がビルトインで提供されているからこそこれだけ簡単に実装できる、
そうでない言語ではかなり辛いことになる、というところで戦わなければ意味が無い。
マークアップコンバータは違うし、そこに挙げられている他12種も同様だ。
Linusの言葉を借りるなら、
> (c) 授業でそういう課題を与えられた者
でしかない。他言語を既に十二分に使えるときに、それらアプリでHaskellを選択する理由がない。

遅延評価の利点は、俺が思うに、適当に書いても速いことだ。
具体的には、超大富豪プログラムを動的に貧民プログラムに変身させられる事だ。
だからチャキチャキ書けないと意味が無いのだが、Haskellはお世辞にもそういう感じではないだろ。
だからHaskell使いがあの程度のアプリしか作れない時点で将来性はないよ。
彼らもそれなりに優秀なはずで、仮に俺が学んだとしても、彼ら以上のものを作るのは容易ではない。
それで作れるものがあの程度?そそられねーな、って感じ。
あのラインナップなら今でも他言語で作れるし、多分そんなに苦労もしない。

とはいえこれはサンプルとしては素晴らしい。ありがとう。
保守されているし、俺が確認したい中位コードは大量に含まれているはずだ。
俺自身が他言語で実装できるだろうというのもいい。オレオレ実装と比較できる。
つまり、言語比較という意味ではかなりいい素材だ。
ただそれ以前に俺はHaskellをほぼ読めないので、読むのはずいぶん先になりそうだ。
これについては申し訳ないね。

80 デフォルトの名無しさん 2017/07/18(火) 23:52:11 ID:
> Ansibleやyum
お手軽スクリプトの域を出ないと思う。最悪、シェルスクリプトでも出来る範囲だろ。
C++の現場、たとえばブラウザでは、本当にエグイほど仕様変更が入って、
結果的にソースコードはぼろぼろになっていって、それでも保守している。
だからやっぱりLL言語はLL言語なんだと思うよ。
これだからスクリプターは、、、というのも当たってる。戦場の厳しさの次元が違う。

一通り動かすところまではどの言語を使っても出来る。
その過程で、例えばHaskellの遅延評価のような言語独自のフィーチャーがあり、
それを生かせれば素晴らしい。
しかしPythonにはそもそもそれがない。特に可もなく不可もなく、的な言語だ。
そして問題はそこから先で、
当初想定してなかった仕様変更が入ってきたときどこまで耐えられるかなのだが、
これに関してはPythonは不可も無いのだからそれなりではある。(悪くはない)
(なおJavaScriptはデタラメなパッチで一時しのぎする方法には事欠かないため、
俺はこの点も気に入っている)

エコシステムが云々、というのはおいておいて、
言語自体の能力で言えば、Pythonを積極的に選ぶ理由が一つもない。
とはいえ他言語は色々尖っていることも多いので、消極的にPythonってのもありだとは思うし、
実際そこにポジションしているとも思うが。Javaに近いというか。
両言語ともそれで繁栄しているのだから間違いでもないわけだが。

81 デフォルトの名無しさん 2017/07/19(水) 00:28:57 ID:
>>75
金鎚だけで家が作れるかね?

82 デフォルトの名無しさん 2017/07/19(水) 00:53:51 ID:
>>75
そーいう発想は大事
大きいプログラムも小さいプログラムも
スケーラブルに書けるほうが良い!
というのが動機で出来た言語があるにはある

83 デフォルトの名無しさん 2017/07/19(水) 01:09:15 ID:
Cは大も小もなんでも書けるよ
ただ工数がかかるけど

84 デフォルトの名無しさん 2017/07/19(水) 01:28:24 ID:
確かにCはなんでも書ける。
きめ細かくハードウェアに密接するようなのも書ける。
OSやデバイスドライバも書ける。
OSなし環境向けの組み込み用マイコンボードのROMに書くプログラムなんかも書ける。

逆にいうと、きめ細かくしか書けない。それなりのライブラリが用意されてないと作るのが大変。

85 デフォルトの名無しさん 2017/07/19(水) 01:36:11 ID:
つ アセンブリ言語

86 デフォルトの名無しさん 2017/07/19(水) 03:29:33 ID:
>77
perlのやつは勘違いだった、すまん

>「分かりにくい」というのが理解不能で、単に関数スコープなだけだ。
関数の巻き上げは、ブラウザの種類、バージョン、strict modeの有無の組み合わせで位置と動作が不安定になったりするのはかなりわかりにくいと思う
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope

>Rubyの思想なら制限しては駄目だ。一貫性がない
Rubyは「その場にメソッドを定義する」という機能を持つ文が用意されているだけ
「すべてはオブジェクト」という思想的に一貫してる

その結果、javascriptではできない関数の中身や別ファイル、if文の中とかでもメソッド定義が比較的自然に行える
hoge = □

def hoge
 ■
end if true

みたいなこともできないと仕様上不自然。
javascriptみたいにifをつけると巻き上げが起こらないみたいにすると、この場合では
ifなし→□
ifあり→■
みたいに非直感的な挙動になって一貫性が失われる。そう考えると、言語全体の仕様の見直しが必要になって・・・
と考えてくと、評価時に定義されるというのはそれはそれで合理的。

87 デフォルトの名無しさん 2017/07/19(水) 03:52:13 ID:
>>85
それの場合CPU毎に覚える必要があって面倒。
C言語コンパイラはだいたいのCPU向けに素早く実装される傾向にあると思うのでアセンブリ言語よりは良いと思う。

88 デフォルトの名無しさん 2017/07/19(水) 04:35:20 ID:
>>78-80
Haskellはちょうど具体例を知ってたから上げただけで全然わからないから詳しくはわからんので申し訳ない
人から数学系とHaskellを極めればいろんな界隈で需要があるらしいという噂だけ聞いたことはあるが


他の話は結局何が言いたいのかわからん
PythonはLL言語なんだから「お手軽スクリプト」として使うのは当たり前じゃん
機械学習とかの研究分野は、実装を素早く作って考えた手順を評価してを高速に繰り返すんだからC言語では無理。

それこそgitでも最初期の仕様を考えてるときはperlとか使ってたし
http://gihyo.jp/dev/serial/01/alpha-geek/0040


>消極的にPythonってのもありだとは思うし、実際そこにポジションしているとも思うが
大体の人はそれを理解してるのに突然「Pythonはクソ!使ったことないけどクソ!」ってやつがわいてきてみんな頭の中???
Haskellについてのやつを見ても思うけど、断片的な経験と情報、ネットで見た内容とかを元に理解したと思いこむ癖があるんだろう
個人のソフトはともかく、Googleとかパッケージマネージャとかで積極採用されるからにはそれなりの評価点があるはずなんだから、自分の考えは常に疑って更新したほうがいいぞ

89 デフォルトの名無しさん 2017/07/19(水) 04:42:21 ID:
要するに「なんでも書ける」は言い過ぎだということ
C言語がハードウェア寄りの記述が得意な言語であることは確かだけれど
それでも大抵はわざわざインラインアセンブラという抜け道を用意している
その理由はどうやっても書けないこともあるから

90 デフォルトの名無しさん 2017/07/19(水) 04:43:24 ID:
アンカ忘れた
>>89>>87へのレス

91 デフォルトの名無しさん 2017/07/19(水) 05:21:02 ID:
>>89
割り込み関係みたいに特権命令を使うところは
「きれいなC」だけじゃ絶対書けないな

92 デフォルトの名無しさん 2017/07/19(水) 08:01:13 ID:
使ったこともない言語をディスり、同意しない相手は無知だと思っているガイジに汚染されたスレはここですか?

93 デフォルトの名無しさん 2017/07/19(水) 08:13:15 ID:
>>89
ああ。書けないものもあるな。
そうなるとインラインアセンブラで無理矢理埋め込んだりする事になるとは思うが、そういうのは普通は全体からすればほんの少しだよな。

94 デフォルトの名無しさん 2017/07/19(水) 08:23:52 ID:
>>53
Haskell処理系のGHCがまさにHaskellで書かれてるし、モナディウスっていうゲームはHaskeller界隈じゃ有名。
そもそもHaskellが有名になったのはPerl本家より早くPerl6の実装したのがキッカケ。
それまで知る人はほとんど居なかった。

95 デフォルトの名無しさん 2017/07/19(水) 08:29:05 ID:
>>93
その通り

>きめ細かくハードウェアに密接するようなのも書ける。
>OSやデバイスドライバも書ける。
>OSなし環境向けの組み込み用マイコンボードのROMに書くプログラムなんかも書ける。

こういうのは全体からすればほんの少しだよ

96 デフォルトの名無しさん 2017/07/19(水) 08:39:40 ID:
>>75
そうだよ、みんなわかってないんだよ

PL/1, Ada ...

97 デフォルトの名無しさん 2017/07/19(水) 08:42:04 ID:
>>92
そうだよ
こいつにレス返すと終わりが見えないぞ?っていうタイプ
それを無邪気に触っちゃうのがこのスレだよ

みんなさすがに今回ので学習したと思うけどw

98 デフォルトの名無しさん 2017/07/19(水) 09:21:43 ID:
>>72
変数を使いたくない ってことです

99 デフォルトの名無しさん 2017/07/19(水) 09:28:45 ID:
>>98
例えばどう書きたいの

100 デフォルトの名無しさん 2017/07/19(水) 10:08:57 ID:
>>91
組み込み用コンパイラとかは拡張構文できれいに書けたりするけどね

101 デフォルトの名無しさん 2017/07/19(水) 10:35:07 ID:
プラットフォーム依存のレジスタいじったりする必要があるから
綺麗なCってのは難しい
綺麗なCの定義にもよるけど
まぁ関数化するなどして隠蔽化はできるけど

102 デフォルトの名無しさん 2017/07/19(水) 10:41:07 ID:
>>75
誰かが自分には分かりやすく書いた言語が、他人には分かりやすいとは限らない。
で、書ける奴は他人の言語押し付けられるなら自分用言語作っちゃう。
今も増え続けてる。

103 デフォルトの名無しさん 2017/07/19(水) 10:50:02 ID:
>>100
組み込みはPICアセンブラで遊んだだけだけど、PC向けよりもハードがまだ完成してないと言うか、SoCでCPU(MPU)とメモリは用意するから後は自分で追加してねって感じだし、返って文法としては単純かもね。
結局CPUとしては計算以外じゃポートやメモリに読み書きするだけだし。

ハード作りながら入出力の関数も自作する感じですかね?

104 デフォルトの名無しさん 2017/07/19(水) 11:04:35 ID:
>>99
HOGE := hoge piyo fuga
all: $(HOGE)
clean:; rm *.o $(HOGE)

みたいなのをたとえば

all: hoge piyo fuga
clean:; rm *.o ★(all)

みたいにすっきり書きたい

105 デフォルトの名無しさん 2017/07/19(水) 11:06:41 ID:
コンパイルするときにmakeとかcmakeとかありますけど他にもあるのかもしれませんけど
今ならどういうのが定番ですか?

106 デフォルトの名無しさん 2017/07/19(水) 11:13:41 ID:
>>105
makeなんか捨ててninja使おうぜ

107 デフォルトの名無しさん 2017/07/19(水) 11:49:17 ID:
>>104
ターゲットの依存ファイルを再帰的に展開すると言う事になるが、途中で止めたいとかわがまま言いだすだろ .hとか
例えそれが可能になったとしても、依存ファイルは、そのアクションを実行するために必要なので
削除するために作成すると言う極めて頭の悪い状況が発生する

108 デフォルトの名無しさん 2017/07/19(水) 12:36:53 ID:
>>104
うーん正直上の方がわかりやすいと思うけどなあ
とりあえず下みたいなことをする方法は知らんわ。力になれなくてすまんな

109 デフォルトの名無しさん 2017/07/19(水) 13:37:37 ID:
>>107-108
無理なら無理であきらめるぜー! センキュー!

110 デフォルトの名無しさん 2017/07/19(水) 21:27:36 ID:
cleanは、固定的に削除したほうがいいよ。でないとその内ゴミが混ざる。

まぁ、無理矢理やるなら
allに含めるターゲットを処理するときに中間リストへもファイル名を追加しといて、xargsに食わせるのが無難かと。

111 デフォルトの名無しさん 2017/07/19(水) 23:08:55 ID:
時代はRubyのrake

112 デフォルトの名無しさん 2017/07/19(水) 23:40:47 ID:
>>86
JavaScriptについては、Webリソース(というか個人ブログが多いが)も間違いが多いから注意した方がいい。
> strict modeの有無の組み合わせ
これが要らん。実際見りゃわかるが、全員 strict mode 使っている。
MDNは準仕様書みたいなものだから、非strict modeについても言及する必要もあるだけ。

> javascriptではできない関数の中身や別ファイル、if文の中とかでもメソッド定義が比較的自然に行える
いや、できるぞ。ただしやる必要もないし、意味もないが。
(strict mode の場合はif文中では禁止)

動的にクラス構成を変える必要があるケースはまずないが、(手抜きパッチを除く)
やる場合はプロパティとして差し込むので、それはただの文だ。どこにでも書ける。
function定義そのものではなく、関数ポインタを差し替える。
というか、ここら辺の流儀は他言語と同じだ。
俺は特に疑問を持ったこともなく、分かりにくいとも思わないが。

113 デフォルトの名無しさん 2017/07/19(水) 23:41:35 ID:
> javascriptみたいにifをつけると巻き上げが起こらないみたいにすると
これが違う。(内容自体ではなく、考え方が違う)
プログラミングを暗記で済ませようという馬鹿はJavaScript界隈に多いが、
そうとしか捉えられないのなら、向いて無いから止めた方がいい。(君が上達することはない)
それは「数学は暗記だ!」と言っているようなものだ。
或いはどうにも高校の物理に全く付いていけなかった奴とか。
あれは今にしたら分かるが、抽象思考が出来ない奴には無理だったということだ。
そしてプログラミングではその抽象思考こそが重要であり、逆に、それ以外は大して必要ない。

順に評価されるべきものは順に評価され、(巻き上げなし)、
そうでないものはC的に静的に評価されるだけ。(巻き上げあり)
俺は疑問を感じたことはない。
「巻上げという仕様ガー」とか言い出すから余計に意味不明になるのであって、
そもそも最初から直感的だ。後方参照できるだけでしかない。
JavaScriptはC(正確にはC++)以上に文法が抽象化されているから、暗記には向いてない。
結果的にC++並みのことがC並みの文法で出来るようになっている。俺はここも気に入っている。

それとは別に、君が「全部上から順に評価してくれなきゃヤダ」ならRubyの仕様をマンセーすればいいが、
JavaScriptの仕様はC等コンパイル言語を使ったことがあるやつにとっては非常に直感的だ。
俺にとってはRubyの仕様はウザいだけだね。

114 デフォルトの名無しさん 2017/07/19(水) 23:42:29 ID:
>>88
要するにスクリプト言語はラピッドプロトタイピングには向いているんだよ。
そしてPCの能力が十二分に上がったので、
その遅いコードでも十分実用的だし、問題ないからそのまま使われてる。
俺も、もう低位コードだけCのDLLにして、
中上位コードは全面的にスクリプト言語で行った方がいいと思っている。楽だから。
NumPyはまさにこれでしょ。俺からみてもgoogleの動きは全然不思議じゃない。
ていうか多分、マトモなプログラマならgoogleの動きを不思議に思う奴はいない。
君がそんな言い方をする時点で君は色々分かってないと自白しているようなものなんだが。

> Googleとかパッケージマネージャとかで積極採用されるからにはそれなりの評価点があるはずなんだから
評価点はないね。ビジネス上の観点でしかない。
googleは社内言語を絞ってる。C++/Java/JavaScript/Pythonだ。この中ならPythonだろうさ。
だから、仮にRubyやHaskellがgoogle社内で評価されたとしても、
それらで書かれたツールが出てくることはない。

115 デフォルトの名無しさん 2017/07/19(水) 23:43:14 ID:
>>94
> GHC
サンクス、そうであったか。これもサンプルとしてはいいね。
> モナディウス
Haskellってexeかよ!やってみた。グラディウスにしては速すぎる、、、左手が辛い、、、

> Perl6
つかそれってどういうことだ?
構文解釈等に関しては、実は圧倒的に単純に実装できたりするのか?
pandocもそっち系だ。俺には遅延評価とは無関係としか思えないのだが。

116 デフォルトの名無しさん 2017/07/19(水) 23:50:34 ID:
知識のない奴程語りたがる好例

117 デフォルトの名無しさん 2017/07/19(水) 23:51:34 ID:
C始めるためにVS2017インストして苦C見ようとしてるんだけどどこをどうすればソースを書けるのかちんぷんかんぷん
そもそもCの内容をC++で書けるのか怪しい
スレチかもしれないけど助けて詳しい人

118 デフォルトの名無しさん 2017/07/19(水) 23:52:22 ID:
な、長ぇ…

119 デフォルトの名無しさん 2017/07/19(水) 23:55:40 ID:
完全な初心者?

120 デフォルトの名無しさん 2017/07/20(木) 00:08:04 ID:
ラピッドプロトタイピング用に作られたのがスクリプト言語なんだから向いてて当たり前
ハードではFPGAなんかがASIC前のラピッドプロトタイピング用だね
しかし中上位コードしかかけん奴らがプログラマ気取る風潮はいかがなものかと危惧する
Cでの低位コードもスクリプト言語での中上位コードも書けんとな

121 片山博文MZ ◆T6xkBnTXz7B0 2017/07/20(木) 00:09:55 ID:
>>117
適当な場所(フォルダ)にプロジェクトファイルを作成します。
プロジェクトにソースファイルを追加します。
ソースファイルにソースを書きます。
ビルドします。
デバッグ実行して、正しく動作するか確認します。
バグがあれば修正します。
リリースビルドして、EXEを作成。
exeを配布します。

122 デフォルトの名無しさん 2017/07/20(木) 00:15:44 ID:
任意のエディタでソースを書きます。CL.EXEでコンパイルします。以上

123 デフォルトの名無しさん 2017/07/20(木) 00:16:25 ID:
>>116
にわかなやつほど語りたがる、ってやつだな
何が動機なんか知らんけど
愚にもつかない長文いっぱい書いちゃう子おるよな
これはもう、定期的に出てくるとすら言っていい現象だけど

>>121みたいな簡潔なレスのほうがよっぽど好感度あるわ

124 デフォルトの名無しさん 2017/07/20(木) 00:32:04 ID:
https://ideone.com/
http://codepad.org/

こういうサイト利用して、色々試してみたら?

125 デフォルトの名無しさん 2017/07/20(木) 00:32:44 ID:
>>120
上二行は後付。sed->awk->Perl->その他もろもろ、だろ。PLD->FPGAでもあるし。
下二行は時代の要請。
> MITがSICPを教えなくなった理由
> https://cpplover.blogspot.jp/2016/05/mitsicp.html

俺は中上位コードだけでもいいと思うけど、書き捨てばっかやってるのは駄目だと思う。
こういうことをすると保守ではまるのかーがないと、回避する能力が育たない。

126 デフォルトの名無しさん 2017/07/20(木) 00:36:40 ID:
>>115
関数型全般に言えるけど、言語やテーブルゲームの問題解かせたりし易い。
遅延評価はwebアプリでHTMLの長さを気にしないで読み込める無限リスト便利って読んだことあるな。
んなのどの言語でもそんな変わらんとは思うが。
どっちかと言うとIO部分分離してるから自然とMVCとかMVVMな設計になるってのがメリットに感じる。

127 デフォルトの名無しさん 2017/07/20(木) 01:40:25 ID:
>>126
なるほど言語向きなのは関数型の特性か。
確かにbisonが一体化しているようにも見える。

遅延評価で無限リストがーってのは多分Webライタのデタラメ。
実際、無限リストなんて使おうと思ったことないだろ。
HTMLは多分頭からパースしないと悲惨なことになるだろうし。
(一部曖昧なところがあるらしい)

遅延評価は後払い方式のため、
読み込んだものの、結果的に使わずに捨てたデータが多い場合に負荷が軽くなる。
もちろんオーバーヘッドはあるので、全部使うのなら正格評価の方が軽い。
だから理想的にはどれを使うかきっちり管理して正格評価することだが、
これが面倒な場合は遅延評価にしておけば勝手にそうなる。
ノリとしてはGCと似てる。(管理が面倒なら遅延評価にしとけ)

で、マークアップコンバータとかも、全文書を評価することが分かりきっているのだから、
管理も要らず、普通に考えて正格評価の方が適している。だからあのラインナップは謎だった。
関数型言語の特性だということなら納得だ。

> 自然とMVCとかMVVMな設計になる
これはなあ、、、Cでも苦労するわけでもないので、言語特性ではなく、意識付けの問題かと。
実際にHaskell使おうって奴らはここら辺についても意識高いだろうし、
いい方向に寄与しているとは思うよ。

128 デフォルトの名無しさん 2017/07/20(木) 03:16:53 ID:
>>112-115
>全員 strict mode 使っている。
新しいソースはね。破壊的変更だから古いソースはstrictじゃない場合も多い。

>俺にとってはRubyの仕様はウザいだけだね。
俺もメインでやってるのは静的言語だけど、JavaScriptもPythonもRubyも関数に関してはうざいと思うことはないな
単純に慣れの問題でお前のRubyやPythonの経験が不足してるだけだと思う

Pythonやる前はインデントって不便だろうって思ってたけどすぐなれたし、使ったこともない言語を適当にディスるのはよくないぞ

>最初から直感的だ、後方参照できるだけでしかない
初心者なら直感の理解でいいかもしれんが、ちゃんと仕様を理解するに越したことはない
undefinedが予約語じゃない、typeofの結果が意味不明みたいにjavascriptも含めどの言語にも直感に反する仕様が存在するし、それを利用したライブラリとかのソース読むときにある程度理解してないと困る

>俺からみてもgoogleの動きは全然不思議じゃない。
ID:LYlgQVUQとかID:tZS7qvyeとは別の人?
「Pythonは馬鹿用言語」「Pythonなんてキチガイ馬鹿用言語」っていう人にそんならGoogleみたいなところも使ってるよって言っただけなんだが

>googleは社内言語を絞ってる。C++/Java/JavaScript/Pythonだ
知識が更新されてないな。現在はC/C++、Java、JavaScript、Python、Go、TypeScriptのはず

>評価点はないね。ビジネス上の観点でしかない。
ビジネス上の観点も大事な評価点でしょ

129 デフォルトの名無しさん 2017/07/20(木) 03:42:11 ID:
そもそも「文法が抽象化されている」ってどういうことだろう
javascriptはIE6時代から見てるからかもしれんが、文法からライブラリまで欠陥だらけで、現在の具体的な実装こそが正義な言語というイメージなんだけどな
クラスやプロトタイプチェーンの仕組みとか、thisがどこを指すかとか、for inとオブジェクトや配列がらみの仕様とか直感で完全に理解できる人はいないはず

言語仕様に関しては、C言語も//コメントは使うのに関数先頭以外で変数を宣言できないと思い込んでる人とか結構多いんだよなぁ・・・

130 デフォルトの名無しさん 2017/07/20(木) 09:24:07 ID:
複合文の中で変数を宣言できるのを知らないやつはたまにいるが
printf("aho");
int boke;
これ知らねえやつはいねえだろ
逆に制限のある環境でこれをやってエラー吐かれるアフォがいるくらいで

131 デフォルトの名無しさん 2017/07/20(木) 09:29:55 ID:
ガイジがスクリプト言語に対する感想を述べる場となったC言語スレ

132 デフォルトの名無しさん 2017/07/20(木) 11:37:31 ID:
for( int i=0; i<10; i++) {
print i;
}

で、「i のスコープは for ブロックの中」って言うけど
ブロックって、中括弧の中だよね?

133 デフォルトの名無しさん 2017/07/20(木) 11:48:22 ID:
i++ が中括弧の外にあるようだが?

134 デフォルトの名無しさん 2017/07/20(木) 12:04:35 ID:
そうそう。
だから、中括弧の外にもう一つ別のスコープがあるんだね。試してみた。

135 デフォルトの名無しさん 2017/07/20(木) 13:59:07 ID:
i のスコープより
> print i;
の方が重大な問題だろ

136 デフォルトの名無しさん 2017/07/20(木) 14:01:49 ID:
関数呼び出し演算子無しで呼べるとはC言語では無いな

137 デフォルトの名無しさん 2017/07/20(木) 14:54:53 ID:
すまん、最近 Quick BASIC 始めたからつい。

138 デフォルトの名無しさん 2017/07/20(木) 15:15:43 ID:
もうプチコンで開発するわ!

139 デフォルトの名無しさん 2017/07/20(木) 15:47:57 ID:
>>134
ああそうか、i++が中括弧の外にあるのに
ブロックの中という説明はおかしいだろうと
言いたかったのか

あんまり関係ないけどISO/IEC9899:2011 6.8.5 Iteration statements を
読んでいたら、
for (expression opt; expression opt; expression opt) statement
って書いてあってびっくりしてる
改行の位置は単なるtypoとしても、それを修正すると
for (declaration expression opt; expression opt) statement
になる
制御式のセミコロンが1つって、いつそうなったんだ?

140 デフォルトの名無しさん 2017/07/20(木) 15:48:59 ID:
訂正
for ( expressionopt ; expressionopt ; expressionopt ) statement for
( declaration expressionopt ; expressionopt ) statement
って書いてあってびっくりしてる

141 デフォルトの名無しさん 2017/07/21(金) 10:48:58 ID:
unsigned int を uint32 みたいに書くやつ
あれの標準ヘッダができたの C99 から?

142 片山博文MZ ◆T6xkBnTXz7B0 2017/07/21(金) 11:23:14 ID:
uint32_tね。そうだ。

143 デフォルトの名無しさん 2017/07/21(金) 23:40:03 ID:
>>141
そう。C99から。stdint.hね
自分もありがたく使わせてもらってる。
というか、もうintとか使わなくなった。

144 デフォルトの名無しさん 2017/07/22(土) 13:45:26 ID:
C11とかC99とか似合わせてチェックしてくれるツールってありませんか?

145 デフォルトの名無しさん 2017/07/22(土) 14:09:07 ID:
なにを?

146 デフォルトの名無しさん 2017/07/22(土) 15:36:12 ID:
>>143
サンキューありがとう
stdint.h かー
C99をうちでも標準にすべきかどうか悩むなー

147 デフォルトの名無しさん 2017/07/22(土) 17:15:23 ID:
お隣はもうC11ですってよ!
うちも11にしましょうよ。ボーナスでたんでしょ。

148 デフォルトの名無しさん 2017/07/22(土) 17:42:54 ID:
C++を使えないかあるいはあえて使わないポリシーなのでなければ、C++をbetter Cとして使う方が
いろいろ楽だと思うがな。

149 デフォルトの名無しさん 2017/07/22(土) 17:56:47 ID:
>>147
そうは言うけどなお前・・・
うちはまだローン(C89必須案件)だって残ってるんだぞ

150 デフォルトの名無しさん 2017/07/22(土) 18:58:02 ID:
隣のC99は青くみえる

151 デフォルトの名無しさん 2017/07/22(土) 19:03:04 ID:
俺はstdint.h相当のヘッダファイルを自作してるけどな。
C89コンパイラだったら自作をincludeするようにしてる。

152 デフォルトの名無しさん 2017/07/22(土) 22:05:24 ID:
>>148
betterCとしてC++使ってたら今度は「今時生ポインタなんてありえない、unique_ptr使え」と圧力がかかって、どこまでC++の機能使うか悩む

153 デフォルトの名無しさん 2017/07/22(土) 22:20:17 ID:
ベターCとしての使い方は、C++という名のとおり、設計どおりの使い方だ
基本的にCとの共通部分だけ、C++のみの拡張機能は欲しいところだけつまみ食いは、邪道ではない
unique_ptrも例外ではなく、欲しければ使い、いらなければスルー
それでいい、至極真っ当な使い方だ

154 デフォルトの名無しさん 2017/07/22(土) 23:32:49 ID:
いいこと言うなあ
C with lambdaとして使う踏ん切りがついたわ

155 デフォルトの名無しさん 2017/07/23(日) 00:22:49 ID:
>>154
それならスクリプト言語の方が手っ取り早いと思うがな。
全部shared_ptrやRAIIならほぼGCだろ、とも思うし。

というかC++erの生ポ嫌いは一体なんなんだ?
元々メモリリーク自体はそんなに苦労しないよな?今時ツールで検出できるみたいだし。
Cで何らかのタスク(演算等)をこなす場合、
構造化プログラミングだから同一関数内での確保&解放が多いし。
(というか、そのように書きたければ大概の場合はできる)

156 デフォルトの名無しさん 2017/07/23(日) 00:32:19 ID:
>>155
そう
作り方が下手なだけで言語やツールのせいする奴多すぎ
技術屋としてのレベル/精度が低いだけ

157 デフォルトの名無しさん 2017/07/23(日) 01:06:53 ID:
ちょっと補足しておく。

俺が思うに、容量的に問題がないのであれば、
大体の場合はmallocではなくallocaで実装でき、当然、管理する必要もない。
だからCはもうちょっとalloca推奨でもいいとは思うし、
そのためにもうちょっとスタック領域に多めに割り当ててくれとも思う。
(コンパイラがallocaをmalloc+freeに分解し、呼んだ関数の末尾でfreeしてくれてもいい。
そうすれば容量の心配ないallocaが手に入るから。
てかこれやってるコンパイラないんか?誰でも思いつきそうだが)

158 デフォルトの名無しさん 2017/07/23(日) 01:43:34 ID:
んー、イメージ的には、組み込み系が多そうだしcならヒープ使った方がいいきがする。

小メモリで済むのはc最大のアドバンテージだと思うんだ。

159 デフォルトの名無しさん 2017/07/23(日) 02:13:19 ID:
>>155
なんでC with lambdaならスクリプト言語の方が手っ取り早いのか全くわからん

160 デフォルトの名無しさん 2017/07/23(日) 08:51:27 ID:
> 構造化プログラミングだから同一関数内での確保&解放が多いし。

このフワフワした一文だけで、今後こいつからは何の情報も得られないのが分かる

161 デフォルトの名無しさん 2017/07/23(日) 11:07:58 ID:
>>155
生でもきちんと管理していれば問題は起きないが
いちいち気にしなければならないことが多いので
もうずっと付けてた方がいいよね という話ですよ

162 デフォルトの名無しさん 2017/07/23(日) 15:05:48 ID:
>>153
designated initializerが使えないのでワースCだ

163 デフォルトの名無しさん 2017/07/23(日) 16:32:54 ID:
>>162
これか。
https://stackoverflow.com/questions/18731707/why-does-c11-not-support-designated-initializer-list-as-c99
つか入れない理由ないし、ClangとVSでは使えるとも書いてあるが、
C++仕様自体は無駄に意識高くて無視しているといったところか。

一部C++がCの完全上位互換ではない部分があると聞いたが、これか。
他にあれば、キーワードだけでも教えてくれれば助かる。

164 デフォルトの名無しさん 2017/07/23(日) 16:48:41 ID:
tentative
restrict
_Imaginal
_Thread_local
_Generic
_Bool
extern const
storage class "auto"
pointer to register

165 デフォルトの名無しさん 2017/07/23(日) 17:18:38 ID:
>>164
サンクス。感想は以下。
俺には我慢できる範囲だな。

tentative <- 要らん、つか廃止の方がいい
restrict <- ねえのかよ!しかし自動並列化とかしない限り要らん
_Imaginal <- class があるから要らん
_Thread_local <- これはC++にあってもいいと思うが、、、
_Generic <- マクロがらみか?価値は俺にはよく分からん
_Bool <- boolが既に拡張済みだから要らん
extern const <- 個人的にはconst派ではないからいいや
storage class "auto" <- なんだこれ?いわゆる自動変数って全部これだと思うが、、、
pointer to register <- registerそのものが最早要らんし

166 デフォルトの名無しさん 2017/07/23(日) 17:56:02 ID:
>>163
コンパウンドリテラル
(float[2]){1,2}

167 デフォルトの名無しさん 2017/07/23(日) 19:12:51 ID:
>>166
designated initializerと同じに見えるが違うのか?
前者は初期化、後者はリテラルとして使ったときの呼称か?
http://seclan.dll.jp/dtdiary/1999/dt19991101.htm
http://d.hatena.ne.jp/taiyo/20080412/p1

168 デフォルトの名無しさん 2017/07/23(日) 19:28:51 ID:
全く違う

169 デフォルトの名無しさん 2017/07/23(日) 19:30:48 ID:
>>165
tentativeがないくせにテンプレート具現化の統合という
同じベクトルでもっと面倒くさいのがあるわけだが

170 デフォルトの名無しさん 2017/07/23(日) 19:38:30 ID:
>>167
ファッションとして「ベターC」と言いたがってた事はよくわかった

171 デフォルトの名無しさん 2017/07/23(日) 20:01:31 ID:
「ベターC」を名乗るのになんか条件ってあるのかね?
個人的には、K&Rは時代遅れのC、C89が普通のC、それより改善されているのがベターC、ってな感覚だが。

172 デフォルトの名無しさん 2017/07/23(日) 20:09:09 ID:
>>171
俺の理解では、C99がC、
それにC++の機能(class等)をつまみ食いした「ほぼCだけど、、、」がbetterC。

173 デフォルトの名無しさん 2017/07/23(日) 20:26:36 ID:
>>171
条件はない
"Cの後置増分"とは、"最初はC"でよいという意味だ
そこから段階的にソフトランディングで移行できることが
C++の売りなので、気まぐれにつまみ食いすることは
実はC++らしい使い方の1つといういことだ

174 デフォルトの名無しさん 2017/07/23(日) 20:35:47 ID:
C99以降の機能を使いだすとC++でビルド通らなくなるし
Cを使わずベターCとしてC++使うなら、C99/C11を知るは必要ないでしょ
Cっぽいものが書ければ十分

175 デフォルトの名無しさん 2017/07/23(日) 20:39:42 ID:
ベターな部分がないのに「ベターC」 w

176 デフォルトの名無しさん 2017/07/23(日) 21:05:01 ID:
あぁなるほど、C99が基準だとC++は劣化Cに見えるわけか。
ただ、一般には「ベターC」という言い方がされたのはC++に対してだと思うがなぁ。

177 デフォルトの名無しさん 2017/07/23(日) 21:06:32 ID:
ヒント: 煽り耐性

178 デフォルトの名無しさん 2017/07/23(日) 21:14:20 ID:
>>175
よく分からんが君は生C派なのか?
正直俺はbetterC派とC++派しかもう居ない(生C派は絶滅済み)と思っていたのだが、
昨今のC++の暴走を見てると生C派が健在なのも分からんでもない。Linusもそのようだし。

ただ、classとかtemplateとかは「控えめに使っている限りは」便利だと思うぞ。
C++erは無理に活用しようとしておかしなことになっているが。

>>176
俺の理解では、
Cでは機能が足りないが、C++の機能は行き過ぎ(やりすぎ)、と思う人達が、
CとC++のちゃんぽんをbetterCと呼称している。

179 デフォルトの名無しさん 2017/07/23(日) 21:17:33 ID:
>>175
関数オブジェクトとラムダ式

180 デフォルトの名無しさん 2017/07/23(日) 21:25:32 ID:
>>176
あ、もしかしてそれ以前のことか?
それなら、Objective-CとC++の対比で使われ、以下wikiの通りだ。
> Objective-CはCを拡張してオブジェクト指向を可能にしたというよりは、
> Cで書かれたオブジェクト指向システムを制御しやすいようにマクロ的な拡張を施した言語である。
> したがって、「better C」に進んだC++とは異なり、「C & Object System」という考え方であり、
> ある意味2つの言語が混在した状態にある。
> https://ja.wikipedia.org/wiki/Objective-C

ただし、Objective-Cはかなり前から実質的に死亡していたので、
最近「betterC」って言われているのは「CとC++のちゃんぽん」のはず。
要するに「いいとこ取り」をしようとしているのがbetterC。
C++の流儀で全部書け、というのがC++。
うるせえC++なんて全部ゴミだ、というのがC。

181 デフォルトの名無しさん 2017/07/23(日) 21:34:26 ID:
>>178
今のC++は、かつてのC++の暴走に対する反省でできているぞ
void func() throw(std::bad_exception); みたいな馬鹿げた話が
void func() noexcept(false); で済むとか
std::bind1stだのstd::bind2ndで3rdや4thがないなんて馬鹿げた話が
std::bindだけで済むだけでなくstd::mem_funとstd::mem_fun_tもクビ
char* port = (char*)0x40044000; みたいな二度手間も
auto port = (char*)0x40044000; で済む

182 デフォルトの名無しさん 2017/07/23(日) 22:02:06 ID:
C++普及始めはベターCって言うとC++使いこなせなくてC++でもC文法を良く使うって意味だったみたいなんだが、今はオブジェクト指向も浸透して、その長所短所も洗い出されて来たからいいとこ取りって意味って理解。
でも、今も昔も両者が混在してるんだと思う。

183 デフォルトの名無しさん 2017/07/23(日) 22:04:03 ID:
>>181
上2つはそれでも暴走中だとは思うがな。
GC無いと関数型は辛くね?
例外は俺は積極的には使ってないのでよく分からない。

下1つは、俺はC的記述、
> char* port = (char*)0x40044000;
の方が好きだな。
キャスト無しで書かせてくれとは思うが、型は左辺側に書きたい。
それとは別に、autoの価値も認める。リフレクションとかでマジで死ねる。(VC++/CLI)
だけと他言語と揃えてvarにしろよとは思うよ。なぜauto?

184 デフォルトの名無しさん 2017/07/23(日) 23:15:19 ID:
Cじゃなくて全くの別物を「ベターC」と謀って何をしたいんだ?

185 片山博文MZ ◆T6xkBnTXz7B0 2017/07/23(日) 23:29:44 ID:
>>183
昔、autoというキーワードがあったが、あまり使われなかった。そこで新しいキーワードを作るよりも、
使われていないキーワードを再利用した方がいいと判断された、らしい。

186 デフォルトの名無しさん 2017/07/23(日) 23:30:25 ID:
registerもそのうち使い回される

187 片山博文MZ ◆T6xkBnTXz7B0 2017/07/23(日) 23:35:53 ID:
キーワードが増えると、キーワードと同じ変数名や関数名はコンパイルできなくなるという問題がある。

188 デフォルトの名無しさん 2017/07/23(日) 23:53:29 ID:
>>183
さあ? 俺はGCがないことにストレスを感じたことがない
あんなもんいらねえ、つーか却って迷惑
機械という奴隷は完全に支配したいんで

189 デフォルトの名無しさん 2017/07/23(日) 23:58:37 ID:
>>185,187
> 記憶クラス指定子としての auto の使用が非常に少ないとの調査結果などから、当該用途は直ちに廃止となった。
> https://cpprefjp.github.io/lang/cpp11/auto.html
> storage class "auto" (>>164)
K&Rも確認して、なるほど状況は分かった。autoはまあ許せる範囲か。

しかしこれ、autoとregisterがあったということは、
元々のコンセプトのデフォはもっと遅い外部メモリかよ。(コアメモリとか?)

190 デフォルトの名無しさん 2017/07/24(月) 00:18:45 ID:
>>189
autoは記憶クラスのデフォルト
省略可能で、むしろつける理由がなかったのでだれもつかわなかった

registerは変数をレジスタに置いたほうがいいというコンパイラへのヒント
しかし、コンパイラの改良が進みコンパイラに任せたほうが良くなった
人間による指定は不要なばかりか、むしろ最適化の邪魔になるのでコンパイラは無視するようになった

191 デフォルトの名無しさん 2017/07/24(月) 00:28:47 ID:
betterCは明確な定義はないだろうけど、
http://www.kijineko.co.jp/tech/betterc/1
で言われてるのが大体の認識なんじゃない?

(ライブラリの内部だけとかではなく)クラスとかを使うならそれはもうC++でしょ
メモリ管理とかvtableの仕様とかもしっかり確認する必要があるので適当にクラスを使うのはおすすめしない

192 デフォルトの名無しさん 2017/07/24(月) 01:07:47 ID:
>>188
君はおそらくbetterC派だよな?(ただしほぼC++の)
ちなみにどういう組み合わせで使ってる?

GC言語と非GC言語ではそもそも組み方が違う。これは全く>>156の指摘どおりで、
しかもその後3匹馬鹿が現れて(159-161)彼の言い分が証明されてしまったw

さて関数型だが、どれくらい使っている?
俺はマトモには関数型をやってはいないが、それでも分かる範囲で言うと、
関数型言語はGC+型なし(型推論)が多い。
これに対しC++で関数型的アプローチを取ると、
型が爆発してtemplateで書くにしても大変でウザい。マジでvarくれよ、になる。
そして決定的に異なるのは資源のライフタイム管理で、GC言語はこれをやらない。
C++は一応自分でやることになっているのだが、
上記の通り、他関数型言語はGC前提なので組み方が異なっており、本来は参考にならない。
そしてC++のラムダはスタック方式に強引に載せている、なんとも中途半端なものだ。
これは全く他関数型言語のスタイルにはフィットしない。

だからC++で関数型アプローチをする現実路線としては、
C++をGC言語側に寄せる手法、つまり、
・ラムダは完全に関数オブジェクト扱いで、クロージャ変数は主にヒープ上
・スマポ、RAII徹底
という、いわゆる今のC++erが目指しているものに近くないと辛いはず。
ほぼC++寄りのbetterCというべきか。

君のスタイルはこれで合ってるか?合ってたらGCイラネってのも納得だ。
合ってなければ、どの組み合わせで使っているのか教えて欲しい。参考にする。

193 デフォルトの名無しさん 2017/07/24(月) 01:33:19 ID:
>>190
autoがデフォか。なるほど了解だ。

>>191
> クラスとかを使うならそれはもうC++でしょ
> メモリ管理とかvtableの仕様とかもしっかり確認する必要があるので
ここはちょっと微妙。
まずvtableはプログラミングモデルとしては見えないので知っておく必然性はない。
(もちろん知っておいたほうがいい)
次にメモリ管理だが、C++に関してはclassとstructがほぼ同一なので、
C的に自前classをnewして自分でdeleteするという使い方も出来る。(A)
そうではなくて、デストラクタとかやりだすとややこしくなってくるが、(B)
最終的なC++erの目標、コンテナ等にも問題なく載るように、となると、
ムーブコンストラクタ等のC++的お作法を全て実装しておかないといけない。(C)
俺は(A)ならC、(B)ならbetterC、(C)ならC++と呼ぶね。

多分CとC++のコンセプトの根本的な違いは、
Cは厳密に「書いてないことはやらない」なのに対し、
C++は「出来る限り全自動を目指す」だと思う。
だから、「どこまで自動化しようとしているか」で測ればよいと思う。

194 デフォルトの名無しさん 2017/07/24(月) 02:16:26 ID:
>>193
うーん、その定義のbetterCは誰向けなんだ

初心者はC++の仕様(fwriteをvtableのあるクラスに使っちゃったり、newしたのをfreeしたりみたいな)にはまるだろうし
中級者はどこまでがbetterCなのかで混乱しそう(参照は?とかスマートポインタは?とかstringは?とか)
上級者はbetterにすることなく快適にCかC++で満足してそう

クラスとかデストラクタだけ使うみたいな方針で書かれてるソフトって何があるの?

195 デフォルトの名無しさん 2017/07/24(月) 02:58:28 ID:
ベターperlのruby使おうぜとか言いだしそうだな アホか

196 デフォルトの名無しさん 2017/07/24(月) 02:59:30 ID:
基本Cで行きたいけど、クロージャが作れないことだけはどうしようもないのでそこだけC++って考えるんだけど、上級C使いはクロージャいらんのだろうか?

197 デフォルトの名無しさん 2017/07/24(月) 04:31:31 ID:
いらない

198 デフォルトの名無しさん 2017/07/24(月) 05:34:01 ID:
>>192
あ? 俺はバリバリC++使いだよ
ベターCをやっている認識は全くない

GCの話に型推論が出てくるのは悪いが意味わからん
varが欲しいんならtemplateは関係ない(脇役にすぎない)し
typeidやvoid*で特注品を作ればいい(COMとかみたいに)
ラムダ式もGCには関係ない(脇役にすぎない)し
ステートレスラムダみたいにスタックを使わないのまである

クロージャ変数はヒープ上って何だ?
auto closure{[&]{}};
auto heap{std::make_shared<decltype(closure)>()};
みたいなことすんのか?
ちょっと変態すぎて俺はついていけないなあ

俺はスマポ使うが生ポも普通に使う
状況で使い分けだ

RAIIつまりunwindingはGCとは全く無関係

RAIIだとかpImplだとかは一応知ってるが
そういのの原理主義にとらわれて
自分の頭で考えるのをやめたらいかんと思っている

199 デフォルトの名無しさん 2017/07/24(月) 07:34:15 ID:
RAII は便利なんだがなぁ‥

200 デフォルトの名無しさん 2017/07/24(月) 10:04:09 ID:
>>189
ttp://zdnet2.cbsistatic.com/hub/i/r/2015/12/01/5e3590e7-725a-4d77-97cf-a64768d759a1/resize/1170x878/501ecb90884df8d47e13f80dffc6b0a7/42-53033264.jpg
水銀メモリ程度だろ

201 デフォルトの名無しさん 2017/07/24(月) 11:30:39 ID:
>>189
今だってレジスタに比べればメモリは十分に遅い
キャッシュや最適化技術の進化で通常の利用では考慮する必要性が薄いだけ

202 デフォルトの名無しさん 2017/07/24(月) 20:11:23 ID:
>>200
うわかっけぇ~~~~!!

203 デフォルトの名無しさん 2017/07/24(月) 23:14:38 ID:
>>194
俺的には「C++へのかぶれ具合」でC/betterC/C++を判断しようとしてる。
もちろんclassだけではなく、他の機能でも同様に判断して、
どれが一番近いか(どう表現すると一番誤解が少ないか)という話だ。

classはC->C++時におそらく最初に使用する機能であり、
classを使った時点でC++ならbetterCってほぼなくなるよ。
文法でしか判断出来ない馬鹿も最近は多いけど、本質は組み方でしょ。

> クラスとかデストラクタだけ使うみたいな方針で書かれてるソフトって何があるの?
知らんよ。
では逆に聞くが、作者やその他大勢がbetterCだと認識している有名OSSってあるのか?
あるのなら、みんなでそれを見に行けば終わる話だ。
なお俺はこれも知らんよ。
V8のコードがC++流じゃないって言っている奴はいるが、俺は詳細確認してないし。
http://steps.dodgson.org/bn/2008/09/07/

204 デフォルトの名無しさん 2017/07/24(月) 23:15:12 ID:
>>198
全面マニュアル派か。まあそういう使い方も出来るわな。
俺は嫌いではないよ。
というかC派からは割と賛同されるだろうね。C++派からは異端視されるだろうが。

> クロージャ変数はヒープ上って何だ?
ステートレスとか、キャプチャがなければどうでもいいし、
或いは糖衣とか、ローカル関数っぽく「その場で」使うのなら全く問題ないが、
一般の関数型と同様に可搬的に使おうとすると、生存期間はスタックとは独立にする必要があり、
スタック上の変数を参照キャプチャするのはまずい。
結果、クロージャ内変数の実体はスタック上ではなくヒープに置かれることになる。
これをそう表現した。関数オブジェクトは常にこうだろ。

> RAIIつまりunwindingはGCとは全く無関係
ユーザ側には無関係だが、システム側は密接な関係がある。
GCを効率化する場合、参照カウントというのは一つの代表的手段で、
この場合、ランタイム上で同じことをやるからだ。
だから「全面RAII+shared_ptr」ってのはよく出来たGCと実行効率は同じになる。
だったら最初からGC言語使えよC++erはアホなのか?ってのが俺の感覚だ。
効率ガーとか言いながら完全な二度手間してるのはテメーらだよ、ってこと。
ただし君はこれには該当しない。生ポも普通に使う派だからだ。

まあここら辺の「どうとでも書ける」という懐の広さもC++の魅力ではあるのだろうけども。
本来は君のような全面マニュアル派が正統C++派でもおかしくないんだが。
そういうコンセプトの言語ではあるから。
ただ最近おかしくなっている(気がする)のはやっぱり意識高い系の暴走なのかな?

205 デフォルトの名無しさん 2017/07/24(月) 23:54:33 ID:
>>203
betterCの定義をしてる機関があるわけじゃないから人それぞれの定義で良いとは思う
俺の認識だとbetterCはC言語をC++モードでコンパイルする程度でもbetterCだと思ってる

#include <stdio.h>
int main(void){
int a = 1000000;
char *b = a;
}

Cだと(昔の寡黙なコンパイラは)そのまま通過。 C++だとエラーで停止。
今は警告出してくれるからこういう意味で使う理由はなくなったんだけどね
(ちなみに、VSで適当にプロジェクト作ると.cppファイルができてC++モードでコンパイルされる)

>classを使った時点でC++ならbetterCってほぼなくなるよ。
betterCってどういう意味合いにせよ現代だと初心者や趣味用で、もうほぼ存在しないってイメージだな

206 デフォルトの名無しさん 2017/07/25(火) 00:58:02 ID:
void sendMessage(const char *message) {
char c;
for (const char * p = message ; c = *p; p++)
SPI.transfer(c);
}

このようなメソッドを実行する場合、他の単語のアドレスと繋がってバグが出る恐れはありますか?

--例--
const char *cd = "CD";
sendMessage("pen");

アドレス 文字
1000000 p
1000001 e
1000002 n
1000003 C
1000004 D

207 デフォルトの名無しさん 2017/07/25(火) 06:46:20 ID:
>>206
普通こうなるやろ

アドレス 文字
1000000 p
1000001 e
1000002 n
1000003 ¥0
1000004 C
1000005 D
1000006 ¥0

208 デフォルトの名無しさん 2017/07/25(火) 07:58:05 ID:
>>204
全面マニュアル派って何だ?


> スタック上の変数を参照キャプチャするのはまずい

え? え??
自動記憶域期間の変数以外の何をキャプチャするんだ?
クロージャ内変数がヒープ?? いったい何を言っている?
struct closure{
int& reference_to_capture;
closure(int* capture) : reference_to_capture(*capture) { }
void operator()() {
int internal_variable_of_closure;
}
};
こうなってるだけだぜ? どこにヒープが出てくるんだ?

209 デフォルトの名無しさん 2017/07/25(火) 07:58:22 ID:
>>204

> システム側は密接な関係がある。

関係ねえって
some_class obj1;
jmp_buf jb1;
if(setjmp(jb1) == 0) {
obj1.construct(jb1);
some_class obj2;
jmp_buf jb2;
if(setjmp(jb2) == 0) {
obj2.construct(jb2);
obj2.destruct();
}
obj1.destruct();
}
こうなってるだけだぜ? どこにヒープが出てくるんだ?

> 最近おかしくなっている

C++11以後は正気に戻る努力をしてるぞ

210 デフォルトの名無しさん 2017/07/25(火) 08:31:48 ID:
知ったかクンの自己弁護ショーがはじまるよ

211 デフォルトの名無しさん 2017/07/25(火) 16:02:02 ID:
全面マニュアル派って何だろう。
悪魔的<>全面マニュアル派 みたいなニュアンスなんだろうか。

あんまり聞いたことない言葉だな

212 デフォルトの名無しさん 2017/07/25(火) 17:10:25 ID:
<> ダイヤモンド演算子が出たぞ

213 デフォルトの名無しさん 2017/07/25(火) 17:24:31 ID:
<>を何と読むかで、C++寄りかBASIC寄りかわかるな

214 デフォルトの名無しさん 2017/07/25(火) 20:09:07 ID:
残念、perl でした!

215 デフォルトの名無しさん 2017/07/25(火) 21:09:32 ID:
>>207
回答ありがとうございます
そのような仕組みになっているとは知りませんでした!
詳しく調べてみようと思います

216 デフォルトの名無しさん 2017/07/26(水) 15:57:11 ID:
age

217 デフォルトの名無しさん 2017/07/27(木) 03:13:21 ID:
>>206
ない。ダブルクォーテーションで括った場合は最後に ¥0 入るから。

218 片山博文MZ ◆T6xkBnTXz7B0 2017/07/27(木) 03:15:50 ID:
>>217
char s[3] = "123";
のときは'¥0'が入らない。

219 デフォルトの名無しさん 2017/07/27(木) 04:24:15 ID:
領域破壊で配列の直後のエリアに入ることは入る

220 デフォルトの名無しさん 2017/07/27(木) 07:29:22 ID:
>>219
宣言時の初期化では入らんよ

221 デフォルトの名無しさん 2017/07/27(木) 13:22:08 ID:
>>219
実名晒せよ、その下痢糞コンパイラ

222 デフォルトの名無しさん 2017/07/27(木) 18:39:00 ID:
素朴な質問で悪いが、C言語ってなんで多くが挫折すんの? JavaやC#なら、派遣でも生き延びていくのに・・・

223 片山博文MZ ◆T6xkBnTXz7B0 2017/07/27(木) 19:09:17 ID:
Cは、ポインターとかマクロとか落とし穴が多いんだよね。文字列を扱うのも難しいし。しかもセキュリティ上の欠陥がある。

224 デフォルトの名無しさん 2017/07/27(木) 19:15:04 ID:
Cにセキュリティ上の欠陥?
使い方の問題でしょ?

225 デフォルトの名無しさん 2017/07/27(木) 19:16:27 ID:
大昔に出来た低級言語なんだから、
多少の事は我慢

226 デフォルトの名無しさん 2017/07/27(木) 19:17:38 ID:
Cは環境依存が激しくて、何やるにもめんどくさいからだと思うな。
コピペプログラマが生きていけない。

227 デフォルトの名無しさん 2017/07/27(木) 19:24:01 ID:
ポインタとかもだけど、リストの使い方は知ってても作り方知らない子とか多そうだぬ。

228 デフォルトの名無しさん 2017/07/27(木) 19:25:18 ID:
何のリスト?
初期化リスト?

229 片山博文MZ ◆T6xkBnTXz7B0 2017/07/27(木) 19:26:56 ID:
連結リストだろ、JK。

230 デフォルトの名無しさん 2017/07/27(木) 19:41:55 ID:
いや連結リストの作り方知らない子はレアだから違うだろJK

231 デフォルトの名無しさん 2017/07/27(木) 19:49:40 ID:
ごめん。
ただの偏見。
JavaやC#はListクラスで連結リスト使えるから、作り方知らない若者多そうって思ってた。
そうかレアか。
安心した。

232 デフォルトの名無しさん 2017/07/27(木) 19:50:41 ID:
使い方
って書いてあるから
Cの機能にあるリストだと思ったのだが

233 デフォルトの名無しさん 2017/07/27(木) 19:52:12 ID:
>>227が悪い

234 デフォルトの名無しさん 2017/07/27(木) 19:55:40 ID:
>>232
Cにリストって有ったっけ?
ANSI C止まりだから、最近のは入ってるのかな。

>>233
ホントごめん。

235 デフォルトの名無しさん 2017/07/27(木) 19:59:03 ID:
だから
初期化リスト?
って書いたんだけど

236 デフォルトの名無しさん 2017/07/27(木) 20:11:05 ID:
初期化リストってなんだろ。。。

あれかな。

int a[] = {1,2,3};

みたいな奴か?
あんなん、数が100とか200になったらループで初期化とかになるから違うかな。
JavaやC#もその辺は変わらなかった気もするけど。

まあいいや。
迷惑かけたみたいだし、ROMるわ。

237 デフォルトの名無しさん 2017/07/27(木) 20:28:21 ID:
>>222
C言語は同じことをするのにもいろんな書き方ができる。無駄に難しくも書ける。

238 デフォルトの名無しさん 2017/07/27(木) 21:58:49 ID:
セキュリティ上の欠陥がある。
セキュリティ上の欠陥がある。
セキュリティ上の欠陥がある。

239 デフォルトの名無しさん 2017/07/27(木) 22:01:29 ID:

240 デフォルトの名無しさん 2017/07/27(木) 22:02:42 ID:
>>238
それ、欠陥じゃなくてそこまで理解して使用するものだから。本気で言ってんの?

241 デフォルトの名無しさん 2017/07/27(木) 22:09:44 ID:
リーナス君ならどんな暴言吐いてくだろうかね

242 デフォルトの名無しさん 2017/07/27(木) 22:10:30 ID:
リストの「作り方」って書いてあるのに初期化リストを持ってくる奴ってマジで近くにいてほしくないわ

243 デフォルトの名無しさん 2017/07/27(木) 22:20:24 ID:
>>241
リーナスくんがメビウスに暴言?

244 片山博文MZ ◆T6xkBnTXz7B0 2017/07/27(木) 22:22:40 ID:
拳銃は危ないよなあ。原子炉の制御にC言語を使われたら、それは拳銃のように危ない。
Cを安全に使うには、安全装置とか哲学とか人工知能みたいなものが必要になる。
さもないとどこかの国みたいにハッキングされるだろう。

245 デフォルトの名無しさん 2017/07/27(木) 22:31:06 ID:
>>244
原子炉の制御にC使ってるんじゃない?
むしろ、C以外の方が危ない気が。

246 デフォルトの名無しさん 2017/07/27(木) 22:34:40 ID:
>>238
今時の言語の例外処理の相当する部分も自分で書くからねぇ。
安全じゃないと言えばそうだし、元々プロ向け言語って言われてたし。
そこに憧れて火傷する人は昔から多かった。
(自分含む)

247 デフォルトの名無しさん 2017/07/27(木) 22:40:41 ID:
>>242
日本語読めないアホ

248 片山博文MZ ◆T6xkBnTXz7B0 2017/07/27(木) 22:41:49 ID:
あ、「C言語にセキュリティ上の欠陥がある」は、国家機密だからな。絶対に他のヤツに言うなよ。

249 デフォルトの名無しさん 2017/07/27(木) 22:42:44 ID:
ツマンネ

250 デフォルトの名無しさん 2017/07/27(木) 22:43:40 ID:
何がどう危ないのかわかってないやつが、ふわっと危機感もってるだけだろ

↓これと同じこと
http://zip.2chan.net/6/res/3050541.htm

251 デフォルトの名無しさん 2017/07/27(木) 22:52:42 ID:
>>222
JavaやC#の方が簡単だから。

というか常識的に考えて分かるだろ。
世界は一旦Cで統一された。
その後出てきた言語はCの駄目なところを改善している。
それだけ。

252 片山博文MZ ◆T6xkBnTXz7B0 2017/07/27(木) 22:56:04 ID:
ダンディ坂野は危険。sprintfの代わりにsnprintf使え。セキュアバージョン(_s)を使え。とか色々あるよな。

253 デフォルトの名無しさん 2017/07/27(木) 23:06:09 ID:
(σ・∀・)σゲッツ!!

254 片山博文MZ ◆T6xkBnTXz7B0 2017/07/27(木) 23:13:00 ID:

255 片山博文MZ ◆T6xkBnTXz7B0 2017/07/27(木) 23:41:43 ID:
標準文字列関数では安全に書けない、安全に書ける人がほとんど居ない。これ、完全にワナですから。

256 デフォルトの名無しさん 2017/07/27(木) 23:57:39 ID:
バッファのサイズに収まるように普通書くだろ
そう書けない奴が悪い

257 デフォルトの名無しさん 2017/07/28(金) 00:08:15 ID:
>>256
それはその通りだけど、個人が責任を取れる問題じゃないし。

258 デフォルトの名無しさん 2017/07/28(金) 00:14:30 ID:
>>218
そうだった。Cだとエラーにならんな。C++だとエラー。

259 片山博文MZ ◆T6xkBnTXz7B0 2017/07/28(金) 00:19:41 ID:
文字列の連結だって安全にやろうとすれば、長さがわからない文字列にstrcatなんて使えないじゃん。

260 デフォルトの名無しさん 2017/07/28(金) 00:33:30 ID:
てきとーに char s[1000]; とかやってどんどん strcat()
そして死亡

261 デフォルトの名無しさん 2017/07/28(金) 00:47:30 ID:
Cでは適当な奴は死にます

262 デフォルトの名無しさん 2017/07/28(金) 02:06:17 ID:
1ビットの変数同士を比較する場合
& ビット演算子
&& 論理演算子
どっち使った方がいいの?

---例---
input mem_ack, cpu_ack
wire mem_ack, cpu_ack




if (‾(mem_ack & cpu_ack))
state <= 2
--------

263 デフォルトの名無しさん 2017/07/28(金) 02:08:50 ID:
>>261

逝きろ

264 デフォルトの名無しさん 2017/07/28(金) 06:32:14 ID:
>>257
版権が会社にあるコードなら
もちろん会社の責任でテストするが
だから何?

265 デフォルトの名無しさん 2017/07/28(金) 06:51:58 ID:
>>247
ブーメラン過ぎる w
初期化リストの「作り方」の説明してみな

266 デフォルトの名無しさん 2017/07/28(金) 10:25:49 ID:
おいVerilog使い、なぜここに来た?

267 デフォルトの名無しさん 2017/07/28(金) 10:43:31 ID:
Cスレでは初期化リストは「書く」とか「記述」するものであって「作る」ものじゃ無いな
ツールやマクロで生成したり作ったりする事はあるが、そう言うまれな場合は「マクロで作る」と書くだろう

268 デフォルトの名無しさん 2017/07/28(金) 10:54:04 ID:
>>262>>266
ホントだw
よく見たらC言語じゃなくてVerilogだなwww

269 デフォルトの名無しさん 2017/07/28(金) 11:13:16 ID:
>>267
じゃあ違うとすると、
C言語のリストって何だ?
って話

270 デフォルトの名無しさん 2017/07/28(金) 12:35:43 ID:
>>269
だから、データ構造としてのリスト構造しかないでしょって話では?
以下ネバーエンディングストーリー

271 デフォルトの名無しさん 2017/07/28(金) 12:42:15 ID:
C言語と関係ない

272 デフォルトの名無しさん 2017/07/28(金) 13:28:06 ID:
文法上でリストと呼ばれているものは初期化リストの他にもたくさんあるぞ
一々あげないが、パラメータリストとか

273 デフォルトの名無しさん 2017/07/28(金) 15:09:08 ID:
va_listなら頑張れば作れる

274 デフォルトの名無しさん 2017/07/28(金) 16:20:09 ID:
>>272
で?

275 デフォルトの名無しさん 2017/07/28(金) 16:32:13 ID:
ID:tCxrViSfが救いようの無いバカって事だよ

276 デフォルトの名無しさん 2017/07/28(金) 18:33:35 ID:

277 デフォルトの名無しさん 2017/07/28(金) 18:49:21 ID:
連結リストを一から作れるってそんなにいないんじゃないかな

278 デフォルトの名無しさん 2017/07/28(金) 18:55:04 ID:
1からの定義というか
0からではないんだよね?というか
まぁそのへんフワフワだけど

学校でプログラミング習ってるやつらは
一回はそれ「作らされてるから」
今でも作れって言われたら作れると思う

279 デフォルトの名無しさん 2017/07/28(金) 19:06:21 ID:
あ、今の子はPascalとかCとか習わないのかな…

280 デフォルトの名無しさん 2017/07/28(金) 19:09:55 ID:
>>272
で、それらの「作り方」について説明してくれるかな w

281 デフォルトの名無しさん 2017/07/28(金) 19:14:48 ID:
脱初心者の登竜門の定番だね
自己参照構造体とポインタを理解していればそれほど難しくはない

282 デフォルトの名無しさん 2017/07/28(金) 19:17:50 ID:
えちょっと待ってジェネリックなリストとかじゃなくて、doubleのリストとか、なんか自分で決めた型のリストとかだよね?
初心者向けのCの本で書いた記憶があるんだけど、最近は載ってないの?

283 デフォルトの名無しさん 2017/07/28(金) 19:21:50 ID:
苦CとやさしいCには載ってなかったな。
自分もCのアルゴリズム本でリストは覚えたし。

284 デフォルトの名無しさん 2017/07/28(金) 19:32:08 ID:
ジェネリックなリストとdoubleのリストって
ほとんど差が無いような

285 デフォルトの名無しさん 2017/07/28(金) 20:00:04 ID:
>>279
やらないよ

286 デフォルトの名無しさん 2017/07/28(金) 20:04:12 ID:
>>277
struct List_t {
struct List_t *Previous;
struct List_t *Next;
double Data;
};
のDataの型変えるだけだし
まあいろんな型が必要だとテンプレートが欲しくなるけどマクロでもそこそこ行けるしね

287 デフォルトの名無しさん 2017/07/28(金) 20:06:39 ID:
初心者に双方向はまずいですよ。

288 デフォルトの名無しさん 2017/07/28(金) 20:06:46 ID:
そこはテンプレートが遅くなる要因だから、性格の違いって事で。

289 デフォルトの名無しさん 2017/07/28(金) 20:12:26 ID:
>>286
普通,実用に供するのならば,void *Data だね

290 デフォルトの名無しさん 2017/07/28(金) 20:21:38 ID:
型検査引っ掛からなくなるんだから、実用なら必要な型でリスト作らんと怖いだろ。
元々かっちり作る用途向けで、そう言うのはどうしてもって時だけ。

291 デフォルトの名無しさん 2017/07/28(金) 20:24:27 ID:
>>287
片方向でも双方向でも大して変わらないと思うが

292 デフォルトの名無しさん 2017/07/28(金) 20:33:05 ID:
いずれにしろリストなんて簡単
setになると途端にレベルが上がる
それこそ、
使えても作れない人は多い

293 デフォルトの名無しさん 2017/07/28(金) 20:50:39 ID:
>>280
バーカ、それらは「記述」するもので、「作る」ものじゃねーと言ってるだろ

わかんねーのか死ねバカ

294 デフォルトの名無しさん 2017/07/28(金) 21:02:23 ID:
>>289
何でそんな面倒なことをするんだ?

295 デフォルトの名無しさん 2017/07/28(金) 21:04:55 ID:
だからその他のリストをわざわざあげる>>272がバカって話なんだが w

296 デフォルトの名無しさん 2017/07/28(金) 21:05:03 ID:
つかリストもSetもCでは大して使わないだろ。

297 デフォルトの名無しさん 2017/07/28(金) 21:12:41 ID:
LL用のライブラリCで書いたりとかで普通に書くだろが。

298 デフォルトの名無しさん 2017/07/28(金) 21:21:31 ID:
ならLLで全部やれ。
Cでやるのなら主に高速化なのだから、高速に演算できるようにあらかじめLL言語側で並べ替えるだろ。

299 デフォルトの名無しさん 2017/07/28(金) 21:26:15 ID:
リストで並べ替え?
そもそも、その並べ替えも遅いからCで。。。
どこから突っ込んで良いのよ。。。

300 デフォルトの名無しさん 2017/07/28(金) 21:27:04 ID:
LLって初耳だわ。

301 デフォルトの名無しさん 2017/07/28(金) 21:32:03 ID:
LightwaitLanguageの略で、PythonとかRubyとかの総称。
趣味グラマ含めて、LL知らない奴に初めて会ったわ。

302 デフォルトの名無しさん 2017/07/28(金) 21:35:30 ID:
つまりCはHLなわけだな。Heavyな時代になったな。

303 デフォルトの名無しさん 2017/07/28(金) 21:43:29 ID:
データ間の関係が直線構造のリストはこれといった使いどころを見つけるのが難しいのはまあ分かる
階層構造のバイナリツリーや網目構造のグラフにまで拡張するといろいろ応用範囲が広がる

304 デフォルトの名無しさん 2017/07/28(金) 22:00:00 ID:
>>298
バカとしか言いようがない w

305 デフォルトの名無しさん 2017/07/28(金) 22:02:34 ID:
>>301
weight な

306 デフォルトの名無しさん 2017/07/28(金) 22:09:25 ID:
おれの感覚がズレてるのかと思ったら、英語のwikipはそのままの意味だな。
LL言ってのは日本だけだという。こんなのバズワードでいいよ。

> A lightweight programming language is one that is designed to have very small memory footprint,
> is easy to implement (important when porting a language), and/or has minimalist syntax and features.

307 デフォルトの名無しさん 2017/07/28(金) 22:12:46 ID:
俺もLL通じるけどなw

308 デフォルトの名無しさん 2017/07/28(金) 22:18:36 ID:
>>299
エアプ死ね。

> そもそも、その並べ替えも遅いからCで。。。
LL言語側のリスト等の物理配置は公開されてないんだから、これは無理だろ。
仮に公開するにしても当然アクセス用API関数であって、内部構造は隠蔽されるだろ。

309 デフォルトの名無しさん 2017/07/28(金) 22:23:43 ID:
ここは日本なのに海外wikipedia持ってくるとか相当ずれてると思う

310 デフォルトの名無しさん 2017/07/28(金) 22:28:08 ID:
>>308
恥の上塗りかよ w
たいていのLL言語はオープンソースでCとかとのインターフェースが整備されてたり内部構造のドキュメントあるぞ
でないとライブラリとか書けないし
とりあえずpythonの例な
https://docs.python.jp/3/extending/extending.html

311 デフォルトの名無しさん 2017/07/28(金) 22:53:05 ID:
>>310
> 拡張モジュールをサポートするため、Python API (Application Programmer’s Interface) では
> 一連の関数、マクロおよび変数を提供していて、
> Python ランタイムシステムのほとんどの側面へのアクセス手段を提供しています。
> Python API は、ヘッダ "Python.h" をインクルードして C ソースに取り込みます。
お前は日本語が読めないということが分かった。

それで、お前はいつ>>286みたいな記述が必要なんだ?
普通はPyxxxを使ってPython側から読み出して、
C側の演算高速化用フォーマット(通常はただの配列)に最初から変換するんだよ。
お前はC側でもリストを実装してPythonと同じ事をするアホのようだが。

312 デフォルトの名無しさん 2017/07/28(金) 22:57:00 ID:
またパイソンの話してんのか

313 デフォルトの名無しさん 2017/07/28(金) 22:59:57 ID:
>>309
本気で言ってるのか?日本語ドキュメントなんて限られてるから技術者はググるときは英語だろう。
しかもwikipの日本語のIT用語の項目なんてほとんどないぞ。日本はIT後進国だから。中国語のほうが充実してる。
その中にあってLLだけば日本語版だけが異常に充実してるという。
まぁ、日本語でググったけどLL言ってるのはWEB2.0、クラウド、AI言ってる輩だね。
C言語使わない、使えない輩だからおれには接点はないわ。どっちがズレてるかよく考えてほしいね。

314 デフォルトの名無しさん 2017/07/28(金) 23:05:09 ID:
とりあえずお前は「無知でごめんなさい」から始めようか w
> LL言語側のリスト等の物理配置は公開されてないんだから、これは無理だろ。
> 仮に公開するにしても当然アクセス用API関数であって、内部構造は隠蔽されるだろ

315 デフォルトの名無しさん 2017/07/28(金) 23:07:08 ID:
>>313
面倒な奴
よほど恥ずかしかったんだろうな

316 デフォルトの名無しさん 2017/07/28(金) 23:11:29 ID:
>>314
> 仮に公開するにしても当然アクセス用API関数であって、内部構造は隠蔽されるだろ
お前マジで日本語読めないのな。Python.hってまさにこれなんだが。
日本語読めない奴と議論するのは無理だからもう諦めるが。

>>313
LLって海外でも普通に通じるよ。

317 デフォルトの名無しさん 2017/07/28(金) 23:13:42 ID:
>>316
隠蔽の意味も理解してない奴に言われてもなぁ w

318 デフォルトの名無しさん 2017/07/28(金) 23:16:01 ID:
スレチ

319 デフォルトの名無しさん 2017/07/28(金) 23:20:19 ID:
>>315
そうなんだよ。聞いてくれよ。怒り心頭だよ。
日本語のwikipのLLの内容はマジで恥ずかしい。こんなアホ議論してるのは世界で日本だけ。

> この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。
> この節には独自研究が含まれているおそれがあります。
> 日本独自の用語・分類への批判
> 比較対象がないことへの批判
> 誤解を招く用語であるという批判

なんだこれ。こんな完全なバズワードを偉そうにLLすら知らないのかって言われたんだよ。

こんな用語使ってる輩の脳がLightWeightなのに。

320 デフォルトの名無しさん 2017/07/28(金) 23:26:08 ID:
まあ俺が突っ込みたかったのは、

> 連結リストを一から作れるってそんなにいないんじゃないかな (>>277)
これはLL言語(=習得が簡単な言語=馬鹿用言語)ならそうだが、
Cなら作れない奴は殺される。ただしそれ以前に、

> 苦CとやさしいCには載ってなかったな。 (>>283)
のように、そもそもCではリストを使う機会はあまり無い。
だから載ってないのも妥当。

321 デフォルトの名無しさん 2017/07/28(金) 23:32:35 ID:
仮にバズワードとしてもわざわざ2chで知らないアピールせずに黙ってググれば馬鹿にされることもなかったろうに

322 デフォルトの名無しさん 2017/07/28(金) 23:42:53 ID:
確かにLL知らないで馬鹿にされた。だが今はもう違う。おれが馬鹿にする番。

LLなどという日本限定バズワードを使う胡散臭い輩がC言語スレで能書き垂れてんじゃねーよ、
英語もできんLightWeigt脳の低スキル技術者どもが。

323 デフォルトの名無しさん 2017/07/28(金) 23:58:33 ID:
>>322
「LL(言語)」ってのは通じる言葉だ。だから使う事自体は悪くない。
(正確にはLL言語だと「言語」が被るのだが、俺は「言語」付けた方が通じやすいと思う)

ただし通じる界隈は違っていて、LL言語と纏めて呼ばれるのは通常、
Perl/Python/Ruby/JavaScript等だから、ここら辺のユーザーなら確実に通じる。
実際、Perl/Python/Rubyなんて使用範囲もできることも同じで、区別する必要ないだろ。
だから纏めてLL言語と呼ばれるし、彼らもそれに慣れている。
C/C++/Java/C#等はこれらとは全く違うため、
この界隈では「LL言語」という言葉が使われることは少ない。
それだけ。

324 デフォルトの名無しさん 2017/07/29(土) 00:02:27 ID:
スクリプト系言語でいいだろ。昔からそう言ってる。

325 デフォルトの名無しさん 2017/07/29(土) 00:07:34 ID:
lol

326 デフォルトの名無しさん 2017/07/29(土) 00:16:53 ID:
(lol)

こうすると顔文字のようだ。

327 デフォルトの名無しさん 2017/07/29(土) 00:22:54 ID:
>>324
いやそれはちょっと違う。日本語版Wikiはちょっと広めに取りすぎている。
https://ja.wikipedia.org/wiki/%E8%BB%BD%E9%87%8F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
実際のところ、俺の感覚では、以下だ。
Perl/Python/Ruby/JavaScript <-100%LL言語に含まれる
PHP/Lua <- LL言語に含める奴もいる。割合は50%位か?
AWK/bash <- LL言語に入れる奴はいない。これらはスクリプト言語と呼ばれる。

旧来の「スクリプト言語」はフルセットの機能を持っていなかった。
ところがPerl以降はプログラミング言語としても遜色なくなってきている。
とはいえC++やJavaとは明らかに違う。
ということでこれらを呼ぶために生まれた言葉が「LL言語」だ。(と思う)
よく分からなければ「Perl/Python/Ruby/JavaScript/その他」の理解で問題ない。

328 デフォルトの名無しさん 2017/07/29(土) 00:27:01 ID:
LLという日本語だと思えば別に恥ずかしくないだろうに。

329 デフォルトの名無しさん 2017/07/29(土) 00:29:11 ID:
これからは BASIC

10 PRINT "ぷ"

330 デフォルトの名無しさん 2017/07/29(土) 00:31:57 ID:
C#だろうとJavaだろうとFotranだろうと多くのライブラリはC、C++で書かれてる。
スクリプト系言語に限定して議論する理由は?

331 デフォルトの名無しさん 2017/07/29(土) 00:33:28 ID:
>>327
Basicはどの辺に分類されるの?

332 デフォルトの名無しさん 2017/07/29(土) 00:36:55 ID:
bashがスクリプト言語になるなら、Emacsもそうなるかな

333 デフォルトの名無しさん 2017/07/29(土) 00:37:55 ID:
で、結局リスト実装出来ない雑魚はおんのか?

334 デフォルトの名無しさん 2017/07/29(土) 00:48:16 ID:
>>330
何が言いたいのか分からんが、エスパーするとこれで答えになるか?

LL言語 ⊂ (君の言う超広義の)スクリプト言語

C#/Java/FortranをLL言語と呼ぶ奴はいない。
つか、知らない言語の話なんてしないんだし、
自分の知っている言語のどれがLL言語と呼ばれるかフラグ立てておけば済む話だぞ。
出現頻度だけで言えば、LL言語≒Perl/Python/Ruby/JavaScriptでいい。

335 デフォルトの名無しさん 2017/07/29(土) 01:53:34 ID:
LL言語という物の中身は分かりましたが
そのように分類する事で、
得るものがあるようには感じませんでした

336 デフォルトの名無しさん 2017/07/29(土) 04:02:19 ID:
>>294
ソートが楽になるだろう?

337 デフォルトの名無しさん 2017/07/29(土) 04:04:40 ID:
>>295
バーカ C言語すれだから初期化リストだと思ったとか寝言ほざいてるID:tCxrViSfのバカさを指摘するために
他の文法要素でリストばたくさんあるぞと指摘してやったんだろ

死ねバーカ

338 デフォルトの名無しさん 2017/07/29(土) 05:24:03 ID:
既存のCのコードをUnicode対応に書き直したいんだけど、
char を wchar_t に置換したり、文字列リテラルにプレフィックス付けてくれたり、
関数を wchar.h 版にしてくれる便利なツールは無いですか?

もしくは予約毎と文字列リテラルだけを対象にしたいので、
パースして品詞情報を出してくれるスクリプトなんかあれば改造するかも。

339 デフォルトの名無しさん 2017/07/29(土) 05:31:19 ID:
>>336
double とか int でもそう思ってるなら単なるアホだぞ

340 デフォルトの名無しさん 2017/07/29(土) 05:34:46 ID:
>>337
> 他の文法要素でリストばたくさんあるぞと指摘してやったんだろ
そんなもんは既に>>267で指摘されてるのに周回遅れでなにドヤッてんだよ w

341 デフォルトの名無しさん 2017/07/29(土) 05:39:01 ID:
>>335
まあLL知らなかったアホが悔し紛れにマウンティングしようとして自爆してるだけだから w

342 デフォルトの名無しさん 2017/07/29(土) 05:47:56 ID:
>>338
そういうツール作ればいいじゃん。

343 デフォルトの名無しさん 2017/07/29(土) 07:17:17 ID:
>>338
全自動は厳しそう
文字のchatと文字以外のcharの区別が出来ない

344 デフォルトの名無しさん 2017/07/29(土) 07:28:56 ID:
>>337
その指摘の意図が不明
他にあるから何?

345 デフォルトの名無しさん 2017/07/29(土) 07:55:34 ID:
>>340
バーカ それもオレなんだが
往生際悪く日が変わってID変わったID:WViVOgsqが絡んできたから止めを刺してやったに過ぎないが
バカには理解できないようだ さすが救いようのないバカ

346 デフォルトの名無しさん 2017/07/29(土) 08:00:46 ID:
>>339
くさるほど連結リストを作るのに、いちいち特定の型に対応させてられないよ

347 デフォルトの名無しさん 2017/07/29(土) 08:04:41 ID:
>>345
で結局何のリストなの?

348 デフォルトの名無しさん 2017/07/29(土) 08:09:17 ID:
ていうか、
>>228の書き込み自体が皮肉なわけだけど
C言語自体にリスト構造なんて物はないっていう
本気で初期化リストだと主張してると思ったわけじゃ無いよな?
「初期化リスト?」だし

349 デフォルトの名無しさん 2017/07/29(土) 08:10:22 ID:
皮肉に対してトンチンカンな指摘をしてるアホが
一人いるみたいだけど

350 デフォルトの名無しさん 2017/07/29(土) 08:11:51 ID:
>>346
腐るほど連結リストを作るプログラムって何だ?

351 デフォルトの名無しさん 2017/07/29(土) 08:15:35 ID:
>>345
ひょっとして同じこと繰り返してるバカって言われてることに気づいてないのか?
>>265>>280 でわざと同じように指摘してやったのに w

352 デフォルトの名無しさん 2017/07/29(土) 08:17:38 ID:

353 デフォルトの名無しさん 2017/07/29(土) 08:25:35 ID:
>>289
使う側でいちいちメモリ確保、解放をするの?
それとも、Data自体が実体でキャストして使う?

いずれにしろ使いにく過ぎる

354 デフォルトの名無しさん 2017/07/29(土) 08:25:56 ID:
>>352
連結リストの型ごとにアルゴリズムを生成するの?それこそミスの元じゃない?

355 デフォルトの名無しさん 2017/07/29(土) 08:26:55 ID:
>>353
いちいちmalloc()/free() するんだよ
malloc()/free() でミスするようでは仕事にならん、というか検査用ラッパぐらい手持ちでもっとけよ

356 デフォルトの名無しさん 2017/07/29(土) 08:29:08 ID:
使いにく過ぎる

>>354
型ごとに同じコードを何度も記述する必要はないぞ
そのためのマクロだ

357 デフォルトの名無しさん 2017/07/29(土) 08:31:19 ID:
連結リストの中に連結リストとか自由にやりたいのだったら void *data 一択だよ

358 デフォルトの名無しさん 2017/07/29(土) 08:31:57 ID:
構造体名と型をdefineしてからインクルード

359 デフォルトの名無しさん 2017/07/29(土) 08:33:04 ID:
>>354
> まあいろんな型が必要だとテンプレートが欲しくなるけど
マクロでもそこそこ行けるしね
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

360 デフォルトの名無しさん 2017/07/29(土) 08:35:18 ID:
どっちが書きやすいか試せば一発だが‥これは二分木でも一緒
誰か三重の連結リストなり二分木なりを自分のやりかたで書いてくれないか?

361 デフォルトの名無しさん 2017/07/29(土) 08:36:09 ID:
リストのノードとは別にメモリ確保が必要なら、パフォーマンスにも影響するし

362 デフォルトの名無しさん 2017/07/29(土) 08:40:17 ID:
腐るほど使うなら使いやすくないと

メモリ確保、解放を自分でやれ?
あり得ない

363 デフォルトの名無しさん 2017/07/29(土) 08:41:10 ID:
>>362
それはCの基本だよ、お前さんC++に慣れきっているんじゃない?

364 タグもいるかな 2017/07/29(土) 08:41:31 ID:
>>357
せっかくの静的型付を安易に捨てるのはバカにありがちな行動
struct List_t {
struct List_t *Previous;
struct List_t *Next;
union {
struct List_t *Child;
double Double;
} Data;
};

365 デフォルトの名無しさん 2017/07/29(土) 08:44:54 ID:
>>363
使いにくくてバグの元でパフォーマンスも悪いモジュールを強要する

お前とは仕事をしたくない

366 デフォルトの名無しさん 2017/07/29(土) 08:52:21 ID:
>>364
出た!union 野郎が出た!
そんなところで共用体をつかってコードを一本化できるのか?続きを書いてみろよ

367 デフォルトの名無しさん 2017/07/29(土) 08:53:25 ID:
>>365
ふん、それはCを知らないといっているようなものだよ‥
>>360を書けばわかる

368 デフォルトの名無しさん 2017/07/29(土) 08:54:11 ID:
> そこそこ行けるしね
と書くとアンダーラインになるのか?

369 デフォルトの名無しさん 2017/07/29(土) 08:55:16 ID:
マクロでもそこそこ行けるしね

そこそこ行けるしね

行けるしね

370 デフォルトの名無しさん 2017/07/29(土) 09:20:46 ID:
>>366
続きってなんだよ w
2分木なら双方向リストと同じだぞ w
struct List_t {
struct List_t *Left;
struct List_t *Right;
double Data;
};

371 デフォルトの名無しさん 2017/07/29(土) 09:21:39 ID:
>>368
アンダーライン w

372 デフォルトの名無しさん 2017/07/29(土) 09:28:06 ID:
ん?
二分木なら3個とつながってるから、
普通3個リンクを張る

373 デフォルトの名無しさん 2017/07/29(土) 09:29:28 ID:
>>364
お、標準ライブラリのソート全否定か?
Cではちょいちょい捨てるよちょいちょいね
常に型を保存したかったらC++使うしかない

374 デフォルトの名無しさん 2017/07/29(土) 09:29:42 ID:
あと、色情報も普通はつける

375 デフォルトの名無しさん 2017/07/29(土) 09:43:22 ID:
>>364>>370 も、何の構造?

親をたどれないとポインタを一個進めることも出来ない

C++でいうsetの話をしたわけじゃないの?

376 デフォルトの名無しさん 2017/07/29(土) 09:43:31 ID:
>>372, >>374
赤黒とかの前に2分木の基礎からやり直せ

377 デフォルトの名無しさん 2017/07/29(土) 09:45:52 ID:
>>373
> お、標準ライブラリのソート全否定か?
>> 安易に捨てるのは
の意味もわからないアホ w

378 デフォルトの名無しさん 2017/07/29(土) 09:49:09 ID:
>>375
>>364 に対して親とか知ったかが背伸びするなよ w
根や親を各ノードに持つか別に管理するかは要件次第

379 デフォルトの名無しさん 2017/07/29(土) 09:54:12 ID:
ポインタを進めたり戻したりする必要がなければ
親にリンクを張らなくてもいいけどさ

std::setと同等なものをイメージしたけど、
まったく違うものが突然出てきたわけね

380 デフォルトの名無しさん 2017/07/29(土) 09:59:21 ID:
>>364はそもそも二分木では無いのか

>>357のリストの中にリストっていうのはそういう意味なのか?

381 デフォルトの名無しさん 2017/07/29(土) 09:59:54 ID:
おれの読解力が無さすぎるのか、
説明がなさすぎるのか、

382 デフォルトの名無しさん 2017/07/29(土) 10:08:25 ID:
>>381
>>286 >>287 にある通り、previousとnextと書いてると、大抵は双方向リストを意味してるものだと取る
ここがleftとrightと書いてると、意味上は全く同じなんだけれども、単語の上からはまずは二分木を連想する
next一つだけだと、一番単純な連結リストであることを期待する

383 デフォルトの名無しさん 2017/07/29(土) 10:11:31 ID:
>>377
それいうならリストの中身void*にするのもそこまで安易な選択ってわけでもあるまいに

384 デフォルトの名無しさん 2017/07/29(土) 10:14:10 ID:
>>379
君以外はみんな「リスト」の話をしている。
君もそうだったのだがなぜか勝手に君だけsetだと言い出してる。

>>380
「リストの中のリスト」ってのは、配列で言うとジャグ配列、
つまりジャグリスト。(という言い方は普通しないが)

>>381
君の頭が悪すぎるだけ。
君以外はみんな噛み合っている。つまり、必要十分な説明はなされている。
つか、>>364,370を読めない奴が議論参加するな、という話でしかないが。

個人的には>>364でunionは使わない。マクロで量産だね。(手動テンプレート)

385 デフォルトの名無しさん 2017/07/29(土) 10:17:23 ID:
>>286は、
双方向を利用して作ったから名前が変なのかと思った
でも、追加したのが Child なのはどっちみち変だな
2分木だとしたら

>>370は2分木だろうけど、
これで何をしたいのかわからん
双方向と2分木が同じ発言の意味も不明

386 デフォルトの名無しさん 2017/07/29(土) 10:20:56 ID:
>>370で二分木の話が出た
もっと上ではsetの話が出ている

387 デフォルトの名無しさん 2017/07/29(土) 10:22:31 ID:
>>357
リストの中のリストって
list < list < int > >
こういう意味かと思ったけどこれも違うのね

388 デフォルトの名無しさん 2017/07/29(土) 10:26:44 ID:
まあいずれにしろ、>>289 は無いな

389 デフォルトの名無しさん 2017/07/29(土) 10:31:03 ID:
>>383
ソート使うのにmalloc/freeは要らんだろ

390 デフォルトの名無しさん 2017/07/29(土) 10:35:15 ID:
>>389
リストなんてどうせmalloc/free使って運用するし別によくね?

391 デフォルトの名無しさん 2017/07/29(土) 10:36:49 ID:
>>385
>>286は「双方向リスト」だぞ。名前もかなり妥当。
つか、君だけまったく付いて来れてないが。

> 双方向と2分木が同じ発言の意味も不明
抽象化して「ポインタの数」という意味で捉えると同じ、ってことだよ。
これについてこれてないのは、「抽象思考出来ない馬鹿」だね。最近はよく見かけるが。

>>387
いや、そういう意味だぞ。


ふむ、なるほど、君は「リスト」を作れない馬鹿のようだ。君は何言語使いなんだ?
C言語使いなら、ド頭>>230でも否定されている通り、普通はリスト程度ならサクッと作れる。
(ただしそもそもリストなんて使わないが)

392 デフォルトの名無しさん 2017/07/29(土) 10:37:38 ID:
>>384
> 個人的には>>364でunionは使わない。マクロで量産だね。(手動テンプレート)
ん?
ノードに値とリストのどちらかを入れられるリストと言う要件だと思ったが?

393 デフォルトの名無しさん 2017/07/29(土) 10:37:49 ID:
>>289
intのリストに1, 2, 3, ... , 10 を追加
するだけでもイヤになる

394 デフォルトの名無しさん 2017/07/29(土) 10:39:22 ID:
>>392
なんだ、結局おれ以外も会話が通じてないんじゃん

395 デフォルトの名無しさん 2017/07/29(土) 10:40:24 ID:
>>390
まあお前がいいと思うならそうすればいいんじゃね?

396 デフォルトの名無しさん 2017/07/29(土) 10:41:41 ID:
>>391
あ、ごめん
>>385の一行目は >>364 の間違い

397 デフォルトの名無しさん 2017/07/29(土) 10:42:46 ID:
>>391の真ん中
>>364のコードはそうなってない

398 デフォルトの名無しさん 2017/07/29(土) 10:47:50 ID:
>>391の上半分

トポロジーがまったく違う
よって必要な処理もまったく違う
ポインタの数も、普通は2分木は3方向にリンクを張る

399 デフォルトの名無しさん 2017/07/29(土) 10:48:39 ID:
「普通は」とか書くと反論がくるのかな
「多くは」くらいにしておくか

400 デフォルトの名無しさん 2017/07/29(土) 10:58:06 ID:
>>370
結局これで何をしたいのかわからん

親へのリンクが無い、色が無い
って時点で汎用化とは程遠い

401 デフォルトの名無しさん 2017/07/29(土) 11:00:17 ID:
>>392
> ノードに値とリストのどちらかを入れられるリストと言う要件だと思ったが?
いや、そう明示されているわけではないよな?
次に、それが要件だったとして、或いは汎用化するために void* だろってのが皆の意見だ。
ここについては俺はいちいちキャストがウザいからデータはめ込み派(君と同じ)だが。

402 デフォルトの名無しさん 2017/07/29(土) 11:09:28 ID:
Cばかり使っていると頭がこんなんなっちゃいます。

403 デフォルトの名無しさん 2017/07/29(土) 11:11:38 ID:
void* の問題はキャストもそうだけど
外部でメモリを管理する必要があるってところが大きいかと

多重リストだろうがunionだろうが
マクロでどうにでもなるんで
わざわざ不便な作りにする必要は無いかと

404 デフォルトの名無しさん 2017/07/29(土) 11:13:16 ID:
>>402
C++が使える環境なら素直にC++を使えって話だけど
いまだにCしか使えない環境ってのもあってね

405 デフォルトの名無しさん 2017/07/29(土) 11:14:41 ID:
(単方向)リストは先頭から終端の方向へ順にポインタを辿る、逆方向のポインタは無くても可(逆方向があるのは双方向リスト)
二分木は根から葉の方向へ再帰でポインタを辿る、親方向のポインタは無くても可(むしろ無いのが普通)

406 デフォルトの名無しさん 2017/07/29(土) 11:16:39 ID:
>>398
何度も言っているが君だけ付いて来れてない。いちいち全部なので端折るが、

> ポインタの数も、普通は2分木は3方向にリンクを張る
これについては既に回答済みで、引用すると、
> 根や親を各ノードに持つか別に管理するかは要件次第 (>>378)
で、全くその通りだ。

俺は君が何故これを理解出来ないのかもわかるが、
君は俺の質問に答える気がないようだから、教えてやらないことにする。
馬鹿のままで死ね。

407 デフォルトの名無しさん 2017/07/29(土) 11:16:58 ID:
Cってパフォーマンスを落としてまで汎用化するような使い方ってあまりしないしね
基本組み込み用

リストも片方向で済むなら片方向にするし、
そもそもリスト構造自体頻繁に使うようなものじゃない

408 デフォルトの名無しさん 2017/07/29(土) 11:18:34 ID:
だから、
Cで挫折する理由が「リスト」とかいう主張、
まったくチンプンカンプンで

409 デフォルトの名無しさん 2017/07/29(土) 11:19:32 ID:
>>401
> いや、そう明示されているわけではないよな?
で、君は
> 連結リストの中に連結リストとか自由にやりたい
をどう解釈してマクロでやるって言ってるの?

> 次に、それが要件だったとして、或いは汎用化するために void* だろってのが皆の意見だ。
皆の意見? w

410 デフォルトの名無しさん 2017/07/29(土) 11:21:33 ID:
>>406
要件次第で変わるのに「同じ」と言ってしまう

411 デフォルトの名無しさん 2017/07/29(土) 11:23:02 ID:

412 デフォルトの名無しさん 2017/07/29(土) 11:26:20 ID:
>>409
俺なら型ごとにstructを用意、つまりテンプレートと同じことをする、ということ。

ただしvoid*にしろって言う意見も分かるし、C的にはそれもありだと思うぞ。
ここら辺は好みの範囲だとは思うが。

413 デフォルトの名無しさん 2017/07/29(土) 11:30:42 ID:
>>405
無いのが普通って
世の中を知らなすぎる

汎用のコンテナとしての2分木で
そういう実装な例があるなら
示していただけると
出来れば有名どころで

親がないと、ポインタを一個進めるのもコストがかかる
挿入した時に左右のバランスを保つのにもコストがかかる

もちろん、そういう処理がいらない
コンテナとして使わないような
特殊用途の2分木ならいくらでもあるだろうけど
今はコンテナの話だよね

414 デフォルトの名無しさん 2017/07/29(土) 11:30:53 ID:
>>412
マクロの話がよくわからんがまあいいや
あんたが要件どう解釈したかもわからんからどうしようもないしな

415 デフォルトの名無しさん 2017/07/29(土) 11:32:58 ID:
例えばstd::setの実装はすべて親へのリンクがある

416 デフォルトの名無しさん 2017/07/29(土) 11:36:13 ID:
>>414
インラインマクロでゴリゴリに対応するのではなくて、
structの宣言部分をマクロ化して、
MyList(MyListDouble, double)
MyList(MyListInt, int)
で量産する、ということ。つまりテンプレートだろこれは。

417 デフォルトの名無しさん 2017/07/29(土) 11:44:36 ID:
コードサイズが大きい時は、
名前と型をdefineしてからinclude
とか良くやる
defineやincludeは上のMyListみたいなマクロで

418 デフォルトの名無しさん 2017/07/29(土) 11:59:50 ID:
>>416
ごめん意味わからん
union の代わりになるって言うことなんだよね?

419 デフォルトの名無しさん 2017/07/29(土) 12:00:47 ID:
いつからコンテナの話になったんや

420 デフォルトの名無しさん 2017/07/29(土) 12:09:46 ID:
>>418
型ならなんでも良い

421 デフォルトの名無しさん 2017/07/29(土) 12:10:50 ID:
>>419
最初からずっと

422 デフォルトの名無しさん 2017/07/29(土) 12:13:39 ID:
ていうか
コンテナじゃない2分木はあるけど、
コンテナじゃないリストなんて無いだろ

初期化リストか?

423 デフォルトの名無しさん 2017/07/29(土) 12:22:33 ID:
コンテナの定義に詳しくないんだけど、Lispのリストはコンテナなん?

424 デフォルトの名無しさん 2017/07/29(土) 12:24:27 ID:
このスレは1000までリストの話で埋まりそうだね。物凄いスピードで。

425 デフォルトの名無しさん 2017/07/29(土) 12:35:38 ID:
>>418
俺は>>286派だって事。(>>370もあり。)
>>364は無し。てかどうでもいいところでunion使ってもろくな事にならないし。
void*も無し。主にキャストが面倒だから。でもunionよりはvoid*を選ぶ。

とはいえここら辺は好みの問題でしかないが。
俺なら、型固定>void*>unionだね。

426 デフォルトの名無しさん 2017/07/29(土) 12:48:00 ID:
>>420
単にunion使わずに(メモリー気にせずに)struct使うって話?

427 デフォルトの名無しさん 2017/07/29(土) 12:51:34 ID:
あんなあおまいら・・
これ、コレクションをライブラリとして持てという
あるいはそれをどう作るかという話なんだわ
例をあげれば、AppleのCFMutableArray
Win32ならなんだ?

428 デフォルトの名無しさん 2017/07/29(土) 13:02:32 ID:
>>426
型ごとに作るってこと

429 デフォルトの名無しさん 2017/07/29(土) 13:09:06 ID:
>>425
> 俺は>>286派だって事。(>>370もあり。)
> >>364は無し。
要件違うものを持ってきてそんなことを言われてもなぁ

> てかどうでもいいところでunion使ってもろくな事にならないし。
> void*も無し。主にキャストが面倒だから。でもunionよりはvoid*を選ぶ。
unionになんかトラウマでもあるのか?
まあ好みの問題と言うのには同意する

430 デフォルトの名無しさん 2017/07/29(土) 13:09:40 ID:
MyList(MyListDouble, double)
MyList(MyListMyListDouble, MyListDouble)

431 デフォルトの名無しさん 2017/07/29(土) 13:11:30 ID:
>>427
C的には、
> コレクションをライブラリとして持て
いらんわ
> あるいはそれをどう作るか
必要なら自分で作るし苦労もしない

だと思うぞ。もちろんC++使ってもいいし、今更だろ。
ただそれ以前に、現実として、動的キー(辞書)が必要な用途はあまりないだろ。
Cの担当範囲なら、ほぼ全ての場合で構造体(静的キー)と配列で間に合う。(鶏と卵ではあるが)
もちろんこれら含めて汎用化したほうが楽だが、その分遅いのがLL言語な訳で。

432 デフォルトの名無しさん 2017/07/29(土) 13:17:05 ID:
>>431
まあC++使えば済む話でもあるからな

433 デフォルトの名無しさん 2017/07/29(土) 13:27:26 ID:
>>429
> unionになんかトラウマでもあるのか?
いやお前少しは他言語もやれよ。
unionは他言語では廃止されている。理由はいろいろまずいから。
ググれば出て来るからやってみ。

まあそれ以前に君はunionの使い方を間違っている。
あれは、リード/ライトで型が違うときに使うものであって、
型違いだがサイズが同じだから突っ込む、という為の物ではない。
というか後者ならvoid*で受けていちいちキャストするというのが正しい。
しかしこれだと型チェックできなくなるからテンプレートにしろというのがC++だ。

434 デフォルトの名無しさん 2017/07/29(土) 13:29:31 ID:
形別 > union > void*

こうだな
もちろんサイズにもよるが

435 デフォルトの名無しさん 2017/07/29(土) 13:30:38 ID:
>>433
goto嫌いと同じにおいが

436 デフォルトの名無しさん 2017/07/29(土) 13:32:15 ID:
何度も書くけど、
外でメモリ確保解放強制はあり得ない

437 デフォルトの名無しさん 2017/07/29(土) 13:33:45 ID:
>>433
サイズが同じ?

438 デフォルトの名無しさん 2017/07/29(土) 13:34:53 ID:
unionの使い方は1つじゃないよ

439 デフォルトの名無しさん 2017/07/29(土) 13:41:10 ID:
>>432
Cは大前提としてそれがあるんだよ。
不満があればC++で大体事足り、それがbetterCだ。(俺の認識では)
つまり、リストが欲しいけど自分で作るのは面倒、だったらここだけC++使うか、って場合。

440 デフォルトの名無しさん 2017/07/29(土) 13:53:49 ID:
>>433
> あれは、リード/ライトで型が違うときに使うものであって、
> 型違いだがサイズが同じだから突っ込む、という為の物ではない。
まあ確かにお前はunion使わない方がいいわ w
一応言っておくけど読み書きで型が違ったら値は保証されないよ

441 デフォルトの名無しさん 2017/07/29(土) 13:54:39 ID:
union なくなると XEvent 困るだろう

442 デフォルトの名無しさん 2017/07/29(土) 14:04:10 ID:
unionて、メモリを節約できるのとそのメンバが同時に使われないってことがわかりやすいくらいだよな。
>>364もべつにunion使わなくてもいいわけだし。

443 デフォルトの名無しさん 2017/07/29(土) 14:11:28 ID:
バズワード使うだけあってレベル低すぎる。>>433

444 デフォルトの名無しさん 2017/07/29(土) 14:20:45 ID:
>>440
> 一応言っておくけど読み書きで型が違ったら値は保証されないよ
値の保証はされてるだろ。
処理系に依存する(エンディアンが見えることが多い)というだけで。

いずれにしても、これが問題だと思う>>440のような馬鹿はunionを使うべきではない。
こんなの当たり前だろ、と理解できる奴だけがunionを使っていい。
そして現実として、unionを使わなければならない機会はほぼ無いから他言語では廃止されてる。
例えば、>>441とかは今なら継承で実装される。

445 デフォルトの名無しさん 2017/07/29(土) 14:21:28 ID:
union を使ったら見通しよく書けるのか?そうなのか?不思議な気分だ
よかったらサンプルコードを書いてほしい

446 デフォルトの名無しさん 2017/07/29(土) 14:51:40 ID:
>>444
> 値の保証はされてるだろ。
されないよ、鼻から悪魔

447 デフォルトの名無しさん 2017/07/29(土) 14:58:48 ID:
>>445
お前さんがどう思うかは知らんが>>364みてサンプルコードがが思い付かないならunionなんて使わない方がいい

448 デフォルトの名無しさん 2017/07/29(土) 15:15:38 ID:
>>447
それだけではわからないよ、実際に union の Child や Double の値を設定するところを見たいものだ
個人的にはうまくいかないと思っている
たぶんマクロを使うことになるし、マクロを使うんだったら共用体なんか使わないほうがよかった、という結果になりそう

449 デフォルトの名無しさん 2017/07/29(土) 15:26:51 ID:
何がわからないかわからない

450 デフォルトの名無しさん 2017/07/29(土) 15:35:05 ID:
unionは、
普通に同時使用しないメンバに対して使われることもあるが
実際に使う環境を把握した上で
同じアドレスに対して複数のアクセス方法を
用いる場合にも良く使われる

一番あるのが、レジスタの定義
チップメーカーなどがヘッダとして提供したりする
ビットフィールドアクセスやワードアクセスなど、
複数のアクセス方法を使えるようにするため
あとは複数の型へのポインタをunionで定義したり

451 デフォルトの名無しさん 2017/07/29(土) 15:36:30 ID:
>>364は環境に依存しない、
普通の排他メンバの使い方

452 デフォルトの名無しさん 2017/07/29(土) 15:41:58 ID:
メモリをケチる為のunionは
時代とともに使う頻度は減っているが

複数のアクセス方法の為のunionは普通に使われる
もちろん環境依存コード
例えばWindows APIのLARGE_INTEGERも
この使い方のunion

453 デフォルトの名無しさん 2017/07/29(土) 15:46:20 ID:
アセンブラじゃ共用が当たり前。だからCにある。それだけ。
x86のレジスタはまんま共用体。ワイヤー数、バス幅に制限があるんだから共用して当たり前。
本来、ハードの仕様を実装するためのもの。

454 デフォルトの名無しさん 2017/07/29(土) 16:09:53 ID:
なんか違う

455 デフォルトの名無しさん 2017/07/29(土) 16:11:44 ID:
>>449
まず大前提としてコードを再利用する仮定だ。
ベタにコピペした場合は関係ない。

>>364のunionは今なら継承で実装されることが多いはずだ。
当然Dataはテンプレート化され、
Previous,Nextへの書き込みは基底クラス、Dataへの書き込みは派生クラスに配置される。
これがC++的解決。

unionだと一見何でも書けるように見えるが、
実際は派生型を手動で扱っているのと同等なので、
共通書き込みルーチンを用意できない。これが>>448の言う、
> 個人的にはうまくいかないと思っている
で、俺もそう思う。
マクロを強引に使えば出来るかもしれんが、それなら上記C++的解決の方がマシ。

>>452
> メモリをケチる為のunionは
> 時代とともに使う頻度は減っているが
これって>>364の使い方、ということでいいのか?
それならC++的に言えば、
糞だからクラステンプレートと継承で対応できるようにして廃止した、というところだろう。

> 複数のアクセス方法の為のunionは普通に使われる
多分これ以外のunionは必要ない。
そして俺はこれについてはリート/ライトで型が違っても値が保証されていると認識している。
(一応言っておくが同じ値が読めるという意味ではない。《>>446の馬鹿は多分この勘違い》
プログラマから見て値が確定的、という意味だ。)
仕様に詳しい奴がいればよろしく。

456 デフォルトの名無しさん 2017/07/29(土) 16:26:09 ID:
初期化リストの話は終わったのか?

457 デフォルトの名無しさん 2017/07/29(土) 16:38:11 ID:
>>456
今union、次extern

458 デフォルトの名無しさん 2017/07/29(土) 16:51:08 ID:
>>453
たしかに遥か昔の DOS コールラッパではそうしていたけれども…なんか違うきがしないでもない
共用体の適切な使い方はおもいつかないね…

459 デフォルトの名無しさん 2017/07/29(土) 17:00:18 ID:
>>449 全部がわからない:-)
>>364 の方針で >>357 を書いてくれる人はいないものか
ちょっと想像がつかないんだ

void *data 派であるけれどもマクロの方はわかる、工藤智行氏の書籍にてさんざんやっていたからね https://www.amazon.co.jp/dp/4774100544/

460 デフォルトの名無しさん 2017/07/29(土) 17:05:21 ID:
>>455
よく知らないなら黙ってりゃいいのに w

461 デフォルトの名無しさん 2017/07/29(土) 17:05:34 ID:
共用体なんて使うとしたら、sdl_eventと同じように、enumとセットだろ~?

462 デフォルトの名無しさん 2017/07/29(土) 17:29:39 ID:
トリコロシ

463 デフォルトの名無しさん 2017/07/29(土) 17:35:09 ID:
COBOLだとレベル番号で同じことが出来るね

464 デフォルトの名無しさん 2017/07/29(土) 17:35:29 ID:
>>461
まあそうだね
もっと早くにその突っ込み入るかと思ったけどunionをとうとうと語る奴とか低レベルすぎて笑うしかない状態なのよ w

465 デフォルトの名無しさん 2017/07/29(土) 17:37:42 ID:
>>364は自由な型じゃない
doubleのリスト
doubleのリストのリスト
doubleのリストのリストのリスト
...


他の型が必要ならunionに追加する

466 デフォルトの名無しさん 2017/07/29(土) 17:41:42 ID:
>>461
その場合も今は継承で実装されるのが普通で、それで何も問題ないだろ。
だからもう共用体は古いんだよ。それが俺の言った、
> JavaやC#の方が簡単だから。
> その後出てきた言語はCの駄目なところを改善している。(>>251)
であって、JavaもC#も共用体は廃止済み。

467 デフォルトの名無しさん 2017/07/29(土) 17:45:12 ID:
JavaもC#もハナからOSやドライバを書く気ない。もちろんPascalで書く馬鹿もない。頓珍漢。ナンセンス。

468 デフォルトの名無しさん 2017/07/29(土) 17:45:49 ID:
#include <stdio.h>
typedef union {
unsigned char byte;
struct {
char bit0:1;
char bit1:1;
char bit2:1;
char bit3:1;
char bit4:1;
char bit5:1;
char bit6:1;
char bit7:1;
} bit;
} SFR;

int main(void) {
SFR sfr;
sfr.byte = 0x00; // All Clear
sfr.bit.bit7 = 1; // bit7 set
printf("%x", sfr); // sfr = 0x80
return 0;
}

469 デフォルトの名無しさん 2017/07/29(土) 17:50:31 ID:
charが符号無しの環境?

470 デフォルトの名無しさん 2017/07/29(土) 17:55:22 ID:
>>467
JavaOSェ、、、

ただまあ、ハードが見えるレベルをC以外の言語で書くのは狂気の沙汰なのは同意する。
とはいえ、旧来のイベントオブジェクトがunionで出来ているのは、
・それがCの時代だったから
・古いから
であって、便利だからではない。
実際、新しいAPIは全部継承で実装されてるだろ。そういうことだよ。

471 デフォルトの名無しさん 2017/07/29(土) 17:58:59 ID:
>>466
> C#も共用体は廃止済み。
何でこんな知識量でドヤれるんだろう? w
http://smdn.jp/programming/netfx/struct/1_structlayout_fieldoffset/#FieldOffsetAttribute

472 デフォルトの名無しさん 2017/07/29(土) 18:01:14 ID:
強要隊に親を殺された?

473 デフォルトの名無しさん 2017/07/29(土) 18:01:47 ID:
>>471
つかお前C#知らんだろ。
それはレガシー用であって、レガシー以外でそれ使ったら殺されるぞ。

474 デフォルトの名無しさん 2017/07/29(土) 18:04:09 ID:
実際に共用体はいろいろで使われているわけで

475 デフォルトの名無しさん 2017/07/29(土) 18:08:03 ID:
争いは同じレベルの者同士でしかうんたらかんたら

476 デフォルトの名無しさん 2017/07/29(土) 18:10:06 ID:
union 使っても
いいじゃないか
C言語だもの

477 デフォルトの名無しさん 2017/07/29(土) 18:10:09 ID:
>>473
お前の糞職場は知らんけどMSはレガシー用なんて言ってないぞ
恥の上塗りかっこ悪 w
https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.fieldoffsetattribute(v=vs.110).aspx

478 デフォルトの名無しさん 2017/07/29(土) 18:17:23 ID:
>>474
だから、レガシー以外は使われてないんだよ。
とはいえ、OSのAPIが共用体を返してくるんだから、
それを受け取れないのはまずいから手段も用意してはある、という話で。

>>364はC++/Java/C#なら継承で実装される。
その他の言語でも大体こうなる。理由は共用体がそもそも無いから。
俺は逆に、何故お前らがunionを使いたがるのかが分からんね。メリットは何もないだろ。

>>477
レガシー=obsoleteという意味ではないぞ。

479 デフォルトの名無しさん 2017/07/29(土) 18:26:02 ID:
C言語での組込み開発では共用体は普通に使われてる
>>468で示唆したような特殊機能レジスタの多重定義などが代表例

480 デフォルトの名無しさん 2017/07/29(土) 18:26:39 ID:
レガC

481 デフォルトの名無しさん 2017/07/29(土) 18:27:18 ID:
使いどころでは使えって話
gotoといっしょ
>>364が使いどころかどうかは別として

482 デフォルトの名無しさん 2017/07/29(土) 18:27:46 ID:
>>479
てか、あると便利だよね。
よくわからないまま使うとハマるだけのことで。

483 デフォルトの名無しさん 2017/07/29(土) 18:28:35 ID:
>>479
charにunsignedが無いのが気になってるわけだが

484 デフォルトの名無しさん 2017/07/29(土) 18:29:51 ID:
>>478
> レガシー=obsoleteという意味ではないぞ。
バカってなんで言ってもないことに突っ込むんだろう?
みずから恥の上塗りすることもないだろうに w

485 デフォルトの名無しさん 2017/07/29(土) 18:30:55 ID:
>>479
それは知っているしそれはいいんだよ。
それ以外のケース、>>364みたいな使い方をお前らはやるのか?

486 デフォルトの名無しさん 2017/07/29(土) 18:32:39 ID:
>>483
ビットフィールド構造体の定義にはunsignedどうでもいいだろ
共用しているchar型変数の方にはunsigned付けたけど

487 デフォルトの名無しさん 2017/07/29(土) 18:33:12 ID:
>>481
そうそう。わかってて使うなら gogo もありだ。

ていうかC言語だと使わないと変な書き方になってかえって読み辛くなることあるな。
try catch みたいな例外処理が書けないから。複数個所でエラーが出る可能性が
ある場合に処理を飛び越えて先に進ませる方法が for(;;) ブロックの中で break
使うぐらいしかなかったりして、ループでないのに for (;;) 使うぐらいなら goto 使った
方がまだ分かり易い。

488 デフォルトの名無しさん 2017/07/29(土) 18:34:01 ID:
char, unsigned char, signed char
この辺は規格がいまいち

文字をunsignedにしなかったのもいまいち

あとは演算子の優先順位にも不満がある
ビット演算が弱すぎる

代入が = / 比較が ==
なのもいまいち

いろんな歴史的な理由があるんだろうけど

489 デフォルトの名無しさん 2017/07/29(土) 18:34:26 ID:
>>481
> 使いどころでは使えって話
まあそういうことだね
環境も目的も制約も様々だから絶対unionでないとダメとかunionはレガシーしか使っちゃダメとか言う奴はたいていちょっとアレな人なんだと思う
まあ引っ込みつかなくなっちゃったんだろうね

490 デフォルトの名無しさん 2017/07/29(土) 18:35:03 ID:
>>486
えっ?
本気で言ってるの?

491 デフォルトの名無しさん 2017/07/29(土) 18:36:30 ID:
gogo

MP3関連のツールか?

492 デフォルトの名無しさん 2017/07/29(土) 18:54:34 ID:
>>485
>>364 までして型をとる,というのも疑問だな‥

493 デフォルトの名無しさん 2017/07/29(土) 19:02:45 ID:
バークレーソケットのソケットアドレス等で使わされてる感じだけど
自分から積極的に union を記述することは少ないな

494 デフォルトの名無しさん 2017/07/29(土) 19:18:41 ID:
というかマジで急にエアプ増えてね?

FieldOffsetを数字でベタ書きとか、かなり最悪のコードだぞ。(>>471内URL)
保守する場合は全部書き直しになる。(今更そこが変更されることもないはずだが)
真面目にこれを言っているID:zJVnUUbXはエアプだろ。
引っ込みつかないのはお前だ>>489

>>492
型を取るなら普通はC++的テンプレート解決だよな。
型なしがよければvoid*でいいし。

495 デフォルトの名無しさん 2017/07/29(土) 19:43:57 ID:
反論できなくなってエアプとか w
分かりやすすぎるだろ

496 デフォルトの名無しさん 2017/07/29(土) 20:48:24 ID:
エアプってなに?

497 デフォルトの名無しさん 2017/07/29(土) 21:21:36 ID:
エアプレーン

498 デフォルトの名無しさん 2017/07/29(土) 21:34:56 ID:
エアーおならプ

499 デフォルトの名無しさん 2017/07/29(土) 21:53:33 ID:
>>468
ANSI C 規格への Microsoft 拡張機能を使用すると、ビット フィールドに対して char および long 型 (Signed と unsigned の両方) が許されます。

500 デフォルトの名無しさん 2017/07/29(土) 23:41:43 ID:
知らない書き方だと思ったら、MSのCコンパイラの独自仕様なのか
どうやらそのビットフィールドをchar境界に制約するものみたいだけど、
こういう書き方だとビットフィールドの幅に見えて気持ち悪い

501 デフォルトの名無しさん 2017/07/29(土) 23:46:26 ID:
マイクロソフト以外でも結構良くある
型指定可能なコンパイラ

enumの型指定とかも

502 デフォルトの名無しさん 2017/07/29(土) 23:49:52 ID:
signedとunsignedはビットフィールドでも意味がある

1bitでsignedだと、符号ビットしか存在しない
値でいうと 0と-1

503 デフォルトの名無しさん 2017/07/29(土) 23:50:32 ID:
>>486の「どうでもいい」の意味が不明

504 デフォルトの名無しさん 2017/07/30(日) 00:02:03 ID:
1bitで表現できるのは0か1しかないのでは?
意味的には-1だろうが値としては1以外に表現する方法がない

505 デフォルトの名無しさん 2017/07/30(日) 00:25:20 ID:
sizeof(int)==4とすると
468のsizeof(SFR)==1だが
468のcharをintに変えると sizef(SFR)==4 になる
(略)
アクセス違反でbitfieldが使えん可能性あり

506 デフォルトの名無しさん 2017/07/30(日) 02:07:11 ID:
>>504
問題になるのは保存時じゃなくて読み出し時

507 デフォルトの名無しさん 2017/07/30(日) 02:36:29 ID:
初学者なんだが教えて欲しい

状況:作ったプログラムが思うように動かないから途中の値をprintfで出力して検証中

コードの内容を大雑把に書くと

A[1] = 12
・・・
for( j = x - 1; j >= 0 ,--j ) (jは最初1)
・・・
if ( j != 0 )
printf( "a1=%d, j=%d¥n", A[j], j )
if
 ・・・
 else
 if
printf( "a2=%d, j=%d¥n", A[j], j )
   ・・・
みたいな処理をさせると出力結果が

a1=12, j=1
a2=0, j=1

階層が深くなると値が変わるんだが、何が原因かわかる人いる?

508 デフォルトの名無しさん 2017/07/30(日) 02:41:51 ID:
原因はバグ。これ以上は再現するソースコードがないと分からない

509 デフォルトの名無しさん 2017/07/30(日) 02:45:37 ID:
変な状態が発生する状態を保ったまま
処理を削っていく
削っていって発生しなくなったら
その削ったところに何かヒントがあるかも

1レスに収まる範囲になったらここにすべてアップ

510 デフォルトの名無しさん 2017/07/30(日) 03:02:39 ID:
そんなに簡単にバグるものかと思って聞いてみたけど、汚ねえプログラムを添削してもらうのも申し訳ないからそういうものだと納得するよ、thx

511 デフォルトの名無しさん 2017/07/30(日) 03:29:48 ID:
>そんなに簡単にバグるものかと思って聞いてみたけど
次はコンパイラのバグとか言い出して大騒ぎして
そのうち人間のいい加減さに絶望する

普段から人間がどれだけ間違えてるか思い知るがいい

512 デフォルトの名無しさん 2017/07/30(日) 04:54:25 ID:
>>507
初心者がやりそうな間違い。

1. 配列の A の要素数が足りない。
2. A を int *A; 等と宣言しておきながらメモリ確保していない。
3. メモリ確保しているがバイト数が足りない。
4. if 文を多重に使っているが階層を誤解している。
5. 自分で変数や配列の内容を書き換えている事に気付いていない。

4は例えば if (...) ...; if (...) ...; else ...; のようになっている場合に if (...) { ...; if (...) ...; else ...; } となると勘違いしている場合。
実際は if (...) { ...; } if (...) { ...; } else { ...; } になって最初の if と次の if は別物。
インデントがおかしいと騙される。しかしCコンパイラはインデントなど見ていない。

513 デフォルトの名無しさん 2017/07/30(日) 04:59:02 ID:
--j  最近は前置が流行ってるのか?

514 デフォルトの名無しさん 2017/07/30(日) 05:07:33 ID:
じゃあ俺のあてずっぽうの勘だと主たる原因はフォントサイズが小さすぎること
メインの原因はA[i]が紛れ込んでいること

515 デフォルトの名無しさん 2017/07/30(日) 05:21:48 ID:

516 デフォルトの名無しさん 2017/07/30(日) 05:50:22 ID:
>>507
for( j = x - 1; j >= 0 ,--j ) (jは最初1)
--j の前が ; であるべきなのに , てことはないよな。
投稿時のtypoだろうな。

if ( j != 0 )
printf( "a1=%d, j=%d¥n", A[j], j )
if
の感じから見て、元のifのthen節を{}で囲ってなかったところに
printf() を挿入したから実行条件が変わっちゃった、かな。
「ぶらさがりif文にまつわる問題」てやつ。
(>>512 の指摘 4.)

517 デフォルトの名無しさん 2017/07/30(日) 06:32:09 ID:
>>515
C++訛りとは限らんぞ
機械語のオートインクリメントは++が後置で--が前置になっていて
それが透けて見えるように書いていると--は前置だし

518 デフォルトの名無しさん 2017/07/30(日) 06:41:47 ID:
オーバロードした++やイテレータは前置と後置で速度が違うのか。後置使うやつがいなくなるじゃないか。

C++は欠陥品だな。++Cって名前にしろよ。

519 デフォルトの名無しさん 2017/07/30(日) 07:03:49 ID:
>>517
機械語の仕様や挙動はCPUの種類による
昔の話だけど8ビットCPUの頃は、インテル(ザイログ)とモトローラでは逆になっていた記憶がある

520 デフォルトの名無しさん 2017/07/30(日) 07:39:01 ID:
>>519
LDIとLDDは逆じゃなく両方後置だ
そんな重箱の隅じゃなく本当に逆な例を挙げられるか?

521 デフォルトの名無しさん 2017/07/30(日) 07:40:09 ID:
オートインクリメントってなんだ?
z80や6809にそんなのあったか?

522 デフォルトの名無しさん 2017/07/30(日) 07:42:23 ID:
なんだ、ブロック転送のことか。

523 デフォルトの名無しさん 2017/07/30(日) 08:18:53 ID:
Z80と6809でスタックポインタを弄るときのPUSH/POPでポインタの増減が前置後置逆になってたはず

524 デフォルトの名無しさん 2017/07/30(日) 08:36:50 ID:
少し調べてみたらやはり逆っぽい
C言語風に表現すれば
6809のPUSHは前置 *--SP、POPは後置 *SP++
Z80のPUSHは後置 *SP--、POPは前置 *++SP

525 デフォルトの名無しさん 2017/07/30(日) 09:05:35 ID:
スタックポインタを意識してCのコードに--rとか書かねえよ

526 デフォルトの名無しさん 2017/07/30(日) 13:04:06 ID:
ま、そういうのは最近のコンパイラなら最適化で跡形もなく消えちゃう事もあるので普通は考えても意味ないと思う。

527 デフォルトの名無しさん 2017/07/30(日) 13:29:40 ID:
そういう問題じゃねえんだよ
話についてこれないならROMってろ

528 デフォルトの名無しさん 2017/07/30(日) 14:11:56 ID:
C言語始めるためにいろんなサイトを転々としてVScodeとかVS2017とかをインストールしてみたんだけど訳がわからん
サイトに沿って設定とかしたけどどうすればいいかわからなくてどうしょうもない
Javaも少しやっててメモ帳に書いてたんだがあれくらい簡単じゃないのか
つまりどうしたいかというと
助けてくださいお願いします

529 デフォルトの名無しさん 2017/07/30(日) 14:31:49 ID:
>>528
Linux インストールしちゃえよ

530 デフォルトの名無しさん 2017/07/30(日) 14:47:05 ID:
>>528
Javaはどんな環境でやってるんだ?
それに近いC環境がとっつきやすいと思うぞ

531 デフォルトの名無しさん 2017/07/30(日) 14:48:46 ID:
>>528
とりあえずプロジェクトを新規作成して、テンプレートからWin32コンソールアプリケーションを選択、オプションで空のプロジェクトをチェックする
その後、ソースファイルに新しい項目を追加してC++ファイルを選択
この時デフォルトではC++(*.cpp)が選択されるので、気になるなら拡張子を*.cに変更すればC言語のソースが記述できる

532 デフォルトの名無しさん 2017/07/30(日) 15:22:25 ID:
>>530
【Java】ゲームプログラミング超入門: http://www.youtube.com/playlist?list=PLJ86MSrhnFKVQPf-E8y0FZKv7uzR4L4Dt
この動画の人にずっとついていってやってた
Part32くらいで少し飽きて一二週間離してて久しぶりにやったら結果が違っててよくわからなくなって別のやつやろうとしてた

533 デフォルトの名無しさん 2017/07/30(日) 16:31:40 ID:
A[j]のjの型は size_t か?

534 デフォルトの名無しさん 2017/07/30(日) 17:51:36 ID:
有名な土方プログラマーの、T Umezawa の動画だろw

Java, C# を、テキストエディタで書いて、端末でコンパイルする

535 デフォルトの名無しさん 2017/07/30(日) 18:00:05 ID:
>>533
配列のサイズの範囲内ならなんでもいい

536 デフォルトの名無しさん 2017/07/30(日) 20:43:35 ID:
>>528
gcc入れろ。

537 デフォルトの名無しさん 2017/07/30(日) 22:04:46 ID:
tcc オススメ

538 デフォルトの名無しさん 2017/07/30(日) 22:18:32 ID:
>>528
自分の場合はcygwinでgcc使ってる。インストール楽だし

539 デフォルトの名無しさん 2017/07/30(日) 23:12:47 ID:
>>536
>>538
やっぱGCCがいいのかな
でもなんかVS2017使いたいんだよね
一回入れてみたことあるけどなんかよくわからんというか
その点VS2017は安心するというか
使ったことないけど

540 デフォルトの名無しさん 2017/07/31(月) 00:11:52 ID:
clコマンド使えばいいんじゃねえのか

IDEの機能なんて初心者は1%も使えない
普通のエディタでも初心者だと5~10%くらいの機能しか使えない

541 デフォルトの名無しさん 2017/07/31(月) 05:37:23 ID:
>>539
普通のコマンドプロンプト出して、↓のバッチファイルを実行するとclが使えるようになる。
"C:¥Program Files (x86)¥Microsoft Visual Studio¥2017¥Community¥VC¥Auxiliary¥Build¥vcvars64.bat"

cl your_program.cpp /EHsc

542 デフォルトの名無しさん 2017/07/31(月) 08:29:21 ID:

543 デフォルトの名無しさん 2017/07/31(月) 08:29:31 ID:

544 デフォルトの名無しさん 2017/07/31(月) 08:29:39 ID:

545 kadesu 2017/07/31(月) 10:32:48 ID:
Selenium WebDriverでHTTP refererを設定する方法をご教授下さい。
chromeを使用しています。

■やりたい事
http://referer.com/http://target.com/

■実装イメージ
options->AddArgument("--referer=http://referer.com/");
driver->Navigate()->GoToUrl("http://target.com/");

■環境
Win7 64bit
visual studio
Chrome driver

546 デフォルトの名無しさん 2017/07/31(月) 10:37:24 ID:
>>542-544
ってVS2017だけ?
もしかしてVScode入れる意味なかった?

547 デフォルトの名無しさん 2017/07/31(月) 18:53:16 ID:
>>539
別にVSでも良いけど、差し当たっては新規作成とビルド->実行くらいは覚えんと。
(デジタルネイティブって言葉はどこ行ったんだろう。。。30代の自分が子供の頃でも迷った記憶は無いのに)

新規だけど、何も無いところから初めたい。
新規作成で空の何とか選べば意図通りに行きそう?とか、直感が働くのがデジタルネイティブの筈なんだが。

最初はcppファイルでCの勉強とかでも良いと思う。
むしろその方が型にうるさいから好都合だし。

548 デフォルトの名無しさん 2017/07/31(月) 21:16:14 ID:
リアルなプログラミングネイティブなのはベーマガ世代だけだよ。

549 デフォルトの名無しさん 2017/07/31(月) 21:53:07 ID:
トラ技世代はどうなるんだよ

550 デフォルトの名無しさん 2017/07/31(月) 22:05:43 ID:
ネイティブになるには小中学生時代に大量のコードを読む必要があるから。
その頃からトラ技読んでたらリアルデジタルネイティブになれるだろうな。
おれは回路はスラスラ読めない、書けない。このコンデンサは何用で~とか考えないと無理。
母国語と同じ感覚、ネイティブになるには高校からじゃ遅すぎるよ。

551 デフォルトの名無しさん 2017/07/31(月) 22:05:52 ID:
Z80とメモリとPIOの回路図から始まるんですかい

552 デフォルトの名無しさん 2017/07/31(月) 22:12:45 ID:
>>550
ごめんな、俺は社会人デビュー後だ
学生時代はhFEすら知らなかった

553 デフォルトの名無しさん 2017/07/31(月) 22:18:29 ID:
バックアップ活用テクニック

554 デフォルトの名無しさん 2017/07/31(月) 22:24:57 ID:
紙テープみて、「ここバグだよ」ってぼそっと言う人

555 デフォルトの名無しさん 2017/07/31(月) 22:29:30 ID:
学生の頃はZ80や6809のアセンブリを手書きしてハンドアセンブルしてたなあ
>>523で書き込んだスタックの構造の違いに気付いたのもその頃

556 デフォルトの名無しさん 2017/07/31(月) 23:15:45 ID:
Cマガ復活させればここの難民は少しは救われるかな

557 デフォルトの名無しさん 2017/08/01(火) 05:31:22 ID:
CJJ かDDJでも良いけど

558 デフォルトの名無しさん 2017/08/01(火) 06:09:11 ID:
ざべ

559 デフォルトの名無しさん 2017/08/01(火) 06:45:19 ID:
ハード指向なら トラ技
ソフト指向なら Interface

最近はかなり曖昧になってきてるけど…

560 デフォルトの名無しさん 2017/08/01(火) 14:13:56 ID:
>> 557-558
それなんですか?

561 デフォルトの名無しさん 2017/08/01(火) 14:36:29 ID:
ざべ=THE BASIC 技術評論社
元々は名のとおりBASICの雑誌だったが
いつしかオタッキーなPC雑誌へと変貌していった
https://2ch.live/cache/view/i4004/1010850340

562 デフォルトの名無しさん 2017/08/01(火) 16:13:23 ID:

563 デフォルトの名無しさん 2017/08/01(火) 22:24:59 ID:
547だけど、ごめん。。。
変なおっさん呼び込んじゃったね。。。

564 デフォルトの名無しさん 2017/08/01(火) 22:38:50 ID:
ここは同窓会みたいなものだから
昔話が大好きなんだよ

565 デフォルトの名無しさん 2017/08/01(火) 22:54:03 ID:
実装の話にバズワードぶっこんでくるガキはすっこんでろ。

566 デフォルトの名無しさん 2017/08/02(水) 07:28:23 ID:
>>565
何をバズワードと思ったの?

567 デフォルトの名無しさん 2017/08/02(水) 09:02:58 ID:
>>566
同窓会

568 デフォルトの名無しさん 2017/08/02(水) 09:17:35 ID:
なんの実装の話だっけ?

569 デフォルトの名無しさん 2017/08/02(水) 10:49:51 ID:
Facebook

570 デフォルトの名無しさん 2017/08/02(水) 23:13:24 ID:
Dr. 弩ブス Journal

571 デフォルトの名無しさん 2017/08/03(木) 02:45:12 ID:
x^2+y^2=5をみたすx、yを求めたいんだけどどんなプログラムがええのかな

572 デフォルトの名無しさん 2017/08/03(木) 02:45:35 ID:
ミス
x^2+y^2=25をみたす自然数x、yを求めたいんだ

573 デフォルトの名無しさん 2017/08/03(木) 03:13:34 ID:
#include <stdio.h>
int main(void) {
int x, y;
for (x = 1; x <= 5; x++) { /* 与式の右辺が25なのでxの値は高々sqrt(25)=5、xの定義域は5以下 */
for (y = 1; y <= 5; y++) { /* 同じくyの定義域は5以下 */
if (x * x + y * y == 25) printf("x=%d y=%d¥n", x, y); /* 求める解は x=3 y=4 または x=4 y=3 */
}
}
return 0;
}

574 デフォルトの名無しさん 2017/08/03(木) 06:50:15 ID:
数学的には {3, 4}, {4, 3} なんてことはわかってるんだからそのまま表示するプログラムでもいい

なるべく応用が効くようなコードにしたいなら
>>573は色々と突っ込みどころが

sqrt(25)は手計算じゃなくてコードで示そう
素直にsqrtを使っても良いし、
x * x < 25
y * y < 25
という条件でもいい

計算オーダー的に二重ループもない
25がちょっと大きくなっただけで計算量がヤバイ
int y = (int)sqrt(25-x*x+.5);
としてから条件を満たすか調べると計算オーダーが減る

575 デフォルトの名無しさん 2017/08/03(木) 07:04:57 ID:
You Ain't Gonna Need It

576 デフォルトの名無しさん 2017/08/03(木) 07:08:22 ID:
Keep it simple, stupid

577 デフォルトの名無しさん 2017/08/03(木) 07:35:44 ID:
だからこれで良いって言ってるだろ

#include <stdio.h>
int main(void) {
printf("x=4 y=3¥n");
printf("x=3 y=4¥n");
return 0;
}

578 デフォルトの名無しさん 2017/08/03(木) 07:41:51 ID:
あ、日本語が読めないのね
Perdon!

579 デフォルトの名無しさん 2017/08/03(木) 07:54:23 ID:
公開オナニーは宿題スレでやれ

580 デフォルトの名無しさん 2017/08/03(木) 07:56:39 ID:
YAGNIとKISSか
そこまで意識した訳では無いけど>>573は適当そのもののコードだからな
汎用性は皆無と言ってもいいよ
正直、質問者の意図もよく分からんしな

581 デフォルトの名無しさん 2017/08/03(木) 08:25:09 ID:
単なる課題だろう
ただ、発展形としてはいろいろ考えられる

ペル方程式 - Wikipedia
ttps://ja.wikipedia.org/wiki/%E3%83%9A%E3%83%AB%E6%96%B9%E7%A8%8B%E5%BC%8F

ベル数 - Wikipedia
ttps://ja.wikipedia.org/wiki/%E3%83%99%E3%83%AB%E6%95%B0

カタラン数 - Wikipedia
ttps://ja.wikipedia.org/wiki/%E3%82%AB%E3%82%BF%E3%83%A9%E3%83%B3%E6%95%B0

582 572 2017/08/03(木) 09:02:23 ID:
うおおおおおおおおお答えてくれた人ありがとう

適当にスレ検索してここにたどり着いたけどスレチだったようだ ほんとにごめん 100万年ROMるわ

583 デフォルトの名無しさん 2017/08/03(木) 09:18:16 ID:
>>574
例えば、50になるとヤバいか?

584 デフォルトの名無しさん 2017/08/04(金) 23:42:56 ID:
ガチ初心者の僕にポインタの使い道を教えてください

585 デフォルトの名無しさん 2017/08/04(金) 23:49:56 ID:
配列と添え字でやりくりできてるうちは必要性がないぐらい

586 デフォルトの名無しさん 2017/08/05(土) 00:07:03 ID:
広大なメモリー空間の海を自由に泳ぎ回りたい時

587 デフォルトの名無しさん 2017/08/05(土) 00:54:39 ID:
[s]scanfしたいとき

588 デフォルトの名無しさん 2017/08/05(土) 01:53:38 ID:
ポインタは演算コストが安いから重宝する

589 デフォルトの名無しさん 2017/08/05(土) 02:13:08 ID:
ポインタの演算コストって普通の整数演算と違うの?

590 デフォルトの名無しさん 2017/08/05(土) 02:22:37 ID:
ポインタに+1したら1増えるのかよ?デバッガで値見てみ。

591 デフォルトの名無しさん 2017/08/05(土) 05:11:53 ID:
>>584
printf("Hello, C world!¥n");
この一文でもう既にポインタを使っているわけだが?

592 デフォルトの名無しさん 2017/08/05(土) 05:22:24 ID:
使ってるから何?

593 デフォルトの名無しさん 2017/08/05(土) 05:53:46 ID:
ポインタの使い道を答えたら逆ギレするガチ初心者。
おそらくポインタを勘違いしてるからキレてんだろうな。

594 デフォルトの名無しさん 2017/08/05(土) 09:33:54 ID:
>590
char *で実験する様子が(ry

595 デフォルトの名無しさん 2017/08/05(土) 09:44:09 ID:
>>591
初心者にありがちな間違い
ポインタと配列は区別しよう

関数に配列を渡した時の解釈について言及しているなら、ガチの初心者に対しては不適切

596 デフォルトの名無しさん 2017/08/05(土) 09:59:39 ID:
>>595
おまえも仮引数と実引数を区別しろ

597 デフォルトの名無しさん 2017/08/05(土) 10:02:18 ID:
void * に1を足す記述がエラーも警告も無しでコンパイル通ってしかも何事もなく1足されてたのを発見した時は驚いた。
gccってそういう仕様だったんだね。

598 デフォルトの名無しさん 2017/08/05(土) 11:10:13 ID:
仮引数
実引数

何用語?

599 デフォルトの名無しさん 2017/08/05(土) 11:13:38 ID:
いくらなんでも流石にそれぐらいは自分で調べて欲しいレベル

600 デフォルトの名無しさん 2017/08/05(土) 11:15:51 ID:
>>598
Cの規格にはない用語だな
きっと別の言語なんだろう

文字列リテラルがポインタ wな謎言語

601 デフォルトの名無しさん 2017/08/05(土) 11:24:58 ID:
仮引数と実引数はC用語じゃねえの?

602 デフォルトの名無しさん 2017/08/05(土) 11:32:07 ID:
仮引数と実引数はJIS X3010にも定義されている用語
仮引数はparameter、実引数はargument
ただ>>596が何を言いたいのかはよく分からん

要するに仮引数はプロトタイプ宣言などで仮に与える引数(型さえ明確なら何でもいい)のことで
実引数は式の中で実際に使われる引数(関数で実際に利用するので名前は重要)のこと

603 デフォルトの名無しさん 2017/08/05(土) 11:34:21 ID:
>>600
アセンブラのオペランドにイミディエイト出来ないものはRO領域に格納されるのでアドレスが割り振られポインタ管理できる

>>601
言語固有の用語ではなく構造化プログラミングの用語

604 デフォルトの名無しさん 2017/08/05(土) 11:35:58 ID:
ああ、argumentとparameterをJISはそう訳してるのか
それはすまん

605 デフォルトの名無しさん 2017/08/05(土) 11:37:18 ID:
>>603
ぷぷぷ
必死だな 配列とポインタが違うって事 知ってるかい? w

606 デフォルトの名無しさん 2017/08/05(土) 11:40:54 ID:
なんか、昔はポインタと配列の区別を知らない筆者の書いた入門書で障害児が量産されたと聞いたが
その中の一人かな

607 デフォルトの名無しさん 2017/08/05(土) 11:41:33 ID:
知っていますよ

608 デフォルトの名無しさん 2017/08/05(土) 11:50:23 ID:
>>607
> アセンブラのオペランドにイミディエイト出来ないものはRO領域に格納されるのでアドレスが割り振られポインタ管理できる
知っているとは思えない発言なんだが

609 デフォルトの名無しさん 2017/08/05(土) 11:54:45 ID:
RO領域って何?

610 デフォルトの名無しさん 2017/08/05(土) 11:59:40 ID:
>>608

>文字列リテラルがポインタ wな謎言語

なぜ文字列リテラルがポインタだと謎な言語なのでしょうか?
また>>608のその文のどの辺りが間違っていますか?

後学までにご指摘頂けるとありがたいです。

611 デフォルトの名無しさん 2017/08/05(土) 12:03:38 ID:
>>609
ReadOnly領域です
まぁ割り当て方はリンカ次第ですが

612 デフォルトの名無しさん 2017/08/05(土) 12:32:48 ID:
>>610
文字列リテラル即ち配列
配列とポインタは異なるもの
∴ それを同じとするのは謎言語

> 後学までにご指摘頂けるとありがたいです。
ROなんて決まってねーし
即値で表現できない(struct foo){1,2,3}なんてのはアドレス欲しかったら&で取らなきゃいけねーし

何もかにもがデタラメ

613 デフォルトの名無しさん 2017/08/05(土) 12:38:11 ID:
なんかニワカ臭

614 デフォルトの名無しさん 2017/08/05(土) 12:38:15 ID:
処理系も指定せず意味不明杉。どっかで頓珍漢な呼出規約の説明してた人と同一人物じゃないのか。

615 デフォルトの名無しさん 2017/08/05(土) 13:12:31 ID:
>>612
>それを同じとするのは謎言語
Cの文字列はcharの配列
それはリテラルでも変わりませんよ?
それ自体が謎というならもうCは無理でしょう

>ROなんて決まってねーし
特殊なリンカでない限り大抵のリンカは定数はROに配置しますよ?

>即値で表現できない(struct foo){1,2,3}なんてのはアドレス欲しかったら&で取らなきゃいけねーし
即値とリテラルが区別出来ていないのでは?
リテラルだろうとメモリ上に配置されたものはアドレスが振られています

>何もかにもがデタラメ
私には貴方がなにも知らないようにしか見えません

616 デフォルトの名無しさん 2017/08/05(土) 13:19:25 ID:
>>615
>特殊なリンカでない限り大抵のリンカは定数はROに配置しますよ?
組込みか何か?

617 デフォルトの名無しさん 2017/08/05(土) 13:20:36 ID:
604 デフォルトの名無しさん[sage] 2017/08/05(土) 11:35:58.99 ID:B4rhQgJR

ああ、argumentとparameterをJISはそう訳してるのか
それはすまん


だっさ最低限の日本語も知らずに日本の2chに書き込むなよ

618 デフォルトの名無しさん 2017/08/05(土) 13:21:53 ID:
>>616
今は組み込み屋ですね
昔はアプリ屋でWinやAndroid触ってました

619 デフォルトの名無しさん 2017/08/05(土) 13:26:16 ID:
もしかして配列とポインタの区別すらついてないのか

620 デフォルトの名無しさん 2017/08/05(土) 15:28:27 ID:
Cだと実際区別ないよね
長々と罵りあってるのに具体的な説明がひとつも出てなくてわろた

621 デフォルトの名無しさん 2017/08/05(土) 15:41:07 ID:
>>615
こいつダメだ 何もかもがデタラメ
ポインタと配列の区別
リテラルと即値の区別

何も出来てない

622 デフォルトの名無しさん 2017/08/05(土) 15:43:44 ID:
>>620
無知を自慢しなくても良いから

623 デフォルトの名無しさん 2017/08/05(土) 16:11:57 ID:
シンタックスシュガーですよ。

624 ◆QZaw55cn4c 2017/08/05(土) 16:14:56 ID:
6809 のアドレッシングモードが懐かしい
リテラルと即値の区別は 6809 を触っておればわかるよね
6809 搭載のPCIボードを誰か作ってくれないかな

625 デフォルトの名無しさん 2017/08/05(土) 17:47:19 ID:
char *pointer;
char array[1];

・・・・・・
pointer++; /* OK */
array++; /* error */

626 デフォルトの名無しさん 2017/08/05(土) 17:51:18 ID:
>>620
こういうのあるよね。

char s1[] = "a";
char *s2 = "b";

これ、s2には後から他の文字列を指すポインタの代入ができるがs1にはできない。
s2はポインタを入れる変数に対する名前になっているがs1は文字列定数の先頭を
指すラベルにしかなっていない。

それとこんなのもある。

char s3[3][100];
char *s4[3];

s4は3要素のchar*だが、s3は違う。char で 100 要素の配列が3要素ある。
配列の配列なので実は typedef char c100t[100]; c100t s3[3]; みたいに書いたのと同じだ。
新しい型が密かに作られている。なので違うのだがアクセスする時に s3[x][y] も s4[x][y] も
できたりして見た目が同じになる。
多分初心者はこれにハマることがあると思う。特に関数の引数をs3のように書いてしまい、
それでs4を引き渡そうとした時とか、あるいはその逆の時とかね。(そして昔のコンパイラは
警告も出さずに通ってしまい動かしてからバグに悩むと)。

627 デフォルトの名無しさん 2017/08/05(土) 18:08:09 ID:
cで一番難しいのは、constだと思う。
間違えてても、動いちゃうからなー
なくても困らないけれど、厳密に宣言しようとおもうと慣れが必要。

char ** とか

628 デフォルトの名無しさん 2017/08/05(土) 18:10:24 ID:
あっ、あと二次元配列とかは、関数の引数に指定しようとするとはまるね。

629 デフォルトの名無しさん 2017/08/05(土) 19:34:33 ID:
"constは左に掛かる"

char const **s; // charを修飾
char * const *s; // char *を修飾
char ** const s; // char **を修飾

と書けば何も迷うことはない

630 ◆QZaw55cn4c 2017/08/05(土) 19:38:19 ID:
では const char **s は?

631 デフォルトの名無しさん 2017/08/05(土) 19:39:51 ID:
>>630
char const **s;
と一緒

632 デフォルトの名無しさん 2017/08/06(日) 00:10:43 ID:
>>630
「では」 がconst

633 デフォルトの名無しさん 2017/08/06(日) 00:11:43 ID:
forkで子プロセスを複数生成した際に、子プロセス間で変数を共有、または子プロセスから他の子プロセス(親は同一)の変数にアクセスする方法って有りませんか?

共有メモリ以外でお願いします

634 デフォルトの名無しさん 2017/08/06(日) 00:18:14 ID:
ファイル経由

635 デフォルトの名無しさん 2017/08/06(日) 00:42:21 ID:
pipe

636 デフォルトの名無しさん 2017/08/06(日) 07:47:08 ID:
大喜利をやれということなのかな

637 デフォルトの名無しさん 2017/08/06(日) 07:49:51 ID:
ptrace

638 デフォルトの名無しさん 2017/08/06(日) 10:57:12 ID:
>>633
内部的には共有メモリと同じなんだろうけどmmapなんかどうだ?

639 633 2017/08/06(日) 12:30:30 ID:
すみません自決しました

640 デフォルトの名無しさん 2017/08/06(日) 13:28:03 ID:
書き込めると言うことは自決は失敗か

641 デフォルトの名無しさん 2017/08/06(日) 14:15:03 ID:
自動で書き込むスクリプト作ったんじゃろ

642 デフォルトの名無しさん 2017/08/06(日) 14:32:55 ID:
多倍長演算って10000進法でやってる?
それとも2^n進法?

643 デフォルトの名無しさん 2017/08/06(日) 14:33:22 ID:
>>633
> 共有メモリ以外でお願いします
共有メモリがダメな理由が書いてないからネタなんだろうな

644 デフォルトの名無しさん 2017/08/06(日) 14:36:56 ID:
>>642
32bit マシンでも 2^32 進数なんて使ってないが...

645 デフォルトの名無しさん 2017/08/06(日) 15:27:01 ID:
>>643
難しくてわからないからじゃね?
あるいは宿題がそういう風に出てしまった。

646 デフォルトの名無しさん 2017/08/06(日) 15:42:53 ID:
UNIX SOCKET

647 デフォルトの名無しさん 2017/08/06(日) 15:58:13 ID:
>>645
どっちにしてもスルーするのが正解

648 633 2017/08/06(日) 16:02:38 ID:
>>643
コードが無駄に長くなるので好きじゃないんです
どうしてもって時以外は使いたくないです

649 デフォルトの名無しさん 2017/08/06(日) 16:31:30 ID:
>>602
596だが
おまえ、どこから流れ読んでる?
>>593あたり前後の関係よく見てみな
>>595がいかに頓珍漢な噛みつき方しているか牛でもわかるぞ

650 デフォルトの名無しさん 2017/08/06(日) 16:47:17 ID:
>>649
ポインタと配列の区別がつけられない障害児のID:dUt+j3iSか
出会った入門書が悪かったんだから、もう諦めてポインタのない言語を学びなおせ

お前にゃCは無理って事だ

651 デフォルトの名無しさん 2017/08/06(日) 16:48:57 ID:
ポインタを教えてくださいと言ってる初心者に配列使って見せて
「これがポインタだっ どやっ」

笑うしかないな

652 デフォルトの名無しさん 2017/08/06(日) 16:52:58 ID:
やっぱりポインタの勉強するには柴田ぼーよー先生のポインタの本がいいんでしょうか?

653 デフォルトの名無しさん 2017/08/06(日) 16:56:06 ID:
ID:dUt+j3iSにどんな本使ったか聞いて、それは避けるべきだと思うよ

654 デフォルトの名無しさん 2017/08/06(日) 17:02:15 ID:
こいつらの反論が反論になっていないな
C分かっていればそのコードが
ポインタ渡しになっていることは直ぐに分かるんだけどね
まぁスルーが得策だよ
ID:dUt+j3iSはID:r2XWWSNCに構ってはいけない

655 デフォルトの名無しさん 2017/08/06(日) 17:23:37 ID:
問題はそこではなくて、ポインタの話からいきなり仮引数だの実引数だのとかの話に飛躍したことだと思うのだがな
まあだいたい想像は出来る
何故だか初心者本でよく見られる間違いとして、関数の呼び出し側の引数が実引数、関数の受け取り側の引数が仮引数、という説明をそのまま受け入れていたのだろうな
言語によってはその通りかも知れんが、少なくともC言語のJIS X 3010の解釈とは異なっている

656 デフォルトの名無しさん 2017/08/06(日) 17:28:55 ID:
>>654
ID:jhhg/GBwもポインタ理解出来てない障害児か
初学時になんて本使った?

657 デフォルトの名無しさん 2017/08/06(日) 17:35:06 ID:
>>654
ご忠告どうも
気持ちだけありがたく貰っとくyo

>>656
K&R 1stだが何か?

658 デフォルトの名無しさん 2017/08/06(日) 17:37:29 ID:
C言語でもその解釈で全然問題無いと思うけどな俺は
どっちにしてもID:r2XWWSNCはど素人のくせに
質問の仕方も知らない無礼な奴と言う事には間違いはないだろう

659 デフォルトの名無しさん 2017/08/06(日) 17:44:53 ID:
>>657
実引数として配列を用いて関数呼び出しを行えば、呼び出された関数は仮引数としてポインタで受け取ると言いたいのだろう
K&Rでも実引数と仮引数はそういった説明をしていたか?

660 デフォルトの名無しさん 2017/08/06(日) 17:54:58 ID:
>>657
おメーには聞いてねーよ 障害児

661 デフォルトの名無しさん 2017/08/06(日) 18:16:39 ID:
>>659
ああしていたよ
おまえには読み取れなかったんだろうがな

>>660
無礼なやつだな
俺は障がい者手帳は交付されてねえよ
勝手に妄想すんな精神分裂病患者め

662 デフォルトの名無しさん 2017/08/06(日) 19:45:26 ID:
>>661
> printf("Hello, C world!¥n"); これがポインタだっ どやっ
手帳申請しろよ w

663 デフォルトの名無しさん 2017/08/06(日) 19:52:07 ID:
>>662
>>661 にそんなことは書かれているのか?

664 デフォルトの名無しさん 2017/08/06(日) 19:55:39 ID:
そういやシンタックスシュガーと言えば、昔々こんなのが動いたのを初めて見た時は驚いたな。
https://paiza.io/projects/XOWJRDaMZQIIu9cF5Ex1Ug
本当にポインタ計算してるだけという。

665 デフォルトの名無しさん 2017/08/06(日) 20:53:33 ID:
>>659
ガイジには読み取れなかったようだ
> When an array name appears as an argument to a function, the location
of the beginning of the array"s passed;

良い時代になったもんだ 歴史的資料がきちんと公開されている

666 デフォルトの名無しさん 2017/08/06(日) 21:33:36 ID:
誤読される可能性があるので追記
>>659
ガイジのID:ThMEkv3Iには読み取れなかったようだ
> When an array name appears as an argument to a function, the location
of the beginning of the array"s passed;

良い時代になったもんだ 歴史的資料がきちんと公開されている

667 デフォルトの名無しさん 2017/08/06(日) 21:39:44 ID:
>>654
ポインタ渡し w
謎用語を躊躇いなく使っちゃう ガイジの特徴だよなあ

668 デフォルトの名無しさん 2017/08/06(日) 22:38:49 ID:
When an array name appears as an argument to a function, the location
of the beginning of the array"s passed;

「配列の名前が関数の実引数として現れた時、その配列の先頭ポインタが渡される」でいい?

669 デフォルトの名無しさん 2017/08/06(日) 22:53:31 ID:
どこにポインタなんて書いてあるんだ 見えないものが見えちゃうって精神科受診した方が良いぞ

670 デフォルトの名無しさん 2017/08/06(日) 22:57:19 ID:
じゃあ君ならlocationはどう訳す?

671 デフォルトの名無しさん 2017/08/06(日) 23:15:47 ID:
ポインタ渡しが謎用語らしい
コイツはもう覚える気すらないよ
つーかただのバカ
スルー推薦

672 デフォルトの名無しさん 2017/08/06(日) 23:17:56 ID:
位置

そもそも
> A pointer is a variable that contains the address of another variable.
と言う定義を理解してないのか?
障害児製造機な入門書が存在らしいな
お前は何という本を初学時に使った?

673 デフォルトの名無しさん 2017/08/06(日) 23:20:53 ID:
一応言っとくけど、文字列リテラルを関数に渡す場合の説明は5.5章だぞ

674 デフォルトの名無しさん 2017/08/06(日) 23:22:53 ID:
>>671
ガイジ用語か qiitaでいっぱいヒットするわ w

675 デフォルトの名無しさん 2017/08/06(日) 23:25:55 ID:
>>672
直訳すると、「ポインタとは他の変数の位置を内包した変数である」。
"location of the beginning of the array"、直訳すると「配列の先頭の位置」はポインタ以外の何物だっていうのか教えてくれる?

ちなみに俺の初学本は「C言語によるプログラミング」第二版

676 デフォルトの名無しさん 2017/08/06(日) 23:25:56 ID:
他人をガイジ呼ばわりしてるけど自分が1番ガイジだったってオチやね

677 デフォルトの名無しさん 2017/08/06(日) 23:38:53 ID:
メモリ上の位置を表す「アドレス」と、それを格納する変数である「ポインタ」を混同してるから議論が噛み合わないのでは?

678 デフォルトの名無しさん 2017/08/06(日) 23:45:57 ID:
>>675
ガイジか?
ポインタとは他の変数のアドレスを内包した変数である
としか書いてないのに、書かれてない「位置」がなぜ出てくる

まあ、それには目をつぶって
「内包した変数」が重要
Cの変数とは型を持ち、値を格納できるもの

アドレスとポインタ(=変数)を混同しないように
あと10年くらい修行することだ

679 デフォルトの名無しさん 2017/08/06(日) 23:45:58 ID:
いうほど混同しているだろうか?

680 デフォルトの名無しさん 2017/08/06(日) 23:54:22 ID:
>>678
えーともしかして、
「いわゆる『ポインタ渡し』ではアドレスがコピーされているのであってポインタ変数が渡されているわけではない」と言いたいの?

681 デフォルトの名無しさん 2017/08/06(日) 23:55:35 ID:
コイツはまともな社会生活できてるのか
日常会話が成立出来ていないのではないか

682 デフォルトの名無しさん 2017/08/07(月) 00:00:10 ID:
>>680
ガイジ用語使うな
qiitaでヒットするそれはあえて言うなら「ポインタ渡され」
このスレで出現している「ポインタ渡し」はガイジID:jhhg/GBwが使い出した謎用語

683 デフォルトの名無しさん 2017/08/07(月) 00:02:00 ID:
論点を三行でまとめて

684 デフォルトの名無しさん 2017/08/07(月) 00:07:08 ID:
>>682
いわゆるって言ったのにそれでもダメか。

void foo(int a[8])と宣言された関数を別の関数内で

int a[8];
void foo(a)

と呼び出す時、それはポインタが渡されているのではなく配列の先頭アドレスがコピーされていると言いたいの?

685 デフォルトの名無しさん 2017/08/07(月) 00:09:51 ID:
「ポインタ」って用語は結構仕様書中でも不安定だから、実はあまり気にしてもしょうがなかったりするんだよね
http://www.kijineko.co.jp/node/498

686 デフォルトの名無しさん 2017/08/07(月) 00:11:41 ID:
>>684
foo(a) の 「a」って何?

687 デフォルトの名無しさん 2017/08/07(月) 00:13:35 ID:
>>686
その上にint a[8];って書いたんだけど、なんか文法ミスってたかいな?

688 デフォルトの名無しさん 2017/08/07(月) 00:13:38 ID:
このガイジ早く死刑にしろ
絶対何か障害持ってるだろ
何か起こしてからじゃ遅いぞ

689 デフォルトの名無しさん 2017/08/07(月) 00:16:29 ID:
なるほど。やたらガイジ連呼してる奴が頭おかしいわけだな。

690 デフォルトの名無しさん 2017/08/07(月) 00:21:20 ID:
>>684
渡されるのはポインタ変数の値(アドレス)、それをfooがポインタ変数として受け取る

691 デフォルトの名無しさん 2017/08/07(月) 00:24:46 ID:
ポインタの使い道を聞いてるのに、なにみんなで必死にポインタの解説してんだ?

Javaとかポインタない言語があるんだからポインタはなくてもいいだろという主旨だろう。

692 デフォルトの名無しさん 2017/08/07(月) 00:25:52 ID:
ガイジ用語「ポインタ渡し」を編み出したID:jhhg/GBwは今日はID:5EiEWIq+か

693 デフォルトの名無しさん 2017/08/07(月) 00:33:24 ID:
>>690
だよねえ。それじゃあ
printf("Hello, C world!¥n");はポインタとして受け取っているように見えるんだけど、ポインタではないの?

694 デフォルトの名無しさん 2017/08/07(月) 00:38:54 ID:
引数を変数だと考えるからおかしなことになる
引数は値であって変数ではない、渡しているのは値であって変数ではない
C言語には値渡ししか存在しない、他の言語で言う参照渡しに相当するようなものは存在しない
ましてやポインタ渡しに至っては全く意味不明
渡しているのはアドレスであってポインタを渡しているのではない

695 デフォルトの名無しさん 2017/08/07(月) 00:43:09 ID:
ポインタ渡されww

696 デフォルトの名無しさん 2017/08/07(月) 00:46:39 ID:
じゃあ「アドレス渡し」ならいいわけ?

697 デフォルトの名無しさん 2017/08/07(月) 00:48:53 ID:
定義至上主義者とは一般的な会話が成り立たないことがよくわかる

698 デフォルトの名無しさん 2017/08/07(月) 00:51:00 ID:
定義至上主義なら最初から「アドレス渡しと呼べ」と言えばいいだけだから、ただ文句つけたかっただけだと思うよ

699 デフォルトの名無しさん 2017/08/07(月) 01:02:22 ID:
定義至上主義者はID:r7C/NYo5のことだと思うが
「ポインタ渡し」だの「アドレス渡し」だの言葉の定義に拘ってるようにしか見えん

700 デフォルトの名無しさん 2017/08/07(月) 01:04:50 ID:
>>694
厳密にはNULLポインタとかがアドレスじゃないから、「ポインタ型の値」といったほうが汎用的では
そして、
>>685
によると(場合によってはポインタ型の値)もポインタと言ってる箇所があるのかな
仕様書読むのめんどくさい

どれにせよ、厳密な表記しても初心者には得がないな

701 デフォルトの名無しさん 2017/08/07(月) 01:06:41 ID:
>>693
printfに対する知識がなければ、アドレスを渡しているところまでしかわからない

702 デフォルトの名無しさん 2017/08/07(月) 01:08:08 ID:
この流れでそう思える読解力は凄い
言葉の定義で頓珍漢な噛みつき方したのは
ID:Uo4tfgNRとID:YE/9ro9hだろ

703 デフォルトの名無しさん 2017/08/07(月) 01:10:17 ID:
>>701
そんなことで人のことをガイジガイジ連呼していたの?

704 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 01:11:58 ID:
人工知能は人間らしい解釈ができないから仕方ない。

705 デフォルトの名無しさん 2017/08/07(月) 01:14:42 ID:
これチューリングテストの実験場だったのか
見抜けなかったわ〜w

706 デフォルトの名無しさん 2017/08/07(月) 01:15:35 ID:
だからさぁ。使い道を聞かれてんだよ、使い方じゃねーんだよ。さっさと答えてやれよ。

javaやpascalはポインタ使わなくてもプログラム書けるのにCにポインタが必要になる使い方をよ。

もしかしておまえら入門書読んで理解したつもりなだけで、ポインタが何か分ってないんだろ?

707 デフォルトの名無しさん 2017/08/07(月) 01:18:08 ID:
>>706
俺はガイジ連呼厨の意図が知りたかっただけだし、そこまで偉そうに言うなら君が答えてあげなよ

708 デフォルトの名無しさん 2017/08/07(月) 01:19:37 ID:
>>703
お前をガイジと呼んだのは、書かれていない単語が見えてたからだと説明したはずだが

709 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 01:21:33 ID:
そこ、放送禁止用語も知らない一般人、オンエアしちゃダメ。

710 デフォルトの名無しさん 2017/08/07(月) 01:26:39 ID:
>>708
俺以外に対してだよ

711 デフォルトの名無しさん 2017/08/07(月) 01:35:13 ID:
結局、javaやpascalはポインタ使わなくてもプログラム書けるのに
Cにポインタが必要になる使い道、理由は誰も分らないのかよ。

ガッカリだぜ。なにがC言語なら俺に聞けだよ。

712 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 01:35:26 ID:
┌────────┐
│        │
│  /■‾\   │
│  (´∀`∩)  │
│  (つ  丿  │
│  ( ヽノ   │
│  し(_)   │
│        │
│Now Onigiring...│
│        │
│ 暫くおにぎりで │
│ お待ちください │
└────────┘

713 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 01:38:45 ID:

714 デフォルトの名無しさん 2017/08/07(月) 01:41:43 ID:
>>703
> printf("Hello, C world!¥n"); これがポインタだっ どやっ
十分にガイジ

「ポインタ渡し」のガイジ事か?
> こいつらの反論が反論になっていないな
> C分かっていればそのコードが
> ポインタ渡しになっていることは直ぐに分かるんだけどね
printfの知識が無ければわからない
「渡され」を「渡し」と呼ぶ
十分にガイジ

715 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 01:44:12 ID:
生で全国放送なんで、影響力強いっす。学校でイジメの真似事されると困ります。ですから、放送コードに違反した発言は極力慎むように頼みます。

716 デフォルトの名無しさん 2017/08/07(月) 01:48:52 ID:
>>714
最初のは確かに渡されだけどポインタじゃない?一応間違ってはないんじゃない? 最初にそのレスした時相手のprintfの知識とか考えてなかっただろうし。

それに「ポインタ渡し」は慣用語として定着してしまっている側面もあるからその用語を使っただけでガイジ認定は早いよ
ある程度の慣用語は意図を汲んだ上で、間違ってると思うなら的確に指摘しないとコミュニケーション成立しなくてどっちがガイジかわからなくなっちゃう

717 デフォルトの名無しさん 2017/08/07(月) 01:50:24 ID:
>>711
ポインタという仕組みを1つ導入することでアドレスを直接操作することができるからかな
参照だとアドレスを操作できない
他の言語はアドレスを逆に操作させないことで安全性を保つというスタンスだけど
C/C++は安全でない代わりにアドレスを直接操作する事ができるというスタンス

あとはメモリ操作のコスト削減があげられると思う
for(i = 0; i < MAX; i++){
dest[i] = src[i];
}
とやるよりも
src_p = src;
dest_p = dest;
dest_end_p = dest + MAX;
while (dest_p < dest_end_p) {
*dest_p++ = src_p++;
}
とやるほうがコストが軽い

718 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 01:50:56 ID:
動物園の檻の中で「あいつはオラウータン」「こいつはゴリラ」とかぼやいてる飼育員。

719 デフォルトの名無しさん 2017/08/07(月) 01:55:31 ID:
脱字訂正
誤:*dest_p++ = src_p++;
正:*dest_p++ = *src_p++;

720 デフォルトの名無しさん 2017/08/07(月) 02:04:29 ID:
>>716
やっぱり見えないものを見てるガイジか?
> printf("Hello, C world!¥n");
これのどこに
> A pointer is a variable that contains the address of another variable.
が現れているんだ?

確実に配列とポインタの区別がついてないガイジだろ

721 デフォルトの名無しさん 2017/08/07(月) 02:11:29 ID:
>>720
渡され側は先頭アドレスを格納したポインタであって、
そのレスをした人は最初にレスした時、相手のprintfの知識とか気にしてなかっただろうって書いたつもりだけど、なんか間違ってた?

722 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 02:12:45 ID:
引数は変数の一種と見なすのも一理あるだろう。仮引数も変数と見なしても実用上は問題ない。
それとも仮引数は変数ではないと言い張りたいのか?

723 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 02:16:49 ID:
我々は実用性を重視するが、理論上では仮引数はポインターではないかもしれない。君のような理論家ではそれは重要かもしれないが。

724 デフォルトの名無しさん 2017/08/07(月) 02:19:54 ID:
>>721
> printf("Hello, C world!¥n");
この一文のどこにポインタが使われてるんだ?
printfの定義は「この一文」には含まれないよな
subroutine printf(s)
character*80 s
かもしれんぞ


591 デフォルトの名無しさん[] 2017/08/05(土) 05:11:53.62 ID:dUt+j3iS

>>584
printf("Hello, C world!¥n");
この一文でもう既にポインタを使っているわけだが?

725 デフォルトの名無しさん 2017/08/07(月) 02:30:03 ID:
>>724
とりあえず、もしfortranから呼んでるならなら_printfじゃない?
さっきから言われた側の知識に言及していらっしゃるけど、それこそ一般に言うとprintfって言ったら普通はstdio.hのものを指すし、言われた側もまさかfortranとは思わないよ
そんな病的な状況を例に出さないといけない時点でおかしい噛みつき方してるってわかるもんだと思うけどなあ

726 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 02:31:22 ID:
>>724
それはC言語以外の話になるだろう。

727 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 02:36:12 ID:
printfの仮引数がポインター型だから、printf内部とprintfの型情報でポインターを使っているといっても間違いではない。

728 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 02:41:35 ID:
頭でっかちの理論家が、間違いを含む古い書籍を読んで、一字一句正しいと思い込んでいるのは最悪な状況だ。

729 デフォルトの名無しさん 2017/08/07(月) 02:46:48 ID:
>>722
「この一文」と限定したんだから、それ以外の知識は不要で、これだけでポインタを使ってるという事だな

730 デフォルトの名無しさん 2017/08/07(月) 02:48:03 ID:
>>727
プロトタイプも「この一文」以外の知識だよ
ボンクラ

731 デフォルトの名無しさん 2017/08/07(月) 02:48:13 ID:
同意
俺も>>694では単に概念を述べただけなのに何故だか定義至上主義にされてしまったからな
理論化にとっては定義が大事なだけであって概念を理解しようとしない

732 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 02:55:53 ID:
>>730
一文の意味論を考えると、やはりその仮引数はポインターだという結論になる。

733 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 02:59:45 ID:
そのうちprintfがマクロだとか言い出す

734 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 03:15:03 ID:
教育上は、引数は関数に渡せる変数だと指導する方が分かりやすい。ただ、コンパイラーや言語を考えるとき、理論上では問題がある。

735 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 03:21:11 ID:
実際、仮引数は、変数と同じように型を持ち、変数と同じように値を代入したり、値を取り出したりできる。
これを変数ではないとするのは直感に反する。だから教育上の配慮から、理論以外では、仮引数は変数だと見なしてよい。

736 デフォルトの名無しさん 2017/08/07(月) 03:22:46 ID:
>>732
どこに「この一文」に仮引数が出てきてるんだ
お前も見えないものが見えるガイジか?

737 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 03:23:44 ID:
>>736
私には意味が見える。

738 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 03:30:44 ID:
>>736
お前のそのコメントのどこに意味が見える? 意味は見るものじゃなくて解釈するものだ。
意味論上で意味を解釈しようとしない馬鹿に議論はできない。

739 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 03:40:03 ID:
猿、猿、猿。さて猿は何匹? いいえ、これはただの文字。本当の猿ではありません。
printf("あほ"); さて、これはどんな処理でしょう。いいえ、この文はただの
テキスト。フォートランかもしれないし、
バイナリーではないから、本当の処理ではありません。
printf? 別に意味なんてありません。この一文に意味なんてありません。
こいつらは形而上学を知らないのか。

740 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 03:48:46 ID:
形而上言語では、一文とその意味は同一視するものだ。
そこで君が提示したprintf("なんちゃら");も意味があると仮定する。
これはprintf関数に"なんちゃら"という文字列データのアドレスを渡すものと解釈される。
よってこのprintfの最初の仮引数はポインター型だ。もし、ポインター型でなければ、形而上の意味が不定になり、
君が提示したことはC言語的には無意味だ、
という意味になる。馬鹿げてるよ。

741 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 04:01:49 ID:
 ∧_∧      半端者はみっくみくにしてやんよ
 ( ・ω・)=つ≡つ
 (っ ≡つ=つ
 /   ) ババババ
 ( / ̄∪

742 デフォルトの名無しさん 2017/08/07(月) 04:23:54 ID:
>>740
printf("なんちゃら");
はprintfと言う外部名を持つ手続きに引数として文字配列の先頭アドレスを与えて呼び出すという意味しかない
わかったかね ボンクラ

743 デフォルトの名無しさん 2017/08/07(月) 04:32:31 ID:
月曜の朝っぱらから元気だな
とレス辿ったら昨日からずっとやってたのか

744 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 04:34:25 ID:
>>742
敢えてprintfの型に触れず誤魔化してるようにしか見えないが。printfの型が決まってなければ、明らかにコンパイルできない文だ。

745 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 04:49:23 ID:
 ∧_∧      半端なヤツはみっくみくにしてやんよ
 ( ・ω・)=つ≡つ
 (っ ≡つ=つ
 /   ) ババババ
 ( / ̄∪

746 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 04:55:23 ID:
「戻り値」はダメとか言ったらキリがない。
言葉の世界は多数決で決まる。
時代錯誤な正義を振りかざすな。

747 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 05:16:25 ID:
const char a[1] = "";
const char *p = "";
assert(sizeof(a) == 1);
assert(sizeof(p) == sizeof(void *));
a++; // Error
p++; // OK

748 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 05:33:55 ID:
我が国は教育上の配慮を生徒よりも先回りして先回りして考えているから、教育水準をここまで
高めることが出来たんだ。教育上の配慮がないなら、答えを砂漠の中から探させることになってしまうぞ。
お前は天才だからいいが、エリートじゃない一般人は教育上の配慮を行った教材じゃないと生き残れない。

749 デフォルトの名無しさん 2017/08/07(月) 06:44:33 ID:
>>744
コンパイルするのにprintfの型が既知である必要なんてないだろ
何言ってんだコイツ

750 デフォルトの名無しさん 2017/08/07(月) 06:52:48 ID:
>>672
これどこの定義か知らんけど(変数じゃなくて)関数へのポインタって言うのもあるよね?

751 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 07:37:27 ID:
                  ┌─┐
                  |も.|
                  |う |
                  │来│
                  │ね│
                  │え .|
                  │よ .|
       バカ    ゴルァ  │ !!.│
                  └─┤    プンプン
     ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д)
     | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
~ ~  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎->┘◎

752 デフォルトの名無しさん 2017/08/07(月) 07:48:24 ID:
>>735
仮引数ってプロトタイプ宣言の引数じゃなかったっけ?
あれ、関数の型を教えるだけだから、型だけ書いて変数書かないとかもおkだお。

int hoge(int);

753 デフォルトの名無しさん 2017/08/07(月) 08:38:13 ID:
あいや~
昔 -traditional でgccでコンパイルして
動かせた化石ソースが、
今はもう -traditional使えないんで
コンパイル出来ない、動かせないアルよ。

754 デフォルトの名無しさん 2017/08/07(月) 09:14:12 ID:
>>752
仮引数かいてなくて どっちがどっちじゃ! と迷う qsort
qsort(void*, size_t , size_t , int (*)(const void*,const void*)):

755 デフォルトの名無しさん 2017/08/07(月) 09:25:07 ID:
>>750
自分で調べて一次ソースを持ってこい
許容されるソースはK&RかISO/JIS/ANSIに準ずる規格票

756 デフォルトの名無しさん 2017/08/07(月) 09:27:48 ID:
>>754
仮引数もガイジ認定したい用語だ
原文ではparameter
実引数をあらわすargumentはactual argumentまたはactual parameterとも呼ばれる
実仮引数 w まさにガイジ用語

757 デフォルトの名無しさん 2017/08/07(月) 09:29:25 ID:
>>756
漢字にすると面倒な言葉だね・・・ たまに何だっけ?ってなることがある

758 デフォルトの名無しさん 2017/08/07(月) 09:30:00 ID:
化石ソース

#include<stdio.h>

int function(a, b, c)
int a;
int b;
int c;
{
return a*b + c;
}

int main(void){
printf("%d¥n", function(5, 4, 10));
return 0;
}

759 デフォルトの名無しさん 2017/08/07(月) 09:30:57 ID:
>>754
いあ。。。
実引数の方みろよとしか。。。
プロトタイプ宣言に何期待してんだよ。

760 デフォルトの名無しさん 2017/08/07(月) 09:35:47 ID:
数使ってるなら、そのうち覚えるけど、そうでもないのはいちいち調べるのに手間だし
最近のは プロトタイプをポップアップ表示したりする環境もあるし ね

761 デフォルトの名無しさん 2017/08/07(月) 10:58:51 ID:
英語圏のガイジはどんな用語擬きの英語使うか気になる

762 デフォルトの名無しさん 2017/08/07(月) 12:44:52 ID:
>>755
お前が調べて持ってこいよ w

763 デフォルトの名無しさん 2017/08/07(月) 14:01:38 ID:
>>744
ウソついてゴメンなさいはしないのか?

764 デフォルトの名無しさん 2017/08/07(月) 14:02:13 ID:
>>762
見つけられないなら、お前の戯言

765 デフォルトの名無しさん 2017/08/07(月) 14:21:07 ID:
JavaにポインタがなくてCにポインタがあるのはという話が出ているが
データのあるアドレスの扱いをポインタで実現したかそうでないかということだと思われる
Javaではint[]型のような参照型の変数にはアドレスが入っている
他例えばJavaScriptではNumber, Booleanのようなラッパークラスがint*などに似た役割を果たす

766 デフォルトの名無しさん 2017/08/07(月) 14:23:34 ID:
int*というよりはint *constか

767 デフォルトの名無しさん 2017/08/07(月) 14:27:21 ID:
char*ってなんなの?
char型の配列の先頭のアドレスを入れる配列って事?

つまりchar* a = {"hello","hoge","bread"};

こう?

768 デフォルトの名無しさん 2017/08/07(月) 14:36:26 ID:
charは256種類の値をとる型でありそれを使って'A'とか文字1つを表す
char型の配列はcharを一列に並べることによってUTF-8ヌル終端文字列を表す
その先頭のアドレスはchar*型なのでC言語ではchar*が文字列型になる
文字列の配列が欲しければ(char*)*つまりchar**

769 デフォルトの名無しさん 2017/08/07(月) 14:44:29 ID:
>>768
char a と char* aは同じってこと?
char**は文字列の配列だから

さっきの例でchar** aならa[0]はhello, a[1]はhoge?

770 デフォルトの名無しさん 2017/08/07(月) 15:36:39 ID:

771 デフォルトの名無しさん 2017/08/07(月) 15:53:42 ID:
>>770
うーん
char とchar*ってやっぱり違うのか?
charが配列でchar*は2次元配列みたいなものなのかな?
char**は3次元配列でchar***(以下略


char a[][] これは2次元配列
char *a[] これも2次元配列
char **a これも2次元配列
って事なのかな?

772 デフォルトの名無しさん 2017/08/07(月) 16:34:16 ID:

773 デフォルトの名無しさん 2017/08/07(月) 16:35:01 ID:
>>764
はあ?
お前関数へのポインタも知らんのか? w

774 デフォルトの名無しさん 2017/08/07(月) 16:54:50 ID:
>>773
「(変数じゃなくて)関数へのポインタ」があると主張している、お前が一次ソースもってこい

775 デフォルトの名無しさん 2017/08/07(月) 18:33:10 ID:
>>662
ポインタだよ
おまえまさか「配列を渡した」とか思ってるのか?
手帳がいるのおまえだろ、あ既にもってるんだっけw

776 デフォルトの名無しさん 2017/08/07(月) 18:56:35 ID:
>>765
全然ポインタが何か分ってねぇ。cだって配列あるじゃねーか。

777 デフォルトの名無しさん 2017/08/07(月) 19:43:35 ID:
>>774
横からだけどこれでいいか?
K&R第2版Chapter 5より
The use of comp in the line
if ((*comp)(v[i], v[left]) < 0)
is consistent with the declaration: comp is a pointer to a function, *comp is the function, and
(*comp)(v[i], v[left])
is the call to it.

778 デフォルトの名無しさん 2017/08/07(月) 19:53:25 ID:
ポインタが変数ではない別の何かだと言うのは、始めて聞きました

779 デフォルトの名無しさん 2017/08/07(月) 19:56:00 ID:
>>778
>>750のことなら(変数へのポインタではなく)関数へのポインタって意味だと思うよ

780 デフォルトの名無しさん 2017/08/07(月) 20:00:14 ID:
関数のポインタの配列
http://codepad.org/GP2rFL5Z

781 デフォルトの名無しさん 2017/08/07(月) 20:31:35 ID:
>>778
ポインタは、アドレスを意味する値であって
それを格納しうる変数には限らない

782 デフォルトの名無しさん 2017/08/07(月) 20:59:10 ID:
論点が何なのかさっぱりわからん

783 デフォルトの名無しさん 2017/08/07(月) 21:02:26 ID:
論点はポインタの使い途wwwwwwwww

784 デフォルトの名無しさん 2017/08/07(月) 21:04:00 ID:
> ポインタは、アドレスを意味する値

酷いな。小学生かよ。

785 デフォルトの名無しさん 2017/08/07(月) 21:07:10 ID:
ポインタが変数なのか変数でないのか、結論は出ましたか?

786 デフォルトの名無しさん 2017/08/07(月) 21:22:08 ID:
>>778
理解力無さすぎだろ...

787 デフォルトの名無しさん 2017/08/07(月) 21:23:07 ID:
>>785
それは論議の結論ではなく、単なる事実

# 年齢だか学歴がどうたら言ってるアフォはスルー

788 デフォルトの名無しさん 2017/08/07(月) 21:24:03 ID:
(void *)0 は何になるんで

789 デフォルトの名無しさん 2017/08/07(月) 21:26:45 ID:
議論をするなら自分の主張くらいはっきり書けよ

790 デフォルトの名無しさん 2017/08/07(月) 21:29:47 ID:
>>788
ポインタ

791 デフォルトの名無しさん 2017/08/07(月) 21:31:15 ID:
一つ言えることは、幼稚園児 ID:OgCRmlag がオレオレ定義したポインタ

> ポインタは、アドレスを意味する値

を誰も支持することはないだろうということ。

792 デフォルトの名無しさん 2017/08/07(月) 21:33:48 ID:
ID:OgCRmlag一人頓珍漢なこと言ってるだけあって、他は言ってること同じということか。
こいつ一人スルーすれば議論するようなことは何もない。

793 デフォルトの名無しさん 2017/08/07(月) 21:34:30 ID:
支持じゃなくて規格書を根拠としないと

794 デフォルトの名無しさん 2017/08/07(月) 21:39:11 ID:
>>793
そうだな、おまえが根拠を示す必要があるな
どこに pointer is an lvalue とあるのか頑張って探せや

795 デフォルトの名無しさん 2017/08/07(月) 21:42:00 ID:
おれが?
冗談でしょ

796 デフォルトの名無しさん 2017/08/07(月) 21:44:02 ID:
そもそも質問者は定義を聞いているんじゃない。使い道を聞いているんだ。
printf()で使う。これで答えのはずだ。

それなのにおまえらは規格書も読まずオレオレ定義を展開しやがって。

797 デフォルトの名無しさん 2017/08/07(月) 21:45:41 ID:
手帳申請しろとまで言っといて
都合が悪くなったら手のひら返ししてるアフォはスルー

798 デフォルトの名無しさん 2017/08/07(月) 21:46:23 ID:
まあ、俺じゃねえって言い訳しかできねえだろうなw

799 デフォルトの名無しさん 2017/08/07(月) 21:47:16 ID:
何このどんぐりの背比べ…

800 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 21:48:21 ID:
2個。

801 デフォルトの名無しさん 2017/08/07(月) 21:52:43 ID:
751

802 デフォルトの名無しさん 2017/08/07(月) 21:53:53 ID:
アホ二人でスレ汚しか
感心しないな

803 デフォルトの名無しさん 2017/08/07(月) 21:55:26 ID:
やーい直球の罵倒語しか言うことなくなってやんのwwwwwwwww

804 デフォルトの名無しさん 2017/08/07(月) 21:55:37 ID:
ID:OgCRmlag ID:yPIvhEga ケンカしてるこの二人をNGにするとすっきり。

805 デフォルトの名無しさん 2017/08/07(月) 21:58:53 ID:
えっ?
おれ?

ただの通りすがりだ

806 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 21:59:31 ID:
※未承認広告※

新 台 入 替 !

807 デフォルトの名無しさん 2017/08/07(月) 21:59:33 ID:
スルーされてる約1名が相手して貰えている人をクリティカル嫉妬wwww

808 デフォルトの名無しさん 2017/08/07(月) 22:01:27 ID:
>>806
数学得意な人?

809 デフォルトの名無しさん 2017/08/07(月) 22:03:03 ID:
ビジービーバー関数はなんでC言語では書けないの?

810 デフォルトの名無しさん 2017/08/07(月) 22:06:55 ID:
んなこたどうでもいい
&演算子が生じる結果は左辺値なのかよ?
6.5.3.2 にはそんなこと書いてねえぞボケこら

811 デフォルトの名無しさん 2017/08/07(月) 22:11:16 ID:
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこいID:DdwwpY1/
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |

812 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 22:11:31 ID:
>>809
計算不能であることが証明されている。Wikipediaより。

813 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 22:29:15 ID:
※未承認広告※
パチパチしませんか?

814 デフォルトの名無しさん 2017/08/07(月) 22:33:57 ID:
なんでWikipedia

815 デフォルトの名無しさん 2017/08/07(月) 22:34:35 ID:
手帳所持者は逃げたかwww

816 デフォルトの名無しさん 2017/08/07(月) 22:37:08 ID:
>>812
何言語なら書けますか?

817 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 22:40:09 ID:
>>816
現状、どんな言語でも駄目。量子コンピュータで計算の概念が再定義される位のことが起こらないと無理。

818 デフォルトの名無しさん 2017/08/07(月) 22:50:03 ID:
ありがとうございます
あなたのレベルが大体わかりました

819 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 22:59:26 ID:
おそらく、量子コンピュータや生物コンピュータでも計算不能だろう。

820 デフォルトの名無しさん 2017/08/07(月) 23:09:18 ID:
だからこんなキチガイはスルーしろと言ったのに…
ただのキチガイなんだから

821 片山博文MZ ◆T6xkBnTXz7B0 2017/08/07(月) 23:16:17 ID:
ハムスターをリモコンで操作したい。

822 デフォルトの名無しさん 2017/08/07(月) 23:33:23 ID:
女の子をリモコンで操作したい

823 デフォルトの名無しさん 2017/08/08(火) 00:41:25 ID:
>>777
どう見てもcompは変数なんだが

824 デフォルトの名無しさん 2017/08/08(火) 00:45:20 ID:
>>775
> おまえまさか「配列を渡した」とか思ってるのか?

配列名がどのように扱われるか知らないのか 完全なガイジ
とっとと手帳申請しろ

825 デフォルトの名無しさん 2017/08/08(火) 00:49:28 ID:
いつまでやっているんだ

826 デフォルトの名無しさん 2017/08/08(火) 00:57:11 ID:
>>823
そのバカには何言ってもダメから
スルーしろ

827 デフォルトの名無しさん 2017/08/08(火) 01:47:17 ID:
>>826
いや馬鹿は>>778が読解力なさすぎと指摘されているのに同じ解釈を繰り返している>>823でしょ。
ID:r7C/NYo5はcompが変数であることは否定していないし、その前の議論は(変数へのポインタではなく)関数へのポインタが存在するかどうかだ

828 デフォルトの名無しさん 2017/08/08(火) 01:57:36 ID:
>>823
compそのものは変数だけど、関数を指しているポインタでしょ?
ID:Uo4tfgNRが関数へのポインタが存在しないって主張していらっしゃるようだから示しただけだよ

>>774の「(変数じゃなくて)関数へのポインタ」
の「変数じゃなくて」は「ポインタが変数でない」と言っているのでなくはなく「ポインタの指す先が変数でなく関数」と言っていると思うんだけど違うかいな?
A pointer is a variable that contains the address of another variable. の最初のvariableじゃなくてanother variable の方ってことね

829 デフォルトの名無しさん 2017/08/08(火) 01:58:16 ID:
(変数でない)関数へのポインタが存在するかどうかだ

じゃないの?

830 デフォルトの名無しさん 2017/08/08(火) 02:01:15 ID:

831 デフォルトの名無しさん 2017/08/08(火) 02:05:22 ID:
typedef void (*INTVEC)(void);
(INTVEC)0;

832 デフォルトの名無しさん 2017/08/08(火) 02:08:26 ID:
>>829
(変数でない)は関数かポインタかどっちにかかっていると思う? 俺は関数だと思う

833 デフォルトの名無しさん 2017/08/08(火) 02:10:43 ID:
関数は変数じゃないと言うのは理解出来るけど
関数へのポインタが変数じゃないと考えている人がいるようなので

834 デフォルトの名無しさん 2017/08/08(火) 02:20:03 ID:
少なくともID:bZKJxmgbは違うと思うよ

835 デフォルトの名無しさん 2017/08/08(火) 02:26:48 ID:

836 デフォルトの名無しさん 2017/08/08(火) 02:27:16 ID:
違うなら良いんです

ポインタは変数じゃないと結論が出るかどうかを楽しみにしているだけなので

837 デフォルトの名無しさん 2017/08/08(火) 03:43:17 ID:
>>828
「ポインタは変数である」
と言う文脈で「ポインタの指すものが変数じゃ無いものがある」と言い出すガイジが存在するって言ってるのか?

838 デフォルトの名無しさん 2017/08/08(火) 04:07:36 ID:
変数へのポインタが存在するかどうかは、議論になってないと思いました

839 デフォルトの名無しさん 2017/08/08(火) 04:10:20 ID:
議論になっているのは、
「ポインタは変数ではない」あるいは
「ポインタには変数で無いものが存在する」ってことかな?

どちらにしても、何か違和感を感じざるを得ません

840 デフォルトの名無しさん 2017/08/08(火) 05:31:31 ID:
ポインタという言葉が、ポインタ型かポインタ変数かどちらのことを意味しているのかは文脈次第
関数へのポインタ云々の主張はポインタ型のことを言っているし、ポインタは変数云々の主張はポインタ変数のことを言っている
両者を混同して議論しているから混乱する

JIS X 3010
ポインタ型(pointer type)は,被参照型(referenced type)と呼ぶ関数型,オブジェクト型又は不完全型から派生することができる。
ポインタ型は,被参照型の実体を参照するための値をもつオブジェクトを表す。被参照型Tから派生されるポインタ型は,“Tへのポインタ”と呼ぶ。
被参照型からポインタ型を構成することを“ポインタ型派生”と呼ぶ。

例)
関数型
 被参照型 : void func(void), int func(int)
 ポインタ型 : void (*func)(void), int (*func)(int)

オブジェクト型
 被参照型 : int, double, array[]
 ポインタ型 : int*, double*, array

不完全型
 被参照型 : void
 ポインタ型 : void*

841 デフォルトの名無しさん 2017/08/08(火) 06:09:26 ID:
>>824
ははは、ほとぼりが冷めるのを待って出てきたか

 負 け 犬 め

&演算子が生じる結果は左辺値なのかよ?
6.5.3.2 にはそんなこと書いてねえぞボケこら

そのまま引っ込んでれば逃げられるのに
バカなやつw

842 デフォルトの名無しさん 2017/08/08(火) 06:57:04 ID:
>>839
お前はC言語の前に日本語勉強しろよ

843 デフォルトの名無しさん 2017/08/08(火) 07:36:06 ID:
こんなんじゃラチがあかんやろ
厳密な言語仕様規定用のメタランゲージで
Cのポインタ概念説明したれ

そんなん難しすぎて多分読めんけどな…わははは

844 デフォルトの名無しさん 2017/08/08(火) 07:59:01 ID:
ptr+1 は何だ?

845 デフォルトの名無しさん 2017/08/08(火) 08:06:53 ID:
そもそもその ptr は何だ?

846 デフォルトの名無しさん 2017/08/08(火) 08:14:46 ID:
pgr

847 デフォルトの名無しさん 2017/08/08(火) 08:17:18 ID:
関数ポインタ以外のポインタ型の変数ならなんでもいいよ

848 デフォルトの名無しさん 2017/08/08(火) 08:31:21 ID:
>>841
&演算子ってなんだよ
お前も見えてないものが見えてるのか
とっとと手帳申請しろ

> printf("Hello, C world!¥n"); これがポインタだっ どやっ

849 336 2017/08/08(火) 08:37:44 ID:
しつこい。次レスした方が負けね。

850 デフォルトの名無しさん 2017/08/08(火) 08:47:52 ID:
>>837
「ポインタは変数の位置を示す変数である」っていう文脈は飽きたのか?w

文脈のすり替えは辞めろガイジ

851 デフォルトの名無しさん 2017/08/08(火) 08:49:22 ID:
幼稚な勝ち負け論

852 デフォルトの名無しさん 2017/08/08(火) 09:28:08 ID:
>>850
それに文句があるなら、その先の章も読んだ上で、カーニハンとリッチーに言え
K&R 1stで学んだんだろ w ガイジ

853 デフォルトの名無しさん 2017/08/08(火) 09:30:49 ID:
ポインタが変数かどうかとか言ってるのって>>778か?
そしてそれにレスしてるID:OgCRmlagか?

それ以前は居なかったような

854 デフォルトの名無しさん 2017/08/08(火) 09:34:31 ID:
有用な情報としては>>840があって、残りのほとんどは子供の喧嘩とそれをからかっている周囲の茶々だから、スルーしとけばいいよ。

855 デフォルトの名無しさん 2017/08/08(火) 09:38:26 ID:
>>854
>>840こそポインタと配列を混同する諸悪の根源
ポインタ型をポインタと呼ぶ事で、配列とポインタの区別が出来ない、ID:OgCRmlagのようなガイジが量産される

856 IDコロコロ変わるな 2017/08/08(火) 09:39:36 ID:
>>852
「それ」って「A pointer is a variable that contains the address of another variable. 」のことか?
そこには文句ないよ。
勝手に「ポインタが変数かどうか」とかいう文脈にすり替えたことには文句があるけどな

857 デフォルトの名無しさん 2017/08/08(火) 09:55:39 ID:
>>856
ガイジID:OgCRmlagは文句があるようだぞ

858 IDコロコロ変わるな 2017/08/08(火) 10:23:08 ID:
>>857
そいつの主張は俺もガイジだと思うよ

859 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/08(火) 16:47:33 ID:
質問がある奴はVIPに来れば大体俺がいるよプゲラwww

860 デフォルトの名無しさん 2017/08/08(火) 21:02:06 ID:
>>859
そのハンドルでは誰も信用しないだろう

861 デフォルトの名無しさん 2017/08/08(火) 21:06:09 ID:
> 7 名前:C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ [sage] 投稿日:2017/08/08(火) 17:06:43.43 ID:46jc69TQ [1/3]
> アセンブラを1行ずつ実行するにはとうやってやればいいんだろう?
> エミュレータぐらいしか思いつかないわ

> 11 返信:C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ [] 投稿日:2017/08/08(火) 20:06:57.31 ID:46jc69TQ [3/3]
> windowsの場合APIが用意されてるだろ?
> あれ1行ずつの実行って出来なくね?
> CPUの方にデバッグの機能がついているのだろうか…

こいつド素人。

862 アムドクラス (4f6c-czis 110.132.254.159) 2017/08/08(火) 21:50:07 ID:
AMDの勝ち

863 デフォルトの名無しさん 2017/08/08(火) 21:58:43 ID:
> printf("Hello, C world!¥n"); これがポインタだっ どやっ
よりはまし

864 片山博文MZ ◆T6xkBnTXz7B0 2017/08/08(火) 21:59:58 ID:
>>863
いつまで言ってんだ? 引数はポインター型だって結論だっただろ。

865 デフォルトの名無しさん 2017/08/08(火) 22:18:43 ID:
この場合printf関数の引数は、被参照型 文字列リテラル オブジェクトから派生されたポインタ型のオブジェクト

866 デフォルトの名無しさん 2017/08/08(火) 22:19:57 ID:
オブジェクトなどという高尚な概念はCにありません

867 デフォルトの名無しさん 2017/08/08(火) 22:21:06 ID:

868 デフォルトの名無しさん 2017/08/08(火) 22:25:41 ID:
>>866
>>840を見直して来い
JIS X 3010で使用されている用語だ
勿論オブジェクト指向とは何の関係もない
ていうかK&Rでもオブジェクトという用語は使われていた気がする

869 デフォルトの名無しさん 2017/08/08(火) 22:35:05 ID:
しらん
まぎらわしい言い方してるから自分の頭も混乱するんだ

文字列リテラルからポインタ型が派生するのって変じゃないか
ポインタのほうが汎用的だし逆だろ

870 デフォルトの名無しさん 2017/08/08(火) 22:48:27 ID:
>>869
抽象的思考のできない奴だな
intからint*を派生するのと同じことを言ってるだけ
派生されたポインタ型を変数に代入したものがポインタ変数
お前の言うポインタとはいったい何だ?

871 デフォルトの名無しさん 2017/08/08(火) 22:54:10 ID:
い、いやー。object自体は本当にK&Rに書いてあったよ
オブジェクト志向登場以前から使われてきたんじゃないかな?

872 片山博文MZ ◆T6xkBnTXz7B0 2017/08/08(火) 22:55:26 ID:
同音異義語つーやつやな。

873 デフォルトの名無しさん 2017/08/08(火) 22:56:20 ID:
派生の意味もちがうんかい

874 デフォルトの名無しさん 2017/08/08(火) 23:06:23 ID:
曜日の頭文字

#include<stdio.h>
int main(void){
int w = 3;
printf("%c¥n", "SMTWTFS"[w]);
return 0;
}

875 デフォルトの名無しさん 2017/08/08(火) 23:15:50 ID:
C言語で派生って言ったら型の派生の事だな
少なくとも型変換の意味ではない

配列型の式(文字列リテラル)が型変換されて非左辺値なポインタ型の式になるんだろ
>>866は変換前後ともオブジェクトだって言ってるけど
アドレス付け可能な領域に保存されている保証のないものがオブジェクトなの?

876 デフォルトの名無しさん 2017/08/08(火) 23:16:38 ID:
安価ミスった>>865

877 デフォルトの名無しさん 2017/08/08(火) 23:23:10 ID:
何に盛り上がってるのかよくわからんけど
C言語だってオブジェクトはオブジェクトって呼ばれてる。
K&Rにも書かれている。
もちろん普通名詞のオブジェクトね

878 デフォルトの名無しさん 2017/08/08(火) 23:30:11 ID:
張っておくか
>>840から転載
JIS X 3010
ポインタ型(pointer type)は,被参照型(referenced type)と呼ぶ関数型,オブジェクト型又は不完全型から派生することができる。
ポインタ型は,被参照型の実体を参照するための値をもつオブジェクトを表す。被参照型Tから派生されるポインタ型は,“Tへのポインタ”と呼ぶ。
被参照型からポインタ型を構成することを“ポインタ型派生”と呼ぶ。

879 デフォルトの名無しさん 2017/08/08(火) 23:37:29 ID:
日本語的に派生って言ったら亜種ができることじゃん

double と *double って全然意味ちがうだろ
JavaとかでいったらObjectとRef<Object>ぐらいちがう
アドレスという概念をもちだして、多少関係してる違う型つくってるんじゃないか

JISがまちがってる

880 デフォルトの名無しさん 2017/08/08(火) 23:45:35 ID:
JISは間違ってない
構文上、型指定子に*は含まれない
宣言子で*を付けることで被参照型からポインタ型に派生させているのだから、型の派生で合っている

>>865は間違ってる
この場合は派生ではなく型変換

881 デフォルトの名無しさん 2017/08/08(火) 23:56:11 ID:
文字列リテラル オブジェクトはたぶん中身の文字データのことだろう
定義にしたがうと
それへのポインタは文字列リテラルから派生したポインタだからいいんじゃないの

882 デフォルトの名無しさん 2017/08/09(水) 00:05:11 ID:
普通名詞としての派生なら良いんじゃねーの

規格で定義されている派生として言ってるなら間違いってだけ
派生は型に対しての規則であって型を持つ式(オブジェクト)は派生しない、派生型に型変換されるだけ

883 デフォルトの名無しさん 2017/08/09(水) 00:14:48 ID:
型変換であろうとポインタ型派生であろうとポインタ型である結果は同じことではないの?

884 デフォルトの名無しさん 2017/08/09(水) 00:16:45 ID:
世間に通じない用語を振りかざして些末な定義や言葉尻について無益な議論をしていると
大学時代を思い出してほっこりする

885 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 00:25:37 ID:
>>861
なんで粘着されてんだよ…
あとこれの何がダメなんだ?
お前らデバッガのステップ実行に興味ないの?
ちょっと調べた所ではint 1で行けるかもぐらいか

886 片山博文MZ ◆T6xkBnTXz7B0 2017/08/09(水) 00:29:18 ID:
>>885
Visual Studio使えばデバッグ楽勝やで。

887 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 00:30:50 ID:
>>886
実行中のプロセスにアタッチして、アセンブラ見ながらステップインで解析したいんだけどVSじゃ出来なくない?

888 デフォルトの名無しさん 2017/08/09(水) 00:31:28 ID:
用語オブジェクトについての哲学的な論考や定義そのものがJISには載ってなさそうだな

深く考えずに音写しただけ
だからカタカナの用語になってる

889 デフォルトの名無しさん 2017/08/09(水) 00:34:53 ID:
>>864
それが、ポインタと配列の区別をつけられない本質だ

>>744の大ウソをゴメンなさいしてからホザけ カス

890 片山博文MZ ◆T6xkBnTXz7B0 2017/08/09(水) 00:35:31 ID:
>>887
バージョンやエディションによって使える機能が違う。気にせず使いたいなら、「買え」

891 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 00:37:19 ID:
>>890
学生だしお金ないからね
2017のcommunityじゃ無理?

892 片山博文MZ ◆T6xkBnTXz7B0 2017/08/09(水) 00:37:30 ID:
>>744
訂正。関数の型が決まってなくともコンパイルできることがある。

893 片山博文MZ ◆T6xkBnTXz7B0 2017/08/09(水) 00:40:01 ID:
>>889
お前は人間失格だ。言葉が悪すぎる。

894 デフォルトの名無しさん 2017/08/09(水) 00:46:00 ID:
>>893
あなた様も障害者手帳の申請をする事をお勧めするしだいで御座いまする。

まず、頭脳が残念過ぎまする。
そして、頭脳が残念過ぎまする。
加えて、頭脳が残念過ぎまする。
きっと、高い等級で認定されると愚考致しまする。

敬具

895 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 00:46:00 ID:
ポインタの話題ならアセンブラやった方が早いと思うんだよね
ポインタとして宣言された変数は32bit環境なら4バイト、64bitなら8バイトのメモリが確保されるだけだが、配列の場合、サイズ×添字の分メモリが確保されて、配列名がその先頭アドレスをあらわすってだけなのに

896 デフォルトの名無しさん 2017/08/09(水) 00:48:50 ID:
>>891
VS2017Enterpriseならこんな感じ
Communityはよくわからん
http://i.imgur.com/wI7bq3C.png

897 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 00:51:21 ID:
>>896
いい感じだな
でも俺がやりたいのはソース無しの実行可能ファイルを、アセンブリを表示しながらステップインだからVSじゃ出来ないのかも…
まあ言っちゃうとクラックがしたいんだけどね

898 片山博文MZ ◆T6xkBnTXz7B0 2017/08/09(水) 01:02:47 ID:
>>894
現実世界ではあのごとき言動はアウトだからな。忠告だ。

899 デフォルトの名無しさん 2017/08/09(水) 01:05:03 ID:
>>897
Windowsで?
Linux なら gdb でやれそうな感じはするが、ソースなしだとどうなんだろう?

900 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 01:06:30 ID:
>>899
一応LinuxはUbuntuならあるよ
やっぱりLinux勉強しとくべきかな?

901 片山博文MZ ◆T6xkBnTXz7B0 2017/08/09(水) 01:08:37 ID:
クラークなら、windbgとかollydbgとか使えば? 汗もでるよ。

902 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 01:14:59 ID:
どっちも持ってて試したけどイマイチ…
int 3のブレークポイントがある所でしか止まらないじゃん?
普通に最初からステップインでやれないものか…
だから>861でエミュ上での実行が良いって言ったんだよね

903 デフォルトの名無しさん 2017/08/09(水) 01:16:05 ID:
>>897
出来るよ やり方は片山KUZUが見てるから教えない

904 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 01:19:35 ID:
>>903
あっそう(^^;

905 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 01:35:22 ID:
どうもフラグレジスタのTrap Flagというのをセットすることでシングルステップ実行が出来るらしい…
とても面倒臭いけども自分でコード書いて頑張りますわ

906 デフォルトの名無しさん 2017/08/09(水) 04:26:02 ID:
何も知らないド素人同然なのになんでC言語すまたーとか名乗ってんの?

907 デフォルトの名無しさん 2017/08/09(水) 05:25:27 ID:
てす

908 デフォルトの名無しさん 2017/08/09(水) 06:39:45 ID:
巣股ー?

909 デフォルトの名無しさん 2017/08/09(水) 06:40:21 ID:
どうせなら入れたい

910 デフォルトの名無しさん 2017/08/09(水) 09:13:43 ID:
gdbでstepiってやればできんじゃねえの?ググれば1分で分かりそうだけどw

911 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 11:32:53 ID:
>>908
なんだー
>>910
だからLinuxじゃなくてwinなんだよww
Linuxは箱庭でしか動かんわ

912 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/09(水) 11:33:36 ID:
>>906
ますたーって読んでいいぞ

913 デフォルトの名無しさん 2017/08/09(水) 11:38:08 ID:
Cなのにスマタさん。特権プレイモードってのがあるんですよ。Winの起動オプションをよく見てください。

914 デフォルトの名無しさん 2017/08/09(水) 11:38:48 ID:
>>911
gccもgdbもWindowsで使える

915 C言語ますたー ◆oa6k//3vOQ 2017/08/09(水) 11:41:46 ID:
>>913
ほー有益な情報をありがとう
それだとどんなコマンドが使えるの?

916 C言語ますたー ◆oa6k//3vOQ 2017/08/09(水) 11:42:09 ID:
>>914
あ、マジで?
勉強不足だわ…

917 デフォルトの名無しさん 2017/08/09(水) 11:44:51 ID:
cp/m80で使えるgdbはどこ?

918 デフォルトの名無しさん 2017/08/09(水) 11:46:56 ID:
どうやらCなのにスマタさんは童貞です。

919 C言語ますたー ◆oa6k//3vOQ 2017/08/09(水) 11:57:25 ID:
ちょっと調べてみたんだがgdbはソースがあって、-gオプションでデバッグ情報を生成したときのみ使えるコマンドじゃん
俺がデバッグしたいのはただの実行可能ファイルなんだ…

920 デフォルトの名無しさん 2017/08/09(水) 12:02:30 ID:
>>848
案の定w
もう、とぼける位しかできねえボコボコだもんなおまえ

841に6.5.3.2と書いてあるのがどういう意味か
見当もつかない赤っ恥に気づきもしないからこそ
それでとぼけたつもりになっているんだろう

 浅 は か な や つ w

921 デフォルトの名無しさん 2017/08/09(水) 12:22:51 ID:
>>919
行番号やデバッグシンボルが見られないだけで、gdb自体は使える
ollydbgやらにしても、任意の場所で止めたければ、ブレークポイント張れば済むだろ

922 C言語ますたー ◆oa6k//3vOQ 2017/08/09(水) 12:37:30 ID:
>>921
おお使えたわw
でも実行ファイル側が入力待ち状態なんだけどデバッガ操作できない…
当たり前かここら辺はどうやって追えばいいんだろうか
手前にブレークポイント作ってステップインかな?

923 デフォルトの名無しさん 2017/08/09(水) 12:39:16 ID:
>>917
それはお前が作るんだよ

924 デフォルトの名無しさん 2017/08/09(水) 12:42:14 ID:
いるよなー
GNUはハッカーのものだってことを忘れてるやつ

925 C言語ますたー ◆oa6k//3vOQ 2017/08/09(水) 12:55:30 ID:
最初っからステップインで実行したいんだけどシンボルテーブルが無いおかげでブレークポイント作れないからアドレス0x00400AFFにCCを入れて実行開始アドレスを0x00400AFFに書き換えたんだけどローダが読んでくれないみたい…
アドバイスありませんかね

926 デフォルトの名無しさん 2017/08/09(水) 13:13:43 ID:
gdbなら「b *アドレス」でブレーク貼れるでしょ

927 C言語ますたー ◆oa6k//3vOQ 2017/08/09(水) 13:31:17 ID:
>>926
どうもデバッグ情報がないから無理っぽい…?

で、仕方なく開始アドレスにバイナリエディタでCC入れて止めてみたんだけど、デバッグ情報がないせいで’s’コマンドが実行できない
”cannot find bounds of function."って出るんだけど、ググったらデバッグ情報がないとこうなるみたい
gdbじゃexeのシングルステップ実行は無理なんじゃ…

とりあえずネットで調べながら自分でシングルステップ実行するプログラム作ったんだけど、デバッグイベント起こらなくてWaitForDebugEvent関数で止まるwww
どうすりゃデバッグイベント起こせるんだよ

928 C言語ますたー ◆oa6k//3vOQ 2017/08/09(水) 14:44:13 ID:
しょぼいデバッガみたいのは動いたけどシングルステップ実行にならん…
なぜだ

929 デフォルトの名無しさん 2017/08/09(水) 15:31:30 ID:
なんで実行する必要があるんだ? 逆アセンブルしてソースコードを起こせばいいでしょ。

930 C言語ますたー ◆oa6k//3vOQ 2017/08/09(水) 15:43:21 ID:
>>929
そんな膨大なコードから目的の部分が見つかるわけないでしょ

931 デフォルトの名無しさん 2017/08/09(水) 16:28:28 ID:
>>920
で、それがどうしたんだ?

> printf("Hello, C world!¥n"); これがポインタだっ どやっ
手帳申請しろよ w

932 デフォルトの名無しさん 2017/08/09(水) 16:37:22 ID:
>>920
この、ガイジは全然理解してない事を理解できずにガイジを再生産しようとしたやがる

> printf("Hello, C world!¥n"); これがポインタだっ どやっ
これは、ポインタじゃなくてポインタ型
そしてそれは、ポインタと配列を区別出来ないガイジの本質

役所には盆休みはないから、休みのうちに手帳申請しとけよ

933 デフォルトの名無しさん 2017/08/09(水) 16:46:18 ID:
> これは、ポインタじゃなくてポインタ型

失笑
「ポインタと配列を区別出来ないガイジの本質」を
そのままお返しだ、さあ受け取れアフォ

934 デフォルトの名無しさん 2017/08/09(水) 16:49:08 ID:
こーゆー手合いは、こっちから攻め込まなくても
時間稼ぎしてれば勝手に自爆してくれるから楽だ

935 C言語ますたー ◆oa6k//3vOQ 2017/08/09(水) 16:49:25 ID:
機械語のシングルステップ実行に成功した
けどレジスタとか表示させるのにまたプログラム改変しなきゃなんない
面倒臭すぎる

936 デフォルトの名無しさん 2017/08/09(水) 16:51:48 ID:
配列も文字列リテラルも式の中の評価はポインタ型だからな
引数として評価されると本質は同じことになる

937 デフォルトの名無しさん 2017/08/09(水) 17:00:02 ID:
>>936
ちげーよ
assert(sizeof(const char *) == sizeof "string literal"); //abend

938 デフォルトの名無しさん 2017/08/09(水) 17:09:17 ID:
>>937
それは sizeof 演算子を適用したときの評価結果が異なっているだけだろ
型は同じでもオブジェクトそのものは別なのだから当たり前

939 デフォルトの名無しさん 2017/08/09(水) 17:11:40 ID:
関数の引数として、配列をまるまるスタックにつむには
struct で包むぐらい? typedef はポインタのままよね?
https://ideone.com/3MYBoM

940 デフォルトの名無しさん 2017/08/09(水) 17:17:25 ID:
>>938
おまえさんはこう言ったんだぜ
> 配列も文字列リテラルも式の中の評価はポインタ型だからな

sizeofつまりunary-expressionは紛れもなく式の1つだ
よって式の中で文字列リテラルがポインタ型というのは正しくない

941 デフォルトの名無しさん 2017/08/09(水) 17:25:24 ID:
>>940
面倒くさい奴だな
正確には>>937の前者は型の評価結果、後者は式の評価結果だ
sizeof演算子は型名に適用する場合と式に適用する場合の二通りの使い方がある
演算子の動作も評価も異なる

942 デフォルトの名無しさん 2017/08/09(水) 17:28:25 ID:
前置,後置の ++ や -- は式じゃない ってことないし
>>936 は見てる状況を限定しすぎてないかな?

943 デフォルトの名無しさん 2017/08/09(水) 17:28:34 ID:
>>941
ほほー型の評価結果と式の評価結果とな
じゃあこれはどう説明する?
const char* ptr
assert(sizeof ptr == sizeof "string literal"); //abend

944 デフォルトの名無しさん 2017/08/09(水) 17:45:41 ID:
>>943
それは式同士の評価結果の比較
ポインタ型のオブジェクト同士を比較してる
int型変数の場合、iと(i+1)のとき評価結果は異なるが、型は同じというのと同じ

945 デフォルトの名無しさん 2017/08/09(水) 17:49:19 ID:
>>944
えっ!?
assert(sizeof ptr == sizeof("string literal" + 1)); //pass
おまえさん、これが通るのは何が変わったというんだ?

946 デフォルトの名無しさん 2017/08/09(水) 19:31:37 ID:
今日もガイジID:J9yCSat5は元気だな

947 デフォルトの名無しさん 2017/08/09(水) 19:46:02 ID:
ん? ガイジの称号はお返ししただろ、ガイジ君

948 デフォルトの名無しさん 2017/08/09(水) 20:48:57 ID:
個人攻撃抜きでやれば、面白い事言っているんだけどなぁ:-P

949 デフォルトの名無しさん 2017/08/09(水) 20:58:23 ID:
糞下らん議論でスレを汚すな

950 デフォルトの名無しさん 2017/08/09(水) 21:07:56 ID:
クソ下らんことが141000レスも続いてんだぞ
14万だ
過去スレなんて見た日にゃ目がつぶれてそのまま気絶だ

951 デフォルトの名無しさん 2017/08/09(水) 21:09:32 ID:
ガイジID:7zaXDMDrは必死になって、
> printf("Hello, C world!¥n"); これがポインタだっ どやっ
これを否定するネタを探してきたらしいが
あてにならない(どうとでも取れる)JIS規格票は根拠にならんぞ

> A pointer is a variable that contains the address of another variable.
文字列は変数じゃない
従ってポインタじゃない これは神が決めた事

952 おもろいやんけ! 2017/08/09(水) 21:23:05 ID:
綺麗な自己紹介

953 デフォルトの名無しさん 2017/08/09(水) 21:52:53 ID:
>>939
配列の時点でスタックに確保されてるけど
それとは別のスタック領域にコピーとして渡したいってことなら構造体かな

954 デフォルトの名無しさん 2017/08/09(水) 22:15:20 ID:
このスレは必ず絡んでくるやつが居るな
しかも延々とな

レスされて「この野郎!」と思った時には、深呼吸して落ち着こう。
そしてこうつぶやくのだ「相手にするなヨシオ」とな

955 デフォルトの名無しさん 2017/08/09(水) 22:24:18 ID:
>>951
ははは、JISつまりISO/IECの和訳はおまえの敵か
自らの死刑宣告を読み上げていることに気付いているのか

956 デフォルトの名無しさん 2017/08/09(水) 22:26:15 ID:
ワザとやっているんだろう、たぶん

957 デフォルトの名無しさん 2017/08/09(水) 22:28:54 ID:
個人攻撃は、俺もそんなことしにきているわけじゃないんだが
喧嘩売ってくる馬鹿がいるとき、場合によるが応戦することもある
俺には9条みたいなふざけた縛りはない、それだけのことだ

技術的なことを言うたびにもれなく失笑させてくれる
民進党のブーメラン屋みたいなマゾ野郎がいるから、
ちょっとSっ気出ちまってるんだよ

958 デフォルトの名無しさん 2017/08/09(水) 22:35:40 ID:
2chで正論言っても仕方がないよ

959 デフォルトの名無しさん 2017/08/10(木) 00:08:19 ID:
>>955
ガイジだからわからないんだろうけど、JISもISO/IECも「ポインタ」をいろいろな意味で使っている
ガイジ君はその中の都合の良いところだけ読んだだけ

神の定義と違って「ポインタとは~~」というのが無いって気付いて無いんだろうな ガイジだから

実は曖昧さを排除した定義があるがそれは、これだ
6.7.6 Declarators
Syntax
pointer:
* type-qualifier-list opt
* type-qualifier-list opt pointer

つまり規格票でいうポインタとは宣言の中にあらわれる「* [const]」の繰り返しだ w

ガイジ君が規格票を拠り所にした瞬間に
> printf("Hello, C world!¥n"); これがポインタだっ どやっ
は、やっぱりお笑いだ わかったら明日手帳申請にいくんだぞ ガイジ

960 C言語ますたー ◆oa6k//3vOQ 2017/08/10(木) 00:15:28 ID:
これただのBNFですやん
定義じゃなくて文法

961 C言語ますたー ◆oa6k//3vOQ 2017/08/10(木) 00:16:03 ID:
あ、ごめんなんでもない
アスペかました

962 デフォルトの名無しさん 2017/08/10(木) 00:23:27 ID:
うんざりしている人は、ガイジをNGにしよう

963 C言語ますたー ◆oa6k//3vOQ 2017/08/10(木) 00:27:01 ID:
(俺のことじゃないよな…)(´・ω・`)

964 デフォルトの名無しさん 2017/08/10(木) 01:00:58 ID:
まだやってんのかよ

965 デフォルトの名無しさん 2017/08/10(木) 01:23:36 ID:
あガガイのガイ

966 デフォルトの名無しさん 2017/08/10(木) 01:49:11 ID:
fflush(mevius.2ch.net/test/read.cgi/tech/1500293207/);

967 デフォルトの名無しさん 2017/08/10(木) 08:25:53 ID:
>>959
英語でDeclaratorsって書いてあるの意味わかってる?
リテラルは宣言して使うものじゃないんで、
そこは全然関係ない

 ア フ ォ w w w

968 デフォルトの名無しさん 2017/08/10(木) 08:29:30 ID:
>>953
そそ
複製を渡して
よばれた関数内での値の書き換えが呼び出し元に伝わらない形が気になってた

969 デフォルトの名無しさん 2017/08/10(木) 10:25:39 ID:
>>967
pointerの定義は規格票の中でこれしか無いって言ってるんだよ 他は定義せずに使っている

ガイジはどこまで言ってもガイジだな

970 デフォルトの名無しさん 2017/08/10(木) 10:35:59 ID:
【問題】
ポインタとは何か
日本語で二行以内で書きなさい

971 デフォルトの名無しさん 2017/08/10(木) 11:16:07 ID:


972 デフォルトの名無しさん 2017/08/10(木) 11:43:42 ID:
外人がまっさきに思い浮かべるポインタといえばコレ
http://i.imgur.com/nzuyDvh.jpg

973 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/10(木) 11:44:33 ID:
メモリ上のアドレスを格納する変数

974 デフォルトの名無しさん 2017/08/10(木) 11:48:40 ID:
> メモリ上のアドレス

低学歴にもほとがあるな。

975 デフォルトの名無しさん 2017/08/10(木) 11:49:15 ID:
具体的に説明せずに煽るから荒れる

976 デフォルトの名無しさん 2017/08/10(木) 11:57:50 ID:
>>973
よくある実装ではそうだろうけど必ずしもメモリ上のアドレスでなくてもよかったような?
例えば(何か特殊な事情がないとこんな実装はしないだろうけど)ファイルでもいいんだよね。
*p ってやった時にアクセスできればいいだけだから。そういうアクセスになるようにコンパイルされればそう動く。

977 デフォルトの名無しさん 2017/08/10(木) 12:23:05 ID:
【問題】
自己顕示とは何か
日本語で二行以内で書きなさい

978 デフォルトの名無しさん 2017/08/10(木) 12:26:02 ID:

979 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/10(木) 12:45:43 ID:
>>974
学歴?
>>975
いや、ポインタ自体はただのアドレスだよ
厳密に言えば論理アドレス(物理アドレスでは無い)
ファイルってのは構造体に過ぎないわけで、windowsならFILE構造体ってのが用意されてる
だから、FILE *fp;と書けば、fpはただのアドレスだけど、その指す先はFILE構造体のサイズ分のメモリ領域となる

980 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/10(木) 12:46:01 ID:
ミスった>>976だった

981 デフォルトの名無しさん 2017/08/10(木) 12:59:59 ID:
>>972
これでしょ
http://www.koinuno-heya.com/syurui/hagyou/images/pointer1.jpg
そっちのポインターは使わない人も多いし

982 デフォルトの名無しさん 2017/08/10(木) 14:11:24 ID:
>>969
ポインタとは何かという「定義」と、
宣言のうち実体を作る「定義」を混同しているわけね

 ア フ ォ w w w

983 デフォルトの名無しさん 2017/08/10(木) 15:54:14 ID:
ahoとは何かと言う定義と実装された目前のahoの違い
&でアドレス取ろうとしたら住所不定であったでござるw

984 デフォルトの名無しさん 2017/08/10(木) 16:21:59 ID:
それはlvalueを除くvalue of an expressionだね
&969; //erroneous

985 デフォルトの名無しさん 2017/08/10(木) 16:51:40 ID:
長いバトルだのう

>>629
サラっと嘘吐いてないかい?

986 デフォルトの名無しさん 2017/08/10(木) 16:53:00 ID:
失礼した
茶碗持つね

987 デフォルトの名無しさん 2017/08/10(木) 18:00:55 ID:
char const **s; // **s を修飾
char * const *s; // *s を修飾
char ** const s; // s を修飾

これなら左と右を間違えたで済むが
あの文面はそうじゃない

988 デフォルトの名無しさん 2017/08/10(木) 20:22:14 ID:


C言語なら俺に聞け 142
https://2ch.live/cache/view/tech/1502364083

989 デフォルトの名無しさん 2017/08/10(木) 20:24:22 ID:
char const * array = xxx
って初期化したあとで
配列とポインタの区別ってつく?

990 デフォルトの名無しさん 2017/08/10(木) 20:28:53 ID:
>>982
「ポインタ」はただの単語だ
それに意味を与えることが「定義」

> ポインタとは何かという「定義」と、
> 宣言のうち実体を作る「定義」を混同しているわけね
前者後者で意味を分けるって事はお前が「定義」したって事だ

ガイジのお前がな w

991 デフォルトの名無しさん 2017/08/10(木) 20:29:20 ID:
>>988

992 デフォルトの名無しさん 2017/08/10(木) 20:41:57 ID:
>>987
ポインタの型修飾子は左側の*(ポインタ型)への修飾であってるだろ
右側のsを修飾したら識別子への修飾になってしまう

型指定の方のconstは構文規則が違うから、一緒に語ること自体がアレだけど

993 デフォルトの名無しさん 2017/08/10(木) 20:53:06 ID:
なんで次スレ勝手にワッチョイなってんの?

994 デフォルトの名無しさん 2017/08/10(木) 21:01:59 ID:
勝手にガイジ対策草ア!!

995 デフォルトの名無しさん 2017/08/10(木) 21:07:33 ID:
恣意的な煽りしている奴がいるからだろう

996 デフォルトの名無しさん 2017/08/10(木) 21:10:04 ID:
> printf("Hello, C world!¥n"); これがポインタだっ どやっ
やはり、これはガイジが自分で定義した「ポインタ」の説明だったな

997 デフォルトの名無しさん 2017/08/10(木) 21:25:49 ID:
ワッチョイ無しでスレ立て直せ

998 デフォルトの名無しさん 2017/08/10(木) 21:26:48 ID:
ガイジ連呼厨対策になるしいいんじゃね?

999 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/10(木) 21:37:35 ID:
1000欲しいな

1000 C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ 2017/08/10(木) 21:38:17 ID:
俺のものっ

新着レスの表示
レス数が1000を超えています。これ以上書き込みはできません。
■トップページに戻る■ お問い合わせ/削除依頼