C言語なら俺に聞け 140 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8c-8ulf)
垢版 |
2017/05/11(木) 22:20:03.99ID:cn414UR90
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


http://echo.2ch.net/test/read.cgi/tech/1487757355/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
527デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 16:40:28.01ID:6ZKlzltP0
もうちょっと言うと8行目の*がポインタ宣言として何でfuncにaddとかmulとか代入すると関数を参照できるのかよく解りません
*が無いとコンパイラからエラーを指摘されるんですが*がなくても関数のプロトタイプ宣言と同じ形になるのに関数が呼び出されないのが納得いきません
528デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 16:42:15.27ID:6ZKlzltP0
>>526
うーん、なんていうか普通だとしてもなんか納得できないって言うか理屈の順序がわからないというか
2017/06/22(木) 16:45:03.29ID:LDtj9GzU0
double (*func)(double,doube);
[double を 2つ受けて double を返す関数] の場所を覚えるための変数 が func
プロトタイプ宣言ではなく 長ったらしいけど変数宣言 int *func; と本質的に同じ
530デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 17:05:19.55ID:6ZKlzltP0
>>529
でもint *fancの場合だとfanc=&a見たいに&をつけてアドレスを入れるんじゃないですか?
この場合&が省略されてもいいのは何でですか?
代入もaddとかsubと短くなってますけど
いつadd=double add(double i,double j){return i+j;}になったんでしょうか?
理解力や理解度が低いのもあると思いますがいまいちよく解りません・・・
2017/06/22(木) 17:19:00.14ID:LDtj9GzU0
>>530
前半の疑問
関数へのポインタ変数 func に 関数を代入する際の記述に限り & を省略できる
という文法にしちゃった そしてそう記述するのが古くからの慣わし

関数宣言 double add(double i, double j);
関数の実装 double add(double i, double j) { return i+j; }
宣言した関数の呼び出し add(i,j);
宣言した関数のポインタを得る add (もしくは &add でも同じ)
532デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 17:46:27.25ID:6ZKlzltP0
>>531
> 関数へのポインタ変数 func に 関数を代入する際の記述に限り & を省略できる
> 宣言した関数のポインタを得る add (もしくは &add でも同じ)
凄く頭がすっきりしました。コンパイルで実行してみてもaddと%addどちらでも通りました。
printfの(*fanc)も&addの実態を参照してるわけですね。
ありがとうございました
2017/06/22(木) 17:46:30.59ID:dMWz8j2D0
>>530
8行目 double (*func)(double x,double y); は変数funcの宣言
型は double(*)(double,double) の関数ポインタ
変数funcに各関数のアドレスを代入して呼び出してる
代入される関数には&を付けても付けなくても動作は同じ
534デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 17:47:38.20ID:6ZKlzltP0
>>533
ありがとうございます!ここ数日悩んでたんですがすっきりしました。
2017/06/22(木) 18:07:18.42ID:dMWz8j2D0
>>534
呼び出すときのデリファレンスはいらないよ
これでいい
printf("add:%f¥n", func(a,b));
536デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 18:33:38.45ID:6ZKlzltP0
>>535
それは
1。ポインタ側から見たら*fancになってfancの実体をみている
2.fanc=addと代入されているんだからfancと書かれていてもaddという変数(代入済み)に読み替えて実体を見ている
という意味で同じだという捉え方で大丈夫でしょうか?
2017/06/22(木) 18:39:12.10ID:9RPI8PPS0
関数へのポインタを得るのに & を省略できるのと同じように

ポインタの指し先の関数を呼び出すのに
(*func)(引数) と書いても func(引数) と書いても同じ という文法にしちゃった


Cは短く書けるならそっちを使う って歴史なので func(引数) って書くことが多い
538デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 18:42:56.92ID:6ZKlzltP0
>>537
ほへー
勉強になります
ありがとうございます
そういうところがみんながポインタが難しいというゆえんなのかもですね
2017/06/22(木) 18:43:53.42ID:Ep4mqRnU0
>>525
divの中身が気にくわない
2017/06/22(木) 19:20:58.14ID:n4zvfmL3M
>>531
> 関数へのポインタ変数 func に 関数を代入する際の記述に限り & を省略できる
しれっと嘘書くなよ
代入関係なく関数名だけ(後ろにカッコをつけない)なら関数へのポインタとして扱う
比較とかでも使える
2017/06/22(木) 19:44:37.36ID:9RPI8PPS0
あ ごめんなさい ごめんなさい ごめんなさい
2017/06/22(木) 20:51:10.41ID:vBYXjCtX0
Hi !
2017/06/22(木) 20:53:54.63ID:9RPI8PPS0
bye
2017/06/22(木) 21:42:29.54ID:xapmI+EN0
exit(1)
2017/06/23(金) 00:26:19.17ID:Txr7HE8G0
>>539
俺も最初にそう思った。j != 0.0 て
2017/06/23(金) 09:04:15.74ID:pzaENb+m0
浮動小数点の四則演算で例外が起きないようにするには、どこを注意したらいいんだろう
2017/06/23(金) 09:13:50.88ID:OUZ9ZG4GM
普通の設定なら0で割っても例外は起きないよ。Infになるだけ。
Infも計算できる。Inf/InfとかはNaNになったりするけど。
2017/06/23(金) 09:28:01.22ID:7CKItQkCM
柴田さんの本でアルゴリズム勉強したいんだけど、c言語とjavaどっちがいいんですか?
目的は基本情報技術者試験午後対策と競技プログラミング用です
どっちも読むのがいいのでしょうか?
2017/06/23(金) 10:45:37.79ID:HJ43MjWq0
ここか ここの1に書いてあるスレで
http://mevius.2ch.net/test/read.cgi/tech/1194614600/
2017/06/23(金) 12:39:03.49ID:7CKItQkCM
プログラマー板で聞いてみます!
2017/06/23(金) 12:40:24.54ID:bga0zZR5H
アルゴリズムならC言語かなぁ
理由は、再帰があるから
2017/06/23(金) 12:51:15.76ID:7CKItQkCM
>>551
ありがとうございます
2017/06/23(金) 13:09:18.89ID:s9DU3vr6a

再帰なんてほとんどの言語でできるだろ
できない言語探すほうが難しいのでは
2017/06/23(金) 13:17:04.39ID:jGFBZEPId
>>547
例外が発生するかどうかは環境依存
555デフォルトの名無しさん (アウーイモ MM9b-+bbG)
垢版 |
2017/06/23(金) 17:25:39.99ID:zs9t5gljM
>>552
Javaは難しいものを作り込む言語ではないからね。
2017/06/23(金) 18:36:24.35ID:9AlljSA6M
>>554
もちろん。
だから、普通ってかいた。
ところでデフォルトで例外になる環境教えて。
2017/06/23(金) 18:43:11.28ID:cLuj8vNR0
Infの演算決めたヤツアホだよな
せっかくの異常値検出が糞仕様のせいで出来ない

InfなんてほとんどNaN扱いでいいんだよ
1/(1-1) > 0 > 1/-(1-1)
とか決めたヤツ、頭おかしい
2017/06/23(金) 18:45:50.11ID:KSkSHD0C0
0 > -1/(1-1) ではなく 0 > 1/-(1-1) で?
2017/06/23(金) 19:12:15.59ID:cLuj8vNR0
そう
頭おかしいでしょ?
560デフォルトの名無しさん (ワッチョイ 9711-LvKX)
垢版 |
2017/06/23(金) 19:27:42.95ID:vbPiU/7d0
%%%5,7$$$
}
000-[[[%ER,D,A%%~
2017/06/23(金) 19:34:32.39ID:9AlljSA6M
ん?整数?じゃないよね。
そりゃ、ieee754には正のゼロと負のゼロがあるからな。
2017/06/23(金) 19:44:07.40ID:KSkSHD0C0
ああ 負のゼロの意図で -(1-1) か
563デフォルトの名無しさん (アウアウウー Sa9b-h10b)
垢版 |
2017/06/23(金) 21:30:08.71ID:DRFAk1dca
>>548
十数年挫折してやっと分かってきたおいらに言わせれば、アルゴリズムは何でも良いから関数型言語で勉強した方がいい。
アルゴリズムの殆どがリストを基本にしてるけど、CもJavaも配列が基本だから挫折しやすい。
一旦リストが基本の言語でアルゴリズム勉強して、それを配列で実現するには?って考えた方がいい。
2017/06/23(金) 22:03:37.03ID:gW02JZGeM
>>563
基本情報技術者試験を受かりたいので、関数型言語では無くcかJavaで覚えたいんです
仕事で他の言語覚えなきゃいけないので、関数型言語を覚える時間が無いです
すみません
565デフォルトの名無しさん (アウアウウー Sa9b-h10b)
垢版 |
2017/06/23(金) 22:57:40.45ID:DRFAk1dca
>>7
エクセルのだとエクセル立ち上げないとだからな。。。
WSHのVBSでエクセル操作するのを呼び出すとかならSystem関数で一発だろ。
566デフォルトの名無しさん (アウアウウー Sa9b-h10b)
垢版 |
2017/06/23(金) 22:59:45.35ID:DRFAk1dca
>>18
改行するならputsだが、改行したくないならprintfしかあるまい。
ある意味立派なフォーマットだ。
567デフォルトの名無しさん (アウアウウー Sa9b-h10b)
垢版 |
2017/06/23(金) 23:04:15.20ID:DRFAk1dca
>>564
うん。
文法は覚えられるけど、コードがどう言うことしてるのか理解出来ないと思うんだよね。。。
その為の関数型言語なんだが。。。

まあ、CやJavaでコード読めないってなったら関数型言語においで。
そしたら読めるようになるから。
2017/06/23(金) 23:16:54.40ID:tdHTYauf0
スッキリわかる Java入門 第2版、2014

Cは、ポインタがあるので、ややこしい。
この本を3回読んで、オブジェクト指向をみっちりと学ぶ
2017/06/23(金) 23:53:50.89ID:afzAOFtI0
>>566
fputs("hoge",stdout)
2017/06/24(土) 02:23:58.77ID:sW+IRv2v0
>>564
システム深く入り込んで、いろいろ弄りたいならC言語の方がいいと思うが
アルゴリズムを学ぶことが主要な目的なら、Javaの方がいいように思う
571デフォルトの名無しさん (ワッチョイ b797-+bbG)
垢版 |
2017/06/24(土) 05:52:05.44ID:AiSsJYjg0
>>570
そのアルゴリズムがどんな高度なものかによるから答えにくいんだろうが。

基本情報技術者試験用の言語というあたりでたいしたことをしないのはわかるが。

まだどの言語もまともに使えないレベルなんだろう。CとJavaならCをやってからJavaをやった方がコンピュータの理解にはいいけど。
2017/06/24(土) 07:48:16.71ID:SFTuX/e+0
>>570
今はC言語にしようかなって思ってます
>>571

C言語とJavaなら基本的なものは使えます
レベルとしては蟻本くらいです
573デフォルトの名無しさん (アウアウエー Sadf-h10b)
垢版 |
2017/06/24(土) 07:50:04.53ID:TrIYg7wba
Cだとリスト必要な時リストそのものを作らないといけないけど、Javaだとリストクラスのインスタンス作ればいいだけだしね。
574デフォルトの名無しさん (ワッチョイ b797-+bbG)
垢版 |
2017/06/24(土) 07:54:12.89ID:AiSsJYjg0
>>572
アルゴリズムというのがどこまで高度なものを言ってるのかわからないが、Cは適度なところで抑えないと時間切れで他のことができなくなるぞ。
2017/06/24(土) 08:02:26.86ID:i0vCbpkL0
ソートとか検索とか簡単な計算とか
超基本的なやつでしょ?
言語なんて何でもいいよ
2017/06/24(土) 09:05:31.01ID:SFTuX/e+0
>>574
蟻本レベルを目指してます
>>575
一つの目標としては、そうです
あともう一つは、競技プログラミングにも参加したいです
2017/06/24(土) 09:10:20.82ID:SFTuX/e+0
基本情報技術者はC出行こうと思うんですけど、競技プログラミングもC言語でいいのでしょうか?
2017/06/24(土) 14:53:17.50ID:Px3P/nJx0
>>570
ZDDとか展開出来る?
クヌース本とかJAVAで実装し直すの?
579デフォルトの名無しさん (ワッチョイ 178e-Lvcy)
垢版 |
2017/06/24(土) 17:35:51.09ID:GiFMFqzr0
アルゴリズムを勉強することが目的なら、言語は何でもいいに一票。
使い慣れたやつじゃないと、言語自体の使い方とかに気を取られて、アルゴリズムの勉強がはかどらない。

ただ、C言語はいろいろと手順が多い傾向があるので、「言語初心者」には適さないと思う。
2017/06/24(土) 19:57:34.57ID:7Dka8Eta0
昔はpascalだったが
oberonとかどうなってるんだろ
2017/06/24(土) 23:21:27.81ID:BBTzLwWV0
アルゴリズムは、Ruby で説明する。
型の記述が無いから、Rubyが圧倒的に楽

競技プログラミングでは、Java, C++

基本情報技術者は、Java でいい。
C にはポインタがある分、時間を食うから損
582デフォルトの名無しさん (ワッチョイ b797-+bbG)
垢版 |
2017/06/24(土) 23:33:11.12ID:AiSsJYjg0
>>581
競技プログラミングは仕様をみたすプログラム作りだから言語は関係ない。

Cについてはキミがポインタを理解してないだけじゃないか。

基本情報技術者試験ではなぜかC言語が一番難しい問題になっているのは謎だが。
2017/06/25(日) 09:19:10.07ID:PrMsbOwj0
>>582
C言語が一番難しいってどういう基準なのでしょうか
584デフォルトの名無しさん (ワッチョイ b797-+bbG)
垢版 |
2017/06/25(日) 09:33:58.41ID:wnVI7vr50
>>583
問題をみればわかるでしょ?
585デフォルトの名無しさん (スププ Sdbf-VLv6)
垢版 |
2017/06/25(日) 09:53:15.23ID:LyAyGbQ7d
Cは一番単純明快でわかりやすいでしょ
2017/06/25(日) 10:05:18.30ID:PrMsbOwj0
問題見てもどれも一緒に見えるけど…
2017/06/25(日) 10:43:25.62ID:OKoNwt4v0
>>579
CASL II でもいいでつか?><
588デフォルトの名無しさん (ワッチョイ b797-+bbG)
垢版 |
2017/06/25(日) 11:14:35.21ID:wnVI7vr50
>>586
そうかCもまだよくわからないレベルだったな。
2017/06/25(日) 11:20:49.47ID:PrMsbOwj0
>>588
Cは分かるんですけど、CとJavaの難しさの比較が出来ません
2017/06/25(日) 12:44:21.11ID:OKoNwt4v0
基本情報技術者試験の過去問見たけど、
COBOL でもいいんじゃね?
2017/06/25(日) 13:04:19.37ID:PrMsbOwj0
>>590
基本情報技術者試験はCで受けます
592デフォルトの名無しさん (ワッチョイ b797-+bbG)
垢版 |
2017/06/25(日) 15:21:31.61ID:wnVI7vr50
一番簡単なのは昔からアセンブラなんだよな。
2017/06/25(日) 17:09:12.90ID:+wWOGC6CM
何故アセンブラ…
2017/06/25(日) 17:18:27.51ID:crK74dJZ0
問題文に仕様書が付いてくるから暗記がいらない。あまり重箱の隅をつつくような問題が出ない。
595デフォルトの名無しさん (アウアウエー Sadf-h10b)
垢版 |
2017/06/25(日) 18:04:37.90ID:pYBZiqDJa
>>593
言語の難易度と問題の難しさでバランス取ってたりして。。。
2017/06/26(月) 05:39:11.26ID:nrkIqgVb0
単純な仮想CPUのアセンブリ言語だから割と簡単
2017/06/26(月) 06:34:56.32ID:XtO3Dk5zd
受験生に愛されるコメットさん
2017/06/26(月) 14:59:45.01ID:nH0wW7kQM
カシオのポケコン
2017/06/26(月) 19:43:30.58ID:TF0F3xMAr
アセンブラが簡単というのは同意。アーキテクチャにもよるけど単純で罠も少ない
2017/06/26(月) 20:41:11.90ID:GM19K0OY0
ふーん
じゃあアセンブラでテトリス作ってみて
601デフォルトの名無しさん (ワッチョイ b797-+bbG)
垢版 |
2017/06/26(月) 20:58:03.95ID:Ntea+VQr0
>>600
なんの話かまったく読まずにレスw
2017/06/26(月) 21:13:56.64ID:DVB4gtQza
基本情報技術者試験のことだとすると「アーキテクスチャにもよるけど」っておかしくね?
>>599は一般にアセンブラが他の言語より簡単だと言ってるようにみえるんだが
603デフォルトの名無しさん (ワッチョイ b797-+bbG)
垢版 |
2017/06/26(月) 21:47:17.10ID:Ntea+VQr0
>>602
CASLUではないとしてもあの程度のコンピュータのアセンブラなら言語としては単純。
2017/06/26(月) 23:17:34.88ID:PKYMbkgl0
並列動作とか遅延ジャンプとか出てこないし
レジスタの塊みたいな奴に比べりゃ可愛いよな
605デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/26(月) 23:19:06.55ID:31mN8SV/0
Visual Studio community 2017をC言語のコンパイラとして使えないんでしょうか?
2017/06/26(月) 23:21:42.03ID:Th5Kxani0
>>602
当然、COMP-XかCOMETかという話だろう。
2017/06/26(月) 23:27:10.92ID:go0auT85d
>>605
C言語にしたいなら、拡張子を.cにしろよ。
608デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/26(月) 23:47:45.66ID:31mN8SV/0
>>607
コンパイラとしてどうやって使っていいのかわかりません。
コードを書いてもどうやって実行すればいいのか解りません・・・
今は勉強用にEasyIDECって言うのを使ってますがこれはプログラムの実行はできるんですが
ファイルを読み込むタイプのプログラムを実行できないしexeファイルも作れません。
勉強しながら早いうちからexeファイルとか作れる環境で慣れたいんですがやりかたがわからなくて・・・
よければ教えてください
2017/06/27(火) 00:20:49.40ID:aHvsmlwPd
>>608
IDE使う前にMSYS2+MinGWのコマンドラインでhello would書いて特訓しろ。
2017/06/27(火) 00:37:59.30ID:1mHdD+S50
またQZが自演してるな
たのむからゴミコードは出すなよ
611デフォルトの名無しさん (ワッチョイ 376c-dFnT)
垢版 |
2017/06/27(火) 08:53:16.46ID:ucAV+SpP0
>>564
試験対策ならJavaだろうなぁ
俺はJavaで合格した。

派遣のプログラマーで仕事もらうには、合格必要だぜ。
今は、派遣はヤメたけど、派遣の経験は良い勉強になったわぁ。
2017/06/27(火) 09:31:49.14ID:jtm5ziJ2M
>>609
MSX2+ とか笑かすわ。
613デフォルトの名無しさん (ワッチョイ 376c-dFnT)
垢版 |
2017/06/27(火) 10:00:06.40ID:ucAV+SpP0
>>609
トグル・スイッチをパチパチやってプログラミングするところからやる?
パチパチやってBoot Loaderを打ち込むのからやると、全てが判るよ。
614デフォルトの名無しさん (ワッチョイ 376c-dFnT)
垢版 |
2017/06/27(火) 10:03:11.75ID:ucAV+SpP0
十進カウンタや、JKフリップ・フロップをNANDを組み合わせて作る事は今でもやるんだろ?大学で。

学生実験とか?最近の大学では無いの?
2017/06/27(火) 10:47:01.95ID:ZcFCap/E0
加算器とか情報算数かな
616デフォルトの名無しさん (ワッチョイ 376c-dFnT)
垢版 |
2017/06/27(火) 10:57:18.19ID:ucAV+SpP0
>>615
それ、なんちゅう授業?授業のタイトルは?
2017/06/27(火) 12:53:23.72ID:GRUOkSLcd
>>612
ジジイ乙
2017/06/27(火) 12:54:46.79ID:/HeVfsPd0
ハーフアダー フルアダー を論理回路で
2017/06/27(火) 13:05:58.64ID:IF4g2E0D0
演算器の設計 - 加算器(Adder)
http://news.mynavi.jp/column/architecture/070/
演算器の設計 - キャリールックアヘッドアダー
http://news.mynavi.jp/column/architecture/071/
演算器の設計 - キャリールックアヘッドアダー(2)
http://news.mynavi.jp/column/architecture/072/
パラレルプリフィックスアダー
http://news.mynavi.jp/column/architecture/073/
パラレルプリフィックスアダー(2)
http://news.mynavi.jp/column/architecture/074/
パラレルプリフィックスアダー(3)
http://news.mynavi.jp/column/architecture/075/
Lingアダー
http://news.mynavi.jp/column/architecture/076/
アダーの実装に関して
http://news.mynavi.jp/column/architecture/077/
620デフォルトの名無しさん (ワッチョイ 9fc1-NIhq)
垢版 |
2017/06/27(火) 17:08:46.44ID:HjxjU0LK0
exeの作り方は結局わかりませんでしたが
textファイルを読み込んで結果を吐き出すプログラムはvisual stadioで何とか実行できました
スレ汚しすみませんでした
2017/06/27(火) 17:43:30.17ID:jtm5ziJ2M
プロジェクトの下の debug か release の下に出来てるだろ。
2017/06/27(火) 17:57:16.27ID:HOHNeZU7M
>>616
こんなやつじゃね?
http://risyu.is.it-chiba.ac.jp/syllabus/syplssb302
623デフォルトの名無しさん (ワッチョイ 9fc1-NIhq)
垢版 |
2017/06/27(火) 18:21:29.40ID:HjxjU0LK0
>>621
よく見たらdebugフォルダの中にアプリケーションって言うのがありました
これがexeファイルなんですね(*´ェ`*)
2017/06/27(火) 19:29:10.53ID:eugTAuNDM
char *hoge にファイル名が入っていて、
printf("%s",hoge);とするとファイル名が表示されます
このファイル名を
http://dqn.sakusakutto.jp/2013/04/c_kr_stack.html
のpush()に引数として入れたいのですが、型が合いません

どなたか教えて下さい
2017/06/27(火) 20:00:27.36ID:7v0X4ZTWM
すみません自決しました
2017/06/27(火) 20:07:10.41ID:bJ//gE7J0
自決しちゃったのか
2017/06/27(火) 22:36:09.51ID:pewKiBDj0
御冥福を
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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