[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/09 17:25 / Filesize : 118 KB / Number-of Response : 502
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 38



1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 20:15:31 ]
C言語の入門者向け解説スレです。

教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
  C/C++の宿題を片付けます 117代目
  pc11.2ch.net/test/read.cgi/tech/1225320579/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
  C言語なら俺に聞け(入門篇) Part 37
  pc11.2ch.net/test/read.cgi/tech/1224000127/
過去スレ
  makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000

21 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 02:28:39 ]
>>20
それなりに

これでも読んで見る?
www.atmarkit.co.jp/fpc/rensai/zunouhoudan003/cachemiss.html

22 名前:デフォルトの名無しさん [2008/11/01(土) 02:54:06 ]
   ヘ⌒ヽフ
  ( ・ω・) dd
  / ~つと)
参考にしてみるね

23 名前:デフォルトの名無しさん [2008/11/01(土) 03:52:14 ]
sprintf(info,"%*.s",sizeof(str),str);

サイズ指定でこんな使い方できるんだな

24 名前:デフォルトの名無しさん [2008/11/01(土) 04:25:20 ]
bitってどんなときに使うの?

25 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 04:40:53 ]
>>20
CPUの速度は飛躍的に向上したけど、メモリーアクセスの速度はそれほど向上していない。
遅い時代のCPUならメモリーアクセスの遅さは目立たないけれど
CPUは速くなっちゃったせいで、遅さは目立ってきている。
ということだろ。

26 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 04:42:15 ]
>>24
ノード6000くらいの線形リストでアクセス速度ぅpに使う

27 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 04:43:11 ]
すまん、>>26はビット演算

28 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 04:55:39 ]
>>24
制御系でビットをフラグとして使う場合があるますよね
0ビット目が1ならどうとか、1ビット目が1ならああだとか
そういう場合の該当ビットの読み書きに使います。

29 名前:28 mailto:sage [2008/11/01(土) 04:57:18 ]
ビット演算でも代行できるので、あまり使わない機能かな?



30 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 05:26:26 ]
memsetで構造体をゼロクリアしたいのだけど整数型以外の結果は保障されないらしいのですが、何故ですか?

31 名前:デフォルトの名無しさん [2008/11/01(土) 05:34:28 ]
C言語の次に言語が出るとしたならば、言語名はP言語ですか?

32 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 05:38:06 ]
>>30
何を持って結果の保証とするのかがわからないが

たとえば構造体にfloatのメンバーがあったとする、
0でmemsetすると中身は0x00000000となるわけだが、0x00000000=0.0はすべての環境で
保障されているわけではない。

ポインタも同じ。NULLが0でない処理系では0でmemsetした場合、そのポインタ変数
はNULLにはならない。

じゃまいか

33 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 06:23:32 ]
NULL==0
という決まりがなかったっけ。memsetで強引に入れたときは別かもしれんが。

34 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 07:55:08 ]
>>31
最低の屑

35 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 08:00:11 ]
NULLが0なんじゃない。0がNULLなんだ。
つまり、比較はできるが、ポインタの中身がどうなっているかは想定外。
極端な話、仮想メモリがなくてアドレス空間として0番地を使わざるを得ない環境だとしたら、
中身0をNULLとは使い難い。

36 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 08:07:05 ]
NULLはあくまでポインタの先が存在しないこと示してるわけであって必ずしも0ではない
だがNULLは0番地のアドレスをさすことが多い(仕様?)からキャストされてNULL==0は真になる
と、初心者のおれは解釈してるんだが、ホントのところはどうなんですか?


37 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 08:11:15 ]
>>36
いやだから、NULLがどこを指していようとも、0と比較する限り真にならないといけない。

38 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 11:16:37 ]
>>36
何度も出ているように、NULLのビットパタンがオール0であることは保証されてない
だからキャストされて0になることも保証されない。

あなたが実験したら0になるかもしれないけど、それはそれだけのこと

39 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:08:44 ]
ヌルポインタだと判別するにはどうしたらいいんだ



40 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:15:27 ]
0はヌルポインタだから0と比較すればいい

41 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:18:30 ]
いいえ

42 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:20:43 ]
>>33
NULLが0か(-1)の環境なら問題ないけどそうでない中間の値の場合問題になるな。
そんな環境はないと思うけど。

>>39
== NULLで比較するのが確実

43 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:57:05 ]
>>41
嘘を言うな、直接触れるmemsetとかを別にすれば
0でいいだろうがカス

44 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 13:18:52 ]
複数行マクロにつかう\ってなんのためにつけてるんですか?

45 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 13:21:46 ]
自分のため

46 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 13:28:53 ]
えんため

47 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 14:06:52 ]
質問がわるかったですね
文字列リテラルいがいで\を使うとどういう意味になるのですか?

48 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 14:37:54 ]
fopenについて聞きたいのですが、例えばfopen("c:\a.txt","r");と書いてもCドライブ直下にあるa.txtが開けないのですが
どうすれば解決できますか?

49 名前:48 mailto:sage [2008/11/01(土) 14:39:48 ]
自己解決しました



50 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 14:40:54 ]
>>48
なんで開けないの?

51 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 14:40:56 ]
>>47
その質問は更に悪い。
defineディレクティブの行末のバックスラッシュは、改行文字をエスケープしてdefineディレクティブの継続を意味する。
文字列リテラルまたは文字リテラルのバックスラッシュは、次の文字をエスケープする。

52 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 14:41:46 ]
>>48
Cドライブ直下というからにはMS-DOS系だと思うが、その場合はバックスラッシュを自分自身でエスケープしておく必要がある。

53 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 14:49:36 ]
>>51
いえ、文字列や文字リテラル内での扱いは聞いていません
行末で使うと改行がエスケープされるんですねわかりましあ
行末以外で使うとどうなりますか

54 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 14:53:51 ]
バックスラッシュの次の文字がエスケープされる。

55 名前:デフォルトの名無しさん [2008/11/01(土) 15:02:17 ]
>>48
fopen("c:\\a.txt","r");

56 名前:デフォルトの名無しさん [2008/11/01(土) 15:13:28 ]
超初心者です。
c言語の勉強を始めたばかりなんですが・・・

#incllude <stdio.h>

main()
{
printf("%d");
}

とすると1687って表示されるんですがこの「1687」って何ですか?

57 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 15:15:29 ]
printf呼んだときに誰も使ってないエリアにたまたま入ってた数字

58 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 15:16:58 ]
つーか後ろからつむから別の用途に使われてるか

59 名前:56 [2008/11/01(土) 15:31:39 ]
>>57
ありがとうございます。
意味のない数字ってことですね。

>>58
ありがとうございます。
何を書いているのかもわからない・・・(^^;;

とりあえず気にしなくてもいいんだって理解して次に進むことにします。
お騒がせしました。



60 名前:56 [2008/11/01(土) 16:02:04 ]
もう少し質問させてください。

#include <stdio.h>
main()
{
printf("%d","hello!"):
}

とすると「106」と表示されるんですけど、これも意味がない数字ですか?
整数を表示する%dなんだから式自体が不当な気もするけど。

61 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 16:16:38 ]
初心者なら教科書通りにやっとけ。
自分で工夫しようなんて思うな。

62 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 16:22:09 ]
アドレス

63 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 16:36:18 ]
初心者がC言語学習の最初に触れる printf、scanfなどの書式指定関数は
C言語的には必要悪な関数であって邪道ともいえる仕組みで作られている。

初心者は printf について深く考えてはいけない。
書式文字列と正しい使い方だけを考えればよい。
書かれているようなイレギュラーケースの理解は初心者の範疇を越えている。

どうしても理解したければ、可変長引数(stdarg.h)を調べてみればいい。

64 名前:デフォルトの名無しさん [2008/11/01(土) 17:04:33 ]
> 邪道

<stdarg.h> で保証されている機能は邪道ではない
間違えやすいことを「邪道」と言っているならプログラム言語自体が邪道だと言っていることになる

65 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 17:52:53 ]
邪道というか型安全じゃないから積極的に使いたくは無いな

66 名前:デフォルトの名無しさん [2008/11/01(土) 18:07:30 ]
型安全でないなら、低レベル処理も一切「使いたくない」わけか
そんならCなんかやめとけつーの

67 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 18:08:39 ]
>38 は大嘘。
ANSI-Cでは、キャストされて0になることは保証されている。
Cを高級アセンブラだと思い込んでいるようなヤツには信じがたいかも知れんが。


68 名前:デフォルトの名無しさん [2008/11/01(土) 18:14:04 ]
int i, *p;
p = 0;
i = p;

の結果が i == 0 になることが保証されていることと

union {
int i, *p;
};
p = 0;

の結果が i == 0 になるかどうかは全く別問題

# ANSI, ANSI とほえる奴ほど ANSI の何ページの何行目かを言えない法則

69 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 18:18:13 ]
c-faq.com/null/index.html



70 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 18:21:44 ]
>68
何ページの何行目?

71 名前:デフォルトの名無しさん [2008/11/01(土) 18:29:27 ]
国内・国際規格があるのを差し置いて他国の国内規格を持ち出している時点でβακαフラグ立ってるんだよ

72 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 18:30:37 ]
>>66
ニホンゴよめてます

73 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 18:31:03 ]
>>72
それは
報告
しなくても
いいです

74 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 18:37:44 ]
>>71
ウンコ訳のJISなんか持ち出すやつのほうがバカっぽい。

75 名前:デフォルトの名無しさん [2008/11/01(土) 19:05:08 ]
関数の事で質問なのですが、
呼び出すときに、呼び出し先で出力しているのでしょうか?
returnを付ける事で、呼び出し元に値を返して出力しているのでしょうか?



76 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:07:18 ]
>>75
出力、って何をだ?
日本語でおk、って言いたくなるんだが。

77 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:08:02 ]
呼び出し先で出力することもあるし、
呼び出し元で出力することもあります。

78 名前:デフォルトの名無しさん [2008/11/01(土) 19:13:55 ]
if文の比較部分で
if(a==b){xxx;}
って書くところを間違えて
if(a=b){xxx;}
って書いてもコンパイルできますが、この場合ifの処理はどうなるんですか?

79 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:15:11 ]
bをa に代入した後その値を見る
そして、0なら偽、0以外なら真



80 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:16:33 ]
>>78
警告がでたらエラーと思え。

81 名前:デフォルトの名無しさん [2008/11/01(土) 19:17:03 ]
>>74
国際規格って書いてあるだろ、知らないのか ISO を?

82 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:18:16 ]
どうせそれぞれの差異にかかわるような話なんてしないんだから
どれでもいーじゃねーか
他でやれ

83 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:29:01 ]
>>81
最初に書いてある国内ってのは、脳内では無かったことになってるのか。

84 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:32:52 ]
>>75
質問は返り値(戻り値)のことでの疑問でしょうか?
それなら簡単です。関数の戻り値は、通常の変数の値と同じ理解でいいんですよ。

 int func( int a, int b )
 {
  return ( a + b ); // int型の関数func は常に a + b の値を返します。
  // つまり関数func は a + b というint型の値を持つ変数と同じ性質です。
 }

 void main( void )
 {
  int n;
  int a = 1;
  int b = 2;

  n = func( a, b ); // n には関数funcが返す値 a + b が代入されます。n = a + b; と同じです。
 }

85 名前:デフォルトの名無しさん [2008/11/01(土) 19:46:51 ]
>>83
国際って書いてあるのを見落としたお前の失態

86 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:51:55 ]
>>85
『「国内・国際」って書いちゃったけど、やっぱ国内のほうは無しで、国際だけね」ってこと?


87 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:52:34 ]
揚げ足取りみたいなバカがいるようで、やはりここは
回答者のレベルが低い、知能も知識も、精神レベルもw
こんな腐った場所で質問する初心者は、場所を変えた方が良い。
まともな学校に通いなってことだ。所詮、ここは偽善有志者による
無責任で、一部の人間の自己満足で運営されていますからw

88 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:54:47 ]
あと 俺は英語なんて読めなくてJISの訳がどの程度の質か知らんし、 >>74 は適当に思いつきで煽っただけだから、
あわてて「国際」の話だとか言い訳する必要も無いよ。

89 名前:デフォルトの名無しさん [2008/11/01(土) 19:54:48 ]
>>86
ISO とも書いたがそれも読めてないようだな

>>87
学校というより収容所のせいだろう



90 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:57:50 ]
そもそも >>71 が激しくどうでもいい揚げ足とりだしな。

91 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:58:52 ]
>>89
それくらいは読めてますよ。

92 名前:デフォルトの名無しさん [2008/11/01(土) 20:55:12 ]
Borland C++ Compilerがダウンロードできないんですけど
どうすればいいですか?

93 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 20:55:55 ]
がんばってもっと探しましょう

94 名前:デフォルトの名無しさん [2008/11/01(土) 21:08:19 ]
他のコンパイラ探せってことですか?

95 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 21:13:15 ]
Borland C++ Compilerでググって最初に出てくるページは違うのか。

96 名前:デフォルトの名無しさん [2008/11/01(土) 21:19:56 ]
www.codegear.com/jp/downloads/free/cppbuilder

ここで C++Compiler / Turbo Debugger をダウンロードしたいんだけど
ユーザー登録してダウンロードのできるページに行こうとすると
表示するページがないって出る。ユーザー登録したメアドには
Zip解凍パス届いてるのに…。


97 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 21:22:40 ]
BCCは時代遅れだからVC++にしておけ。

98 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 21:25:50 ]
>>96
俺もダウンロードできないな。

> 上記のダウンロードサイトにアクセスできないときは、CodeCentral のダウンロードページをお試しください。
> CodeCentralのダウンロードページを利用するには、CDNへのログインが必要です。

ダウソのページに↑と書いてあるけど、CDNの登録とか面倒だから、これ以上はためさないけど。


99 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 21:26:55 ]
Cコンパイラとして使うなら、どっちでもそう変わりないと思う。



100 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 21:27:42 ]
でもダウンロードの敷居が違う。
だったらめんどくさい思いしてまでして使う理由が見当たらない。

101 名前:デフォルトの名無しさん [2008/11/01(土) 21:31:11 ]
>>97
win2kなんでVC++使えないです…。OS自体が時代遅れなんで。

>>96
みんなそうなんだ?なんとかならないかな…。


102 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 21:38:31 ]
cygwinやmingwなら登録いらずだよ。

103 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 22:07:57 ]
>>101
ttp://phys.cool.ne.jp/physjpn/bccwin.htm
なら一応bcc入りだよ?


104 名前:103 mailto:sage [2008/11/01(土) 22:14:09 ]
見つけた
ttp://clove.rye.tama.ac.jp/~softcat/soft/win/ABCD/BorlandC++5.5.1Jfree/freecommandlinetools2.exe

105 名前:デフォルトの名無しさん [2008/11/02(日) 04:48:43 ]
FILE型はどうしてオブジェクト型なの?

106 名前:デフォルトの名無しさん [2008/11/02(日) 05:00:12 ]
>>34
BCPL
Cの次はP言語

107 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 05:14:43 ]
>>105
オブジェクトで何か問題が?まさか関数型だとでも?


108 名前:デフォルトの名無しさん [2008/11/02(日) 05:30:37 ]
>>107
どうして構造体型じゃないの?

109 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 05:32:34 ]
FILEのメンバーを気にしたことある?



110 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 05:33:31 ]
うわぁ・・・

111 名前:デフォルトの名無しさん [2008/11/02(日) 05:42:23 ]
>>109-110
何故オブジェクト型にする必要があったの?

112 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 05:43:45 ]
Cでは整数もポインタも構造体もオブジェクトなわけだが…。

113 名前:デフォルトの名無しさん [2008/11/02(日) 05:46:16 ]
>>112
オブジェクト型は総称じゃないの?

114 名前:デフォルトの名無しさん [2008/11/02(日) 08:48:57 ]
電気代を算出するようなプログラムを作っているのですが
電気代の方が正常に表示されません(有り得ない桁数が表示される)。
他の部分も、まだまだ作りこまれておらず稚拙な内容ですが
とりあえず今は、電気代がきちんと出る事を目的としています。
使用しているコンパイラはVisual C++ 2008です。

どなたかご教授お願いします。

115 名前:114 [2008/11/02(日) 08:49:54 ]
すいません、ソースコードを張り忘れていました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7911.txt

宜しくお願いします。

116 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 08:57:22 ]
scanf・・・恐ろしい子・・・

117 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 09:07:04 ]
とにかくdoubleとの相性が最悪よね。どうしたのかしら。


118 名前:114 [2008/11/02(日) 09:13:07 ]
>>116-117
つまりプログラムでのミスというよりは、仕様での異常という事でしょうか?
そうなると、別の入力方法を考えないといけないわけですね・・・

ご解答有難うございました。

119 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 09:19:02 ]
>>118
アホかい。自分が使い方間違っているだけだって。
つーか、そのミスに警告も出てないとしたら、コンパイラの使い方も間違っているかもしれないぞ。



120 名前:114 [2008/11/02(日) 09:31:16 ]
>>119
そうだったのですか。
コンパイラはVisualC++2008の方に混同されているものですが
使い方などは考えたことありませんでした。

もう一度よく調べて見ます。
有難うございました。

121 名前:デフォルトの名無しさん [2008/11/02(日) 09:40:45 ]
誰か>>105について教えて下さい






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<118KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef