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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:45:25 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 9
pc11.2ch.net/test/read.cgi/tech/1173284217/

過去スレ
Part 1 pc8.2ch.net/test/read.cgi/tech/1146700389/
Part 2 pc8.2ch.net/test/read.cgi/tech/1153818463/
Part 3 pc8.2ch.net/test/read.cgi/tech/1160682950/
Part 4 pc8.2ch.net/test/read.cgi/tech/1162999861/
Part 5 pc8.2ch.net/test/read.cgi/tech/1165022193/
Part 6 pc10.2ch.net/test/read.cgi/tech/1167325490/
Part 7 pc10.2ch.net/test/read.cgi/tech/1170064980/
Part 8 pc11.2ch.net/test/read.cgi/tech/1171946674/

関連スレ
C/C++の宿題を片付けます 84代目
pc11.2ch.net/test/read.cgi/tech/1172981618/
くだすれC言語(初心者用) Part.2
pc11.2ch.net/test/read.cgi/tech/1172099763/
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
pc11.2ch.net/test/read.cgi/tech/1170338926/
【初心者歓迎】C/C++室 Ver.35【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1171888583/

【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html

116 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:45:32 ]
なんで?(^ω^;)

117 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:49:15 ]
/*
* じゃあこれからコメントの標準はこれで。
*/

118 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 03:33:32 ]
>>116
grep で引っかかったときにコメントかどうかが判らないから。
とはいえ、1行でも全部みれば判るけどね。

119 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 04:25:36 ]
おまえら楽しそうだなw
おれも楽しいけどw


120 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 05:17:34 ]
#ifdef _DEBUG

#define DEBUG_ONLY

#else

#define Paste(a, b) a##b
#define DEBUG_ONLY(fn) Paste(/, *) fn Paste(*, /)

#endif

こんなマクロを作ったんだが、これって邪道?

121 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 05:26:30 ]
>>120
自己レスだがどう考えてもこっちの方がいいです。
本当にありがとうございました。

#ifdef _DEBUG
#define DEBUG_ONLY
#else
#define DEBUG_ONLY(fn)
#endif

122 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 07:55:21 ]
漏れはこんなの作ってみた。
#ifdef DEBUG
#define IF_DEBUG 1 && /**< 常に有効 */
#else
#define IF_DEBUG 0 && /**< 常に無効(このマクロの右辺は生成されない) */
#endif
警告は出ちゃうけどね。

123 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 12:59:08 ]
俺はいつもこれ使ってる。
release 時は最適化で消えるはず。

#ifdef NDEBUG
#define DEBUG if(1); else
#else
#define DEBUG if(0); else
#endif

124 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 13:00:58 ]
俺は C で書く時は // は使わんな。
-ansi -pedantic -Wall で警告すら出ないように
ガチガチに書くようにしてるから、
// 使うとエラーになる。



125 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 13:12:05 ]
そこで-std=c99ですよ

126 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 13:48:50 ]
わざわざCで書く理由ってのは移植性やpoorな環境の問題、レガシーコードの
保守などがメインだと思うんだが……

C99なんて使う機会あるか?
C99使えるぐらいならC++が使えないか?

127 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 13:57:34 ]
int (*f(int argc, char* argv[]))(int argc, char* argv[]), (main);

こういう変態な書き方ってどうやったら読めるんすか?
っていうか何やってるんすかこれ?

128 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 16:49:49 ]
>>127
mainの再宣言のようだけど


129 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:23:21 ]
Filename_ni_comment_wo_kakeba_iijyo.c

130 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:48:45 ]
/*
読み込んだ実数値と0.1との和・差・積・商を表示
*/
#include<stdio.h>

int main(void)
{
double num;
printf("実数を入力してください:");
scanf("%1f",&num);
printf("0.1を加えると%fです。\n",num+0.1);
printf("0.1を減じると%fです。\n",num-0.1);
printf("0.1を乗じると%fです。\n",num*0.1);
printf("0.1を除すと%fです。\n",num/0.1);
return(0);
}

なぜかどんな実数を入力しても0を入力された扱いになってしまいます。
どこが悪いのでしょうか?

131 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:49:58 ]
>>130
www.linux.or.jp/JM/html/LDP_man-pages/man3/scanf.3.html

%lf

132 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:50:07 ]
%1f
%lf

133 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:50:17 ]
%1f

134 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:52:01 ]
>>131-133
ありがとうございます!!!
ってか0とOを間違えるくらい恥ずかしい…orz



135 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 23:28:41 ]
なんだ、floatで精度指定してんのかと思ったらdoubleだったんだ。

136 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 13:22:37 ]
C言語ゲームを作成中です。他スレから移動です。
6つのファイル公開中しています(読みやすくしたつもりです。>_<;)
ここならCの意見を・・・記述スタイル、変数名など・・・
一通り完成しましたが、大幅に改修している初期の段階の内容です。

現段階は自機が動いて弾を撃つまでです。その他の内容はReadme.txtより
コンソールシューティングゲーム
gamdev.org/up/img/9215.lzh

137 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 13:28:35 ]
>6つのファイル公開中しています(読みやすくしたつもりです。>_<;)
先ず、日本語の勉強をすべきかと。

138 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 14:19:18 ]
C++ じゃん・・・と思ったら、中身はほとんど C だな。

グローバル変数使い過ぎというのが先ず目につく。クラス化汁。
Console みたいに内部変数にすると不便だというなら、
Singleton パターンを使えば、そのクラスのインスタンスを1つに保証できる。
関数でデータ処理させる際のオーバーヘッドが気になるなら inline 関数にすればいい。
(って、C のスレの回答じゃないな、これじゃ)

名前のローマ字はまあいいとして、player のメンバ名が気になる。
px, py, pspd の p は player の、
ptx, pty, ptflg の pt は player の tama の略だと思うけど、
プレイヤーの情報と弾の情報が同じレベルで混在してるのはどうなのかと思う。
struct tama {
 float x, y;
 char fHassha;
};
struct player {
 float x, y, spd;
 struct tama tama;
};
という風に切り分けた方がいいんじゃないかな。
x, y も、座標構造体やらクラスやらにした方がいいと思う。

GetRandom は、もうちょい double でキャストしないと、オーバーフローが怖い。

(eny + ei)->ex は eny[ei].ex じゃダメなのか?
まあ、このあたりは趣味も関わってくる話かもしれんが。

SYori は Syori だよね?
0, 1 のフラグは、char じゃなくて bool にしようぜ(って、これも C じゃないな)。
InitFunc の中身は全部機能別に関数化した方が読みやすいかもと思った。
まあ、関数化してない部分は短いから、別にいいかもしれんが。

139 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 14:31:39 ]
ゲームの場合、綺麗に書く必要はそれほど無いので、
とにかくゲームとして仕上げることが大事。
一本完成すると自信になる

140 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 15:24:54 ]
>>136
ヘッダファイルの読み込み順を意識しないといけないのは嫌いだ

141 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 15:56:31 ]
レス有り難うございます^^
>>137 すまそ >_<;
>>138
C言語は一定のレベルになると、まったくわかっていない!調べます。
構造体、double、(eny + ei)->ex は eny[ei].ex とか・・・あと変数名も検討する
自機と自機弾は分けようかとしたが・・・現在は暫定ような感じです。t は弾の略です^^

PlayerSYoriですよね!直しました。気づかんかった…
機能別関数化は大きくなった時など考えていきます。
クラス、インスタンス、Singleton パターンinline 関数この辺は
Cの後に挑戦したいと思っています!

>>139
確かに…結構挫折が多かったのでよくわかりますorz 一つ完成させるのが大事!
一応一通り形はできたのですが・・・(そのほうが質問しやすいと思ったから)
しかし、理解せずに進んだため信じられんほど、時間が
かかり過ぎた >_<;毎日泣きそだった。ぐぐりまくってもわからんし…

>>140 見直してみます><
まずは、グローバル、構造体、ヘッダーをみてみます。

142 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 17:06:35 ]
>>136
向こうのスレを見ている者だが、最初に比べると随分上達したな。
個人的にはローマ字命名はちょっと…だが。

143 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 17:44:57 ]
>>141
どのスレから来たんだい?

144 名前:デフォルトの名無しさん [2007/03/28(水) 18:50:32 ]
ある人が書いたソース見ていたら、ヘッダファイルに以下のような部分を
見つけました。

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifdef _MSC_VER
#include "resource.h"
#endif

私の疑問は、 "resource.h" というファイルを探したのですが、
見当たらなかったのですが、エラーなくコンパイルできます。
その理由がわかりません。教えて下さい。



145 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 18:58:55 ]
必要とされてないからでしょう

146 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 19:50:41 ]
>>144
#ifdef _MSC_VER
#include "resource.h"
#endif

もし _MSC_VER が定義されていたら
resource.h をインクルードする
_MSC_VER が定義されていないならインクルードしない
君の環境では_MSC_VER が定義されていないので resource.h がなくても問題ない

147 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 20:08:08 ]
K&RのP270に
「宣言中の最初の添え字は配列が消費するメモリ量を決めるのには役立つが、
添え字の計算には関係しないということである。」
という文があるのですが
int array[2][4][6];
と宣言した場合の2,4,6はそれぞれ配列の要素数を決めているだけで
*(array[2][4]+6)のシンタックスシュガーな訳ではないってことですか?

148 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 20:14:08 ]
「最初の添え字」つまり、その例では2のこと。4,6は関係する。

149 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 20:35:08 ]
arrayの各要素のメモリ内での位置を計算するのに2は必要ないというだけの意味。

150 名前:147 mailto:sage [2007/03/28(水) 20:36:24 ]
>>148
添え字の計算には関係しない、の意味がよくわからないんですが
array[1][2][3]は*(array[1][2]+3)に読み替えられて、array[1][2]は配列だから
(array[0]+1)[2]になるんですよね?

151 名前:147 mailto:sage [2007/03/28(水) 20:39:32 ]
すいません更新してませんでした
>>149
どういう風に必要ないのかいまいちよく分からないです…

152 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 20:41:33 ]
たとえばarray[1][3][5]のアドレスはarrayの先頭要素から、
(1)*4*6+(3)*6+(5)要素サイズ分だけ離れていると計算できるから、
最初の添え字のサイズである2は計算に必要とされない。
array全体のサイズを決めるためには2も必要。

153 名前:152 mailto:sage [2007/03/28(水) 20:49:36 ]
152の説明だと正確ではないか。
array全体が一塊で割り当てられているときは152の計算でいける。
まあ、そうでなくて、
array = (int***)malloc(2*sizeof(int**))
array[.] = (int**)malloc(4*sizeof(int*))
array[.][.] = (int*)malloc(6*sizeof(int))
みたいになっていたとしても、やはり最初の添え字サイズは必要ない。

154 名前:147 mailto:sage [2007/03/28(水) 20:50:43 ]
>>152
あ、最初の添え字の数-1までしか必要とされないって意味ですか



155 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 20:54:15 ]
>>153
たいていのコンパイラはint array[2][4][6];って宣言してたらまとまった領域を割り当てると思うがな

156 名前:デフォルトの名無しさん [2007/03/28(水) 20:57:33 ]
147 の質問に対して153のメモリ確保の説明は、関係ないんじゃあないのか?
147は
int array[2][4][6];
と宣言した場合の質問をしているんだよな。


157 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 20:59:30 ]
>>154
「添え字の計算」というのは例えばarray[0][1][2]みたいにindexが与えられた時に
それはメモリ上のどこにあるのかを計算するって意味だ
その計算には配列の最初の次元の大きさは必要ないよってK&Rは言っている

158 名前:152 mailto:sage [2007/03/28(水) 21:02:03 ]
>>155-156
うん、そうだね。いらないことを気にしすぎて余計なことを書いた。

159 名前:147 mailto:sage [2007/03/28(水) 21:06:46 ]
>>157
あ、array[1][3][5]の添え字計算だと(1)*4*6+(3)*6+(5)みたいに
当然(式の中の)最初の添え字の1も含めて1,3,5は当然使うし
元の宣言にある4と6も使うけれど、同じく元の宣言の中にある2は使わないってことですね
ようやく分かりました、皆さんどうもありがとうございます

160 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 21:10:18 ]
要するにint a[5];でa[x]とアクセスするのに、
5という情報は要らない(要るのはintという型情報)、ってだけ。

161 名前:デフォルトの名無しさん [2007/03/30(金) 01:20:50 ]
↓のようなことって技術的に可能ですか?
何分↓スレに専門知識を持った人間がおらず、真偽が分からなかったので
ここで質問させていただきました

558 名前: 麒麟です ◆qJFjoQ6aTk 投稿日: 2007/03/29(木) 22:06:29 ID:ENSP49sq
そうだ
一応書いておくわ

CとかJavaとか言語でわけてる現状がそもそもおかしいから

ソースコード翻訳機作ってやってるよ
おまえも参加しろwww

役に立たない下っ端を使えるようにする秘策だぞwwww

561 名前: 麒麟です ◆qJFjoQ6aTk 投稿日: 2007/03/29(木) 22:12:11 ID:ENSP49sq
意味分からないのか??

コンパイラじゃなく
ソースコードをそれぞれに変換するってことだぞ

意味分からないかな??

564 名前: 麒麟です ◆qJFjoQ6aTk 投稿日: 2007/03/29(木) 22:14:33 ID:ENSP49sq
たとえば
Cで書いたコード100万行を
自動変換で
Javaコードに変換するって奴だwwwwww

分かるかな???

ttp://human6.2ch.net/test/read.cgi/dame/1174933496/l50

162 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:26:14 ]
>>161
多少手作業部分やなんらかの制限等は生まれるだろうが、
いったいどこに本質的に不可能だとされる可能性があるんだ?

163 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:26:47 ]
しまった。マルチにマジレスしちまった。orz

164 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:31:45 ]
実例の1つとしてあげておくけど、初期のC++コンパイラは、
まずCへ翻訳してからコンパイルしていた。




165 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:47:21 ]
言語的には難しくない、100万行のlibcのみ依存のソフトなら自動変換できる。
でも、たとえば、Win32とか、BarkleySocketに依存していたら、
ライブラリの流儀をJavaに直すのは難しすぎる。
ましてやハードを叩いてたりすると。

166 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:49:53 ]
>>164-165
お前らなにマルチにマジレスしてんだ?

167 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 17:38:14 ]
ちゃんと動いたプログラムのソースに、大きな配列を追加してBCCでコンパイルしたら、
全く関係ない所でアプリケーションエラーで終了するようになったのですが、
メモリ不足でしょうか。mallocとか面倒だけどしないとだめでしょうか。
><わかんないんです。おしえてください。

168 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 17:41:38 ]
>>167
エラー貼ってみて

169 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 17:44:12 ]
>>167
ソースplz

170 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:07:21 ]
>>167
アプリケーション エラー
エラーが発生したため、(ファイル名).exeを終了します。プログラムをもう一度開始する必要があります。

エラーログを作成しています。

>>169
3000行超えちゃうので無理です><
とりあえずグローバル変数宣言だけで50行で、
int型の要素が100個ぐらいの配列と、
char型で256文字入る配列を4個ほど宣言してあります。

171 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:09:22 ]
どこかにアップロード汁

172 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:09:57 ]
グローバル変数多過ぎだろ。

173 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:15:31 ]
>>172
グローバル変数にしないと各関数の引数に変数や配列のポインタを
10個ぐらい渡さないといけなくなっちゃうんで…
大小まとめて数えて関数を30個ほど作ってあるので大変です…。

174 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:17:28 ]
>>170
10分の1くらいにおさえたら、どうか?



175 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:17:42 ]
>>173
釣りうぜえ

さっさとソース&エラーうpしろやクズが

176 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:19:13 ]
構造体作ってポインタ渡せばいいじゃん。馬鹿?

177 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:20:56 ]
あっ、すいません、変数名がかぶってたのが原因みたいです><
お騒がせいたしました

178 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:25:53 ]
同じ名前で大きさが違う配列に無理やり値を詰め込んだのが原因でした><
皆さん、本当にありがとうございました

179 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:32:16 ]
>>175
キレすぎだろw

180 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:43:32 ]
>>178
結果的に「釣りだった」という見解が・・・

181 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:45:46 ]
作り方が下手糞だと、ちょっとした間違いにも
気づきにくいという典型例だな。

182 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:06:36 ]
><ほんとうにすいませんでした

183 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:13:30 ]
特定の関数を特定の関数からしか呼び出せないようにすることって可能ですか?

184 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:21:42 ]
>>176
次からはよくつかう変数を
構造体に詰め込むことにします><
苦手意識のせいで気付かなかったです
アドバイスありがとうございました




185 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:28:48 ]
>>182
もしマジレスだったなら、謝る必要はないよ

186 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:29:58 ]
>>184
続けることが大事だから頑張って!^_^;マジレスならね・・・

187 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:33:40 ]
ところで>>170のいうように3000行を越えてるのに、
>>173でいうように関数が30個って少なすぎね?
もうすこし論理的意味単位で分割した方がいいと思うよ。

188 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:38:02 ]
>>183
呼ぶ側と呼ばれる側の関数だけからなるファイルを作って、
呼ばれる方はstaticにする。


189 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:38:30 ]
もう一つ質問しても良いでしょうか?
lccで行数の多い関数が入ったファイルをコンパイルすると
out of memory
とエラーが出るのですが
関数を短くしないといけないのでしょうか?><

190 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:41:50 ]
つーか、データの依存関係が強すぎだろ。

191 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:43:11 ]
>>189
LSICを使っているのなら、窓から投げ捨てろ。
あれは、関数を評価する為のコンパイラが使用するメモリ空間をたった32KBだか64KBだかに抑えている。

192 名前:183 mailto:sage [2007/03/30(金) 19:46:08 ]
>>188
関数に付けるstaticってこういう時に使うんですね、ありがとうございました

193 名前:デフォルトの名無しさん [2007/03/30(金) 19:54:31 ]
s03.2log.net/home/programmer/archives/blog38.html

194 名前:183 mailto:sage [2007/03/30(金) 20:02:13 ]
ついでで申し訳ないんですが、関数は何も指定しないと自動的にextern指定されるということでいいんでしょうか?



195 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 20:03:36 ]
そうでs

196 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 20:04:24 ]
>>194
いえす。
関数はファイルの外部から見える(extern)か見えない(static)かの2通りで
省略時はextern扱いされる。
外部に見せる必要がない関数は積極的にstaticを付けておくのはよい習慣。


197 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 20:05:10 ]
>>194
staticをつけない限り、そうなる。
従って、ソースファイル外から使いたい関数以外は無条件にstaticをつけた方がいい。
#最近のコンパイラはstaticな関数は積極的にインライン展開しようとすることだし。

198 名前:183 mailto:sage [2007/03/30(金) 20:08:08 ]
>>195-197
ありがとうございます、これからは習慣付けるようにします

199 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 20:11:46 ]
windowsから消しておきました><

200 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:16:58 ]
質問です

if( a[7] != 0 )
{
  cnt = 16 ;
  while( (a[0] & 0x0f) == 0 && cnt != 0 )
  {
    for( ct = 0 ; ct != 8 ; ct++ )
    {
      ((struct ST4bit *)&a[0+ct]->4bit_0
        = ((struct ST4bit *)&a[0+ct])->4bit_1 ;
      ((struct ST4bit *)&a[0+ct]->4bit_1
        = ((struct ST4bit *)&a[1+ct])->4bit_0 ;
    }
    ((struct ST4bit *)&a[7])->4bit_1 = 0 ;
    cont-- ;
  }
}

struct ST4bitはunsigned型で{4bit_0 ; 4bit_1}がメンバ(各4bit)

この時、このプログラムの意味することは、
a[0]〜a[7]で後ろ詰めに格納されているものを
前詰めにしている、というのでいいでしょうか?

またこうすればもっと簡単にできるというのがありましたら、ご教授お願いします。

201 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:29:41 ]
printfってプリントフって読むの?それともプリントエフって読むの?

202 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:42:20 ]
プリントエフがデフォ

203 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:36:15 ]
>200
forループの中でa[8]にアクセスしてるみたいだけど、いいの?

204 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:43:08 ]
>202
THX



205 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:48:21 ]
>>200
C言語じゃないよね?

206 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:48:25 ]
正式には プリント ウィズ フォーマット だっけ?

207 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:56:32 ]
はあ?

208 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:57:10 ]
>>200
鼻からなんか出る前に消してしまえ

209 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:58:29 ]
識別子の先頭に数字はないだろ・・・
常識的に考えて・・・

210 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 23:18:47 ]
常識というか、それが通るコンパイラがあったら是非私に知らせて欲しい。
頼んだぞ。

211 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 23:38:47 ]
識別子をプレゼントつ「unko_program」

212 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 23:41:37 ]
>>200
データサイズが膨大 or 組み込み用途 or 学習目的
のいずれでも無いならビットフィールド使うのをやめるのが吉

long long に対応しているコンパイラならシフト演算一回で終わる
※但し、データの並び順が変わるのに注意

213 名前:212 mailto:sage [2007/03/30(金) 23:47:05 ]
データの並び順が変わる

コンピュータのバイトオーダによってはデータの並び順が変わる

214 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 23:49:18 ]
標準入力のフラッシュは非標準らしいですが、
これをサポートしてない環境の例ってあります?
たとえば組み込み用の一部ではサポートしてないとかそういうのでしょうか?



215 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 23:52:04 ]
>>214
バッファリングしない環境では実装されてないってことは普通にあるかもね。

216 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:00:20 ]
ファイルをリダイレクトされた標準入力をフラッシュされたらどうなるんだって話があるしな。






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

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

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