2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

くだすれC言語(初心者用) Part.2

1 :デフォルトの名無しさん:2007/02/22(木) 08:16:03
このスレッドはC言語について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
C使いが優しくコメントを返しますが、
お礼はC言語の布教と初心者の救済をお願いします。

くだすれC言語(初心者用)
http://pc10.2ch.net/test/read.cgi/tech/1153542424/

2 :デフォルトの名無しさん:2007/02/22(木) 08:37:42
2get

3 :デフォルトの名無しさん:2007/02/22(木) 10:10:06
裏切派遣って知ってる?
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて派遣やってるバカのことw

前の会社を裏切り、結局派遣先からも騙されてる。
そもそも信頼されてるなら直接契約するか正社員にするはずだが、派遣会社経由って舐められ杉

自分でも騙され裏切れられてることは薄々わかってるから派遣問題の話が出るとウッキー!って逆ギレw


4 :デフォルトの名無しさん:2007/02/22(木) 17:06:10
保守

5 :デフォルトの名無しさん:2007/02/22(木) 22:28:47
printfってなんですか?

6 :デフォルトの名無しさん:2007/02/23(金) 00:54:40
関数の名前です

7 :デフォルトの名無しさん:2007/02/23(金) 00:57:26
半分は優しさでできています。

8 :デフォルトの名無しさん:2007/02/23(金) 02:21:25
D.リッチーのやさしさが詰まってます。

9 :デフォルトの名無しさん:2007/02/24(土) 11:52:39
doubleが数値であるかないか、つまりNaNやinfではないかどうかはどのように判定すればよいのでしょうか?

10 :デフォルトの名無しさん:2007/02/24(土) 11:54:40
fpclassify

11 :デフォルトの名無しさん:2007/02/24(土) 14:45:18
>>9
Double.isNaN
Double.isInfinity


12 :デフォルトの名無しさん:2007/02/24(土) 14:49:56
>>11
スレタイ嫁。

13 :デフォルトの名無しさん:2007/02/24(土) 15:10:31
最近思うのだが
C言語のreturn文てあまり使わないんじゃないの?

14 :デフォルトの名無しさん:2007/02/24(土) 15:12:34
?????

15 :デフォルトの名無しさん:2007/02/24(土) 15:15:35
最近思うのだが>>13
C言語の関数をひとつしか作らないんじゃないの?

16 :デフォルトの名無しさん:2007/02/24(土) 15:21:47
このへんはC99?
isnan,isinifnite


17 :デフォルトの名無しさん:2007/02/24(土) 15:22:14
引き数をポインターにして戻せば良いかなと思うんだけど

18 :デフォルトの名無しさん:2007/02/24(土) 15:31:32
>>16
isnanはC99要求だね。
isinifniteってのはないが、isinfがC99から
fpclassifyもだけど

19 :デフォルトの名無しさん:2007/02/24(土) 15:37:56
>>17
hoge( hage() ) みたいに、結果をそのまま他の関数に渡す場合は?


20 :デフォルトの名無しさん:2007/02/24(土) 15:56:32
関数なんて便利なものがなかった時代でもプログラマはなんとかやってたわけだからreturn使わなくてもなんとかなるだろ。

21 :デフォルトの名無しさん:2007/02/24(土) 16:06:16
なんとかならないから関数の概念が発達したんだろうに。

22 :デフォルトの名無しさん:2007/02/24(土) 16:46:57
time()みたいに引き数でも戻り値でも戻す奴もいるがな。

23 :デフォルトの名無しさん:2007/02/24(土) 18:11:44
関数を呼ぶときに必ず右辺値を要求されるのは鬱陶しくてかなわん。

24 :デフォルトの名無しさん:2007/02/24(土) 18:20:07
>23
どゆこと?kwsk

25 :デフォルトの名無しさん:2007/02/24(土) 18:33:39
左辺値を要求されると即値が書けずに鬱陶しいという話なら分かるが、
右だとなんだろ。



26 :デフォルトの名無しさん:2007/02/24(土) 19:47:41
>>25
たぶん、>>23が右と左の区別もつかない馬鹿なんじゃないのか?

27 :デフォルトの名無しさん:2007/02/24(土) 19:48:37
>>25
たぶん、>>23が右と左の区別もつかない馬鹿なんじゃないのか?

28 :デフォルトの名無しさん:2007/02/24(土) 22:34:02
printf()系の関数ってどうやって、
複数の型で値渡ししてるの?

int printf(const char *format, ...);

...っていうのが可変長引数っていうのまでは
わかったんだけど・・・

個人的予測では、void*で受けて、
*formatの内容で型キャストしてるのかなぁ・・・と。

29 :デフォルトの名無しさん:2007/02/24(土) 22:37:47
va_stratとかでググれ。
どうやっているかはコンパイラ次第でどうにでもできるようマクロで隠されている。

30 :28:2007/02/24(土) 22:44:04
>>29
そうすると、いろいろやり方があるって事ですか?

例えばでいいので教えてもらえませんか。

31 :デフォルトの名無しさん:2007/02/24(土) 22:53:38
可変長引数を受け取る方法は、
29の言うva_startなど<stdarg.h>にある一連のマクロを使うことになっている。

コンパイラは、可変長引数をどうやって実現していようと、
<stdarg.h>の内容を定められたとおりに実装しなければならない。

だから結局使う側は<stdarg.h>のマクロの使い方を知っていれば良く、
どうやって実現されているかということは知る必要など無い。
もちろん理解を深めるために知りたいとかそういう話は別だ。

32 :28:2007/02/24(土) 23:03:42
>>31
>>29さんはva_startの事を言っていたんですね。

stdarg.hを参照することにします。
有難うございました。

33 :デフォルトの名無しさん:2007/02/24(土) 23:10:35
でもって、可変長だと、実際に引数がいくつ、またどんな型で渡されたかは、
C言語的には判断できないので、printfのように%指定で判断する(だから%指
定の数やデータ型と引数にズレがあるとおかしなことになる)約束にするか、
型情報とデータをペアで交互に渡し、最後の引数として特定の値(NULLとか)の
ものを積むとか決めておく。


34 :デフォルトの名無しさん:2007/02/25(日) 19:44:27
質問失礼します。
Visual C++ 2005 Express Editionで、
C++のプログラムを作るには、
Visual C++ 2005 Express Edition
Microsoft Platform SDK
インストールした後はこれだけあればいいんでしょうか?

Microsoft MSDN 2005 Express Edition
Microsoft SQL Server 2005
Microsoft SQL Server Natibe Client
Microsoft SQL Server VSS Writer
Microsoft SQL Server セットアップ サポート ファイル

これらは必要ありませんか? 削除してしまっても大丈夫でしょうか?
PCを起動するたび、タスクマネージャを見ると
sqlserve.exeというのが100MB近くもメモリを使っているようなのです。
HDもかなりの量を使っているので、削除できるものがあれば削除したいのですが。

35 :28:2007/02/25(日) 21:44:12
>>28です。

詰まったので、又質問させていただきます。

stdarg.h内にてva_startを参照したところ__builtin_va_startに対して
マクロ定義されていたました。

__builtin_va_startとは、一体何者なのでしょうか・・・
検索したのですが、解説しているページがなく困っています。

よろしくお願いいたします。

36 :デフォルトの名無しさん:2007/02/25(日) 21:46:52
va_startマクロが何をラップしていようと知ったこっちゃない。
コンパイラの開発元にでも問い合わせとけ

37 :28:2007/02/25(日) 21:50:29
>>36
そういうもんですか。

ふぅ。

38 :デフォルトの名無しさん:2007/02/25(日) 22:57:30
>>34
どれも使わないなら削除してしまえ。
そもそもVC++のインストール時にインストールしないよう指定できる。

MSDNには関数リファレンスやコンパイラオプションなどの説明などが
入っているが、必要ならExpress付属のものよりも、
オンラインのものや別途ダウンロードのもののほうが良い。
http://www.microsoft.com/downloads/details.aspx?FamilyID=94596AF5-CC58-45AF-A14B-DF627A31E783&displaylang=ja

39 :デフォルトの名無しさん:2007/02/25(日) 23:10:18
>>28
va_arg が何をやってるかを低レベルで理解したいってこと?

関数の引数はスタックに積まれるので
最初の引数のポインタを渡すことで
それ以降の引数のアドレスを求めているだけ。
取り出すときは型情報を指定することでサイズがわかる。

stdarg.h 使わずに実装すると勉強になりますよ。

40 :デフォルトの名無しさん:2007/02/26(月) 01:19:22
>>38
どうもありがとうございます。
これですっきりします。

41 :デフォルトの名無しさん:2007/02/26(月) 01:35:15
>>35
おまいさんが使ってるのはgccかな?
このまわりの実装は処理系によって全然違う。
ANSI C に準拠していない古い処理系だと va_start に
引数がなかったりするようなヤツもある。
>>39 が言ってるのは一般的な処理方法の一つに過ぎない。が、
自分が使ってる処理系/環境でのこのまわりの動作を
理解できてれば↓こんなアホなこともできる。
http://mx1.tiki.ne.jp/~wraith/tips0005.htm

42 :デフォルトの名無しさん:2007/02/26(月) 05:00:15
用例1は未だしも、用例2はカス以下だな。

43 :デフォルトの名無しさん:2007/02/26(月) 20:33:44
>>42
>用例1は未だしも
そう思った、お前もカス以下だな。

44 :デフォルトの名無しさん:2007/02/27(火) 00:19:17
後のWM_(NC)CREATEのCREATESTRUCTを見ると、
WindowsのCreateWindow(Ex)はおそらく用例2を使っている。
だからどうしたということだが。

45 :デフォルトの名無しさん:2007/02/27(火) 21:56:35
よくポインタでつまずく、ポインタが難しいといわれてるけど、
ポインタ以前で難しいところやつまずきやすい所はどこ?

46 :デフォルトの名無しさん:2007/02/27(火) 21:59:37
環境設定

47 :デフォルトの名無しさん:2007/02/27(火) 23:06:48
パスを通すところだな
初心者がマニュアル読まず検索せず過去ログを読まずに
質問してくる

48 :デフォルトの名無しさん:2007/02/27(火) 23:22:02
しかも質問にはエラーを貼らないとか省略するとか独自解釈するとか。


11 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)