トップページ⇒tech
1001コメント293KB

C言語なら俺に聞け

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2014/03/05(水) 05:32:47.63
ないから立てた
0002デフォルトの名無しさん2014/03/05(水) 05:43:32.04
前スレ
C言語なら俺に聞け
http://toro.2ch.net/test/read.cgi/tech/1390954735/

前スレがほぼ1ヶ月で消化してる。
この板には1000まで10年経かかってるスレもある中で、
(入門用)などないこっちが正統であるという民意に相違ない。
ナンバリングはよくわからんが次回からでも復活させてくれ。

関連スレ
C言語なら俺に聞け(入門編)Part 125
http://toro.2ch.net/test/read.cgi/tech/1392482954/
0003デフォルトの名無しさん2014/03/05(水) 05:46:37.47
質問です
func()
{
static char *p2;
p2=malloc(3);
func()
}
実行すると、p2はどうなりますか?
0004デフォルトの名無しさん2014/03/05(水) 05:48:51.67
よくわからんけど住み分けてたんでしょ?
この板で1ヶ月足らずで消化するとか尋常じゃねえし
0005デフォルトの名無しさん2014/03/05(水) 10:50:20.14
ぬるぽ
0006デフォルトの名無しさん2014/03/05(水) 11:04:05.67
>>3
ケース1
1 スタックが尽きて異常終了する
2 mallocがNULLを返し、p2がNULLになる
1と2のどちらが先に発生するか環境依存

ケース2
スタックは一周する。尽きないがmallocの管理している領域を壊す、その結果
1 異常終了する
2 何らかの意味のないポインタ値が無限に代入され続ける

ケース3
スタックは一周する。尽きない。mallocの管理している領域とは分離されている
NULLが無限に代入され続ける
0007デフォルトの名無しさん2014/03/05(水) 13:45:51.40
スタックが一周するってどういう環境?
0008デフォルトの名無しさん2014/03/05(水) 15:46:50.08
8086
0009デフォルトの名無しさん2014/03/09(日) 16:15:52.46
このケースならfunc()をサブルーチンコールするのではなくて分岐命令になるのではないのかな
0010デフォルトの名無しさん2014/03/11(火) 07:04:42.83
ゲームの当たり判定って四角形のほうがいいですか?
円だと二乗の計算が出てくるから重い気がするのですが
0011前スレ9972014/03/11(火) 07:06:29.38
ありがとうございました!
0012デフォルトの名無しさん2014/03/11(火) 07:08:37.30
C言語で絵入りQRコードを作るにはどうしたらいいですか?
QRコードの色を部分的に変えるだけのやつではなく
真ん中にアイコン入れたりしてあるやつです
0013デフォルトの名無しさん2014/03/11(火) 08:30:32.99
誤り訂正レベルを高くして作ったQRコードに無理やりかさねる
許容される大きさとかは実験的に調べる
0014デフォルトの名無しさん2014/03/11(火) 16:51:18.35
TCP/IPの通信プログラムについて質問です。
接続の時は、open()=SYNを送るという動きっぽいですが、
「close()=FINを送る」ではないのでしょうか?
ステップ実行しながらWireSharkで通信見てた所、
close実行まえに勝手にFINが出ちゃう気がします。
0015デフォルトの名無しさん2014/03/11(火) 16:52:01.67
大きいデータ読み込むときどうすればいいですか?
char[1000000][32]の配列を作りたいんですが
0016デフォルトの名無しさん2014/03/11(火) 16:56:13.28
>>15
malloc,calloc
0017デフォルトの名無しさん2014/03/11(火) 16:56:23.92
>>15
char *array[32];
for (i = 0; i < 32; i++) {
 array[i] = malloc(1000000);
}
0018デフォルトの名無しさん2014/03/11(火) 18:04:49.72
>>14
タイムアウトしてるとか、相手から RST くらってるとか
0019デフォルトの名無しさん2014/03/11(火) 20:03:27.11
質問です。

100 - ( 2 * ( 3 + 1 ) ) * 4 + 45 / ( 17 - 8 )

この式をC言語で計算するにはどうしたらいいでしょうか。
この式は文字列として与えられます。
0020デフォルトの名無しさん2014/03/11(火) 20:20:23.58
double calc_str(char *str)
{
return 100 - ( 2 * ( 3 + 1 ) ) * 4 + 45 / ( 17 - 8 );
}
0021デフォルトの名無しさん2014/03/11(火) 20:21:13.00
しくった.0にしていない
0022デフォルトの名無しさん2014/03/11(火) 20:24:12.46
と思ったけどこの計算ならintでよかったな
0023片山博文MZジェバンニ ◆T6xkBnTXz7B0 2014/03/11(火) 23:05:57.02
>>19
パーサジェネレータ
0024デフォルトの名無しさん2014/03/13(木) 15:13:40.52ID:dyPbFnv9
7年前のこれが本来の前スレかな。
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://toro.2ch.net/test/read.cgi/tech/1159613789/
0025デフォルトの名無しさん2014/03/16(日) 16:55:54.24ID:uzDcpeCR
>>19 逆ポーランド変換
www.logical-paradox.org/ja/nsxbasic/nsxbasic3.html
0026デフォルトの名無しさん2014/03/17(月) 14:07:32.11ID:pBjgcJ9b
C言語ってなんだよ、Cだろ。
0027デフォルトの名無しさん2014/03/17(月) 18:08:25.60ID:7shZynbj
自己参照構造体の延長?で
構造体(親)の中にある構造体(子)の要素に
親の構造体のアドレスを格納したいんだけど
下の書き方だとコンパイラにBASE_BLOCKが無い的な感じではじかれしまう
今の所 void* で親の構造体をポイントして動かしているんだけど
自己参照構造体みたいに
うまいtypedefの書き方って何かないですかね?

構造体�@
typedef struct{
  void *blk; // 現状
// BASE_BLOCK *blk; // 構造体�Bへの参照(こんな感じにしたい)
  char a,b,c;
} DATA1_BLK;

構造体�A
typedef struct{
  void *blk; // 上と同じイメージ
// BASE_BLOCK *blk;
  long a,b,c;
} DATA2_BLK;

構造体�B
typedef struct _BASE_BLOCK{
  DATA1_BLK d1;
  DATA2_BLK d2;
  struct _BASE_BLOCK *next;
  struct _BASE_BLOCK *before;
} BASE_BLOCK; // typedef はここ
0028デフォルトの名無しさん2014/03/17(月) 18:38:26.88ID:qNLDgXjv
出来そこないのプログラマが自慢大会するスレはここですか?
0029デフォルトの名無しさん2014/03/18(火) 02:08:28.97ID:G12u9CCe
>>27
貴重な時間を使ってまで糞コードを考えるなんて
常人にはできないやりかた
0030デフォルトの名無しさん2014/03/18(火) 07:36:00.64ID:CNPmaNLY
とりあえずgcc-3.4.4ではこんな感じで大丈夫だった

typedef struct _BASE_BLOCK BASE_BLOCK2; //二重定義にならないよう別名
typedef struct{
   BASE_BLOCK2 *blk;
   char a,b,c;
} DATA1_BLK;

typedef struct{
   BASE_BLOCK2 *blk;
   long a,b,c;
} DATA2_BLK;

typedef struct _BASE_BLOCK{
   DATA1_BLK d1;
   DATA2_BLK d2;
   struct _BASE_BLOCK *next;
   struct _BASE_BLOCK *before;
   int   a;
} BASE_BLOCK;
0031デフォルトの名無しさん2014/03/18(火) 07:36:44.00ID:CNPmaNLY
あ、自分で追加したint aが残ってた
0032デフォルトの名無しさん2014/03/18(火) 09:47:58.86ID:G12u9CCe
>>30
また誰も得をしないオナニーコードを書く狂人が現れた
オワコンCプログラマはこんなところでオナカキコしても誰も見向きもしない

気持ち悪いだけだからム板から出ていけ
0033デフォルトの名無しさん2014/03/18(火) 10:00:27.41ID:RDFvC1WB
これがエラーになる(C89以降の)コンパイラは見たことないし、仕様を満たしていない。
typedef struct hoge hoge;
typedef struct hoge {
int hoge;
} hoge;
0034デフォルトの名無しさん2014/03/18(火) 10:19:19.05ID:G12u9CCe
>>33
まーたhoge厨か
ゴミプログラマがよく使う記号だよな
>>33みたいなゴミ老害がのさばっていいスレじゃないからこのスレから出ていけ
0035デフォルトの名無しさん2014/03/18(火) 10:27:53.77ID:RDFvC1WB
釣れた。やはり荒らしてるのはアンチhogeのチョーセン人だったか。
0036デフォルトの名無しさん2014/03/18(火) 10:34:16.00ID:v3bNYbuZ
struct のタグ名 typedef 名 構造体のメンバ名
一番最後の衝突は(本能的にNGな感じだけど)考えたことはないな 
0037デフォルトの名無しさん2014/03/18(火) 10:41:15.56ID:6BNvI/8X
>>34
死ねよゴミ

>>35
一緒にカスウヨも死ねよ
0038デフォルトの名無しさん2014/03/18(火) 10:45:24.87ID:G12u9CCe
>>35
hogeを使う輩は例外なく老害ゴミプログラマ
C関係スレは書き込み時間帯がおかしすぎる
仕事してない人たちばっかりだね、老害スレはム板にとって不吉な存在なので
削除したほうがいい
0039デフォルトの名無しさん2014/03/18(火) 11:08:04.06ID:6BNvI/8X
てめぇが自分の存在を削除すれば解決!
0040デフォルトの名無しさん2014/03/18(火) 12:37:19.68ID:RDFvC1WB?2BP(1000)
こっちの方がより適切だな
typedef struct hoge hoge;
typedef struct hoge {
hoge *hoge;
} hoge;
0041デフォルトの名無しさん2014/03/18(火) 12:41:10.85ID:G12u9CCe
>>39
お前が自分の存在を削除すれば解決
0042デフォルトの名無しさん2014/03/18(火) 14:28:04.24ID:6BNvI/8X
低能はとっとと帰んなさい
0043デフォルトの名無しさん2014/03/18(火) 15:20:42.07ID:G12u9CCe
自己紹介しないで
0044デフォルトの名無しさん2014/03/18(火) 15:25:00.65ID:6BNvI/8X
自己紹介しかしてないバカが何言ってるの?
0045デフォルトの名無しさん2014/03/18(火) 15:25:49.92ID:6BNvI/8X
> 時間帯がおかしすぎる
> 仕事してない人たちばっかりだね、老害

これも自己紹介だったみたいだねw
0046デフォルトの名無しさん2014/03/18(火) 16:23:25.72ID:D+JCMuhn
連投荒らしはuyかQだろうな
他にいねえよ
0047デフォルトの名無しさん2014/03/18(火) 16:56:30.95ID:G12u9CCe
hogeしてる奴らは周りに迷惑かけてるのがわからないのか
0048デフォルトの名無しさん2014/03/18(火) 17:09:55.69ID:5NbZVbDL
君もほげとかぴよとか使っていいんだよ(太っ腹)
0049デフォルトの名無しさん2014/03/18(火) 17:14:37.08ID:v3bNYbuZ
http://toro.2ch.net/test/read.cgi/tech/1388050606/
0050デフォルトの名無しさん2014/03/18(火) 17:15:26.06ID:D+JCMuhn
>>47
あ、これでわかった
お前精神科まだ行ってなさそうだからQじゃなくてuyだな
0051デフォルトの名無しさん2014/03/18(火) 17:18:24.38ID:D+JCMuhn
>>47
お前の存在そのものが周りに迷惑を掛けているのが分からないのか
0052デフォルトの名無しさん2014/03/18(火) 17:25:03.25ID:G12u9CCe
>>51
迷惑かけているのは間違いなくhoge厨です
0053デフォルトの名無しさん2014/03/18(火) 17:39:42.38ID:6BNvI/8X
おまえが間違ってるから
0054デフォルトの名無しさん2014/03/18(火) 18:05:23.73ID:rfN06h31
aとかbとか使うやつに比べりゃ数倍良いと思うんだが>hoge
0055デフォルトの名無しさん2014/03/18(火) 18:08:19.11ID:6BNvI/8X
ゴミが主張してるだけだから
0056デフォルトの名無しさん2014/03/18(火) 18:18:58.53ID:G12u9CCe
hoge使う奴ってほんとhogeしか使わないし凄い不快
0057デフォルトの名無しさん2014/03/18(火) 18:26:17.22ID:6BNvI/8X
何が彼をここまでこじらせてしまったのか?
0058デフォルトの名無しさん2014/03/18(火) 18:31:28.53ID:G12u9CCe
響きが気持ち悪いよねhogeって
これに固着する意味がわからん
0059デフォルトの名無しさん2014/03/18(火) 18:51:33.92ID:6ldE9qSk
知るかボケw
要するにゆとり世代だからじゃねーかw
0060デフォルトの名無しさん2014/03/18(火) 19:01:51.99ID:xgiNCNGW
お前の頭に「固着」してるんだよw
0061デフォルトの名無しさん2014/03/18(火) 21:07:45.35ID:G12u9CCe
頭にhogeがこびりついてとれないんだな哀れ
0062デフォルトの名無しさん2014/03/18(火) 21:14:20.14ID:xgiNCNGW
自己紹介か?
0063デフォルトの名無しさん2014/03/18(火) 22:10:44.98ID:2YKt0V/o
>>61
fooとbarはどうなんだよ
0064デフォルトの名無しさん2014/03/18(火) 22:17:25.80ID:G12u9CCe
hoge厨は何から何までhogeで表現するからキモがられる
hogehogeまで使ってくるしな
0065デフォルトの名無しさん2014/03/18(火) 23:00:11.13ID:xgiNCNGW
オワコン人間が10もレスを投下して楽しい?
0066デフォルトの名無しさん2014/03/18(火) 23:35:07.20ID:xgiNCNGW
何も言えないのかなw
0067デフォルトの名無しさん2014/03/18(火) 23:35:44.97ID:G12u9CCe
どうしたの?hogeしたいの?
0068デフォルトの名無しさん2014/03/18(火) 23:36:59.52ID:xgiNCNGW
想像力も、現実を知る力も、欠片もないんだなw
0069デフォルトの名無しさん2014/03/18(火) 23:43:26.50ID:xgiNCNGW
意味不明なゴミ書き込みを排泄するドカた以下のゴミは黙れよ
0070デフォルトの名無しさん2014/03/19(水) 10:29:21.71ID:jbaTmMPB
人生ノーグッドのバカ荒らし君は今日も元気かな?
0071デフォルトの名無しさん2014/03/19(水) 10:53:54.70ID:pgTJKr0l
相変わらずCスレはニートタイム全開でレスがつきますね
このスレの異常性がうかがえますわ
0072デフォルトの名無しさん2014/03/19(水) 10:57:19.82ID:jbaTmMPB
ニートパワー全開で嫌がらせレスを書き込み続けている異常者が何を言ってるの?
0073デフォルトの名無しさん2014/03/19(水) 11:09:01.83ID:pgTJKr0l
ろくにコードすらかけないCグラマーは相変わらず抽象概念でしか物を語ることが出来ないね
0074デフォルトの名無しさん2014/03/19(水) 11:13:04.05ID:jbaTmMPB
まともな抽象化すらできないバカが何か言ってるw
0075デフォルトの名無しさん2014/03/19(水) 11:29:38.56ID:jbaTmMPB
存在する意味が無いから安心して消えていいんだよ?
0076デフォルトの名無しさん2014/03/19(水) 11:44:58.69ID:pgTJKr0l
アハハハハ、自己紹介がうまい
Cスレで煽ってくる奴等ってなぜか罵倒してるつもりが自分にはね返ってるよね
自噴のCの実力の劣等感から生じる衝動だと思うけどみっともないから止めたほうがいいと思うよ
0077デフォルトの名無しさん2014/03/19(水) 12:35:45.01ID:jbaTmMPB
これぞ自己紹介。
全部自分に跳ね返ってるから、生きるの止めた方がいいと思うよ。
0078デフォルトの名無しさん2014/03/19(水) 21:03:49.54ID:CAPa6Vgr
hogeって響きが嫌なら、尚更hogeの役割を果たせてるってことで完璧じゃん
「実用のコードでは適宜書き換えてくださいね」って場所に使う識別子なんだから
嫌がられるくらいでなきゃ困るんだよ
0079デフォルトの名無しさん2014/03/19(水) 21:20:26.89ID:pgTJKr0l
いやhogeに執着してる奴はとことん執着してる
しかも半端にうまいコードを毎回記述しようとしているから困る
hogeはウンコードでなければなりません、臭くなければなりません
hoge厨は住人の顰蹙を買うだけの不要な存在
0080デフォルトの名無しさん2014/03/19(水) 21:23:27.49ID:jbaTmMPB
> 住人の顰蹙を買うだけの不要な存在

これまた見事な自己紹介だなwwwww
0081デフォルトの名無しさん2014/03/19(水) 21:42:03.76ID:0SFSV+5e
そりゃー チョーセン人ですから
0082デフォルトの名無しさん2014/03/20(木) 09:49:48.35ID:0GGGoo3n
深夜3時にレスをバカにする超絶暇人バカは今日も暇なのかな
0083デフォルトの名無しさん2014/03/20(木) 10:44:28.63ID:0GGGoo3n
2ちゃんねるはお前の便所じゃねーんだよ。
必死にゴミを書き込むなカス。
0084デフォルトの名無しさん2014/03/21(金) 09:30:20.96ID:HWKg4coe
Rubyスレ荒らしてるんじゃねーよカス
だれもお前の意見なんて求めてないから消えろゴミクズ糞蛆虫
0085デフォルトの名無しさん2014/03/23(日) 00:44:39.92ID:ulVc1cS1
age
0086デフォルトの名無しさん2014/03/25(火) 23:02:31.71ID:1BEA8u0v
27です
ヒントを元に調べてたら
「相互参照」と「不完全な型」辺りをキーワードにしたら
良い感じの答えにたどりつけました
0087デフォルトの名無しさん2014/03/30(日) 01:27:12.01ID:/qrkiZMx
-(IBAction)goNext:(UIbutton *)sender{
NSUInteger n;
NSArray *arr = @[@0,@1,@2,@3,@4,@5,@6,@7];
for( n=4 ; n<8 ;n++){
label_1.text =arr[n];
label_2.text =arr[n];
label_3.text =arr[n];
label_4.text =arr[n];
}
(ラベルはインスタンス変数で、宣言しています)
これを実行するとarr[7]だけがラベルに表示されてしまいます。
初期値からn++されません。
理由はなぜなのでしょうか?教えてください。
0088デフォルトの名無しさん2014/03/30(日) 06:07:14.74ID:gN3GGTNV
>>87

先ず第一に、それはC言語ではない。
つまり、スレ違い。

第二に、やりたいことはループにする必要がないのではないか?
つまり、
label_1.text = arr[4];
label_2.text = arr[5];
label_3.text = arr[6];
label_4.text = arr[7];
ではないのか?
いずれにしろ、日本語の勉強も必要だな。
0089デフォルトの名無しさん2014/03/30(日) 09:10:17.86ID:/qrkiZMx
すみません。
0090デフォルトの名無しさん2014/04/02(水) 15:39:50.78ID:Q1E5S1db
配列のバブルソートなら
void bubblesort(int a[], int n)
{
int i , j;
int temp;

for (i = 0 ; i < n-1; i++){
for (j = n-1; j > i; j--) {
if (a[j-1] > a[j] ){
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
}
で出来ますが、
typedef struct person_tag {
int age;
char name[30];
char sex;
} person;
という構造体配列で
person p_array[] = {
{15,"Sayaka Iwata",'F'},
{25,"Ichirou Akagawa",'M'},
{10,"Ryoko Onoe",'F'},
{45,"Taichi Uemura",'M'},
{55,"Madoka Nomura",'F'},
};
とデータを入れてageの昇順に構造体配列をバブルソートするやり方教えて下さい。
0091デフォルトの名無しさん2014/04/02(水) 15:55:29.18ID:X4pbuSpw
int a[]
 ⇒ person a[]

int temp
 ⇒ person temp

if (a[j-1] > a[j] ){
 ⇒ if (a[j-1].age > a[j].age ){
0092デフォルトの名無しさん2014/04/02(水) 16:23:04.18ID:Q1E5S1db
素早い〜 w
ありがとうございました!
0093デフォルトの名無しさん2014/04/06(日) 19:56:15.71ID:2WWdU1gr
◎設問 : 何が出力されるか答えよ

int main(void){
char *c[] = {"ENTER", "NEW", "POINT", "FIRST"};
char **cp[] = {c+3,c+2,c+1,c};
char ***cpp = cp;

printf("%s", **++cpp);
printf("%s ", *--*++cpp+3);
printf("%s", *cpp[-2]+3);
printf("%s\n", cpp[-1][-1]+1);

return 0;
}

答えはもちろん実行してみれば出力されるのですが、
なぜそのようになるのか分かりません (´・ω・`)
0094デフォルトの名無しさん2014/04/06(日) 22:24:20.40ID:tUu4o0lA
>>93
多分学校の問題か何かだろうけど、非常に筋の悪い設問。
意味の学習としては使えるかもしれないけどね。
配列の要素がメモリ上でどう確保されるかを紙に書いて
学習すればわかりやすい。でもC/C++のポインタ関連は
演算子の優先順位がわかりにくいので、そっちも調べる
必要がある。
0095デフォルトの名無しさん2014/04/09(水) 20:43:30.57ID:aEvN9O81
リンクリストについて教えてください
構造体が
typedef struct holiday {
int ymd; //e.g 20140101
char holidayname[30]; //元旦
struct holiday *next;
} holiday;

という形であって日付を昇順になるように入れていくのは
直前の構造体のymd < 挿入するymd && 挿入するymd < 現在のymdの時に
直前の構造体のnextを挿入する構造体のアドレスにし、
挿入する構造体のnextを現在のymdの構造体のアドレスにする

というやり方になる…んですよね?
0096デフォルトの名無しさん2014/04/09(水) 21:20:05.75ID:5sKrTKuO
そう設計したのなら、そうなんでしょうね。
0097デフォルトの名無しさん2014/04/09(水) 21:42:34.98ID:1czKTaG/
>>95
コードで書いてくれ
0098デフォルトの名無しさん2014/04/09(水) 22:54:21.56ID:aEvN9O81
>>97
その具体的なやり方を知りたいなぁと思ってるんですが。
とりあえず、あちこちのサイト見ながら作ったのが

http://codepad.org/0ppn3tBz

ソースが汚いとか見にくいってのは勘弁の程を

でinsert_dateのところ 193 〜 198 で

//ここで日付の昇順になるようにつなぎ替える
p = head.next;
while( p != NULL ){
********************** ←ここの部分を教えていただきたいなぁと
p = p->next;
}
0099 ◆QZaw55cn4c 2014/04/10(木) 00:12:18.80ID:4bNYm9hY
>>98
ごめん途中で投げ槍になったから突っ込まんでくれ、でも質問してくれていい
http://codepad.org/TR9iO06H

日付の昇順にしたい、ということで
リンクリストをたどる中で、はじめて

「入力したデータの日付」<「着目ノードの『次』のノードの日付」

となったら、着目リストの後ろに放り込む
でどうかな?
0100デフォルトの名無しさん2014/04/10(木) 10:09:54.47ID:kr5KR7nN
>>99
102行目などは、printfのあとscanfの前にfflushしないと表示されない
DOSだと出るみたいだけど
275行目 0はTermのほうがいい
0101デフォルトの名無しさん2014/04/10(木) 15:43:59.32ID:4O9rt8DU
>>99

98です。夜に付き合っていただき感謝。考え方もそちらのほうが単純明快ですね
ポインタのポインタとかなかなかまだそこまでいきませんが(言われれば、あぁなるほど…ではあるんですが^^;)
じっくりソースを見させていただき、自分なりにいじってみたいと想います。
0102デフォルトの名無しさん2014/04/10(木) 22:00:30.41ID:4bNYm9hY
>>100
!!
thx a lot!

>>101
楽しんでください
0103デフォルトの名無しさん2014/04/13(日) 22:28:58.63ID:xpFiuadr
入門編じゃないC言語なら俺に聞け
0104デフォルトの名無しさん2014/04/14(月) 12:02:58.12ID:+4I+vlSz
ポインタを一言で表すとどういった言葉になりますか?
0105デフォルトの名無しさん2014/04/14(月) 12:28:39.89ID:SRwo2QpI
アドレス
0106デフォルトの名無しさん2014/04/14(月) 12:44:51.10ID:Bhf4pDIo
指すもの
0107デフォルトの名無しさん2014/04/14(月) 12:59:25.45ID:hlRl5VC5
面接でポインタを説明してくださいと言われたら?
0108デフォルトの名無しさん2014/04/14(月) 13:24:00.71ID:Bhf4pDIo
敵が襲ってきても守れます
0109デフォルトの名無しさん2014/04/14(月) 13:58:14.76ID:MAoTOR9V
ここまで猟犬なし。
0110デフォルトの名無しさん2014/04/14(月) 19:25:49.85ID:VLpr/JYL
>>103
「貴方がこの会社の面接に来られた理由を、ポインタを使ってわかりやすく
説明してください」
と言われたらどうする?
0111デフォルトの名無しさん2014/04/14(月) 21:58:22.07ID:M5Q2kr07
そっとドアを閉じて二度と開けません。
0112デフォルトの名無しさん2014/04/14(月) 22:18:22.47ID:pOLq2nzc
>>104
ひとことは、ムリだろ。ふたことなら…
p = &c;
*p = c;
0113デフォルトの名無しさん2014/04/14(月) 23:14:03.38ID:w8oFKsTO
>>104
ウルトラ警備隊専用車
0114デフォルトの名無しさん2014/04/14(月) 23:33:43.66ID:zoHFxkBT
http://image.search.yahoo.co.jp/search?rkf=2&;ei=UTF-8&p=%E7%8A%AC+%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC#mode%3Ddetail%26index%3D0%26st%3D0
0115デフォルトの名無しさん2014/04/16(水) 16:27:59.69ID:IgciLmNr
>>104
ダイエット
0116デフォルトの名無しさん2014/04/19(土) 09:56:41.40ID:Cpm/BfcX
プログラマーの人に聞きたいけど、仕事の速さって優秀な人と
そうでない人で1.5倍くらい差があったりするの?
0117デフォルトの名無しさん2014/04/19(土) 10:03:52.24ID:SVxJm38+
>>104
間接アドレッシング。
0118デフォルトの名無しさん2014/04/19(土) 10:05:49.26ID:aOosZTdR
>>116
余裕であると思う。
どんな尺度で測るかは難しいけどね。
開発期間だけで言えば、簡単なツールを10分で作れる人と丸1日かかる人がいる。
複雑なソフトになれば、そこに安定性と保守性という係数が入ってきて差はさらに広がる。
0119デフォルトの名無しさん2014/04/19(土) 10:08:19.46ID:Cpm/BfcX
>>118
でも丸1日かかるほうが残業代で稼げるとかそういう現状あったりする?
というかIT業界に入れたんだから丸1日が基準なのか10分が基準なのかは
どっちが正解か分からないね、10分で作れる人はよっぽど天才だったりす
るんじゃないだろうか?144倍の開発期間に差があるって中々ないような…
0120デフォルトの名無しさん2014/04/19(土) 10:09:37.61ID:jSbR7/rV
待遇と相談
0121デフォルトの名無しさん2014/04/19(土) 10:18:10.43ID:aOosZTdR
>>119
うーん、残業代で稼げる現状も場合によってはあると思う。
でもね、重要な事を見落とさないで欲しい。
優秀な人は自分の力で時間を作り出せるという事ね。
残業代で稼ぐか早く帰るかの選択は優秀な人にしかできないって事。
ぶっちゃけ、優秀な人は嘘をついて工数を水増しできるチャンスがあるけど、時間を作れない人はサビ残を断れない。
0122デフォルトの名無しさん2014/04/19(土) 10:34:32.12ID:aOosZTdR
>>119
あと、何もゼロから作る事が全てじゃないよ。
ゼロから作るのは遅くても、サッとコピペで作れればそれはそれで優秀。
コピペに限らず、コード流用できそうな事に気づけるか、流用しても問題ないか判断できるかってのも優秀さの一要因だよね。
この辺で10分と1日の差が出てくる。
0123デフォルトの名無しさん2014/04/19(土) 10:41:51.76ID:7oXT2c0B
会社に入ったらプログラミングがいっぱいできると思ってたのに
業務の9割がドキュメント作成・会議・検査などで、
ほとんどコードを書くことがない
その上、技術技術言ってるやつは下に見られてて、
プログラマーなんかキーパンチャーだと思われてる
プログラミングの経験を積んでベテランプログラマーになって
60歳になってもばりばりコードを書いていたいと思っていたのに
もはやこの業界に居ても目指すべき俺にはなれないと悟ったわ
0124デフォルトの名無しさん2014/04/19(土) 10:43:06.71ID:pON9XnrA
適切な言語を選べるかというのも有るな。
例えばだが。C++しか使えず、何でもC++でやろうとしている者に対して。
優秀な人は適切な言語を選んで短時間で済ませることが出来る。
0125デフォルトの名無しさん2014/04/19(土) 10:45:42.49ID:7oXT2c0B
コード書いてるって言ってるのはweb系かゲーム系だろ
0126デフォルトの名無しさん2014/04/19(土) 11:25:47.96ID:Cpm/BfcX
>>122
ありがとう
凄いんだね10分ってのは…
0127デフォルトの名無しさん2014/04/19(土) 11:48:49.93ID:ZwC8jtQo
>>126
たとえばさ。
とある機能を改修するときに、
・手間はかかるけど、従来の機能を維持したまま新しい機能を上乗せする
・手間はまあまあだけど、従来の機能そのものに手を入れる

実際にいまのプロジェクトであったことなんだけどね。
よく考えもしないで下の方法で改修をやりやがって、あとから違うバージョン間での互換が問題になった。
上の方法では1日、下の方法では半日で作業が終わるとして、
後から問題になって何時間か会議して、調べて、上の方法で 違 う 人 間 が実装し直すとしてだ。
144 倍ほどの差は出ないとは思うけど、最初から上の方法で実装したときに比べてどれだけ時間を浪費しただろうね。

単純な作業時間だけでなく、目先にことにとらわれない冷静な判断力が必要になることも多いよ。
※ただし、場合によっては上の方法が過剰実装だといって怒られることもある
0128デフォルトの名無しさん2014/04/19(土) 11:57:37.98ID:aOosZTdR
>>127
目先の楽さを選ぶ傾向って結構多いよね。
で、それで痛い目を見た人は過剰包装に陥りがちなのも確かだと思う。
その間にある落としどころを見つけられる人って少いよね。
0129デフォルトの名無しさん2014/04/19(土) 13:03:07.49ID:4q5aJb+n
カレントディレクトリを知るのに windowsでは、
currentdir.c
#include <stdio.h>
#include <string.h>
#include <windows.h>

int main(int argc, char* argv[]) {
char curdir[256];

GetCurrentDirectory(sizeof(curdir),curdir);

printf("Current Directory : %s\n",curdir);

return 0;
}

結果
D:\Data>currentdir
Current Directory : D:\Data

で、出せたんですけどここで
windows,.hを使うってことはwindows専用ですよね、これ。
じゃ、windowsが出る前(dosの時)はどうしてたのか?
unixやlinuxでも使えるようにはならないの?って疑問が。
0130デフォルトの名無しさん2014/04/19(土) 13:48:48.93ID:opS/PlHv
INT 21H、AH=47H とか
getcwd, getwd, get_current_dir_name・・・とか
0131デフォルトの名無しさん2014/04/19(土) 13:50:56.70ID:Db2IzPol
dosはDOS Service Call(int 21h)で取得してた
unixやlinuxではそういうシステムコールは無かった。procfs以前の実装方法を知ったらびっくりするぞ。
0132デフォルトの名無しさん2014/04/19(土) 14:44:57.38ID:H2bbwnYf
C言語の仕様にはディレクトリという概念自体が存在しないからな
MS-DOS 1.0 の頃とかディレクトリがないんだっけ?
0133デフォルトの名無しさん2014/04/19(土) 14:54:44.45ID:q67SPze0
フロッピー1MB行くか行かないかの時代にそんな無駄なものはいらん、いらんのじゃ
0134デフォルトの名無しさん2014/04/19(土) 14:57:51.57ID:ICvTvL96
昔のUNIXって、サーバもフロッピーだったのか
0135デフォルトの名無しさん2014/04/19(土) 15:09:44.33ID:LlSFsJPl
CPUに積まれてるFPGAの集積度が年々上がってるのは何故ですか?
何故HDDのメモリは無尽蔵にあがるのに、例えば10TB外付けなどです。
メモリ(キャッシュメモリ、メインメモリ)は中々上がらないのですか?
いくらHDDのメモリ容量があがっても、実行速度に影響するメインメモリ
やCPUの容量が上がらないとダメな気がするのですが、HDDは集積化しや
すくてメインメモリはしにくいのですか?
0136デフォルトの名無しさん2014/04/19(土) 15:10:23.58ID:j1F3U2CR
>>131
ちょっと調べてみた
/procfs有無はあまり関係ないかも。

新しいlinuxのgetcwd()はシステムコールになっていて、dentry構造体で
ディレクトリ名やparentのリンクが分かるので、リンクを遡ってrootまで辿る。
http://lxr.free-electrons.com/source/fs/dcache.c?v=2.6.36#L1930

古い実装は多分こんな感じ
http://www.opensource.apple.com/source/sudo/sudo-9/sudo/getcwd.c
cwdに一致するinoを、親ディレクトリ("./../")内で探すことで、カレントディレクトリの
名前を取得する、というのをrootまで繰り返す方式。
大量のファイルがあるディレクトリが途中にあると効率悪いね
0137デフォルトの名無しさん2014/04/19(土) 15:20:25.44ID:q67SPze0
>>135
キャッシュとメインメモリを一緒くたにされちゃ話が進まん
0138デフォルトの名無しさん2014/04/19(土) 15:24:58.56ID:j1F3U2CR
>>135
CPUに積まれてるFPGAって組み込み用のCPUのこと?
HDDのメモリってSSDのこと?
何を聞きたいのかよくわからんが、なぜ、一般的にHDDの方がメモリより大容量なのか
ということなら、コストの違いだろう。

その結果、遅いけど容量の大きいストレージと、速いけど容量の少ないメモリを
組み合わせてシステムを作るのが最適になる
0139デフォルトの名無しさん2014/04/19(土) 15:25:24.02ID:LlSFsJPl
>>137
まぁ一緒のものとして
何故メインメモリは集積度があがらないんですか?
HDDは32MB→10TB およそ30万倍
メモリは 32MB→32GB
およそ1000倍
何故ですか?
0140デフォルトの名無しさん2014/04/19(土) 15:30:44.22ID:LlSFsJPl
何故HDDも早くしないんですか?そうしたらページングみたいな手品
みたいなことしなくても、そのままメモリとして使えるじゃないですか
0141デフォルトの名無しさん2014/04/19(土) 15:39:53.82ID:j1F3U2CR
HDDはディスクという方式のため遅くなるが、先読みなど速くなるよう工夫されている。
また、たいていのUNIX系のOSなら、mmapでそのままメモリと同様に使えるようになっている。
0142デフォルトの名無しさん2014/04/19(土) 15:53:23.90ID:q67SPze0
考え方が間違っている

遅いんじゃなくて
速くなったらなったで無駄遣いするヘボが現れるから遅く感じるだけ
ヘボを駆逐しない限り戦いは終わらない
0143デフォルトの名無しさん2014/04/19(土) 17:07:03.01ID:4q5aJb+n
>C言語の仕様にはディレクトリという概念自体が存在しないからな

うへぇそうなんだ。
0144デフォルトの名無しさん2014/04/19(土) 17:50:52.00ID:jRqyICOu
>>132
すでに AT&T の時代に UNIX はその大半を C で記述されていたんですけれども
0145デフォルトの名無しさん2014/04/19(土) 18:27:17.58ID:LuoshK6s
ディレクトリという概念だけでなく、
ドライブという概念まであるMS-DOSは、
UNIX の一歩先を逝っているのかw
0146デフォルトの名無しさん2014/04/19(土) 19:45:23.34ID:jRqyICOu
>>145
portal fs もいまいち‥‥,事例を知らないだけかもしれないが
0147デフォルトの名無しさん2014/04/19(土) 19:47:30.81ID:j1F3U2CR
なぜ「先」だと思ったのか分からん
0148デフォルトの名無しさん2014/04/19(土) 19:49:33.74ID:jRqyICOu
>>147
>逝って
0149デフォルトの名無しさん2014/04/19(土) 20:24:29.85ID:x6NH31T1
>>135
CPUにFPGAは積まれていません。
FPGAはプログラマブルゲートアレイ。簡単に言うとゲートの配線を
プログラムで書き換えられるチップのこと。
CPUは配線をプログラムで書き換えることは不可能。
0150デフォルトの名無しさん2014/04/19(土) 20:27:56.03ID:jRqyICOu
>>149
あれ?FPUバグペンチアムの教訓から一部にせよ不可能じゃなかったっけ?
0151デフォルトの名無しさん2014/04/19(土) 20:29:03.75ID:x6NH31T1
ちなみにDRAMの速度が遅いのは構造が簡単で大容量化
しやすことのトレードオフ。

キャッシュメモリが1bitを5トランジスタで構成するのに対し、
DRAMは1トランジスタと1コンデンサで作れる。
ざっくり言うとキャッシュメモリはDRAMの5倍コストが高い。

8GBのDRAMモジュールが今だと15,000円ぐらいだけど
同じ容量で75,000円もしたら誰も買わないでしょ。
0152デフォルトの名無しさん2014/04/19(土) 20:30:22.92ID:x6NH31T1
>>150
マイクロコードの書き換えをFPGAというのは解釈が間違ってる。
0153デフォルトの名無しさん2014/04/19(土) 20:39:11.27ID:5Hp05dG5
>>123
お前がいくつか知らんが、見切りつけるなら早い方がいいぞ
0154デフォルトの名無しさん2014/04/19(土) 20:46:04.20ID:5Hp05dG5
>>140
早くできる方法提案してから言えよ
0155デフォルトの名無しさん2014/04/19(土) 20:51:05.09ID:LZqRudID
>140
どのレベルまで速くして欲しくて、
どうやったら出来るか技術的根拠を示してくれ。
0156デフォルトの名無しさん2014/04/19(土) 21:20:00.92ID:yBmPzOqP
>>139
市販車の最高速度だって、昔から300km/hくらいだろう
HDDの容量が30万倍になったからって、世の中のすべてのものが30万倍になるわけじゃないんだ
0157デフォルトの名無しさん2014/04/19(土) 21:31:12.53ID:MP1hLwSA
HDDは大容量で安い分、物理ディスクがぐるぐる回ったりするラグがあるからね
しかも、メモリみたいにものすごい頻度でアクセスすると物理的壊れやすい
0158デフォルトの名無しさん2014/04/19(土) 21:55:57.16ID:YxJ2dAgI
容量あたりの売り上げは下がる一方だよ!
0159デフォルトの名無しさん2014/04/19(土) 22:02:42.10ID:Db2IzPol
486DX-33MhzのいわゆるDOS/V機のはしりの頃は
DRAM4MB, HDD/130MB位が一般的だった
DRAMが1000倍に対しHDDが10000倍になっている
HDDは垂直磁気化というブレイクスルーがあったが、DRAMには開発当初からみても
トレンチだの多層化だの小さな改良にとどまり大きなブレイクスルーは無い
0160デフォルトの名無しさん2014/04/19(土) 22:07:10.53ID:lCAnEaLb
PS2は確かFPGAだっけ?間違ってたらすいません。
PS3のCELLと、PS4のジャグラーの違いって何ですか?

FPGA,CELL,ジャグラーを比べると
やはりジャグラーが一番高性能なICチップなんですか?
それとプレステのゲームはCやC++で書かれているというのは本当ですか?
0161デフォルトの名無しさん2014/04/19(土) 22:12:51.01ID:o0ZatWYG
まずはASICとFPGAの違いを
0162デフォルトの名無しさん2014/04/19(土) 22:13:04.65ID:x6NH31T1
>>160
まずFPGAとは何かという正確な定義を理解することが
先決じゃないですかね。
0163デフォルトの名無しさん2014/04/19(土) 22:15:11.98ID:lCAnEaLb
>>162
プログラム感覚でハードを構成できるVHDLの事だと思うのですが間違いですか?
例えば、ここはトランジスタを2個、でこの端子にNANDを繋ぐとかそういうのを
VHDLで出来るという事ですが、違いますか?
0164デフォルトの名無しさん2014/04/19(土) 22:22:31.44ID:t9BEvVQh
FPGAはプレイステーションなどには使わないだろ?買ったこと無いが、書き換え不可の専用チップのほうが高速で安価だろ。



FPGAとは 【 Field Programmable Gate Array 】 - 意味/解説/説明/定義 : IT用語辞典
プログラミングすることができるLSIのこと。
マイクロプロセッサやASICの設計図を送りこんでシミュレーションすることができる。
専用LSIより動作が遅く高価だが、ソフトウェアで回路のシミュレーションを行うよりは高速である。
1985年にXilinx社によって初めて製品化された。
http://e-words.jp/w/FPGA.html
0165デフォルトの名無しさん2014/04/19(土) 22:48:51.14ID:hxhpR/8R
typedef struct{
int a;
}TEST

こういう構造体を作って、呼び出し元でTESTの配列を作り、

void testKansuu(TEST* test){
test[0].a = 200;
}

こういう関数を呼び出す時、引数で構造体のポインタを受け取っているのに、なぜ
test[0]->a = 200;
ではエラーなのかというのがわかりません。誰か教えてください・・・
0166デフォルトの名無しさん2014/04/19(土) 22:59:18.24ID:EY4uPe0I
test->a = 200;
0167デフォルトの名無しさん2014/04/19(土) 23:03:18.03ID:opS/PlHv
>>165
変数 test の型が TEST* の時、test[0] の型は何だと思う?
0168デフォルトの名無しさん2014/04/19(土) 23:04:14.36ID:lCAnEaLb
>>164
ごめんなさい、勘違いでした
0169デフォルトの名無しさん2014/04/19(土) 23:33:32.96ID:XTYZNlSu
>>144
UNIXがCで記述されている事と
C自体にディレクトリの概念がない事は両立する
0170デフォルトの名無しさん2014/04/19(土) 23:44:38.91ID:t9BEvVQh
Linux Programmer's Manual
opendir, fdopendir - ディレクトリをオープンする
準拠
opendir() は SVr4 と 4.3BSD に存在し、 POSIX.1-2001 で規定されている。 fdopendir() は POSIX.1-2008 で規定されている。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/opendir.3.html


POSIXとは
IEEEによって定められた、UNIXベースのOSが備えるべき最低限の仕様のセット。
各OS間で最低限の互換性を確保するために定義された。
アメリカ規格協会(ANSI)や国際標準化機構(ISO)でも標準として採用され、
アメリカ政府機関に納入するUNIXシステムが守るべき必須条件となっている。
http://e-words.jp/w/POSIX.html



4.3BSD 1986 年にリリースされた 4.2BSD の後継。
System V release 4 (SVr4) SVr3 の後継。1989 年にリリースされた。
POSIX.1-2001, SUSv3 POSIX.1, POSIX.2, SUS の 2001年の改訂版である。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/standards.7.html
0171デフォルトの名無しさん2014/04/20(日) 00:19:41.50ID:9cgHqMq8
POSIXはCの規格じゃないからね
0172デフォルトの名無しさん2014/04/20(日) 00:25:38.30ID:eWgAayNP
言語仕様とライブラリの区別未だ無奴w
0173デフォルトの名無しさん2014/04/20(日) 00:31:58.01ID:DKsTJC1K
標準ライブラリは規格のうちだろ
0174デフォルトの名無しさん2014/04/20(日) 00:39:38.28ID:GQXLgTkD
chdir()は標準ライブラリですか?
そうでない場合、chdir()相当の関数が標準ライブラリに用意されていますか?
0175デフォルトの名無しさん2014/04/20(日) 00:43:26.34ID:VWvh3A+u
標準ライブラリとPOSIXは違うんじゃね
0176デフォルトの名無しさん2014/04/20(日) 00:45:30.03ID:gFkdD4A7
言語研究者かよ。
getcwd、chdirは言語仕様であってもなくても、実用上、標準と違いはだろ。
0177デフォルトの名無しさん2014/04/20(日) 00:46:49.62ID:DKsTJC1K
へーそーなんだ
0178デフォルトの名無しさん2014/04/20(日) 00:49:27.16ID:UE10veJp
ドライブという概念はパソコン(パーソナル・コンピュータ)用として
ごく自然な考え方だと思いまする。
0179デフォルトの名無しさん2014/04/20(日) 01:00:43.32ID:TERuptSv
典型的なhello world!!を表示するだけのプログラムでも
アルゴリズムと呼んで良いのですか?
0180デフォルトの名無しさん2014/04/20(日) 01:06:43.39ID:UE10veJp
普通は手続きの羅列をアルゴリズムとは言わないですね。
呼んではいけないという法は無いと思いますが。
0181デフォルトの名無しさん2014/04/20(日) 01:09:20.39ID:TERuptSv
>>180
どうもありがとうございました
調べ続けた結果、問題の解き方って出てたので、少し勘違いしていたみたいです。 

printf使っただけのプログラムをアルゴリズムって呼ぶのは何か違和感を感じました。
0182デフォルトの名無しさん2014/04/20(日) 01:34:23.12ID:KYYDJXO8
チンコとマンコは同時に存在しないのでXORの関係ですか?
0183デフォルトの名無しさん2014/04/20(日) 01:44:52.86ID:GQXLgTkD
ふたなりは実在するような記事はみかけるぞ。
0184デフォルトの名無しさん2014/04/20(日) 02:07:39.28ID:jJiPXZnf
>>178
ドライブって、駆動装置の事だって知ってるよね?
0185デフォルトの名無しさん2014/04/20(日) 02:24:56.55ID:UE10veJp
そうなのです。
現実に目に見えて手に取れる装置なのです。
パソコンは個人が管理し使用するものですから、装置も本人が手に取って
接続することでしょう。
マイクロソフト社のOSが優れていた点は、コンピューターの中にしかない
仮想的な世界を手で触れられる現実の世界とうまくリンクさせたことでしょう。
現実の世界に存在する装置が、コンピュータ内に独立した一つのオブジェクトとして
存在することは、ほとんどの人にとって理解しやすかったのです。
ゲイツ氏は「自分の母親が使えるようなコンピュータ」を作ろうとしました。
これが理念でありビジョンというものです。
そしてそれは広く受け入れられました。
さすがです。
0186デフォルトの名無しさん2014/04/20(日) 07:58:35.74ID:9Al1APE2
>>123
実際、ソフトの仕事は要件決めが、9割だから。
仕様がきちんと決まってれば、あとは作業するだけ。
0187デフォルトの名無しさん2014/04/20(日) 07:59:53.75ID:78551rL2
MS-DOSのこと?
0188デフォルトの名無しさん2014/04/20(日) 09:57:37.68ID:1afyOgOn
>>176
言語仕様ではない
それが現実

ただ、MS-DOSの頃はまだCは規格化されていなかった
0189デフォルトの名無しさん2014/04/20(日) 10:04:43.51ID:YTbrMQGj
難しい話になってまいりました
0190デフォルトの名無しさん2014/04/20(日) 10:08:06.45ID:DKsTJC1K
きさま、要件どおりに出来ているかの検証工数を考慮しないクソマネージャーだな!!!
0191デフォルトの名無しさん2014/04/20(日) 11:41:35.32ID:f5dP4g9k
関数をstaticにする意味はありますか
0192デフォルトの名無しさん2014/04/20(日) 12:30:04.40ID:QowT8cHi
>>119
> でも丸1日かかるほうが残業代で稼げるとかそういう現状あったりする?

出来ない奴は風呂入れず体が腐って脱毛・インキンになるくらい働いても
結果的に年収400万が上限だな。
出来ると言われる人は、週に2回4時間ほど出勤するだけで年収600万〜
だし、定時で働いたら年収にすると1200万以上もらえるもんだよ。
逆に言うと、そうだな、フルタイムで年収1000万を切るような
能力ならプログラマなんかやめたほうがいい。30歳になる前に。
安いのが職場のせいなら、わざわざ言わなくても分かると思うが、
別の職場も探したほうがいい。
まあそれが出来ない能力なら、やはりこの業界はやめたほうがいい。
くどいようだが「30歳になる前」にな。
でないと取り返しがつかないことになるだろう。
それが現実だ。
0193デフォルトの名無しさん2014/04/20(日) 12:30:34.78ID:hz5FtH46
マ板でやれ
0194デフォルトの名無しさん2014/04/20(日) 16:35:21.63ID:PbdtxenD
>>192
んで君は30過ぎてインキンになって低年収なんで言ってる事に真実味があるわけだな
よくわかった
0195デフォルトの名無しさん2014/04/20(日) 16:40:37.79ID:2OQiDT8K
>>191
基本的に全部staticにする勢いで考えて
どうしてもstaticにできないもののstaticを外す風にするといいよ
0196デフォルトの名無しさん2014/04/21(月) 19:53:07.89ID:tSPN//Zi
ここって数日前に始めた初心者の相談ものってくれるんですね
0197デフォルトの名無しさん2014/04/21(月) 21:07:39.52ID:ks00ewoZ
やはり

C言語なら俺に聞け(入門編)Part xxx

があった方がいいのだろうか
0198デフォルトの名無しさん2014/04/21(月) 21:17:03.11ID:Q9CWt8FH
何で消しちゃったのかしらん?
0199デフォルトの名無しさん2014/04/21(月) 21:19:38.70ID:NS334t72
hogehoge禁止とか訳わからんこと言い出す奴が居て嫌いなんだけど、個人的には希望
0200デフォルトの名無しさん2014/04/21(月) 21:56:08.87ID:Q9CWt8FH
test
0201デフォルトの名無しさん2014/04/21(月) 22:13:47.95ID:tSPN//Zi
あ、質問聞いてくれるんですかねだったわ
誤字誤字
0202デフォルトの名無しさん2014/04/21(月) 22:48:19.46ID:nDf0t8Hx
>>199
そんなもの無視して hoge なソースを公開していればいい
0203デフォルトの名無しさん2014/04/22(火) 14:31:06.36ID:obIqqU3+
初心者です。
16ビットのビット演算について教えてください。

unsigned short red,green,blue;
unsigned int color;

colorに高い方から、5,6,5というように、それぞれred、green、blueというようにデータが割り当ててあります。
ここでビット演算で各色を計算すると思うのですが、具体的にどのような方法が一番よいのでしょうか?
ご回答よろしくお願いします。
0204デフォルトの名無しさん2014/04/22(火) 15:59:12.12ID:6QMxCkN6
do{
printf("%d", num%10);
num=num/10;
}while(num>0);

中途半端ですけど、1963って入力すると3691と逆になります
C言語始めたばかりでよくわかりません・・・orz
詳しく説明してくれませんか?
0205デフォルトの名無しさん2014/04/22(火) 16:15:40.81ID:wbvUFYat
>203
思いつきで
#define RED_MASK 0xf800
#define RED_SHIFT (6+5)
#define GREEN_MASK 0x07e0
#define GREEN_SHIFT (5)
#define BLUE_MASK 0x001f
#define BLUE_SHIFT (0)

color = ((red & RED_MASK)<<RED_SHIFT ) | ((green & GREEN_MASK)<<GREEN_SHIFT ) | ((blue & BLUE_MASK)<<BLUE_SHIFT);

red,green,blueが各値のMAX値を超えない保証があるならマスク不要。
0206デフォルトの名無しさん2014/04/22(火) 16:23:49.70ID:wbvUFYat
分離
red = (color & RED_MASK)>>RED_SHIFT;
green = (color & GREEN_MASK)>>GREEN_SHIFT;
blue = (color & BLUE_MASK)>>BLUE_SHIFT; /*最適化でシフト工程削除を期待*/
0207デフォルトの名無しさん2014/04/22(火) 17:00:25.92ID:W0hXuU4O
>>204
1693 ÷ 10 で余り 3
商をnumに代入 でnum は169
169 ÷ 10 で余り 9
商をnumに代入 でnum は16
16 ÷ 10 で余り 6
商をnumに代入 でnum は1
1 ÷ 10 で余り 1
商をnumに代入 でnum は0

継続条件が num > 0 なんでお終い
0208デフォルトの名無しさん2014/04/22(火) 18:03:16.12ID:rywqDi7U
printf("%d", num%10); の num%10はどういう意味?
0209デフォルトの名無しさん2014/04/22(火) 18:12:18.33ID:W0hXuU4O
%は 剰余 つまり余りを出すもの だから printf("%d", num%10); は numを10で割った余りを表示するってこと

C言語 加減乗除 でggr
0210デフォルトの名無しさん2014/04/22(火) 21:06:17.97ID:BSZVNMjV
負数の剰余が規格化されたのいつからだっけ?
0211デフォルトの名無しさん2014/04/22(火) 23:19:00.68ID:t/DqEaaB
>>205
シフトとマスク逆じゃね
っつうわけで

#define SHIFTED(val, COLOR) (((val) << COLOR ## _SHIFT) & COLOR ## _MASK)
#define VAL(color_val, COLOR) (((color_val) & COLOR ## _MASK) >> COLOR ## _SHIFT)

color = SHIFTED(red, RED) | SHIFTED(green, GREEN) | SHIFTED(blue, BLUE);
red = VAL(color, RED);
0212デフォルトの名無しさん2014/04/23(水) 06:28:07.52ID:2DXxZdhD
>>207>>209
ありがとうございました
02132052014/04/23(水) 08:11:08.34ID:nANgtZqL
>211
そうだねorz
0214デフォルトの名無しさん2014/04/24(木) 02:19:56.66ID:29x10p2Y
>>118
テストや保守は別の人がやるものじゃないのか?
0215デフォルトの名無しさん2014/04/24(木) 16:55:33.40ID:otCCdij/
開発した人が販売後保守担当になるのは珍しくないだろ。
0216デフォルトの名無しさん2014/04/24(木) 17:07:47.52ID:BYo0a+oS
int main(){
int n;
for(n = 3; n < 227 ; n++ ) // nの上限が n<228以上でバグ n = 227の時に動作不良
{ judge(n); }
return 0;}
judgeは整数nが素数ならば表示しそうでなければ何もしない関数なのですが、n<227以下なら正常に終わるのですが、
0217デフォルトの名無しさん2014/04/24(木) 18:06:58.54ID:BYo0a+oS
nの上限を227以上にすると途中でプログラムの挙動がおかしくなります。
judge()に問題があるのかと覆ったのですが、nの初期値を226にすると上限がn<359ならば問題ないのですが、上限を359以上にすると上と同じようにおかしくなってしまいます。
同じようにnの幅を小さくして実行すると正常にできるのですが、上限なし等にすると途中でおかしくなってしまうのはなぜですか?
コンパイラは"gcc version 4.8.1 20130909 [gcc-4_8-branch revision 202388] (SUSE Linux)"です
0218デフォルトの名無しさん2014/04/24(木) 18:18:41.15ID:+RFQ6aOq
judgeの中身に問題があるだけでしょ
0219デフォルトの名無しさん2014/04/24(木) 19:22:16.07ID:tXCIarBm
>>216
全部さらせ,話はそれからだ
0220デフォルトの名無しさん2014/04/24(木) 21:59:15.98ID:Dm4So2an
もしかして:オーバーフロー
0221デフォルトの名無しさん2014/04/25(金) 01:24:34.56ID:J0O0+fbt
>>216
void judge(int n)
{
int i;
for (i = 2; i * i <= n; ++i)
if (n % i == 0)
return;
printf("%d ", n);
}
0222デフォルトの名無しさん2014/04/25(金) 07:15:29.19ID:I0yUpS7C
int が 16bit 符号付だと i*i の計算が危ない

log(226 * 226) / log(2) → 15.6
226*226 の結果を符号無しで表現するのに 16bit 必要
0223デフォルトの名無しさん2014/04/25(金) 16:47:47.01ID:fQTWxI7Q
#include <stdio.h>
#include <stdlib.h> //pickup()
#include <dirent.h> //countfile()
int main(){
int n;
for(n = 227; n < 359 ; n++ ) // nの上限が n<228以上でバグ n = 227の時に動作不良
{ printf("judging %d\n",n);
judge(n);
usleep(50000);
} return 0; }
int judge(int n) // 整数nが素数かどうか判断
{ int i = 1;
int p;
p = pickup(i);
while( ( n % p ) != 0 ) {
if(p >= n/2)
{ break; }
else{
i ++;
p = pickup(i);}
}
if( ( n % p ) != 0 ) {
write(n);
printf("%d is prime number.\n", n);
return 1; }
else { return 0; }
}//judge is end
int pickup(int k) //k番目の素数を引き渡す
{ int pu;
char primefile[100];
sprintf(primefile, "./prime/prime%d.txt", k);
0224デフォルトの名無しさん2014/04/25(金) 16:49:01.80ID:fQTWxI7Q
FILE *fp;
fp = fopen(primefile, "r");
if( fp == NULL ) {
printf("file open is fale.");
} else {
fgets(primefile, 99, fp);
pu = atof(primefile);
}return pu;
} //pickup end
write(int n)//整数nを次のpirmeに書き込む
{ FILE *fp;
char filename[256];
int c = count(0);
c = c + 1;
sprintf(filename, "./prime/prime%d.txt", c);
fp = fopen(filename, "w");
fprintf(fp, "%d", n);
fclose(fp);
}//write is end
int count(void)// ./prime内にあるファイルの数を数える{
DIR *dir;
struct dirent *dp;
char path[10] = "./prime/";//対象フォルダを指定
dir=opendir(path);
int i = 0;
for(dp=readdir(dir);dp!=NULL;dp=readdir(dir))
{// printf("%s\n",dp->d_name);
i = i + 1; }
closedir(dir);
i = i - 2;
return i; }//count is end
0225デフォルトの名無しさん2014/04/25(金) 16:51:58.43ID:fQTWxI7Q
見難くてすいません。
やはりjudge()に問題があるのでしょうか?
0226デフォルトの名無しさん2014/04/25(金) 17:24:09.01ID:J7Pyepd0
ハード屋さんに質問です。
メモリの1と0の点滅の速度でデータを表現するって方法はダメなんでしょうか?
例えば4ビットで、点滅速度が10ギアあれば4^10=1000京個の状態を表せないですか?
0227デフォルトの名無しさん2014/04/25(金) 18:33:16.14ID:NEPb//MG
>>225
pickup(i) <--- i番目の素数を取得。
write(n) <--- チェック対象の数n。
に成ってしまってる。

あと、tmpfsは使えないんだっけ?
0228デフォルトの名無しさん2014/04/25(金) 18:45:03.59ID:S9fMZq7/
共用体って一体どういう状況で使うんですか?構造体なら判るんですが(と言ってもあくまでも入門者レベルでの話ですけど)
0229デフォルトの名無しさん2014/04/25(金) 18:45:07.91ID:NEPb//MG
>>226
>メモリの1と0の点滅の速度でデータを表現するって方法はダメなんでしょうか?

表現は可能だけど、速度固定?
1とか0が連続した場合を考慮すると、同期ビットが必要。

>例えば4ビットで、点滅速度が10ギアあれば4^10=1000京個の状態を表せないですか?

10ギガ?
従来技術で似てるのは分割アドレッシングかな。
例えば32ビットデータ、アドレス表現のために8ビットを4回出力するとか。
1000京=10^19は、64ビットあれば足りるから、4ビット点滅を16サイクルで可。
0230デフォルトの名無しさん2014/04/25(金) 18:50:16.04ID:NEPb//MG
>>228
・メモリ節約
・ビット毎に意味が有り、読み書きは8ビット単位(文字としてコーディング可)で行いたい場合。
組込みスレで聞いたら、他の用途も有るかも。
0231デフォルトの名無しさん2014/04/25(金) 19:43:32.21ID:FFnZjqaH
>228
バージョンによってデータ構造が変わってるとき、一つの型で対応可能。

struct {
int ver;/*バージョン番号*/
union {
struct { /*バージョン1用*/
...
};
struct { /*バージョン2用*/
...
};
...
02322282014/04/25(金) 20:29:16.80ID:S9fMZq7/
レスありがとうです。
なかなかイメージが湧きにくいんですが、例えば1つのファイルをこのレコードはAというデータ用のフォーマット、これはBというデータ用のフォーマット…
的に使っているみたいな?(あくまでも例えですが)。
0233デフォルトの名無しさん2014/04/25(金) 20:35:47.15ID:dV13/S1E
>>229
8ビットで32ビットを表現できるんですか?それってその代りどこかの場所を
24ビット分使ってるって事ですか?
0234デフォルトの名無しさん2014/04/25(金) 20:44:51.58ID:G5RxlAgl
>>228
組み込みなどでメモリに割り当てられたレジスタを
1バイトまるまるアクセスしたい場合とビットアクセスしたい場合とか
0235デフォルトの名無しさん2014/04/25(金) 21:04:07.77ID:jPmvuOB6
>>228
昼はうどん屋で夜はキャバレー
0236デフォルトの名無しさん2014/04/25(金) 22:24:34.87ID:KbLWmMY4
初心者が使うことはないとおもう
そのあとに登場した言語でも共有体はないものがほとんど
0237デフォルトの名無しさん2014/04/25(金) 22:33:20.64ID:vKWRVcWD
ハードの話をしている奴、せめて雑談スレ辺りでやってくれ。
余りに頓珍漢過ぎて突っ込みどころ満載なんだがスレ違い過ぎる。
0238デフォルトの名無しさん2014/04/25(金) 22:36:30.33ID:I0yUpS7C
乱暴なキャストみたいなものだしねー

char a[8];
*(long *)&a = 5;
0239デフォルトの名無しさん2014/04/25(金) 22:37:06.12ID:I0yUpS7C
&いらないがな
0240デフォルトの名無しさん2014/04/25(金) 22:48:33.17ID:S9fMZq7/
>>236

なるほど〜。その必要が出てきた時に…ということにしておきます。
ありがとう
0241デフォルトの名無しさん2014/04/25(金) 22:56:52.48ID:87xzAhfm
>>238
乱暴なキャスト??
はぁああああ???
0242デフォルトの名無しさん2014/04/25(金) 23:12:10.60ID:FFnZjqaH
DirectXとか使うようになると必要な知識。>union
概念だけ覚えておけば十分だけど。
0243デフォルトの名無しさん2014/04/26(土) 08:34:42.65ID:GFDthRRc
ルネサス提供のIO定義はこんなんだな
struct st_port {
 union {
  struct {
   unsigned char B7:1;
   unsigned char B6:1;
    :
   unsigned char B0:1;
  } BIT;
 unsigned char BYTE;
 } PDR;
};
#define PORT0 (*(volatile struct st_port*)0xFFFFFF00)

PORT0.PDR.BIT.B0 = 0;
PORT0.PDR.BYTE &= ~0x01;
0244デフォルトの名無しさん2014/04/28(月) 20:57:10.27ID:Ukx0JAM/
初心者で型変換で頭がこんがらがっています

char型の一文字、”a”という文字をアスキーコードの97になるように出力するコードを教えてください!
よろしくお願いします!
0245デフォルトの名無しさん2014/04/28(月) 21:19:08.18ID:BzoKLgJq
printf("%d",'a');
0246デフォルトの名無しさん2014/04/28(月) 21:29:58.91ID:Y7MCHYkV
C言語に文字や文字列の型は無いよ。
「これは文字コードだ」「これは文字列だ」と仮定して処理してるだけ。
02472442014/04/28(月) 22:48:31.44ID:Ukx0JAM/
自己解決しました
スレ汚しすみません


#include <stdio.h>
int main(void)
{
char x = 'a';
int b;
b = (int)x;
printf("%d",b);
return 0;
}
0248デフォルトの名無しさん2014/04/28(月) 22:58:18.12ID:hrRMkWp4
intよりuint8_tの方が好み
0249デフォルトの名無しさん2014/04/28(月) 23:03:04.84ID:rohD7ll5
>>245-246の簡潔な回答を完全スルーして
自己解決したと言い切る>>247はすごいと思う。
0250デフォルトの名無しさん2014/04/28(月) 23:24:14.35ID:M9nPC3Y9
>>249
KACさん、ここはム板じゃないんでIDでバレバレですよ。
0251デフォルトの名無しさん2014/04/29(火) 00:16:42.59ID:DTtenoOg
>>250
ここはム板な訳だが?
つか、粘着君必死だな
0252デフォルトの名無しさん2014/04/29(火) 15:53:04.40ID:+GFTFC3I
教えて下さいm(__)m
Win7 BCC32 で、CSVファイルを開いて画面に出力するもの

http://codepad.org/dm194OSq

なんですが、終了時に異常終了しています。
また見てみると先頭の値がおかしいし。

http://www.dotup.org/uploda/www.dotup.org5026133.jpg

どう直せばいいんでしょう
0253KAC2014/04/29(火) 15:57:56.95ID:3cTlepGQ
>>252
22行目のパラメータが足りないからメモリこわしてる。
一つ目の%に対する変数を見直してみな。
0254デフォルトの名無しさん2014/04/29(火) 16:20:35.74ID:Fa4k2u0F
きたねぇソースだなあ。もうちょっと読み込みロジック工夫しようぜ。
人が読んで理解しやすいソースがいいソース。
0255デフォルトの名無しさん2014/04/29(火) 16:29:07.40ID:+GFTFC3I
ありがとうございます。
>>253
あれが悪さをしてたみたいです。感謝

>.254
そうですか?一人でやってるもので他人のソースは見る機会がないもんで。
どう変えれば「人が読んで理解しやすいソース」になります?
0256デフォルトの名無しさん2014/04/29(火) 16:55:01.78ID:CgT7pfVi
特に汚いという判断できるような長さじゃないだろ
一つだけ挙げるなら、カンマのうしろはスペースあけろってことくらい
カラム数が9個で決め打ちなのはただのお遊びプログラムならよくあること
0257デフォルトの名無しさん2014/04/29(火) 17:47:21.13ID:w+aVJCtD
そやね
全然正常の範囲よ
本物の糞コードはもっと臭ってるから

本物の糞コードはこれだ
1) 抽象化が下手か、皆無
2) 名前が糞
3) 分かってなくてこれ書いてるな、と丸分かりな箇所がある
4) コピペが見え隠れする
5) どうやったらそうなるんだ、という脅威の遠回り長文ロジック

そんで、糞コード書くやつってもれなく言い訳がましいからw
0258デフォルトの名無しさん2014/04/29(火) 17:52:27.24ID:r23HAMeu
if(a==0 && b==0) {
...
} else if(a==0 && b==1) {
...
} else if(a==1 && b==2) {
...
} else if(a==2 && b==0) {
...
} else if(a==1 && b==1) {
...
0259デフォルトの名無しさん2014/04/29(火) 18:42:40.91ID:u8cJRNln
>258
c = a*1000 + b;
if(c==0) {
...
} else if(c==1) {
...
} else if(c==1002) {
...
} else if(c==2000) {
...
} else if(c==1001) {
...

なんてね。
0260デフォルトの名無しさん2014/04/29(火) 20:41:31.24ID:Fa4k2u0F
sscanfをブロックで区切ってループで処理するとか、
どうしても1行で済ませたいなら改行とインデントで
何を読み取ろうとしているのかわかりやすくするとか。
ベタで1行に大量の項目を並べると理解度は下がる。
0261デフォルトの名無しさん2014/04/29(火) 20:49:42.18ID:ukQbEq4U
この程度で理解度って何なの
0262KAC2014/04/29(火) 21:04:28.15ID:3cTlepGQ
>>260
sscanfでやってる処理を区切ると余計見づらくなると思うが。
一行で書けるなら一行に収めるのも一つの手法。

それはそうとして、あのソース見れば解ったとは思うけど、
あの処理はあれで完成じゃないぞ?
段階を追って作っていく中でつまづいた質問だろう。
そもそもそんなに目くじら立てんでもいいだろ?
0263デフォルトの名無しさん2014/04/29(火) 21:31:21.29ID:gpRdg9fO
>>262
> 一行で書けるなら一行に収めるのも一つの手法。

まったく同意。
この場合みたいなテストプログラムならなおさら。
一行ですむもんをぐだぐだ書いたってしゃあないの一言。
0264デフォルトの名無しさん2014/04/30(水) 09:44:25.00ID:+wNot7iM
副作用完了点までの間に複数の副作用を含まないなら1行で書くべきだとは思うがなあ
0265デフォルトの名無しさん2014/05/01(木) 00:18:37.20ID:3vaVvjrK
>>264
> 副作用完了点までの間に複数の副作用を含まないなら

複数含んでたら書き方以前の問題かと
0266デフォルトの名無しさん2014/05/01(木) 02:55:46.95ID:y8YtF35m
>>265
は?
0267デフォルトの名無しさん2014/05/01(木) 18:43:32.27ID:gF+7r6TF
a[i++] = i; こういうのじゃなく(論外)

*a++ = *b++; こっち側を通すかどうかの話でしょ?
0268デフォルトの名無しさん2014/05/01(木) 20:06:05.44ID:SQr5GroH
紛らわしいから()すればいいだけの話
0269デフォルトの名無しさん2014/05/01(木) 20:20:12.29ID:5gqYN/3d
どう括弧するの?
0270デフォルトの名無しさん2014/05/01(木) 21:03:10.82ID:zNLeyvzf
演算子の優先順にそって明示的にカッコを入れて欲しいって事じゃないかな?
普段から常用してる言語ならいいけど
たまにしか書かないようなものは読みづらいからね
0271デフォルトの名無しさん2014/05/01(木) 23:12:43.17ID:CqnWdcr7
カッコつけて書いて
イメージわからん
0272デフォルトの名無しさん2014/05/02(金) 13:57:38.77ID:L/TPuthe
副作用完了点を理解してない奴は混乱するから参加するな
0273デフォルトの名無しさん2014/05/03(土) 20:32:00.11ID:CisfHpp9
const char*とchar* constの違いを教えて下さい。
0274デフォルトの名無しさん2014/05/03(土) 20:54:06.07ID:SK8slS+P
const char*は指し示す先がconstになる
char _a;
const char* a = &_a;
*a = 1; /* NG */
a++; /* OK */

char* constはポインタがconstになる
char _b;
char* const b = &_b;
*b = 1; /* OK */
b++; /* NG */

const char* constはどっちもconstになる
char _c;
const char* const c = &_c;
*c = 1; /* NG */
c++; /* NG */
0275デフォルトの名無しさん2014/05/03(土) 20:57:47.16ID:0KpDKEU+
const char *p // const char へのポインタ。初期化後は代入できない領域へのポインタ。*p = 'a'できない。
char *const p // charへの、constポインタ。*p = 'a'できるがp = &othercharできない。
0276デフォルトの名無しさん2014/05/04(日) 20:38:50.42ID:3UsGawbE
要素数を計算して出す時にint型なら、例えば

int size;
int ar[] = { 1,2,3,4,5,6,7,8,9};
printf("要素数は %d\n", sizeof(ar) /sizeof(ar[0]));

で、9とでてきますけど、文字の配列で例えば

char *mojiar[] = {
"line1",
"line2",
"line3",
"line4",
"line5"
};
となってる時に、要素数はどうすれば出せますか?
0277デフォルトの名無しさん2014/05/04(日) 20:47:03.84ID:0ZuyhgxY
同じでしょ?
sizeof (mojiar) / sizeof(char *)
0278デフォルトの名無しさん2014/05/04(日) 20:52:32.63ID:3UsGawbE
おおっw ありがとうございます。
0279KAC2014/05/04(日) 21:51:14.83ID:nXeCksGu
例と同じように変数名でいくなら

 sizeof (mojiar) / sizeof(*mojiar)
0280デフォルトの名無しさん2014/05/05(月) 05:54:47.33ID:H8XQmoUY
俺はこう書いてる
sizeof mojiar / sizeof mojiar[0]
0281デフォルトの名無しさん2014/05/05(月) 08:28:45.04ID:xbN8Vu9G
俺はカッコ含めずに書いてマクロで使ってる
#define N(mojiar) (sizeof mojiar / sizeof *mojiar)
0282デフォルトの名無しさん2014/05/05(月) 16:20:46.21ID:/jkwSONz
C言語勉強中です
Cに向く人、向かない人の違いってありますか?
たとえばチンチンが臭い臭くないとかオナニーは皮派とか
0283デフォルトの名無しさん2014/05/05(月) 16:24:22.03ID:G/LEF2WP
>>282
剥くか剥かないかってことか
0284デフォルトの名無しさん2014/05/05(月) 16:54:26.55ID:IS5v0d9K
こんな計算してなんになるって考えている人は向いていない
0285デフォルトの名無しさん2014/05/06(火) 09:46:12.21ID:vwF5zeGs
ちなみにC言語の文字列は4種類のポインタで管理してある
1スタックポインタ
2ヒープポインタ
3マクロポインタ
4ポインタ

freeで解放出来るのは2のヒープポインタだけ
0286デフォルトの名無しさん2014/05/06(火) 10:30:40.89ID:G4//2ydq
Cの文字列はNULで終わる charの配列で、ポインタは一種類しかない
0287デフォルトの名無しさん2014/05/06(火) 11:17:17.43ID:R4LFdeTL
>>285
スタックポインタはレジスタの一種だ

「マクロポインタ」とはいったいなんだ?なにをいいたい?
0288デフォルトの名無しさん2014/05/06(火) 17:38:30.99ID:9sMBK1rg
メモリポインタだろ
0289デフォルトの名無しさん2014/05/06(火) 17:42:25.87ID:Q6ONYLly
ダブルポインタなる用語を得意げに使うアホといっしょ。
0290デフォルトの名無しさん2014/05/06(火) 17:44:45.15ID:N+NRabHR
>>285はコピペ
0291デフォルトの名無しさん2014/05/06(火) 17:45:09.31ID:YllznT6S
ポインタ値はただの数値。
0292デフォルトの名無しさん2014/05/06(火) 18:13:01.07ID:V0rBJUJI
添え字が0からってのが凄いややこしいけど、言語によっちゃ1から始まる
配列もあるんでしょうか?統一しないんでしょうか?
0293デフォルトの名無しさん2014/05/06(火) 18:22:43.05ID:R4LFdeTL
>>292
数学にだって、自然数は 0 からはじまる、と定義する流儀もあれば、1 からはじまる、とする流儀もあるし、統一はむりじゃないか?
0294デフォルトの名無しさん2014/05/06(火) 18:23:13.04ID:ACrdZTCb
>>292
別に1から使っても構わんけど?
0295デフォルトの名無しさん2014/05/06(火) 18:24:19.24ID:+MWBoNlC
>>294の回答が実にクール。
0296デフォルトの名無しさん2014/05/06(火) 18:32:35.80ID:dMgIQu+f
>>286
ぬるぽ。
0297デフォルトの名無しさん2014/05/06(火) 18:34:37.97ID:I472fBGh
計算がやりやすい時に、配列先頭を使わないでおくのはよくあるな
0298デフォルトの名無しさん2014/05/06(火) 18:50:31.35ID:iz76HTaG
>>292
>言語によっちゃ1から始まる配列もあるんでしょうか?

FORTRAN という科学技術計算向け言語は1から始まる
また Pascal や Modula といったアルゴリズムの記述を目的に
教育用途から発展した言語だと、
a[1..N] みたいに任意の下限と上限を宣言できたりする

C言語はOSなどのシステムプログラミング向けに設計され、
それ以前はアセンブリ言語で書かれたコードを
構造化された高級言語で置き換えることを目的としていた
もしアセンブリ言語を知っていれば、
a[0] が *(pa + 0) と等価でありa[1] が *(pa +1) と等価であることに関して、
ポインタ pa とはCPUのインデックスレジスタであり
*(pa + 0) が相対アドレッシングであるから、
配列の添字が相対アドレッシングのオフセット値に対応する概念であると
容易に直感できる

こうした歴史的背景があるから、少なくともC言語の仕様として
配列の開始が0ではなくなることは、まず考えられないと思われる
0299デフォルトの名無しさん2014/05/06(火) 22:51:09.46ID:6lVuVN20
VBAだと、モジュールの先頭で Option Base指定で 0または1のどちらかを指定できる
デフォルトでは0
0300デフォルトの名無しさん2014/05/06(火) 23:44:36.43ID:wMsmsiA/
昔のBASICは1オリジンだったな
今はもう頭が0オリジンになっちゃってて久々にVBやると間違えそうになるけど
0301デフォルトの名無しさん2014/05/07(水) 08:24:45.99ID:FZZA6k3k
>>299-300
そもそも VB なら
Dim A(-5 To 5, 1 To 50)
とかできるし。
0302デフォルトの名無しさん2014/05/07(水) 16:15:33.88ID:up6dAhbL
for(i=0;i<10;i++){
cc = buff[i*4];
}

>292
perlじゃ0 = nullだから
知らずにやると痛い目見る
0303デフォルトの名無しさん2014/05/07(水) 20:36:01.90ID:g53DG78n
++i と i++ って何が違うん?
0304デフォルトの名無しさん2014/05/07(水) 20:40:37.90ID:x+fgQX7M
int i = 0, j = 0;
int a = i++;
int b = ++j;
0305デフォルトの名無しさん2014/05/07(水) 20:41:11.59ID:C2atmMD0
副作用完了点
0306デフォルトの名無しさん2014/05/08(木) 08:51:57.03ID:T/af7hsE
-の添字が配列後端を指すとか配列の手前のセグメンテーションフォルトの位置を指すとかそれも面倒。
0307デフォルトの名無しさん2014/05/08(木) 12:31:26.83ID:4bzQOeSA
一つ教えてください〜バイナリファイルのランダムアクセスってレコード番号を指定して読みだすんですよね?
ホストのVSAMやRDBみたいにキーを指定してってのは…無いんですか?
0308デフォルトの名無しさん2014/05/08(木) 13:19:18.28ID:saEXqLt0
>>307
>レコード番号を指定して読みだすんですよね?

いや、違う
C言語でバイナリファイルと言えば、一般的には
1バイト単位にアクセスできる列(ストリーム)を指す
具体的には、ファイルの先頭を0とした相対的なバイト位置
(これをオフセットと呼ぶ)をライブラリ関数 fseek で指定し、
fread や fwrite でアクセスするのが基本


>キーを指定してってのは…無いんですか?

UNIXであればISAMに相当する標準ライブラリとして dbm がある
また dbm から派生した gdbm(GNU版dbm)やbdb(Berkeley DB) などを
使うケースも多い
特に bdb はWindows版もありオラクルに買収されたほどよく知られている

ここで書いた fseek や dbm といったキーワードで調べるといいと思う
0309デフォルトの名無しさん2014/05/08(木) 15:52:14.38ID:Pn75zzX2
>>レコード番号を指定して読みだすんですよね?
BasicかYO! w
0310デフォルトの名無しさん2014/05/08(木) 16:02:42.17ID:4bzQOeSA
ありがとうございます。

また勉強しますm(__)m
0311デフォルトの名無しさん2014/05/08(木) 16:18:34.28ID:/l8rqogH
コボラーかよ
0312デフォルトの名無しさん2014/05/08(木) 20:13:26.27ID:Ute3QYwM
int a[10];
と宣言した配列に、後から、
a[0] = 3;
a[1] = 15;
a[2] = 31;

と値をひとつひとつ入れていくのではなくて、
a = {3, 15, 31, …}
みたいな感じでいっぺんに入れてやる方法はないでしょうか。
配列の宣言時に出来るのは知ってますが、後からいっぺんに値をいれる方法がわかりません。
宜しくお願いします。
0313デフォルトの名無しさん2014/05/08(木) 20:19:23.59ID:EUIeAaSZ
別の配列に入れておいてmemcpy。
言語仕様的にかけたとしても中身は変わらん。
0314デフォルトの名無しさん2014/05/08(木) 20:33:39.71ID:Ute3QYwM
>>313
C言語にはそういう書き方はないということですかね
ありがとうございました。
0315デフォルトの名無しさん2014/05/08(木) 23:07:24.24ID:2uAXp7x3
struct hoge {
int hoge[10];
} hoge;
hoge = (struct hoge){
{
[0] = 3,
[1] = 15,
[2] = 31,
}
};
0316デフォルトの名無しさん2014/05/10(土) 15:36:09.18ID:lg7l82Ku
ある数(scanfのやつ使って文字適当に決める)の100の位を出す問題なんだけどわからん。例えば実行ファイルで12345の数を打ったら百のくらいは"3"ですみたいなのを出したいんだけどさっぱりわからん
0317デフォルトの名無しさん2014/05/10(土) 15:41:59.91ID:ekEKKV6e
atoi([入力]] / 100 % 10 みたいのじゃダメなん?
0318デフォルトの名無しさん2014/05/10(土) 16:03:32.85ID:NonsVfNu
>>317
なるほど!ありがとうございますm(__)m
0319デフォルトの名無しさん2014/05/10(土) 22:36:01.26ID:daXnFUnI
バイナリファイルの読み出しなんですが^^;
typedef struct testdata{
int test1;
int test2;
char nm[10];
} dat;

↑のフォーマットで5件バイナリデータを作って一気に表示させるのは
FILE *fp;
dat dt;
while ( fread(&dt,sizeof(dat),1,fp) > 0 ) {
printf("%d件目 %d %d %s \n",i+1 , dt.test1 ,dt.test2 ,dt.nm );
i++;
}
で、出来たんですが、、、
例えば、このデータで3件目のレコードを表示させたいって時のやり方教えてくださいm(__)m
0320デフォルトの名無しさん2014/05/10(土) 22:47:26.86ID:mSYbJb4o
逆に聞きたい。なんで出来ないの?
0321デフォルトの名無しさん2014/05/10(土) 23:02:48.61ID:ekEKKV6e
いきなり3件目ってことなのかね。
fseek( fp, sizeof( dat ) * 3, SEEK_SET ); で解決だったりして。
0322デフォルトの名無しさん2014/05/10(土) 23:04:21.70ID:ev7/gDLE
件目
といった時
1オリジンだから
*2じゃないかな
0323デフォルトの名無しさん2014/05/10(土) 23:05:21.85ID:O2yhZ3ex
sizeof(構造体)と構造体メンバーの合計サイズがイコールとは限らないとか
そういう問題じゃなくて?
0324デフォルトの名無しさん2014/05/10(土) 23:13:45.12ID:PndWl6nF
デバッグ的な感じの表示だけなら
i == 2 の時だけprintfすればいい気が
処理コスト的に考えればやっぱりfseek使う方がスマートだと思う
03253192014/05/10(土) 23:23:53.38ID:daXnFUnI
fseek( fp, sizeof(dat)*3, SEEK_SET );
printf("%d %d %s\n", dt.test1 , dt.test2 , dt.nm);
としたんですが、表示がおかしいんですよ。
後、
>sizeof(構造体)と構造体メンバーの合計サイズがイコールとは限らないとか
それも聞こうと思ってました。出来たのを見るとファイルサイズが100バイトになってるのが?なんですけど。
0326デフォルトの名無しさん2014/05/10(土) 23:25:34.78ID:ev7/gDLE
#pragma pack
で検索だな
0327デフォルトの名無しさん2014/05/10(土) 23:31:44.38ID:ekEKKV6e
まずは fseek を調べるところから始めろよ。
それでどーして表示できると思えるんだ。
0328デフォルトの名無しさん2014/05/11(日) 00:01:47.36ID:/Ar5RUMp
sizeof(dat)一つが20バイトでその中身は
int test1 4バイト int test2 4バイト char nm[10] が10バイト
そして多分最後に詰め物が2バイト
それが5セットで100バイト

fseek( fp, sizeof(dat)*2, SEEK_SET );
fread(&dt,sizeof(dat),1,fp);
printf("%d %d %s\n", dt.test1 , dt.test2 , dt.nm);
03293192014/05/11(日) 00:03:30.38ID:9n+Ded1d
>>327
すいませんね
fseek( fp, sizeof(dat)*3, SEEK_SET );
if (fread(&dt, sizeof(dat),1,fp) == 1){
printf("%d %d %s\n", dt.test1 , dt.test2 , dt.nm);
}
で出来ました。この件数の位置については>>322さんの言うとおりで、それも修正しないといけないですが。
後、>>326さん、ありがとです。
0330デフォルトの名無しさん2014/05/18(日) 15:31:10.25ID:FscDVE+k
if文が10個あるのと、switchでcaseが10個あるのとではどっちがいいんですか?
0331デフォルトの名無しさん2014/05/18(日) 16:02:54.17ID:Z+XtEV4Y
コンパイラが適切に処理してくれると思うよ
0332デフォルトの名無しさん2014/05/18(日) 16:16:58.03ID:pYhQF883
>>330
ある分岐処理についてif文とswitch文のどちらでもコード化できるなら、
迷うことなくswitch文を使うべき
if文では条件判定として任意の式が書けるのに対し、
switch文のcase節だと定数式しか書けない
言い換えると、switch文のほうがコードとして表現できる範囲が狭い
あえてswitch文を選ぶことによって、コードの読み手に対して
この分岐処理は定数式で条件判断できるという意図を示すことができる
0333デフォルトの名無しさん2014/05/18(日) 16:51:24.32ID:PgXwbEuB
break文を書き忘れたのが意図的かどうかわかりにくいから、
if文で書け
0334デフォルトの名無しさん2014/05/18(日) 17:15:33.31ID:gVgdo/dn
かなり前だが、VCのDLLスケルトンのbreak無しを見落としてバグったことあるな…
0335デフォルトの名無しさん2014/05/18(日) 17:31:10.91ID:4n3Aw6on
最後の default: にも break; 入れてるw
0336デフォルトの名無しさん2014/05/18(日) 17:36:24.82ID:uXRvIAKx
プログラマー紹介みたいなのでその人の部屋の画像が映し出された時
PC環境が大抵多画面なのは何故ですか?
俺みたいにノート一台でプログラミングするのは稀?
0337デフォルトの名無しさん2014/05/18(日) 17:38:18.21ID:lWjJVkd2
多分岐を助長する傾向が生じるから、case文は使わない。排斥すべき。
0338デフォルトの名無しさん2014/05/18(日) 17:40:45.23ID:lWjJVkd2
>>337
すみません、自己レス。ここでは、switch文は使わないとしてください。
0339デフォルトの名無しさん2014/05/18(日) 17:44:15.62ID:Epdlusmt
定数で分岐処理するなら、関数テーブルを作って
関数へのポインタで処理すればすっきりするのでは?
0340デフォルトの名無しさん2014/05/18(日) 18:44:37.25ID:KHcRh0FR
昔ならオーバーヘッド云々と言えたんだけどねぇ。
0341デフォルトの名無しさん2014/05/18(日) 19:37:59.33ID:untGUeAU
>>332
俺もswitchは好きだが、
 if(){
 }else if{
 }else……
とすればインデントは増えないことを知ってからif派になった。
どうせ同じ意味になるしねー
>>336
俺も基本ノートだったが、中古のサブモニくっつけたら世界が変わったぞ
(ブラウザ画面とかを別に避けて表示できるからかなり捗る)
0342デフォルトの名無しさん2014/05/18(日) 19:43:07.84ID:gVgdo/dn
>>339
case文が数万個とかなったらその方が高速になるね
0343デフォルトの名無しさん2014/05/18(日) 19:51:21.73ID:oxq+ikAO
>>336
中古で安く調達して試してみるといいよ
仕事(マじゃないよ)でも手放せない
0344デフォルトの名無しさん2014/05/18(日) 19:52:25.54ID:oxq+ikAO
>>342
Windows の例題はそんなのしかみたことがない
0345デフォルトの名無しさん2014/05/18(日) 20:39:00.62ID:h2IaAd5k
>>330
定数で単純に分岐するなら switch( ) の方が望ましいと思う。
コンパイラによるけど、間違えて同じ定数書いた時にエラーにしてくれたり、enum だとさらに、使われてない定数があることを警告してくれるとかの支援機能があるから。
0346デフォルトの名無しさん2014/05/18(日) 20:44:35.52ID:BExb4OPW
>>333
意図的ならコメントにFALLTHROUGHって書いてるな
0347デフォルトの名無しさん2014/05/18(日) 21:01:34.23ID:gVgdo/dn
>>342をコードにすると
http://ideone.com/u0lX5b
みたいなイメージ
0348デフォルトの名無しさん2014/05/18(日) 21:36:52.53ID:P2EXL/Ge
特に理由がなければ可読性の高いswitchの方がいいだろうね
ifの条件に定数以外を使えることは、if〜else if方式の欠点でもある
バグも温床になるよ
0349デフォルトの名無しさん2014/05/18(日) 21:46:20.97ID:vsDYEvfp
switchなら最適化で線形探索より速くなるね
0350デフォルトの名無しさん2014/05/18(日) 21:54:05.96ID:N+11ThYv
case分が64個とか制限なかったっけ?
0351デフォルトの名無しさん2014/05/18(日) 22:12:13.35ID:C1UdNOr5
caseは最低256個だったような
0352デフォルトの名無しさん2014/05/18(日) 22:24:03.73ID:Eb7sh+a5
(EOF(-1)も扱うことを想定して)257だよ
0353デフォルトの名無しさん2014/05/18(日) 22:33:24.98ID:4n3Aw6on
>>336
作成中のアプリの画面用と、デバッグ情報の表示用とか
複数モニターはわりと便利
0354デフォルトの名無しさん2014/05/18(日) 22:59:47.17ID:ber0Pvb0
switch()〜case:は0からの連番ならテーブル処理、
それ以外はif文使用と変わらない処理だって昔聞いた。
86系の16bit時代の話で他の環境ではどうなるか知らない。
0355デフォルトの名無しさん2014/05/18(日) 23:05:08.55ID:Z6hzAnou
>>354
90年代の前半ころのMS-Cは、分岐が7以上で等差数列だったらテーブルジャンプになってたわ。
0からとかって縛りはなかった。
0356デフォルトの名無しさん2014/05/19(月) 04:09:48.37ID:RBLcqImu
gccならcomputed gotoが超速い
0357デフォルトの名無しさん2014/05/19(月) 06:13:46.72ID:SdRbB6EK
ワシはアナルにプチトマト入れたり出したりしとる
ごっつう気持ちええで〜
0358デフォルトの名無しさん2014/05/19(月) 10:29:46.95ID:1fVFahQ0
caseが2〜3個程度のswitchってifを使った時と同じコードになっちゃうんだよなw
0359デフォルトの名無しさん2014/05/19(月) 13:22:35.66ID:wBsls3I6
>>358
別にswitch使うのはifより速いからじゃないし
0360デフォルトの名無しさん2014/05/19(月) 17:46:02.98ID:RdUiR/FU
多画面について質問です。
多画面の場合そのディスプレイのOSは何になるのですか?
C言語勉強してるのですが、プログラミングと出力で分けたい
0361デフォルトの名無しさん2014/05/19(月) 18:02:37.82ID:DMkpVtrD
| 検索結果:該当0件
|
| ちょっと何言ってるか分からないです
| 
|
| [ オプション(O) ]   [ 検索(S) ]
|
`──────────┐ ┌───
           , '´l,  ..| ./
       , -─-'- 、i_  |/
    __, '´       ヽ、
   ',ー-- ●       ヽ、
    `"'ゝ、_          ',
      〈`'ー;==ヽ、〈ー- 、 !
       `ー´    ヽi`ヽ iノ
                ! /
              r'´、ヽ
              `´ヽノ
0362デフォルトの名無しさん2014/05/19(月) 18:07:18.47ID:RdUiR/FU
>>361
メインで使うPCのディスプレイはOSが入ってると思うけどサブ画面の場合
OSはどうしたらいいんですか?
0363デフォルトの名無しさん2014/05/19(月) 18:34:30.85ID:DMkpVtrD
一つのPCに複数のディスプレイがつながってる環境ならそのPCが起動してるOSが全部統括管理するのが普通だが?
それ以外の環境なら設計者次第だろ。
0364デフォルトの名無しさん2014/05/19(月) 18:56:04.46ID:Qnqq0oOU
プログラム入力用のモニタと実行用のモニタの2画面構成にしたいってことか?
マルチモニタ、マルチディスプレイで検索しろ。
それより前に日本語勉強しなおせ。
0365デフォルトの名無しさん2014/05/19(月) 19:45:49.91ID:RdUiR/FU
>>363
ということはサブで見せたい画面だけを移動するってことですか?
そういうのってソフトいらないのですか?>>364
分かりにくい説明の質問だったらすいません、難しい分野の問題で
言語からちょっと関係ないから手慣れてないので…
0366デフォルトの名無しさん2014/05/19(月) 19:46:11.60ID:8OKT1u6C
OS(の設定)をどうしたらよいかって?
そのOSとマルチモニタ・マルチディスプレイでググレ

ノートPC + Windows とかだと、Fnキーのコンビネーションで プロジェクター接続 と称して
マルチモニタ対応してたりするが
0367デフォルトの名無しさん2014/05/19(月) 19:50:11.83ID:RdUiR/FU
>>366
特定のアプリケーションだけプロジェクターに映し出すって可能なんですか?
例えばメモ帳だけみたいな
0368デフォルトの名無しさん2014/05/19(月) 19:50:49.94ID:BaAr9nqN
まず試せよ。
0369デフォルトの名無しさん2014/05/19(月) 22:08:42.20ID:mbE3Cq5f
っていうかC言語関係ねー
0370デフォルトの名無しさん2014/05/20(火) 00:05:48.25ID:R0sc+CFe
>>362
> ディスプレイはOSが入ってると思うけど

入ってません
0371デフォルトの名無しさん2014/05/20(火) 00:17:31.12ID:Q2AhpEnY
>>370
流石にそれを言い切るのは無理があると思うけど・・・

http://special.nikkeibp.co.jp/ts/article/a00g/105808/
http://h50146.www5.hp.com/directplus/personal/promotions/desktops/lineup/pri_02.html
http://www.dell.com/jp/p/desktops#!dlpgid=all-in-one-desktops

この手のを2台持ってるとかならありうる
0372デフォルトの名無しさん2014/05/20(火) 00:24:52.13ID:zlaxDiQa
>>371
たぶん「外部出力」すらよくわかっていないんだろうな……
0373デフォルトの名無しさん2014/05/20(火) 00:41:43.72ID:ROp5ZExO
>>371
どうみても (ディスプレイ一体型の) パソコンだろ
0374デフォルトの名無しさん2014/05/20(火) 00:45:33.61ID:2Er/qV0g
というか、ディスプレイにも制御用のプログラムが載ってるなら、OS も入ってて不思議はないかと。
イメージしてる物とは違うだろうけど。
0375デフォルトの名無しさん2014/05/20(火) 01:25:33.85ID:XQmbVY7L
とりあえず質問者は勘違いしてるのは間違いない。
0376デフォルトの名無しさん2014/05/20(火) 04:59:23.60ID:Ncw8CVoL
ID:RdUiR/FU ←C言語勉強してる?
うーん
OSやhardのことそこまで知らずにC言語って
うーん
凄い場違い感
LOGOでタートルしてたら?
(Cをなにに使うんだろう)
0377デフォルトの名無しさん2014/05/20(火) 13:32:30.91ID:fbMM1sIr
ひょっとしたらスマホで常にフル画面しか使わない世代かもしれない
0378デフォルトの名無しさん2014/05/20(火) 22:44:47.06ID:Q2AhpEnY
まぁ釣り質問でなければ相当の無知だわな
0379デフォルトの名無しさん2014/05/21(水) 21:46:32.79ID:7ghH1huH
合計がおかしくなるんですがなぜだ




#include <stdio.h>

int main(void)
{
int box[9];
int i=0,max=0;
printf("please input number\n");


while(i < 8)
{
printf("input:%d:",i+1);
scanf("%d",&amp;box[i]);
i++;
max += box[i];
}


printf("max = %d\n",max);

return 0;
}
0380デフォルトの名無しさん2014/05/21(水) 21:51:01.61ID:x7NyX0pH
>>379
ループのところ、while文の代わりにfor文を使ってみよう
0381デフォルトの名無しさん2014/05/21(水) 21:54:25.42ID:AVBbOV7Q
>>379
インクリメントの位置がおかしいから
0382デフォルトの名無しさん2014/05/21(水) 21:54:47.54ID:7ghH1huH
forだとうまくいきますが
なぜかわからない
0383デフォルトの名無しさん2014/05/21(水) 21:55:30.78ID:GgA/fGkQ
>>379
・「i++;」と「max += box[i];」の位置が逆。
 そりゃ未定義のとこ足したらおかしくなりますわ
・そもそも「合計」はmaxじゃなくてsumとかだろフツー
・と言うかこの場合繰り返しにはwhileじゃなくてfor使えば良くね?
・だいたいループして一回一回足すんならbox[]は不要
・そしてこのコードだとwhileの中が8回しか実行されないわけだがそれでいいのか?
 (配列が9個あるのに8個までしか代入できていない)
0384デフォルトの名無しさん2014/05/21(水) 21:56:37.36ID:iCWid1WR
>>379
int box[9]
while (i<8)
になってるけど、whileの条件は適当?
0385デフォルトの名無しさん2014/05/21(水) 21:57:06.26ID:7ghH1huH
うまくいきました
ありがとう御座います。
0386デフォルトの名無しさん2014/05/21(水) 21:59:32.79ID:7ghH1huH
自分で適当作った問題です。
383さんありがとう御座います。
0387デフォルトの名無しさん2014/05/21(水) 22:32:46.34ID:zPiEeEEi
if文の中にdo文入れるとループしないとかありますか?
0388デフォルトの名無しさん2014/05/21(水) 22:43:09.06ID:uclrUxKL
そりゃ、ループの条件式によるだろ。
0389デフォルトの名無しさん2014/05/21(水) 22:54:23.20ID:zPiEeEEi
#include <stdio.h>
int main(void)
{
int n1,n2,sum=0;
puts("二つの整数を入力してください。");
printf("整数A:"); scanf("%d",&n1);
printf("整数B:"); scanf("%d",&n2);
if (n1<n2) printf("%d以上%d以下の全整数の和は",n1,n2);
else printf("%d以上%d以下の全整数の和は",n2,n1);

if (n1<n2)
do
{
sum+=n1;
n1++;
} while (n1>n2);

else
do
{
sum+=n2;
n2++;
} while (n2<n1);

printf("%dです。\n",sum);

return (0);
}

これなんですが
0390デフォルトの名無しさん2014/05/21(水) 22:56:56.91ID:AVBbOV7Q
>>389
if文じゃなくwhileのとこの条件を間違ってるだけだよ
上のと下の同じになってる
0391デフォルトの名無しさん2014/05/21(水) 23:06:28.39ID:zPiEeEEi
>>390
解決しました!ありがとうございます!
0392デフォルトの名無しさん2014/05/22(木) 23:16:19.74ID:Pj2Kcb1G
ファイル�@で宣言したグローバル変数A
ファイル�Aで宣言したグローバル変数B
ファイル�Bで #define A B とした場合
ファイル�B内では変数A変数Bどちらもexternでの宣言が必要ですか?

なんかよくわからんくなってきた
0393デフォルトの名無しさん2014/05/22(木) 23:17:27.98ID:2g4glAhM
>>392
実際に試してみたか?
0394デフォルトの名無しさん2014/05/22(木) 23:20:21.70ID:Pj2Kcb1G
↑違うわ
ファイル�@で宣言したグローバル変数A
ファイル�Aで #define B A とした場合
ファイル�A内では変数Aのextern宣言が必要か?

でした
0395デフォルトの名無しさん2014/05/22(木) 23:29:21.89ID:MCSdHCQL
#define B A
って、単にテキスト上のBと書いてある箇所をコンパイル前にAと置き換えてるだけ
だからextern Bはいらない
extern Aだけでいい

#includeも#defineも単にコンパイル前に文字列を置き換えてるだけ
何か高度なことやってるわけでもなんでもない
0396デフォルトの名無しさん2014/05/22(木) 23:34:23.91ID:Pj2Kcb1G
>>393 >>395
環境落としてやってみた
externは必要だった ありがとう
0397デフォルトの名無しさん2014/05/24(土) 07:35:31.97ID:jYoMAPG8
Cか?たぶん普通にリンクできるはずだが
いわゆる仮定義というやつだ
0398デフォルトの名無しさん2014/05/24(土) 11:17:49.87ID:YIPAx190
常駐先企業の人件費抑制に利用されただけの人生だったな残念
0399デフォルトの名無しさん2014/05/24(土) 11:19:32.52ID:YIPAx190
常駐先企業の人件費抑制に利用されただけの人生だったな残念
0400デフォルトの名無しさん2014/05/24(土) 11:22:09.39ID:YIPAx190
常駐先企業の人件費抑制に利用されただけの人生だったな残念
0401デフォルトの名無しさん2014/05/24(土) 11:45:40.13ID:oAEIG7cF
ご教授願います!

if(a == 1 && b == 1 && c == 1)
{
x = 1;
}
else
{
x= 0;
}

と、

if(a == 1)
{
if(b == 1)
{
if(c == 1)
{
x = 1;
}
}
}
else
{
x = 0;
}
では処理は同じだと思いますが、どちらが素敵ですか?
0402デフォルトの名無しさん2014/05/24(土) 12:30:38.58ID:VMgZVPvZ
前者
0403デフォルトの名無しさん2014/05/24(土) 13:44:51.23ID:47+sObPK
保守
0404デフォルトの名無しさん2014/05/24(土) 14:18:30.03ID:23YTvX7U
>>401
>if(a == 1 &amp;&amp; b == 1 &amp;&amp; c == 1)
じゃなくて
if(1 == a &amp;&amp; 1 == b &amp;&amp; 1 == c)
と、左オペランドには極力、代入不可能なものを置くクセを
今のうちに付けておくことを勧める

こんなミスを防止出来るから
if( a = 1 ){ // a == 1 のつもり

なお、素敵なのは俺も前者
0405デフォルトの名無しさん2014/05/24(土) 14:18:39.53ID:QHw690bV
同じじゃない
0406デフォルトの名無しさん2014/05/24(土) 14:25:42.34ID:Gl+D6mpu
いまどきのコンパイラなら警告出してくれるから変な習慣つけるなよ
0407デフォルトの名無しさん2014/05/24(土) 14:35:06.44ID:kdyeTW/9
>>404
それはfj時代から忌み嫌われていた記述法
現代には無意味
0408デフォルトの名無しさん2014/05/24(土) 15:04:42.65ID:t6SgnRXz
嫌いじゃないが初心者に勧めるものでもない
現場によってはコーディング規約が〜とかいって書き直しもあるかも
0409デフォルトの名無しさん2014/05/24(土) 15:15:25.02ID:23YTvX7U
>>406-408
Linuxのカーネルで if( bEnableRoot = 1 ... )っぽいコードで
行うトロイが昔なかったか?
コンパイラが指摘するコンパイルミスの場所が「完全」に正確ではないのを思えば
コンパイラに全幅の信頼を置くC/C++プログラマーはどうかと思うが。
0410デフォルトの名無しさん2014/05/24(土) 15:22:59.55ID:47+sObPK
コンパイラにかける前に、エディタの検索機能でチェックできるレベル
0411デフォルトの名無しさん2014/05/24(土) 15:24:21.19ID:t6SgnRXz
>>401
全文見えないから無視していたが

同じじゃない
0412デフォルトの名無しさん2014/05/24(土) 15:30:37.69ID:kHQIp9PW
前者の場合ってaが弾かれたらbとcの判定って無くなるの?
0413デフォルトの名無しさん2014/05/24(土) 15:44:11.88ID:P2bp3FVu
>>401
> では処理は同じだと思いますが、どちらが素敵ですか?
違うよ。バカ

> ご教授願います!
どこの馬の骨かわからんクズを弟子するマヌケは世界中で>>402-402,>>405-410の6匹だけ
「教授」の意味を調べてから出直せ
0414デフォルトの名無しさん2014/05/24(土) 15:47:18.19ID:0C1DrH8Y
>>412
yes

x && y の意味は if x then y else false で
x || y の意味は if x then true else y になる
言い換えると、これらは純粋な論理演算子ではなく、
条件分岐を演算子で表現した構文糖(syntax sugar)である

したがって x && y は以下の意味と同じであり、
 if x then
   if y then
     true
   else
     false
 else
   false
条件式 x が偽であれば条件式 y は評価されない

他の言語、たとえばRubyにも同様な演算子 || や && があるし、
それほど珍しい構文でもない
0415デフォルトの名無しさん2014/05/24(土) 15:50:34.78ID:hNw+IwYI
短絡評価と言えばいいのに
0416デフォルトの名無しさん2014/05/24(土) 16:00:26.89ID:kdyeTW/9
>>409
一定の説得力はある
が私はそうは書かない、多分量が少なくてそういうミスで手ひどい思いをしたことがないだけなのかもしれない
04174012014/05/24(土) 16:04:08.92ID:oAEIG7cF
お答えくださった>>402以下さんたちありがとうございます!!
もう一つだけいいですか?



int a,b,c;
floart x;

という変数があるとします

x = (float)a + (float)b + (float)c;

と、

x = (float)(a + b + c);

では同じ処理になりますか?
よろしくお願いします。
0418デフォルトの名無しさん2014/05/24(土) 16:14:50.92ID:6HD9LOix
自分で試してみる気はないの?
0419デフォルトの名無しさん2014/05/24(土) 16:18:56.76ID:kdyeTW/9
>>417
同じにならない処理系があったら知りたいぐらいだが
まあ、それはさておき、float は「float を使うそれなりの理由がない限り」やめておいたほうがいい、ここは double で。
0420デフォルトの名無しさん2014/05/24(土) 16:51:12.28ID:Xq6pP+IW
a+b+cがintの範囲を超える場合は?
04214012014/05/24(土) 16:55:31.68ID:oAEIG7cF
>>418

すみません


>>419

ありがとうございます
しつこくてすみません
floatよりdoubleを優先する理由を教えて頂けますか?
0422デフォルトの名無しさん2014/05/24(土) 17:26:44.70ID:kdyeTW/9
>>421
printf()
0423デフォルトの名無しさん2014/05/24(土) 17:29:50.60ID:Cq+cm/k7
用途によるかと
精密な精度が欲しければ何らかのライブラリ、
通常の用途にはdouble、グラフィックスとかならfloatが基準になるかと
0424デフォルトの名無しさん2014/05/24(土) 17:31:40.52ID:0m0yQ+Qd
>>419
俺も聞いてみたい。floatよりdoubleっていう根拠は?
0425デフォルトの名無しさん2014/05/24(土) 17:35:35.96ID:imaRiqLQ
>>421
いまどきのCPUは、doubleでもfloatでも同クロックで演算できるので
あえて精度が低いfloatを使う必要は、普通は無い

>>422
printfの暗黙の型変換は、doubleを使う理由にならないのでは?
0426デフォルトの名無しさん2014/05/24(土) 17:40:00.17ID:kdyeTW/9
>>425
printf() というか不定長引数の場合の double 格上げ、というお約束自体が、当時の時点では float の演算速度と double の演算速度が変わらない現実を反映しているような気がして
もっとも float の方が確実に速い、あるいは float しかない、という場合がある(そうな)ので、それはそういう理由で float を使うのだろうね、やったことはないけれども
0427デフォルトの名無しさん2014/05/24(土) 17:40:01.23ID:lzaOmnko
単に精度が倍だからだろ
必要精度を無視してメモリーも時間も使い放題だな
必要精度をはじきだせず、こまい計算しかしないならいいんじゃね?いつもダブルで

やだー、ダブルー、えっちー
トリプルにしたいなぁ、聖子ぉ!
0428デフォルトの名無しさん2014/05/24(土) 17:48:07.05ID:MviBHeCj
>>427
お前はこのスレでレスする必要が無い。お前の存在は不要だ。
0429デフォルトの名無しさん2014/05/24(土) 17:53:53.40ID:imaRiqLQ
>>426
自分も格上げする理由は分からない。
格上げすれば、cal.ee側はdoubleだけ考えればいいので単純になるから、かなあ

複数のfloat値をまとめて演算するSIMD命令がある(CPUもある)ので、
演算の観点でもfloatが全く不要ではないね。あと、もちろんメモリ上のサイズが違うので
配列で大量のデータを持つときとかはfloatにする意味がある
0430デフォルトの名無しさん2014/05/24(土) 18:43:52.61ID:trY52c2m
intよりshortを勧める奴はいないだろ。
doubleとfloatも同じような関係だ。

>>425
printf()に限らず、暗黙の昇格があるからというのは理由になるのでは?

>>423
グラフィックスだからと言ってfloatを基準にする理由にはならないのでは?
たまたま低精度のライブラリを使うからと言うのは理由になるだろうが。

>>419
>417の前者と後者が同じ結果になるかどうかは兎も角同じ処理になる阿呆な処理系はないと思うぞ。
実際、>420が指摘しているが違う結果になることさえあるのだから。

>>404
両辺が代入可能な場合にエラーに頼る>404流は全く役に立たない。
そうであるならば、警告に頼る>406流にやや分があるんじゃないかな。
いずれにしても、読み易さを考えれば>404流は何十年も前にダメを出されているよ。
0431デフォルトの名無しさん2014/05/24(土) 18:56:17.02ID:Ag0dohUQ
>>430
おお、頭良さそうやのう
感心したで
マジやで

コラコラ、そこの見学者、感じたわけやないで
あ、こら乳首さわるな、感じるやないけ
0432デフォルトの名無しさん2014/05/24(土) 19:05:47.35ID:BoH7rvjb
よくforループを「for(int i = 0; i < 10; ++i)」みたいに書いたりするじゃん?
この場合例えばintの部分をunsignedにするとかunsigned charにするのってただの自己満足?
(メモリはケチれるけど遅い、みたいなことがあったりするのか?)
0433デフォルトの名無しさん2014/05/24(土) 19:11:52.98ID:5k74nlaX
>>419
intとfloatって同じ32bitなら桁落ちがあるからfloatにするタイミングで結果が違ったりするなじゃないの?
0434デフォルトの名無しさん2014/05/24(土) 19:12:11.71ID:STwDwgyi
>>432
相当貧弱(8bitマイコンとか)でもない限り自己満足の世界だと思う。
必要に迫られない限り、intでいいと思う。
0435デフォルトの名無しさん2014/05/24(土) 19:18:14.39ID:rb+gQeLM
何かの理由で
for (i=9; i>=0; --i)
ってやるには、intしかダメ
0436デフォルトの名無しさん2014/05/24(土) 19:27:48.30ID:BoH7rvjb
>>434
目一杯速くしたいんだが、小さなループなら手動で展開した方が速いかな?
0437デフォルトの名無しさん2014/05/24(土) 19:34:55.39ID:STwDwgyi
>>436
環境によるとしか言えないかな。
基本的にその手の最適化は、実測しか確認方法が無いんだよ。

cpuやキャッシュメモリとかにもよるし、ループ内の処理やメモリアクセスの仕方とかにも相当影響を受けるからね。
0438デフォルトの名無しさん2014/05/24(土) 19:39:13.69ID:u1TcTJvP
register int にするとか
0439デフォルトの名無しさん2014/05/24(土) 19:40:23.26ID:5k74nlaX
いっそ自分でアセンブルすればよい
0440デフォルトの名無しさん2014/05/24(土) 19:50:03.82ID:Pr/J08VU
>>438
今時 register って...
0441デフォルトの名無しさん2014/05/24(土) 20:00:06.46ID:DxUSuDcC
>>436
環境とコンパイラによるな。
マイコンの話だけど良い開発環境では中間生成物のアセンブラが見れるからそこで見たらわかるんじゃね?
だいたいその場でしか使われないローカル変数はメモリ領域に場所とらずに、
レジスタ内で処理するようにコンパイラで最適化されるんじゃないかな。
0442デフォルトの名無しさん2014/05/24(土) 20:23:43.17ID:rb+gQeLM
>>441
余程でなければどのコンパイラでも出力できるでしょ
それなりに慣れてないと何書いてるかさっぱりだと思うが
0443デフォルトの名無しさん2014/05/24(土) 20:35:03.91ID:dLm6fu0H
>>432
for(auto i = 0; i < 10; ++i)
0444デフォルトの名無しさん2014/05/24(土) 20:46:11.10ID:BoH7rvjb
>>443
それ自動的にintとかにならない? 小さい数字だと自動でuint8_tみたいになったりするの?
0445デフォルトの名無しさん2014/05/24(土) 20:54:17.55ID:trY52c2m
>>433
floatの方が精度が低いから、例えば2^31-1から1を引く処理をfloatでやろうとすると結果が得られない。
逆に、int(32bit)の方が値域が狭いから、2^31-1に1を足すとオーバーフローしてしまう。

>>435
int以外でもshortでもsigned charでもいいのでは?w

>>436
賢いコンパイラを使うのが一番。ループのアンロールも行なってくれるし、
レジスタが豊富なCPUなら並列演算を行なうようにしてくれる。
0446デフォルトの名無しさん2014/05/24(土) 20:55:17.07ID:trY52c2m
>>443
そもそも何を期待しているんだ?
C++のautoと違って、Cのautoは只の自動変数であることの宣言だぞ。
0447デフォルトの名無しさん2014/05/24(土) 21:54:09.13ID:CbUGe6dU
>>435
>何かの理由で
unsigned だと i>=0 は常に真だからだろw
0448デフォルトの名無しさん2014/05/25(日) 00:02:47.33ID:VzWpVfvF
ヒマなのでちょっと抽出してみました
>>408 >>421 >>425 >>427 >>430 >>436 >>441 >>443
0449デフォルトの名無しさん2014/05/25(日) 00:13:44.61ID:HKoUIF2h
>>448
私のレスも含まれているけど、何を抽出したの?
0450デフォルトの名無しさん2014/05/25(日) 00:16:58.48ID:Y097JzWz
>>448
自演だとでも? (ヾノ・∀・`)ナイナイ
0451デフォルトの名無しさん2014/05/25(日) 02:54:35.27ID:FAQcyghX
>>448
お前、精神病だろ
でも、自演認定するやつは大概、どれとどれが自演なんだと改めて聞くと、まず答えないんだが自分から列挙するとは
そこが珍しい。
それとも自演認定以外の列挙か?と一応書いておこう。
0452デフォルトの名無しさん2014/05/25(日) 04:44:37.63ID:mQ7FRJ95
ワロタ
0453デフォルトの名無しさん2014/05/25(日) 08:57:09.35ID:sHbcQ04K
最近のcygwinはwin32apiでウィンドウ出したりできるんだな
普通にゲーム作れちゃうじゃん
0454デフォルトの名無しさん2014/05/25(日) 09:33:36.41ID:wdt8VpUX
でもCygwinなのにWinAPIってそれどうなのw
0455デフォルトの名無しさん2014/05/25(日) 09:45:26.69ID:sHbcQ04K
cygwinの環境でDXライブラリって使えるのかな
0456デフォルトの名無しさん2014/05/25(日) 10:11:52.12ID:FiG/MmOi
>>453
作れるけど
VisualC/C++と比べ処理速度が犠牲になる可能性有
0457デフォルトの名無しさん2014/05/25(日) 11:32:39.13ID:NeNyrW9A
>>448
ここ使うと一発だよ http://hissi.org/read.php/tech/20140525/VnpXcFZmdkY.html
0458デフォルトの名無しさん2014/05/25(日) 11:34:20.05ID:NeNyrW9A
>>456
win32apiを直接呼び出すのにどうして処理速度が犠牲になるの?根拠はなに?
0459デフォルトの名無しさん2014/05/25(日) 14:58:17.23ID:orLdyf4Y
>>458
最適化されない

cygwinであればcygwin1.dll経由になるのも原因
mingwならその心配もないようだが
0460デフォルトの名無しさん2014/05/25(日) 15:16:40.65ID:SjhZACZk
>>459
cygwin1.dllはWindowsにないシステムコールやライブラリ関数を
実現するためのもので、win32api使うには必要ない
0461デフォルトの名無しさん2014/05/25(日) 16:01:14.85ID:NeNyrW9A
>>459
win32api コールにどんな最適化があるというの?お前さん、最適化という言葉でごまかしていない?
あと、cygwin1.dll は POSIX のエミュレーションであり、 win32api をコールするのに必要ないためそもそも経由しない

とか書こうとおもったら、-mno-cygwin オプションは gcc3 で打ち止め、gcc4 から win32api を使用するなら
最初から mingw を入れろということのようだね
0462片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/05/25(日) 17:10:45.16ID:kKmqkkdK
アンパンマン、新しい顔ができたよ!

仮想ファイル入出力
https://github.com/katahiromz/MZC3_fopen
0463デフォルトの名無しさん2014/05/25(日) 20:19:50.17ID:sHbcQ04K
i686-pc-mingw32-gcc -mwindows test.c
とコンパイルするとcygwin1.dllなしで実行できるぽいね
0464デフォルトの名無しさん2014/05/26(月) 09:18:16.86ID:wIhx+xqe
win32apiとPOSIX apiを混用したいからこそのcygwinではなかったのか
0465デフォルトの名無しさん2014/05/26(月) 22:20:08.04ID:YyXvpck3
ファイル保存の時上書き保存じゃなくて、開いて保存の場合
異常に遅いんだけど、編集する感覚で0.1秒くらいでファイル新規保存
するようなソフト作るのって無理ですか?Cでです。
0466デフォルトの名無しさん2014/05/26(月) 22:32:44.29ID:Pt2kiZ/o
>>465
日本語でおk
0467デフォルトの名無しさん2014/05/26(月) 22:39:59.04ID:UcuPRHnz
PCの起動時にOSを起動じゃなくて、ファイルエディタをかわりに起動して実行させれば糞速いんじゃないですかね
つまりブートロードで起動させて使うソフトを作ればいいんですよ
全ての資源をエディタのみで使えるので爆速に間違いないですよ
昔はフロッピーディスクで起動するソフトウェアなどもありましたし
0468デフォルトの名無しさん2014/05/26(月) 22:41:59.57ID:Pt2kiZ/o
>>467
そのファイルエディタはOSが無いと動かないんですがそれは
0469デフォルトの名無しさん2014/05/26(月) 23:06:22.99ID:yHJImmyi
>>465
エスパー3級の俺の見立てでは
ファイルダイアログを開くのが遅いといっている気がする

シェルに干渉するソフトを無駄にたくさんインストールしているのではないか

ちなみに >>467 は3級程度では太刀打ち出来ない
0470デフォルトの名無しさん2014/05/26(月) 23:07:08.00ID:ARSniqSI
昔々のROM BASICでもあるまいに w
0471デフォルトの名無しさん2014/05/26(月) 23:24:54.13ID:YyXvpck3
そうですダイアログです
何でダイアログ開くのに3秒以上かかるんでしょう…
ガジェットみたくスライドして出てくるみたいな感じは無理なんですか?
0472デフォルトの名無しさん2014/05/26(月) 23:43:48.38ID:n89vznUS
作れは?
0473デフォルトの名無しさん2014/05/26(月) 23:46:09.62ID:NauQXfeu
必要なプログラムやデータがRAMに入ってないんだろ。
0474デフォルトの名無しさん2014/05/26(月) 23:50:58.58ID:UcuPRHnz
win7を使ってるがファイルの保存のダイアログが開くのはアプリの起動単位で初回だけかな
0475デフォルトの名無しさん2014/05/26(月) 23:51:31.48ID:UcuPRHnz
訂正
win7を使ってるがファイルの保存のダイアログが開くが数秒かかるほど遅いのはアプリの起動単位で初回だけ
0476デフォルトの名無しさん2014/05/26(月) 23:56:33.88ID:NauQXfeu
定型のダイアログなんかはどっかのDLLに入ってるんだろ。
そのDLL読み込んで、ドライブやフォルダ情報読み込むのに数秒かかるんじゃね?
で、2回目からはある程度キャッシュに溜まってるから読み込み処理すっ飛ばすから速くなると。
0477デフォルトの名無しさん2014/05/26(月) 23:58:39.32ID:UcuPRHnz
コモンダイアログの保存ダイアログを開いてるはずだから速いはずなんだけどね
0478デフォルトの名無しさん2014/05/27(火) 00:01:27.18ID:0v3dLyrT
思い込みじゃね?実際に遅いんだから。
0479デフォルトの名無しさん2014/05/27(火) 01:19:56.01ID:2wmi7VyA
>>477
明らかにそれ以外の無駄な処理が走っている
バージョンが上がる毎に無駄な機能が増えていくケース
0480デフォルトの名無しさん2014/05/27(火) 07:45:05.77ID:25AWZBJ0
>>477
だが、しかし、待って欲しい。
>>465さんは、どのOSでなんというエディタを使った場合なのかを一切明らかにしていない!!
この状況において、
>コモンダイアログの保存ダイアログを開いてるはずだから
というのは、あまりにも判断が時期尚早との批判も免れ得ないのではないか?と言われても致し方あるまいのでは?
0481デフォルトの名無しさん2014/05/27(火) 08:50:01.93ID:B1TDBu02
1回目が遅いのではない。
2回目以降が速くて1回目が本来の速度なのだ。
0482デフォルトの名無しさん2014/05/27(火) 08:54:53.51ID:P0Ar98lF
HDDのスピンが止まってたとか、全ドライブの情報取得に時間かかったとかじゃね?
2回目以降はキャッシュから情報取得するから速かったと。

1回目から速くしたいならドライブ情報取得しないダイアログを自作してみたら?
0483デフォルトの名無しさん2014/05/27(火) 09:22:23.31ID:WSMaSjRo
全ドライブをSSDにすれば速さの違いは気にならなくなる
0484デフォルトの名無しさん2014/05/27(火) 13:55:00.41ID:2wmi7VyA
ディレクトリの中だけじゃなくて個々のファイルの中を見に行って
詳細情報やらアイコンやらを表示しているケースだろう
zipとか動画とかサーバーと同期させるツールとか

実際にその現象にぶち当たったことがなければ
的はずれな答えしか出てこない
0485デフォルトの名無しさん2014/05/27(火) 14:25:58.24ID:wfBaHMaP
HDDの寿命って数年って言われてますけど本当ですか?
USBメモリですら4本もってますが4本とも3年以上持ってます。
C言語の話と関係ないですがSSDとかのはなしもあるし聞いておきたいです。
どうなんでしょう?

家のパソコンですが
8万で買ったエヌイーシーのデスクトップ 毎日6時間使い続けて
未だにHDD壊れず、8年経過

4万で買ったノート、4年使い続けて動作鈍くなったと感じるけど
リカバリーで常にスピード安定、HDD壊れず

どうなんでしょう?
0486デフォルトの名無しさん2014/05/27(火) 14:52:29.64ID:gGML8YGy
数年のソースはどこ?
0487デフォルトの名無しさん2014/05/27(火) 15:55:55.12ID:P0Ar98lF
稼働率と運次第。
0488デフォルトの名無しさん2014/05/27(火) 16:18:25.37ID:MC9K/1O6
関係ないって判った上でスレ違いの話を強引にするってのもなかなか
0489デフォルトの名無しさん2014/05/27(火) 16:26:48.39ID:6eXUGxGD
もろ精神病ぽいな
0490デフォルトの名無しさん2014/05/27(火) 20:31:49.05ID:5raxgz7B
http://codepad.org/1AztD4JF

↑こういったプログラムを書きました
しかし作ってみたものの、自分が書いた部分がどういった動作をしているのかわかりません

44行目から85行目までどういった動作をしているのか教えてくれませんか?
0491デフォルトの名無しさん2014/05/27(火) 20:41:59.22ID:gGML8YGy
C++はスレ違い
0492デフォルトの名無しさん2014/05/27(火) 21:17:15.83ID:X03+53LE
たぶん本人はC書いたつもり
0493デフォルトの名無しさん2014/05/27(火) 21:25:40.17ID:pZIBd1ud
>>490
だいたい読んでみた。
教えなくはないが、本当に自分で書いたか証明するために、
何を目的にどの変数を何の目的で使ってるか説明してみろ。
0494デフォルトの名無しさん2014/05/27(火) 21:39:40.18ID:5raxgz7B
>>491
>>492
>>493
すいませんスレチのようでした
プログラムの内容はコメントの通りです
中身の輝度値と中央値は色々模索した結果で自分でもよくわからないのです
だから聞こうと思ったんであります
0495デフォルトの名無しさん2014/05/27(火) 21:52:47.98ID:ZPl6eSmM
それC言語と関係なくね

画像処理 その14
http://peace.2ch.net/test/read.cgi/tech/1370170263/
0496デフォルトの名無しさん2014/05/27(火) 21:52:55.34ID:X03+53LE
>>494
コピペは自分が書いたとは言わない
0497デフォルトの名無しさん2014/05/27(火) 21:55:54.04ID:Qn21fMMC
http://nozomi.2ch.net/test/read.cgi/prog/1399958017/173
>>また若いうちは、a=0;b=1;・・・z=26;と体力でやっていたが
>これを解消するには
>struct{
>int a;
>int b;
>・
>・
>}alph;
>とやってからアドレスを取得
>int *p = &alph.a;
>for(i = 0; i < 27; i++){
>*(p+i) = i;
>}
>一個一個イコールでいれる場合(a=0;b=1;・・・z=26;)と比べ、
>宣言の書き換えがいり、コードを書くエネルギーはいるだろうが、
>間違いが少なくなる

プロはこうやるそうですが、これで破綻しないのはなぜですか?
0498デフォルトの名無しさん2014/05/27(火) 22:01:48.91ID:iIiy8yYJ
>>494
自分でもよく分からんって、それプログラムとして意味あるんですかね……
最頻出と中央値の処理は「コードを読め」としか言いようがないなw
どうでもいいけど画像のピクセル数程度の大きさの配列をバブルソートしたくないでござる

bmpファイルって細かな形式があるけど、コードを読む限りだと8bitに決め打ち?
色々言いたいことはあるが、せめて「256」とかのマジックナンバーは無くそうぜ……
0499デフォルトの名無しさん2014/05/27(火) 22:03:27.15ID:iIiy8yYJ
>>497
とりあえず一文字変数を大量に宣言して知らん顔する奴は屑だと思う
お前はそれで本当にいいと思っていたのかと小一時間問い詰めたい
0500デフォルトの名無しさん2014/05/27(火) 22:06:41.51ID:4A6pA954
人差し指でしかタイプできないので一文字変数は大事だよ。
残業になっちゃうじゃないか無意味に長い変数名なんて…
0501デフォルトの名無しさん2014/05/27(火) 22:08:25.24ID:pZIBd1ud
ところで、構造体内のメンバがintだと、intのサイズ単位でメンバごとにきれいに並ぶって保証されてたっけ?
0502デフォルトの名無しさん2014/05/27(火) 22:13:26.81ID:4A6pA954
処理系のデフォルト次第だな。ほとんどの処理系は詰め合わせを制御できると
思うけどデフォルトがどうなってるかはチェックしておくべきだろうね。
0503デフォルトの名無しさん2014/05/27(火) 23:47:10.54ID:wpX2Wr2x
そんなの設定で変更できる処理系あるの?
変更したりしたら、過去のオブジェクトファイルとかライブラリと互換性まったくなくなるじゃん
0504デフォルトの名無しさん2014/05/27(火) 23:53:58.25ID:ctAn0FuG
プリプロセッサでパディングの明示指定する
のではなく
コンパイラへのコンパイル作業時のオプションでの制御か
0505デフォルトの名無しさん2014/05/27(火) 23:59:19.51ID:ZPl6eSmM
メンバへのアクセス頻度で整理されたりはしないのか
0506デフォルトの名無しさん2014/05/27(火) 23:59:54.62ID:UOcw9mK1
手元に規格書が無いので確認できないけど
sizeof int = 2,4,8
alignment = 1,2,4,8,16
なので常識的に考えて詰め物が必要になるケースはないよね
0507デフォルトの名無しさん2014/05/28(水) 00:02:14.23ID:agGj7SX9
組み込みはCPU品種に合わせて調整・確認が必要だろ。
どこまでCの範囲にするかは微妙だけど
0508デフォルトの名無しさん2014/05/28(水) 00:32:14.16ID:0PQQT2nt
struct xxx {・・・} x;
fread(&x, sizeof &x, 1, fp);

昔は、こういう構造体を丸ごとリード、ライトするような書き方が横行してたな。
今でもかもしれんけど。
0509デフォルトの名無しさん2014/05/28(水) 01:15:14.25ID:mf7CxjoQ
GF(2)上の多項式のうち、既約であるものを列挙したいのですが、既約かどうかを判定する方法がいまいち分かりません

とりあえず、ここまで作りました ttp://ideone.com/9qtVWS
上記コードの int isIrreducible(int poly,int m) で既約かどうかを判定しています。
明らかに既約でない場合(polyが偶数の場合)は除外していますが、それ以外の場合が分かりません…

どなたか、助けて下さい……
0510デフォルトの名無しさん2014/05/28(水) 07:09:59.24ID:mf7CxjoQ
すみません。事故解決しました。
0511デフォルトの名無しさん2014/05/28(水) 19:11:32.08ID:TWIuAILv
的外れの質問かもしれませんが、javaにはドラッグの関数がありますよね?
javaでは関数ではなくてメソッドですが…

Cも標準関数を組み合わせる事でドラッグ(物体を移動)の機能を持たせる関数を
作る事が出来るのでしょうか?凄い疑問に思っていたので質問しました。
0512デフォルトの名無しさん2014/05/28(水) 19:12:52.37ID:PzuNoYjz
できます
0513デフォルトの名無しさん2014/05/28(水) 19:19:32.93ID:TWIuAILv
>>512
本当でしょうか?どうやるのでしょう?
0514デフォルトの名無しさん2014/05/28(水) 19:20:09.67ID:PzuNoYjz
考えましょう
0515デフォルトの名無しさん2014/05/28(水) 19:30:58.10ID:C/wNImYi
物体を移動させるんなら、ロボットか何か繋がないとね
0516デフォルトの名無しさん2014/05/28(水) 19:37:35.03ID:WWWYZeLA
まず物体を定義して下さい。
0517デフォルトの名無しさん2014/05/28(水) 19:40:39.84ID:PzuNoYjz
オッパイかオマンコです
0518デフォルトの名無しさん2014/05/28(水) 19:42:31.23ID:WWWYZeLA
typedef struct {
 double position_x;
 double position_y;
 double position_z;
} Oppai;

void idou(Oppai *oppai, double x, double y, double z) {
 oppai->position_x += x;
 oppai->position_y += y;
 oppai->position_z += z;
}
0519デフォルトの名無しさん2014/05/28(水) 19:53:41.23ID:mspF09G9
>>511
そもそもCの"標準関数"には画面描画もマウス操作も含まれない
WindowsなりXなりプラットフォームの機能を使わないとダメ
0520デフォルトの名無しさん2014/05/28(水) 20:05:38.22ID:uT/cI3NV
>>519
端末にprintfで文字表示はwindowの機能じゃないんでしょうか?
0521デフォルトの名無しさん2014/05/28(水) 20:10:22.22ID:uT/cI3NV
分からない

C言語例えばcygwinだと、OSは全く関係ないんですか?
OSにcygwinをインストールしてるからprintfはOSの機能では?
正確に言うと、C言語の定義をもったOSの機能?
0522デフォルトの名無しさん2014/05/28(水) 20:11:34.04ID:BR1Tkgwo
printf()はこう作れという規格に基づいて
OSの機能を使って実装されてる
0523デフォルトの名無しさん2014/05/28(水) 20:13:50.70ID:BR1Tkgwo
Windowsならコンソールに出力するWin32API等(例えばWriteConsole()等)を使ってprinf()関数を構成している
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms682073%28v=vs.85%29.aspx
0524デフォルトの名無しさん2014/05/28(水) 20:17:15.79ID:uT/cI3NV
>>522
分かりやすい、
つまりprintf()も

windowabc()
windoudef()
................
とwindowsの関数に置き換わるってことですね?


で分からないのはDirectXがOSを介さないのは何故ですか?

Directx のdirection()関数があるとしたら、こう作れという規格に
基づいてOSの機能を使って実装されるのでは?
0525デフォルトの名無しさん2014/05/28(水) 20:20:05.47ID:BR1Tkgwo
どう実装するかはC言語のコンパイラ開発者次第だし
DirectXを使って実装してるコンパイラもあるかもしれんし
そんなもん出回ってるCコンパイラ作ってる開発者ら本人に聞け
0526デフォルトの名無しさん2014/05/28(水) 20:23:01.28ID:BR1Tkgwo
だいたい実行ファイルexeにコンパイルした時点でexeファイルに使うAPIの情報とか名前そのままで入ってるやろ
0527デフォルトの名無しさん2014/05/28(水) 20:23:34.00ID:BR1Tkgwo
prinf()でHelloWorld出すだけのexeを解析でもすればいい
0528デフォルトの名無しさん2014/05/28(水) 20:24:26.65ID:uT/cI3NV
>>525
いやDirectX OSの機能を介さないって意味が分からなくて…
OS上で動くプログラムは全てOSの機能を使うってことになるので
OSの機能を使わない事なんてあるのかなと…
何の機能使ってるんだろうか…
0529デフォルトの名無しさん2014/05/28(水) 20:25:42.36ID:uT/cI3NV
http://dixq.net/forum/viewtopic.php?f=3&;t=14446
同じ質問を過去にしましたが、分かりません
0530デフォルトの名無しさん2014/05/28(水) 20:28:01.28ID:uT/cI3NV
あ、apiは使ってないってだけでOSの機能は使ってるってことですか
そりゃそうですよね
0531デフォルトの名無しさん2014/05/28(水) 20:30:54.77ID:AwYxqhpy
ID:BR1Tkgwo の言ってることはデタラメだから信じない方がいい
0532デフォルトの名無しさん2014/05/28(水) 20:32:22.75ID:uT/cI3NV
全ての言語はそのOS上で動くならOSの関数に変わると思うのですが
apiを使わない場合どうやってコードを実行できるのですか?
純粋な疑問です、というかいつまでたっても理解できない。
0533デフォルトの名無しさん2014/05/28(水) 20:39:42.64ID:xq+pfC01
OSのサービスが必要なければAPIは使わないだろう。
APIを使わずにサービスと同等の処理をするのは現実的に
難しいだろうな。
0534デフォルトの名無しさん2014/05/28(水) 20:43:08.22ID:cL3suHWh
ID:BR1Tkgwo
知ったか乙
0535デフォルトの名無しさん2014/05/28(水) 20:46:38.81ID:r6RWITw2
>>532
DirectXもOSご提供の関数だよ。
OSの関数って言うのが何の事を言っているのかは良くわからないけど、別にWin32apiだけがOSの関数ってわけじゃないし。

特定条件下で特定用途に特化させたapiの一つがDirectXね。
0536デフォルトの名無しさん2014/05/28(水) 20:55:15.61ID:uT/cI3NV
>>535
OS提供って、windows提供ってことですか?
0537デフォルトの名無しさん2014/05/28(水) 20:55:58.89ID:uT/cI3NV
別にWin32apiだけがOSの関数ってわけじゃないし。
 ↑
???


windowsが提供する関数ってwin32apiだけじゃないんですか?
0538デフォルトの名無しさん2014/05/28(水) 20:56:52.09ID:Fg+maZpD
昔はVRAM直書きしていただろ。あれはAPI (INT21H/BIOS) 使用してないよ。

DirectXはよくわからんけど、マルチタスクの場合、独占使用権の管理はOSに任せないといかんわな。
直接描画するのは好き勝手にしてもかまわないけど。
0539デフォルトの名無しさん2014/05/28(水) 20:57:50.51ID:r6RWITw2
>>536
そだよ。
って言うか、windowsでしか提供されない。
0540デフォルトの名無しさん2014/05/28(水) 21:00:11.58ID:jszffFGk
DirectXもOSの一部だと思っておけ。
0541デフォルトの名無しさん2014/05/28(水) 21:08:44.29ID:r6RWITw2
>>537
えっと、win32apiってのは、windowsであれば、ほぼ必ず使える基本的な機能の関数群の総称ね。

それに対して、DirectXってのは動作環境に条件が着くの。
その条件さえ満たせば、(汎用の)win32apiより高速に動作するとかね。

想定する使い方が違うだけで、どちらもwindowsというOSが提供してくれる機能だよ。
0542デフォルトの名無しさん2014/05/28(水) 21:09:02.01ID:uT/cI3NV
>>539
え??macやunixは?
>>540
なるほど
標準スタンバイがwindows、directxもOS化するってことですね
何か凄い理解した気がする
0543デフォルトの名無しさん2014/05/28(水) 21:11:06.96ID:jgJmJNUO
面白い釣り師が現れたものよ
0544デフォルトの名無しさん2014/05/28(水) 21:15:03.72ID:uT/cI3NV
>>541
なるほどー、DirectXはコードがそのままwindowコードに変換されず
windowsが直接処理できるってことなな?
例えばjavaのsystem.println()関数は、
windowコードもしくはdirectxコードに変換するってことですよね?


ただ疑問なんですが、macやunixもwindowコードみたいに、osで直接
処理できるコードはないんですか?
macもunixもOSですよね?

windowしか提供しないってことは
macのコードもwindowコードなんですか?
0545デフォルトの名無しさん2014/05/28(水) 21:23:17.59ID:WWWYZeLA
ソフトウェアアーキテクチャでググれw
http://techon.nikkeibp.co.jp/article/HONSHI/20111028/199993/20111031_cs02.jpg
0546デフォルトの名無しさん2014/05/28(水) 21:30:17.13ID:TCoF8qnI
>標準スタンバイ
変な単語作るなよ。
0547デフォルトの名無しさん2014/05/28(水) 21:31:13.86ID:r6RWITw2
>>544
ちょっと勘違いと言うか、ソフトウェア一般に関する基礎知識が足りていないんじゃないかな?
コードの変換って何の事?
0548デフォルトの名無しさん2014/05/28(水) 21:34:47.94ID:uT/cI3NV
>>547
コードをコードに変換する事です。
cのコードがwindowsのコードに変わって、最後はデバイスドライバから
アセンブラから機械語に変わるんでしょう?間違ってるでしょうか?

>>546
すいません。
0549デフォルトの名無しさん2014/05/28(水) 21:38:07.41ID:C/wNImYi
OSもCで書いてあるとか言ったら腰抜かしそうだな
0550デフォルトの名無しさん2014/05/28(水) 21:39:14.45ID:wUyF4O7+
頭痛いぐらい間違ってるな。
0551デフォルトの名無しさん2014/05/28(水) 21:42:42.95ID:uT/cI3NV
>>549
OSはミドルウェアで書かれてるんじゃないですか?

イメージ

printf→windows()........→device()......→pop() push() add()→
2b4a6c.....→101010101010101100110100110101

こんな感じですが間違ってますか?
0552デフォルトの名無しさん2014/05/28(水) 21:43:02.61ID:ABFwbD7m
>>549
OSを書くためにCが造られたとも.... (それだけじゃないだろうけどね)
0553デフォルトの名無しさん2014/05/28(水) 21:46:02.29ID:YEAQ3RMD
ワロタ
0554デフォルトの名無しさん2014/05/28(水) 21:47:12.28ID:WWWYZeLA
インタプリタをイメージしてるようだな
0555デフォルトの名無しさん2014/05/28(水) 21:47:20.36ID:PcnkzAVj
もう面倒だし>>545で終了でいいじゃん……
0556デフォルトの名無しさん2014/05/28(水) 21:48:27.71ID:uT/cI3NV
>>549
昔のCはCの次がOSだったので、CとOSで協調しながらwindowsコードを
作ったんじゃないでしょうか?
つまり昔のCは間に何も挟まないC,今はOSを挟むCって事じゃないですか?
0557デフォルトの名無しさん2014/05/28(水) 21:51:05.02ID:cE7yyxsV
Windowsの場合
コンパイルしたら、拡張子が
.o
.obj
のファイルができる。

リンクしたら、拡張子が.exeのファイルができる。
もうコンパイラがなくてもこれをそのまま実行できる。

ふつうのテキストエディタでは、.exeを編集できない
0558デフォルトの名無しさん2014/05/28(水) 21:52:47.09ID:2k7Pa4p2
お前ら、たまにはCの話もしろよ…
0559デフォルトの名無しさん2014/05/28(水) 21:53:58.65ID:C/wNImYi
>>556
完全に違う
0560デフォルトの名無しさん2014/05/28(水) 21:55:15.03ID:X+vVfPVs
OSは普通バイナリー(マシン語)です。
Cなどのコンパイル言語も(対象ハードの)マシン語のオブジェクトファイルに変換します。
アプリケーションはコンパイルされたオブジェクトファイルと実行環境に合わせたライブラリをリンクさせて生成(exe化)されます。

OSが提供する機能はアプリケーション実行時にアプリケーションが呼び出します。
0561デフォルトの名無しさん2014/05/28(水) 21:58:30.90ID:uT/cI3NV
え???
やっぱ分かりませんw
CはOSに変換されるけど、OSはCで作られたんですか?
混乱するww

OSは機械語を組み合わせて作ったんじゃないんですか?
0562デフォルトの名無しさん2014/05/28(水) 21:59:47.88ID:jgJmJNUO
もう飽きたから
はよ釣り宣言しとけ
0563デフォルトの名無しさん2014/05/28(水) 22:01:53.10ID:X+vVfPVs
>CはOSに変換されるけど
これが間違い。
Cはマシン語に変換されるだけでそれがOSになるかアプリケーションになるかは
その後の処理しだい。
0564デフォルトの名無しさん2014/05/28(水) 22:02:43.75ID:uT/cI3NV
>>562
釣りじゃないです、プログラミングはできますが
言語が内部でどうなってるか考えた事もないので…
文法本に内部の事ってあんまり書いてませんし
配列はスタックとか、動的配列はヒープとかその程度しか内部事情は知りません
0565デフォルトの名無しさん2014/05/28(水) 22:03:06.15ID:C/wNImYi
>>561
Cを変換(コンパイル)すると機械語になる
OSも、おまえの書いた糞コードも機械語
あとはそれらの連携
0566デフォルトの名無しさん2014/05/28(水) 22:05:34.18ID:uT/cI3NV
>>563
printf()関数はwindowsコードに変換されないんですか?
printf()という目的を達成するために何百種類ものwin32api関数が
生成されるんじゃないんですか?
0567デフォルトの名無しさん2014/05/28(水) 22:10:19.11ID:ABFwbD7m
AdvancedWindowsでも買って読めば? (投げやり
0568デフォルトの名無しさん2014/05/28(水) 22:10:56.15ID:MW8tevt3
"windowsコードに変換"という変な概念とか、
"関数を生成する"という変な概念を捨てろ。

printf()はライブラリに入っている関数で、
お前の糞コードにリンクされている。

お前の糞コードがprintf()を呼び出したら、
printf()はwindowsのサービスを(やや特殊な形式で)"呼び出す"。
windowsは既に存在しているプログラムで、
呼ばれたらそれに応じた仕事をする。
0569デフォルトの名無しさん2014/05/28(水) 22:11:54.43ID:uT/cI3NV
呼び出される事をコードに変換されるって思ってる人もいるし
解釈の違いじゃないでしょうか?

windows関数が呼び出される=Cがそのコードになるっていう解釈なんですが

windowコードがCを機械語にするために仲介してることは間違いないんでしょう?
0570デフォルトの名無しさん2014/05/28(水) 22:13:15.74ID:PcnkzAVj
>>561
 まず機械語(アセンブラ言語)と高級言語の違いは分かる?
 今日日OSを全部アセンブラで書けるわけがない(現実的ではない)から、必要最低限を
除いた部分を高級言語(C言語等)で記述してコンパイル→リンク→実行ファイルとして使うわけ
 毎度毎度決まりきった処理(画面描画など定型的なもの)を書くのは負担が大きすぎる
から、通常OSや他アプリによって提供されるライブラリやAPIを使ってアプリケーションを
開発する。コンパイルする際にアセンブラコードを吐いてからそれをテキストエディタ等で
読めば分かるけど、OSの機能とかをアセンブラ中で呼び出すことが度々あるのに気づくはず

 さて、printf関数などは、C言語の仕様で決められた標準関数。「実装がどうあれ、
こういった機能を実現できるようにしてくださいよ」ってことで決められたものだ。で、
それを実現するためにWindowsならWin32APIとかそれより下のサービスとかを叩いて
機能を実現させてるわけ。「windowsコード」なんて謎の概念があるわけじゃないの。
全ての始まりは機械語(アセンブラ)。
0571デフォルトの名無しさん2014/05/28(水) 22:14:26.89ID:uT/cI3NV
つまり

(Cコード+windowコード)=ソフト←やり取り→(標準スタンバイされたwindowコード)=OS

こんな感じですか?間違ってます?
0572デフォルトの名無しさん2014/05/28(水) 22:16:52.16ID:PcnkzAVj
>>569
念の為にもう一度。C言語で書いたコードをコンパイラからコンパイルすると、
そのコードが直接機械語として翻訳される。で、その際にWindowsの機能を呼び出す
ための命令がちょくちょく挟まるけど、その「呼び出すための命令」も機械語。
どこから聞いたのか知らないが、「windowコード」なんて言葉は忘れることを強く勧める
0573デフォルトの名無しさん2014/05/28(水) 22:19:52.06ID:uT/cI3NV
>>570
機械語はハードのNANDの1と0のスイッチの切り替えの組み合わせですか?

「printfは実装がどうであれ、こういった機能を実現」
    ↑
非常に分かりやすくて本にも載ってない説明です、ありがとうございます。
これは分かります。もっと言えば、用意された端末に表示するというのも
加わりますよね?

自分はwin32apiとかwindowが提供するコード全般をwindowsコードって呼んでます。
すいません。
0574デフォルトの名無しさん2014/05/28(水) 22:20:12.23ID:rQtQSaLu
windowコードなんて概念は存在しない。
0575デフォルトの名無しさん2014/05/28(水) 22:22:11.91ID:j2BxTAy4
お前ら病人の相手して人生を浪費しないでください。
チョンや馬鹿の相手をしても何も得られません。
0576デフォルトの名無しさん2014/05/28(水) 22:23:07.18ID:uT/cI3NV
>>547
概念じゃなくてwindowというOSが提供してるから単にwindowsコードって
読んでるだけです、windowsのCD-ROMに刻まれた1と0のくぼみの組み合わせを
windowsコードって呼んでます…
0577デフォルトの名無しさん2014/05/28(水) 22:24:06.96ID:rQtQSaLu
ここまでwindowsにこだわっておきながら

>542 名前:デフォルトの名無しさん[sage] 投稿日:2014/05/28(水) 21:09:02.01 ID:uT/cI3NV [10/20]
>>>539
>え??macやunixは?
なんて投稿があったのを思い出すと怒りしかわいて来ない。
0578デフォルトの名無しさん2014/05/28(水) 22:24:15.38ID:YEAQ3RMD
自分語使って話すな
0579デフォルトの名無しさん2014/05/28(水) 22:25:03.37ID:PcnkzAVj
>>573
>機械語はハードのNANDの1と0のスイッチの切り替え
どのレベル(段階)での意味か分からんが違うと思われ
CPUの仕組みとか言い出したら本格的にスレ違いかと
>自分はwin32apiとかwindowが提供するコード全般をwindowsコードって呼んでます。
!?
0580デフォルトの名無しさん2014/05/28(水) 22:25:43.72ID:rQtQSaLu
世界中でID:uT/cI3NVしか使わない単語 > windowsコード
二度と使うな! NGワード行きだ。
0581デフォルトの名無しさん2014/05/28(水) 22:28:30.48ID:z4JSSBB1
 
 マイコンキット買ってきて、組み立ててみるところからやり直せ
0582デフォルトの名無しさん2014/05/28(水) 22:28:37.60ID:j2BxTAy4
そいつは自分の持ってる語彙かき集めて、
必死で話繕ってるだけだから相手するだけムダだよ。
釣りに見えてその実ガチだから可愛そうではあるが。
0583デフォルトの名無しさん2014/05/28(水) 22:29:40.00ID:uT/cI3NV
>>582
断片的な知識だけが多すぎて纏まらない
例えばカーネルっていう言葉も言葉だけは知ってるみたいな
OSの最下位プログラムみたいな認識ですけど
0584デフォルトの名無しさん2014/05/28(水) 22:30:54.08ID:uT/cI3NV
printf(標準ライブラリ)→windows()........(win32api)→device()......(ミドルウェア)→pop() push() add()→(アセンブラ)
2b4a6c.....(16進機械語)→101010101010101100110100110101(機械語)

このイメージが間違ってると言われたらさすがにショックは感じざる負えないです
これだけは自信を持って信じてました
0585デフォルトの名無しさん2014/05/28(水) 22:31:37.32ID:KOASUGaT
こういうやつもコミュ障にはいるのかな?
0586デフォルトの名無しさん2014/05/28(水) 22:32:11.21ID:jgJmJNUO
>>564
この手の本を読めよ
似たようなタイトルの本ならなんでもいいから下記3ジャンルの本をよ


コンパイラの仕組み (情報科学こんせぷつ) 渡辺 坦
固定リンク: http://www.amazon.co.jp/dp/4254127081

オぺレーティングシステム (IT Text) 野口 健一郎
固定リンク: http://www.amazon.co.jp/dp/4274132501

コンピュータアーキテクチャ(改訂3?版) 馬場 敬信
固定リンク: http://www.amazon.co.jp/dp/4274211320
0587デフォルトの名無しさん2014/05/28(水) 22:35:02.23ID:uT/cI3NV
>>586
ありがとうございます
0588デフォルトの名無しさん2014/05/28(水) 22:35:32.19ID:YEAQ3RMD
>>583
だったら言葉理解するところから始めなよ
わからないまま語ってるからわけわからんのだよ
そういうのって知識って言わんよ
0589デフォルトの名無しさん2014/05/28(水) 22:36:01.55ID:KOASUGaT
ついでにこれも

プログラムはなぜ動くのか
ttp://www.amazon.co.jp/dp/4822283151/
0590デフォルトの名無しさん2014/05/28(水) 22:39:36.26ID:j2BxTAy4
>>588
そいつは人より頭が悪いんだろうな。
ちょっとずつ間違って覚えちゃうんだろう。
まあそういう奴いるし、可愛そうだが仕方ない。
理解が遅いから覚えるのも大変なんだろうよ。
0591デフォルトの名無しさん2014/05/28(水) 22:40:52.90ID:mNJNNmC2
>自分はwin32apiとかwindowが提供するコード全般をwindowsコードって呼んでます。

頼むから自分用語を使うのだけは止めてくれ。話がわけわかんなくなってしまうんで
0592デフォルトの名無しさん2014/05/28(水) 22:41:09.30ID:uT/cI3NV
>>588
合ってることと合ってない事を区別して指摘してくれたら嬉しい
俺の言ってる事全部間違いですか?
0593デフォルトの名無しさん2014/05/28(水) 22:41:43.44ID:uT/cI3NV
>>591
ごめんなさい「windowが提供するコード全般」って呼ぶことにします
0594デフォルトの名無しさん2014/05/28(水) 22:41:50.14ID:jgJmJNUO
間違って覚えてるか
以前テレビで月の満ち欠けを理解してない理科教師だかの話とかあったな
色々な形の月がそれぞれ地球の周りをまわってるみたいな
0595デフォルトの名無しさん2014/05/28(水) 22:42:29.89ID:j2BxTAy4
>>592
それを人に平気で頼むところが一番腐ってるよお前は。
相手に負担を強いて平気なところ。
0596デフォルトの名無しさん2014/05/28(水) 22:43:58.70ID:jgJmJNUO
自分のために時間や労力を割いてくれた人に感謝する気持ちは大事だよね
0597デフォルトの名無しさん2014/05/28(水) 22:45:10.24ID:uT/cI3NV
ハードは1と0の組み合わせという事が分かってるから最初ハードを好きに弄る
弄り方を纏めたり、規則性をつける→機械語の出来上がり

コンピュータの基本ってこれじゃないですか?
0598デフォルトの名無しさん2014/05/28(水) 22:45:39.42ID:R9mHAQQ7
じゃ、俺に女紹介してくれ
感謝するで
0599デフォルトの名無しさん2014/05/28(水) 22:45:51.81ID:uT/cI3NV
>>596
感謝してます

>>588
ありがとうございます
0600デフォルトの名無しさん2014/05/28(水) 22:47:18.43ID:jgJmJNUO
>>597
今すぐブックオフにでも行って立ち読みでもしてこいや
おまえは本を読んで勉強してからレスしろ
とんちんかんな考え披露はやめれ
0601デフォルトの名無しさん2014/05/28(水) 22:47:22.28ID:YEAQ3RMD
>>592
根拠おさえるということをすすめるわ
あとスレチだからな
0602デフォルトの名無しさん2014/05/28(水) 22:48:23.09ID:R9mHAQQ7
俺の経験は、この種の人は精神病
マジで
0603デフォルトの名無しさん2014/05/28(水) 22:48:35.43ID:ABFwbD7m
その調子で、質問攻めで答えてくれるような場所があるかわからんけど

C言語から遠ざかってるんで余所でやってくれないかな?
0604デフォルトの名無しさん2014/05/28(水) 22:49:18.99ID:anCLy2f2
だれだID:uT/cI3NVをかまったやつは?
0605デフォルトの名無しさん2014/05/28(水) 22:49:26.25ID:KOASUGaT
もう寝ろ。
0606デフォルトの名無しさん2014/05/28(水) 22:50:34.01ID:j2BxTAy4
最近この板、こいつが荒らしまわってないか?
ずーっとトンチンカンなんだよ。
借り物の言葉でフワフワ。
とにかく徹頭徹尾トンチンカンなんだよ。
いろんなスレで出没してない?
0607デフォルトの名無しさん2014/05/28(水) 22:51:05.76ID:uT/cI3NV
>>602
元々統合失調症っぽくて言葉の使い方が分からなくなります
0608デフォルトの名無しさん2014/05/28(水) 22:52:32.25ID:uT/cI3NV
>>606
違いますよ、C以外の言語余りできないですし、次にできるjavaだけど
javaスレは過疎ってるから書き込みしません。

トンチンカン、借り物の言葉、これは認めます。
0609デフォルトの名無しさん2014/05/28(水) 22:58:08.42ID:uT/cI3NV
unixはCGIだから言語はスクリプト言語ですね
pipeとかcat,whichとかhistoryですよね?

windowsが生まれる前にunixでC言語のプログラミングってどうやって
やってたんだろう?
0610デフォルトの名無しさん2014/05/28(水) 23:01:39.97ID:jgJmJNUO
ここはおまえの脳内を垂れ流すスレじゃないんですが
0611デフォルトの名無しさん2014/05/28(水) 23:05:45.05ID:uT/cI3NV
すいません、自重します。
とりあえずwindowが提供するコード全般が仲介しまくってることだけは
分かりました、有難う感謝してます。
0612デフォルトの名無しさん2014/05/28(水) 23:05:47.40ID:J125jWS8
>609
ggrks
0613デフォルトの名無しさん2014/05/28(水) 23:06:23.38ID:J125jWS8
>611
二度と顔出すな!
0614デフォルトの名無しさん2014/05/28(水) 23:15:54.93ID:mspF09G9
>>584
間違ってはいるがまるっきり出鱈目というほどじゃない
一つに繋げてしまうから訳わからなくなってるだけで
0615デフォルトの名無しさん2014/05/28(水) 23:17:37.11ID:ASlM1xvm
>>614
甘やかすな
それぞれの実体がさっぱりわかってないんだぞ
0616デフォルトの名無しさん2014/05/28(水) 23:17:54.53ID:uT/cI3NV
>>613
それは無理、ここは頼れます
0617デフォルトの名無しさん2014/05/28(水) 23:23:06.30ID:uT/cI3NV
まとめたものをさらにまとめる、それをまとめる→高級言語の完成

これが言語のプロセスで俺の中のイメージです
0618デフォルトの名無しさん2014/05/28(水) 23:32:40.31ID:mNJNNmC2
>>609
>unixはCGIだから言語はスクリプト言語ですね

unixはスクリプトで出来上がっていると考えてます?
0619デフォルトの名無しさん2014/05/28(水) 23:37:56.80ID:uT/cI3NV
>>618
catとかpipe,historyとか今でいう高級言語みたいな感じですか?
unixはunixなりにwindowが提供するコード全般に相当するものが
あったんでしょう
0620デフォルトの名無しさん2014/05/28(水) 23:41:02.79ID:jgJmJNUO
C言語に関係ない話題を延々と続ける連中
0621デフォルトの名無しさん2014/05/28(水) 23:44:39.33ID:uT/cI3NV
windowsも色々な言語を扱える裏で、windows32api,windowsカーネルなどの
「windowが提供するコード全般」が連絡を取り合って処理を行っていたから。

unixも同じってことですよね?
0622デフォルトの名無しさん2014/05/28(水) 23:48:37.59ID:jgJmJNUO
自重するといいなが未だにこのスレに居付き全く悪びれる風もなくレスを続ける
流行りのファッションサイコパスというやつか
0623デフォルトの名無しさん2014/05/28(水) 23:54:40.00ID:r6RWITw2
なんか罪の意識を感じずにはいられない。
0624デフォルトの名無しさん2014/05/29(木) 00:02:49.29ID:uNe9k2ch
すいませんこの話は自己完結という事で…
0625デフォルトの名無しさん2014/05/29(木) 00:08:03.95ID:vA2c6Hl+
>>594
理科教師でそれはかなりヤヴァいのでは……
>>609
>unixはCGI
C言語「」
0626デフォルトの名無しさん2014/05/29(木) 00:16:55.25ID:Kg1bZGF5
594 名前:デフォルトの名無しさん[sage] 投稿日:2014/05/28(水) 22:41:50.14 ID:jgJmJNUO
間違って覚えてるか
以前テレビで月の満ち欠けを理解してない理科教師だかの話とかあったな
色々な形の月がそれぞれ地球の周りをまわってるみたいな

610 名前:デフォルトの名無しさん[sage] 投稿日:2014/05/28(水) 23:01:39.97 ID:jgJmJNUO
ここはおまえの脳内を垂れ流すスレじゃないんですが
0627デフォルトの名無しさん2014/05/29(木) 00:30:23.07ID:VM5G2GUb
今度はID:vA2c6Hl+かい?
0628デフォルトの名無しさん2014/05/29(木) 00:44:23.99ID:Kg1bZGF5
一連の流れを追わない奴らが次々と釣られる
0629デフォルトの名無しさん2014/05/29(木) 00:50:17.82ID:fX5JoJnK
>>628
なぜかラップ調で再生された
0630デフォルトの名無しさん2014/05/29(木) 00:53:15.32ID:1+PX4fUT
>>594は暗にこのスレの連中の発言も正しい事を言っているかは疑問だと言っているのでは?
0631デフォルトの名無しさん2014/05/29(木) 01:04:27.62ID:bLCAImAr
>>625
これのことか?

「月は8つある」と思っている人が教師になっている
http://d.hatena.ne.jp/toronei/20090803/B
0632デフォルトの名無しさん2014/05/29(木) 01:50:58.42ID:/G0dYxTO
ここはC言語のスレ
0633デフォルトの名無しさん2014/05/29(木) 02:33:11.23ID:yg8neWnh
puts("C言語で雑談すれば問題ないのでは");
0634デフォルトの名無しさん2014/05/29(木) 02:34:37.07ID:vA2c6Hl+
printf("流れ的にはprintfの方が良さげな気がする\n");
0635デフォルトの名無しさん2014/05/29(木) 02:43:23.12ID:87hQa66j
windows("こんな関数使っていい?\n");
0636デフォルトの名無しさん2014/05/29(木) 03:03:27.25ID:vA2c6Hl+
>>635
一瞬「え、そんな関数あるの?」ってググっちまったじゃないか……
窓関数(フーリエ変換)やWindow関数(SQL)ならあるんだけどね
0637デフォルトの名無しさん2014/05/29(木) 07:23:23.27ID:zxPZVq+7
printf()ってすごいね
0638デフォルトの名無しさん2014/05/29(木) 07:53:26.87ID:uZHHlmvY
前にディスプレイのOSが云々って質問したやつと同一人物かね?
0639デフォルトの名無しさん2014/05/29(木) 10:23:28.41ID:bNL2V7UE
>>606
専門板じゃないが
俺の見てるプログラミング系のスレにも日本語がおかしいのが湧いてるわ
0640デフォルトの名無しさん2014/05/29(木) 22:11:00.96ID:jVNi8UA/
unixはCGIだから(笑)
CGIを使えるのはunixだけ!(笑)
0641デフォルトの名無しさん2014/05/30(金) 03:45:28.45ID:TFWWdA/m
>>639
クソは書き込まなくてよし
0642デフォルトの名無しさん2014/05/31(土) 21:05:27.29ID:AWUG5WKm
64bitマシンか判定する方法ってsizeof(intptr_t) == 8とかでok?
0643デフォルトの名無しさん2014/05/31(土) 21:34:31.97ID:Y+xNHvac
>>642
それexeファイル作成時に確定しちゃうんじゃ……
(32bitなexeファイルだとsizeof(intptr_t)が当然4になる)
0644デフォルトの名無しさん2014/05/31(土) 21:37:28.27ID:S66lgqUj
64bitマシン上で32bit用アプリ動かすと仮想的な32bitマシン環境上で走らされるんじゃないの?判定する意味ないんじゃ
0645デフォルトの名無しさん2014/05/31(土) 21:54:41.78ID:wiKxQWEq
Cはほぼコンパイルされるんでシステムのビットワイズには条件コンパイルで対応すれば
いいんじゃないかしら?
0646デフォルトの名無しさん2014/05/31(土) 21:58:01.77ID:AWUG5WKm
>>644
その場合ってポインタのサイズは32ビットになるの?
ポインタのサイズが32なら32ビット判定で良いんだが
ポータブルなマクロとかありそうだが多過ぎてよくわからん
0647デフォルトの名無しさん2014/05/31(土) 22:20:35.50ID:2Tr9fndh
32bit分の入れ物しか用意してないんだから当然。
マクロはコンパイル時に解釈されるもんだから実行時のことは知らない。
0648デフォルトの名無しさん2014/05/31(土) 22:21:46.85ID:Epy9rHM/
WOWで調べろ
0649デフォルトの名無しさん2014/05/31(土) 23:40:11.97ID:fBD4N9aM
アセンブラレベルで調べるしかないだろうけど
UNIX系だと判断不能じゃないかな?
OS別ならシステム情報取得のライブラリとかないかな。
0650デフォルトの名無しさん2014/06/01(日) 01:10:25.36ID:MxSjB8Q5
>>642
64bitマシンだけでは通じない。

実行しているCPUが64bitCPUかどうか判定したのか、
実行環境が64ビット実行形式をサポートしていることを判定したいのか、
自分自身が64ビット実行形式でコンパイルされたのかを知りたいのか、
また64ビット実行形式も一種類ではないし、アーキテクチャ(x64とかia64とか)も複数あるし
OSによるし、CPUによるし、仮想OSもあるし、何を知りたいのかを定義しないと
誰も答えられない
0651デフォルトの名無しさん2014/06/01(日) 02:21:31.66ID:kbjdxhFm
OS次第で実行環境を返すAPIぐらいあるんじゃないの。
CPUのbit数なんてのはCの仕様範囲外だから何かしら
言語仕様以外の方法を使うしかないだろうね。
0652デフォルトの名無しさん2014/06/01(日) 23:27:29.17ID:rNEgeMw6
こういう言い方すればよかったな
ポインタのサイズが64ビットか32ビットかを知りたい
マシンアーキテクチャやOSはどうでもよい
これならどう?
0653デフォルトの名無しさん2014/06/01(日) 23:32:13.77ID:kbjdxhFm
それならsizeof()で可能でしょ。
0654デフォルトの名無しさん2014/06/01(日) 23:36:09.53ID:WpuaGpd9
コンパイル段階でポインタサイズは決定されるだろ。
配布はソース、インストール時にコンパイルってのを想定してるの?
0655デフォルトの名無しさん2014/06/01(日) 23:46:23.89ID:7S+uArMt
sizeof(void *)でよくね?
0656デフォルトの名無しさん2014/06/01(日) 23:54:17.10ID:7S+uArMt
事前定義済みマクロってので調べることも出来るらしい。
0657デフォルトの名無しさん2014/06/01(日) 23:54:59.14ID:GWmygECe
>>654
autoconfのconfigureの時に決めたい訳
0658デフォルトの名無しさん2014/06/01(日) 23:56:22.70ID:xRAJ7xDZ
実行環境関係なくポインタのサイズだけ知って何に使うつもりなんだろうか。
0659デフォルトの名無しさん2014/06/02(月) 00:00:07.32ID:iNq6h49s
>インスト時にコンパイル
午後でこーだを思い出した
0660デフォルトの名無しさん2014/06/02(月) 00:57:25.07ID:zBJnJbic
>>659
あれほんとうにコンパイルしてたの?インストーラにコンパイラ載っけてたの?としたら何?mingw?
なんだか信じがたかったし今でも信じていないなあ、そうそうこの前も再インストールしたっけ‥‥
0661デフォルトの名無しさん2014/06/02(月) 11:22:47.81ID:xp7tx+tU
とりあえずC言語スレの範囲外ってことで。
0662デフォルトの名無しさん2014/06/09(月) 11:22:07.20ID:sibuC2fs
配列の初期化の時に
A[0~255]=0 ; みたいに一気に0から255までの配列に入る値を決めることって出来ますか? for文はなしで。
0663デフォルトの名無しさん2014/06/09(月) 11:35:10.65ID:05afsbmO
全 0 で初期化するなら
int A[256] = { 0, }; /* 省略されている部分は 0 扱いになっている */
0664デフォルトの名無しさん2014/06/09(月) 12:25:32.98ID:M8Wl6BC9
>>662

http://d.hatena.ne.jp/tt4cs/20120219/1329636595
0665デフォルトの名無しさん2014/06/09(月) 12:34:34.44ID:7OlN8rvc
int a[100]={0};
とか書くと残りの要素も0になる…と思う。
0666デフォルトの名無しさん2014/06/09(月) 12:43:51.46ID:yIsFdClQ
つ memset()
0667デフォルトの名無しさん2014/06/09(月) 13:01:38.44ID:r3iX82eS
int a[256]={};でコンパイラがmemsetを呼ぶコードを生成することもあるね
sparcのgccがそうだった。x86はrepで初期化するコードだろうけど
0668デフォルトの名無しさん2014/06/09(月) 13:35:01.67ID:tfrcrV/a
callocでも
0669デフォルトの名無しさん2014/06/11(水) 18:30:46.81ID:OXJX+SqI
1桁の整数をchar型の配列に1つずつ入れたいんだけどどうすればいいですかね
0670デフォルトの名無しさん2014/06/11(水) 18:43:03.83ID:84WXT5GV
ん? 2ケタ以上の整数を各ケタに分けて配列に1ケタずつ入れるんじゃなくて?
0671デフォルトの名無しさん2014/06/11(水) 18:44:21.43ID:fhjMguYP
int a = 10;
char c = (char)a;
0672デフォルトの名無しさん2014/06/11(水) 18:44:42.77ID:TzKy3FGA
char c[ ] = "\000\001.....";
0673デフォルトの名無しさん2014/06/11(水) 18:44:53.16ID:5KWw7cXR
>>669
char array[SOME_LENGTH];
があったとして、例えばこういうこと?
array[0] = 0;
array[1] = 1;
それとも、こういうこと?
array[0] = 0 + '0';
array[1] = 1 + '0';
0674デフォルトの名無しさん2014/06/11(水) 18:45:00.51ID:gc0u05WB
char c[ ] = "\000\001.....";
0675デフォルトの名無しさん2014/06/11(水) 19:14:22.40ID:OXJX+SqI
具体的にいうと整数を2進数の文字列に変換したかったんです
>>673
最初は>>671みたいなやり方でやってたんですがうまくいきませんでした
先ほど後者の通りに入力したらしっかりと出力までできました!
Cから随分と離れてたんでchar型の細かいルールは忘れてしまったんですが、'0'は数値として足されて足し合わせたものがchar型として代入されるってことですかね
0676デフォルトの名無しさん2014/06/11(水) 19:21:29.85ID:HfnqJ7tw
'0'は0という文字の文字コード。
数字は文字コードが連続してるので足し算するとうまいこと数値が文字になる
0677デフォルトの名無しさん2014/06/11(水) 19:32:28.19ID:OXJX+SqI
なるほど、助かりました
0678デフォルトの名無しさん2014/06/11(水) 19:54:44.89ID:5KWw7cXR
念の為に補足しておくと、文字コード表を見て'0'から'9'まで並んでなかったら使えないので注意。
まぁ、AsciiだろうとEBCDICだろうと数字文字は並んでいるけど。
0679デフォルトの名無しさん2014/06/11(水) 20:01:58.71ID:/LGtyonW
>>678
数字は確実に並んでいるよ。
0680デフォルトの名無しさん2014/06/11(水) 20:16:35.77ID:HfnqJ7tw
仕様で並んでない可能性があるのはアルファベット
0681デフォルトの名無しさん2014/06/11(水) 21:07:35.75ID:PvW5FlCY
0が最後にある文字コードとかは存在せんのかな
0682デフォルトの名無しさん2014/06/11(水) 21:17:01.25ID:hb+11Efs
>>681
Cでは0から連続してることが保証されてる
0683デフォルトの名無しさん2014/06/11(水) 21:17:46.93ID:jYCKOqON
つまり。0x20,0x30,0x40,x050,x60,0x70の文字コードを認めいない宗派なのですか?
0684デフォルトの名無しさん2014/06/11(水) 21:28:19.61ID:QETPSrry
漢数字も連続で並んでないよ!
0685デフォルトの名無しさん2014/06/11(水) 22:11:47.07ID:eUb0iqX/
         _人人人人人人人人人人人人人人人_
        >   そうなんだ、すごいね!      <
       ´ ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
            __、、=--、、         __
           /    ・ ゙!       /・   `ヽ
           | ・   __,ノ       (_    ・ |
           ヽ、 (三,、,         _)    /
            /ー-=-i''       (____,,,.ノ
            |__,,/          |__ゝ
             〉  )          (  )
0686デフォルトの名無しさん2014/06/11(水) 23:28:33.43ID:l+9KcYK6
逆に考えたらいい
何でもいいから順に並んでいるものを数字として採用すればいい

最初は戸惑うかもだが
しばらく使ってればすぐ慣れるよ
0687デフォルトの名無しさん2014/06/12(木) 02:52:41.32ID:0fE6ecZu
"0123456789"を入れたchar配列に添字でアクセスすれば流石に大丈夫じゃね?
漢数字なら、1文字辺りのバイト数を掛けて添字で。
0688デフォルトの名無しさん2014/06/12(木) 05:04:04.95ID:19dxnqrT
1文字辺りのバイト数が固定だと誰が決めた?
そういう石橋の叩き方をするなら
char *kan[]={"〇","一","二","三","四","五","六","七","八","九"};
とかにしておかないと。
0689デフォルトの名無しさん2014/06/12(木) 09:47:00.24ID:WI4ByIM2
漢字はグラフィックであって文字ではない
0690デフォルトの名無しさん2014/06/12(木) 10:08:37.58ID:i9nX8euo
するどい意見をありがとう
0691デフォルトの名無しさん2014/06/12(木) 11:50:41.40ID:UKEKtPhH
>>688
十とか百、千、万も加えたいなw
0692デフォルトの名無しさん2014/06/12(木) 22:18:52.40ID:9nauQpX3
>>687-688
16進数や曜日、英語の月名でも使うよね。
0693デフォルトの名無しさん2014/06/12(木) 23:59:40.19ID:0fE6ecZu
>>688
おお、指摘ありがとう
そこまですりゃまず問題なかろうな
0694デフォルトの名無しさん2014/06/13(金) 14:56:53.96ID:fbb25G1T
#include <stdio.h>

int main (void)

{
int no;

printf("整数を入力してください:”);
scanf("%d",&no);

no = 5 * no;

printf("その数の5倍は%dです。\n" , no);

return 0;

}

これの修正どころどこだい
0695デフォルトの名無しさん2014/06/13(金) 15:27:42.14ID:wW8ozHJ8
fflush(stdout);を入れる
0696デフォルトの名無しさん2014/06/13(金) 15:48:34.93ID:YStt/tH1
ちげーよ
全角のダブルクオートとか使うなと
0697デフォルトの名無しさん2014/06/13(金) 15:50:04.45ID:YStt/tH1
ついでに括弧もな
0698デフォルトの名無しさん2014/06/13(金) 15:52:21.74ID:0JUM4RsI
別に要らんがな。
0699デフォルトの名無しさん2014/06/13(金) 16:33:28.32ID:EdGTog4t
#include <stdio.h>

int main()
{
  int no;
  unsigned char buf[128];

  printf("整数を入力してください:");
  buf[0]='\0';
  fgets(buf,128,stdin);
  sscanf(buf,"%d",&no);

  no = 5 * no;

  printf("その数の5倍は%dです。\n",no);

  return 0;
}
0700デフォルトの名無しさん2014/06/13(金) 17:12:36.60ID:fbb25G1T
親切にありがとう
修正後実行できた
0701デフォルトの名無しさん2014/06/14(土) 06:09:41.08ID:N0U7iM3x
違う
scanf,sscanfの戻り値を調べるように修正しろよ
0702デフォルトの名無しさん2014/06/14(土) 06:17:44.76ID:N0U7iM3x
#include <stdio.h>

int main (void)

{
int no;

printf("整数を入力してください:”");
if(scanf("%d",&no)==1){

no = 5 * no;

printf("その数の5倍は%dです。\n" , no);
}
return 0;

}
0703デフォルトの名無しさん2014/06/14(土) 09:08:58.29ID:gy/b9HBc
エラーメッセージくらい出せよ
0704デフォルトの名無しさん2014/06/14(土) 09:11:59.01ID:RGY3g82H
代わりに乳頭でもいいですか?
0705デフォルトの名無しさん2014/06/16(月) 00:59:34.84ID:BBy6/JMr
× > no = 5 * no;
○ > no *= 5;
0706デフォルトの名無しさん2014/06/16(月) 15:38:12.54ID:15LXpyTU
それはどちらが良いというものでもない
0707デフォルトの名無しさん2014/06/16(月) 15:39:46.19ID:lEB23VBS
最適化でどっちも同じになるだろうに。
0708デフォルトの名無しさん2014/06/16(月) 18:39:01.50ID:eNuyf1Ao
小学校の掛け算の順序的な意味では
× no = 5 * no;
○ no = no * 5;
で、変数使い回しちゃうのもいただけない。
0709デフォルトの名無しさん2014/06/16(月) 18:39:42.13ID:7he4xSgp
つまらん釣りだな
0710デフォルトの名無しさん2014/06/16(月) 19:19:02.63ID:yaRJosAv
>>708
答えが最後にくるんだから、 no = 5 * no;で右から読むのが正しい
0711デフォルトの名無しさん2014/06/16(月) 20:14:16.36ID:eNuyf1Ao
>>710
それはちょっと考えたけど割り算がなぁ…÷じゃなくて/だから違うといえば違うんだがそれ言うと×じゃなくて*だしうーん
0712デフォルトの名無しさん2014/06/16(月) 22:51:00.61ID:DMpLIyZE
no += (no<<2);

って技術は時代遅れかのう...
0713デフォルトの名無しさん2014/06/16(月) 22:55:35.34ID:7he4xSgp
・シフト演算にするだけのようなピーピングホール最適化は、相当トロいコンパイラでもやってくれる
・a + b * 4 を、うっかり a + b << 2 としてバグを入れてしまう危険がある
以上の理由で「やるな!」
0714デフォルトの名無しさん2014/06/17(火) 00:37:25.96ID:zij/VPS5
ここまで
no = no + no + no + no + no;
なし
0715デフォルトの名無しさん2014/06/17(火) 16:55:49.95ID:OBRvPqMN
すげえ否定されてる感じになるな
0716デフォルトの名無しさん2014/06/19(木) 15:34:39.83ID:lyOzh5Qj
typedefの用途がよくわからないんですが・・・
何のために必要なんですか?
0717片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/06/19(木) 15:46:29.86ID:4S5DOub9
>>716
typedef struct ABC ABC;でstruct ABCのstructを省略できる。
関数ポインタの型はややこしいので名前をつけたりする。
0718デフォルトの名無しさん2014/06/19(木) 15:49:30.52ID:zL/PZdxp
ややこしさを半減する

typedef double (*fptr_t)(int);
 /* int を引数に double を返す 関数のポインタ を 1つの型として別名で呼ぶ */

fptr_t array[10];
 なんかしらんけど 10個の配列
 なんかしらんけど の正体は 「int を引数に double を返す 関数のポインタ」
0719デフォルトの名無しさん2014/06/19(木) 18:21:01.74ID:xM9hF8zK
>>718
このとき、
型 fptr_t が宣言された、と考えていいのですかね。
0720デフォルトの名無しさん2014/06/19(木) 20:51:15.93ID:MpV+gRiA
>>716
typedef にのご利益はあまり感じられない

>718 も普通に
http://codepad.org/xm87ZqO7
と書いてなんの惑いもない

(a + b + c)(x + y + z) を計算するのに、いちいち 「A = a + b, X = x + y とおいて」 とかやらないだろう?
宣言を頭(優先度の高い順)から素直に読めば、あるいは書けばいいだけだ
0721デフォルトの名無しさん2014/06/19(木) 21:00:51.18ID:yKcfPy0E
何度も型名がでてきたり、宣言が別ファイルになったりするとないとわからなくなる

あと、型が変わる可能性があるときとかに互換性保つ時にもつかう
0722デフォルトの名無しさん2014/06/19(木) 21:20:08.24ID:E5cNUetz
そこでIDEやらエディタという文明の利器がある
0723デフォルトの名無しさん2014/06/19(木) 21:23:20.43ID:m01fN/BB
使ってみりゃどこで便利なのかわかるよ。
要は抽象化だよね。なんかいろいろあるものを一つの概念にまとめてしまう。
0724デフォルトの名無しさん2014/06/19(木) 21:24:52.04ID:Di0jt70X
型の実装を隠したい時かな
0725デフォルトの名無しさん2014/06/20(金) 02:02:41.10ID:ZA7ZhzvF
まあ C なら stdio.h の FILE みたいな使い方はあるな
0726デフォルトの名無しさん2014/06/20(金) 09:37:33.48ID:dsRMr9XY
typedef enumはよくやる
0727デフォルトの名無しさん2014/06/24(火) 12:42:25.32ID:OmvI3p+s
トゲゾーとサンダーを回避できるアイテムを常時所有しとけよ
何度でも使用可能で1度発動させたら数秒間のみ有効になるとかな
他の人のアイテム所有状況を確認する技術で差がつくようにすればいい
0728デフォルトの名無しさん2014/06/24(火) 12:43:35.95ID:OmvI3p+s
oops
0729デフォルトの名無しさん2014/06/24(火) 21:41:34.98ID:d/oEJT3w
C言語の開発環境って

Visual Studio(統合開発環境)

テキストエディタ+コンパイラ

があるけど、どっちがいいの?

あとVisual StudioってVisual C++と違うの?
0730デフォルトの名無しさん2014/06/24(火) 21:53:51.71ID:99ig3M/T
Visual Studio って統合環境(←プログラマー向けのアプリケーション)で使用できる言語には、
Visual C++、Visual C#、Visual Basic、Visual FoxProとかある。

統合環境がなければ、メニューすら作れないってのがオチでは?
0731デフォルトの名無しさん2014/06/24(火) 22:11:53.62ID:d/oEJT3w
Visual Studio って統合環境(←プログラマー向けのアプリケーション)で使用できる言語には、
Visual C++、Visual C#、Visual Basic、Visual FoxProとかある。

↑これって、プログラミング言語なの?統合開発環境の名前じゃないんだ。
0732デフォルトの名無しさん2014/06/24(火) 22:34:18.06ID:AfD6RzLL
Visual BasicはVisualまで含めて言語だけど、Visual C++は言語はC++だし、
難しいなぁ...
0733デフォルトの名無しさん2014/06/24(火) 23:30:35.36ID:d/oEJT3w
結局、C言語の勉強する上でベストな開発環境は何がいいの?統合開発環境じゃなくて、テキストエディタ+コンパイラで開発したほうがいいのか。それともどっちでも同じなのか。情報が色々ありすぎてわけわかんない。
0734デフォルトの名無しさん2014/06/24(火) 23:36:38.38ID:949Uh9AG
Win上ならVisualStudioでいい
0735デフォルトの名無しさん2014/06/24(火) 23:39:47.23ID:AMB+0gaJ
純粋にC言語やりたいならCygwinでも入れてgcc使えばいいんじゃないか
テキストエディタはお勧めしない、せめてEclipse CDTを使おう
0736デフォルトの名無しさん2014/06/25(水) 00:02:29.51ID:fqAH/3zi
Windows環境でVSを避ける理由が分からない
0737デフォルトの名無しさん2014/06/25(水) 00:29:21.75ID:WpWGRtCV
まずはどれでもいいからひとつ使ってみて、こんなことやりたいと言うのが見つかったら、またおいで
0738デフォルトの名無しさん2014/06/25(水) 02:23:43.01ID:jtYcep/V
gccだけはどのOS上でも動いてるんじゃないかな
0739デフォルトの名無しさん2014/06/25(水) 07:30:20.14ID:8pUr0YL0
>テキストエディタ+コンパイラ
ウィンドウの操作が出来る事前提
pathの概念を知ってて、かつコマンドプロンプトでの操作(ディレクトリの移動等)が
が出来ないと

>統合環境
便利なんだろうけど、環境設定ではまると統合環境の勉強してんだか
言語の勉強してんだか判らなくなってしまうことがある
0740デフォルトの名無しさん2014/06/25(水) 08:20:23.89ID:hNZfvDcq
vimが最強でFA
0741デフォルトの名無しさん2014/06/25(水) 09:20:14.67ID:i65JE2xX
DOS時代はテキストエディタ+コンパイラで作ってたけど、
もう統合環境のデバッガ無しじゃやっとれん。
0742デフォルトの名無しさん2014/06/25(水) 09:32:16.40ID:4hnh7AK9
もうコードコンプリートと構文解析がないと怖くて書けないよ
0743デフォルトの名無しさん2014/06/25(水) 11:10:45.62ID:hNZfvDcq
コードコンプリートとかまだ売れてんのか
下巻まできっちり読んでるやつそんないないんじゃねえの
今のトレンドだとリーダブルコードだろう
0744デフォルトの名無しさん2014/06/25(水) 11:53:41.10ID:CQ02L68X
いや入力アシストの方な
0745デフォルトの名無しさん2014/06/25(水) 12:06:21.96ID:EItPnDF/
>>735
C++とかならMinGWやCygwinでgccが有効だけど只のCならTCCも手軽で良いぞ
最適化が駄目なのとC++が使えないのとインラインアセンブラがGAS系なのは微妙だが、
入れるの楽だしコンパイル速いし出力ファイルサイズも小さいしスクリプト言語っぽく使えるのも便利

>>738
動くOSの数はトップだろうけど、どのOSでもって程かというと微妙
組み込みOSだとクロスコンパイル主流で、そのOS上では動かさない気が
0746デフォルトの名無しさん2014/06/25(水) 13:06:54.53ID:KznGqNfn
入門書のサンプルをコンパイルしてみたいというぐらいの
ことなら codepad.org とかもあり
0747デフォルトの名無しさん2014/06/25(水) 19:10:14.54ID:sJ/yOKiH
Borland C++ Compiler 5.5 + WIN32API で大抵のことはできるよ。無料な。
0748デフォルトの名無しさん2014/06/25(水) 21:48:11.97ID:z2YOEiqg
あら、無料になったんだ
0749デフォルトの名無しさん2014/06/29(日) 15:27:53.10ID:jP/1PhLn
構造体のポインタなんですけど
switch(c->type)
これは、アドレスを指しているんですか?
それとも実数の方ですか?
0750デフォルトの名無しさん2014/06/29(日) 15:56:53.70ID:oo42qWNH
cのメンバーtypeの値
0751デフォルトの名無しさん2014/06/29(日) 17:23:53.75ID:SAEXjcrs
ありがとうございます
0752デフォルトの名無しさん2014/06/29(日) 19:06:45.93ID:NHgMwVfY
動かせばわかるだろうに
0753デフォルトの名無しさん2014/06/29(日) 19:08:27.69ID:lFZ15VQI
アロー演算子でぐぐる
0754デフォルトの名無しさん2014/06/29(日) 23:42:01.15ID:kXYJfkvL
switch( (*c).type )
と同じな。
0755デフォルトの名無しさん2014/06/30(月) 11:18:08.41ID:zk7ZCcUw
関数の仮引数宣言で宣言した変数も関数の中だけの
自動変数なのですか?
0756デフォルトの名無しさん2014/06/30(月) 11:42:27.35ID:ODccEViJ
パイプをpipe()を使わずに書きたいのですが、その場合プログラムの出力が入力側のプログラムに渡されるのは入力側の*argv[]ですか?
0757デフォルトの名無しさん2014/06/30(月) 11:46:17.37ID:ODccEViJ
例として、
./ex1.c | ./ex2.c
この時、ex1の標準出力がex2に渡ると思うのですが、ex2のどの変数に出力が格納されるか知りたいです
0758デフォルトの名無しさん2014/06/30(月) 11:50:56.93ID:ODccEViJ
連投すみません
例えばRubyでは、
# ex1..rb
puts "hello, world"
# ex2.rb
s=gets
print s
ruby ex1.rb | ruby ex2.rb
この時、標準出力にはex1から渡ってきた文字列がex2のプログラムで出力されているように見えるのです
0759デフォルトの名無しさん2014/06/30(月) 12:02:50.55ID:lJxnkRTG
>>756-758
いいえ、標準入力です。
なので、fgets(buf, sizeof buf, stdin)と言った取り出し方が多分Rubyの例と似た結果になります。
0760デフォルトの名無しさん2014/06/30(月) 12:11:38.08ID:ODccEViJ
>>759
ありがとうございますm(_ _)mおかげさまでよく理解出来ました。パイプについて、知識が足りませんでした。
0761デフォルトの名無しさん2014/07/04(金) 12:45:03.68ID:vJsZP06f
Cygwinとgccのダウンロードの仕方がわかりません?詳しいやり方を教えてください。
0762デフォルトの名無しさん2014/07/04(金) 14:51:24.00ID:Drkr2UiK
>>761
鼬害です。
cygwinのスタートアップをダウンロードして、スタートアップでgccにチェックを入れるだけだ。
それさえできないなら向いてないからやめとけ。
0763デフォルトの名無しさん2014/07/04(金) 22:06:16.60ID:YXI4fE8h
>>762
できなかった。
0764デフォルトの名無しさん2014/07/04(金) 22:12:59.05ID:ebNRiC3x
プログラマになるなら、わからないとかできないとかいうのをやめるべき

こういう手順でやったけど、ページが404になっていてダウンロードできません
ダウンロードしたけど、インストール時になんとかというエラーが出て止まってしまいます
みたいに、自分のやったことぐらいかけ
0765デフォルトの名無しさん2014/07/04(金) 22:33:36.21ID:YXI4fE8h
>>764
setup.exe 64を押してダウンロードして実行したと思うんだけど、そこから先が意味不明。パッケージはgccの何を選べばいいかわからないし、パッケージのダウンロードもできてなかったと思う
0766デフォルトの名無しさん2014/07/04(金) 22:50:06.53ID:qjT4L/WN
cygwinのインストールなんてネット見りゃやり方転がってるわ
そもそもC言語の質問じゃねーし
0767デフォルトの名無しさん2014/07/04(金) 23:21:07.39ID:YXI4fE8h
>>766
上でC言語勉強するならCygwin落としてgcc入れればいいって書いてあったんだよ。
0768デフォルトの名無しさん2014/07/04(金) 23:34:18.75ID:3Jp7hRob
>>767
Windowsでそのまま動くgccもあるよ
0769デフォルトの名無しさん2014/07/04(金) 23:52:11.55ID:YXI4fE8h
>>768
何それ?
0770デフォルトの名無しさん2014/07/05(土) 00:01:43.32ID:fW5z6BCT
インストールできた。Cygwinを立ち上げたけど自分の名前がでてきたんだけど、ユーザー名がでるのは普通なの?
0771デフォルトの名無しさん2014/07/05(土) 00:04:30.63ID:TZT85Nja
Cygwin使っている人いますか? その21
http://peace.2ch.net/test/read.cgi/unix/1331382186/

Cygwin + MinGW + GCC 相談室 Part 7
http://peace.2ch.net/test/read.cgi/tech/1357019230/
0772デフォルトの名無しさん2014/07/05(土) 00:13:55.90ID:lG7Vks4t
WindowsならVisualC++いれとけ
0773デフォルトの名無しさん2014/07/05(土) 00:31:46.80ID:73ZHJ04l
>>769
http://www.nwt.jp/document/strawberryperl.php
0774デフォルトの名無しさん2014/07/05(土) 00:34:49.91ID:8KImq0vY
error: expected ‘)’ before ‘*’ token

これは何が原因ででるんでしょうか?
0775デフォルトの名無しさん2014/07/05(土) 00:49:15.35ID:7oOEkOAN
>>774
前後の内容によりけり。
0776デフォルトの名無しさん2014/07/05(土) 01:00:23.49ID:y6F7Kq9M
セミコロン忘れとよんだ
0777デフォルトの名無しさん2014/07/05(土) 09:57:46.11ID:gb/2NXQK
Cygwinでhelloworldが表示できない、"が間違ってるのか、記号や改行が違うのかわからない
0778デフォルトの名無しさん2014/07/05(土) 15:12:38.87ID:st/oweyo
だから、自分がやったこととか表示されたエラーだとかも報告できないような間抜けは
PC初心者板でも逝けよ。
つーか、自分の端末にコンパイラを入れるよりもいっそideon.comでも使った方がましだろ。
0779デフォルトの名無しさん2014/07/05(土) 17:35:13.96ID:8KImq0vY
775です

構造体で入力したのを身長の高い順に出力するプログラムをつくりたいのですが
エラー箇所がわかりません

書いたコードです
http://www.dotup.org/uploda/www.dotup.org5168947.c.html

以下のような表示にしたいです
誰か教えてください!

 番号: 1
名前: 小保方晴子
年齢: 22
身長: 180
体重: 65
出身地: 千葉
特技: コピペ

番号: 0
名前: ゆうちゃん
年齢: 20
身長: 175
体重: 70
出身地: 東京
特技: 遠隔操作
0780デフォルトの名無しさん2014/07/05(土) 17:36:04.00ID:8KImq0vY
続きです


 番号: 4
名前: 野々村議員
年齢: 22
身長: 168
体重: 70
出身地: 大阪
特技: メルトダウン会見

番号: 3
名前: 佐村河内
年齢: 20
身長: 162
体重: 55
出身地: 広島
特技: 人狼

番号: 2
名前: ASKA
年齢: 21
身長: 160
体重: 52
出身地: 福岡
特技: キメ●ク
0781デフォルトの名無しさん2014/07/05(土) 17:37:13.19ID:8KImq0vY
>>779
>>780

は775ではなく>>774でした
0782デフォルトの名無しさん2014/07/05(土) 17:46:07.10ID:3J+m8Ph0
19, 26 行目 profile を Profile に
32 行目 > を < に
0783デフォルトの名無しさん2014/07/05(土) 17:57:43.06ID:8KImq0vY
>>782
できました!

ありがとうございます<(_ _)>
0784デフォルトの名無しさん2014/07/10(木) 11:50:09.32ID:iUfsrIHD
10分で完成して下さい
お願いします・・・
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14131676849
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13131676958
0785デフォルトの名無しさん2014/07/10(木) 12:14:28.45ID:HM31btdY
お探しのページは見つかりませんでした。
0786デフォルトの名無しさん2014/07/10(木) 14:49:55.73ID:1VHW603R
1200がデッドラインだったんじゃろ 南無…
0787デフォルトの名無しさん2014/07/13(日) 07:13:19.06ID:miJUEW2J
以下のプログラムを cygwin上で
$ g++ -Wall program.c
$ ./a.exe
で Segmentaion faultになります…
(main() では hoge()を呼び出すだけです)

何がおかしいのでしょうか?

FILE fp
in NumberOfData

void hoge(void)
double time;
fp = fopen(filename, "r");
if(fp == NULL){
fprintf(stderr, "hoge.data is not found. Program teminated.\n");
}
fscanf(fp,"%lf",time);
printf("Time_sim: %lf\n",time);
fscanf(fp,"%d",&NumberOfData);
printf("NumberOfData: %d\n",NumberOfData);
fclose(fp);
}

以下 hoge.dataの内容
0.000000
3570
0 -0.039900 0.000100 0.000000 0.000000 0.000000 6.539697
:
0788デフォルトの名無しさん2014/07/13(日) 08:28:01.88ID:RETejGWZ
そういうときはな、何行目でエラーになったかデバッガでしらべるとか
printf入れてどこまで表示されるかとかな
人に聞く前に最低限そのくらいはな
思いつくぐらいの頭がないとな
向いてないから死ねといいたくなるよね
0789デフォルトの名無しさん2014/07/13(日) 08:34:31.32ID:0Iul1EJe
FILE *fp;とかセミコロンが無いとか括弧が無いとか
おかしいところだらけ。どうせ、手作業で書き写したときのミスで
重要じゃないと思ってるんだろうけど、そういう姿勢がよくない。
一見してあやしいのは、fscanf(fp, "%f", &time);
0790デフォルトの名無しさん2014/07/13(日) 09:56:41.07ID:miJUEW2J
>>788,789
ありがとうございます.デバッガというもの初めて使いました.&timeにうまくいきました.
0791デフォルトの名無しさん2014/07/13(日) 20:14:31.15ID:G9QhDNfC
fpがNULLのときに脱出してないのは只の書き写しなんだろうか。
0792デフォルトの名無しさん2014/07/16(水) 10:52:04.54ID:nDYTEo7e
関数に渡す引数の数に上限ってあるんですか?
まぁあまりに多くなるようなら構造体や配列のようにひとまとめにしてからにした方が
良いのでしょうけど。
0793デフォルトの名無しさん2014/07/16(水) 10:59:26.83ID:VblCYr0v
特にないよ。
但し、余り多くなるようなら、寧ろ関数のI/Fを見直すべきだ。
本当にそこで切るべきかどうかをね。
0794デフォルトの名無しさん2014/07/16(水) 11:32:19.21ID:nDYTEo7e
>>793
了解です!
0795デフォルトの名無しさん2014/07/16(水) 11:48:05.77ID:3tXoGCWW
スタックサイズなんかな
0796デフォルトの名無しさん2014/07/16(水) 12:53:47.95ID:VblCYr0v
>>795
それ、仮に引き数を構造体に纏めて同じだけ消費するよね。ポインタ渡しにするなら話は別だけど。
0797デフォルトの名無しさん2014/07/16(水) 13:12:23.11ID:d7zsm7Az
スタックに問題なくてもパーサにだって物量に制約がある場合がある。
C99では引数が127個でもコンパイルして実行できるようにしろと要求されている。
0798デフォルトの名無しさん2014/07/16(水) 13:35:01.48ID:3tXoGCWW
上限があるか気になるなら自分で試せよ
そして結果を書き込めよ
0799デフォルトの名無しさん2014/07/16(水) 14:48:06.79ID:b2Fwx4Ep
実はID:3tXoGCWWが一番気になっていて(ry
0800デフォルトの名無しさん2014/07/16(水) 17:20:33.06ID:XexGWa0+
>>798
一般論あるいは仕様として上限があるかの質問なのに
特定の環境で試してみろって、このスレにいる必要ないよ
0801デフォルトの名無しさん2014/07/16(水) 17:41:23.95ID:2op6UOhL
5.2.4.1 Translation limits
- 127 arguments in one function call
0802デフォルトの名無しさん2014/07/16(水) 22:54:19.37ID:gc2StV5O
>>796
構造体は(環境によるけど)Pack できるけど、引数で Pack できる環境ってあるっけ?
逆に引数は一部をレジスタ渡しにしたりもするし。

要するに
> それ、仮に引き数を構造体に纏めて同じだけ消費するよね。
は、ダウト
0803デフォルトの名無しさん2014/07/17(木) 09:37:13.39ID:+y76qgpq
それは実装上たまたまそうなっているものもあるだけ
0804デフォルトの名無しさん2014/07/17(木) 13:33:38.63ID:Dv70qjb7
ん?
一つでもあったらダウトでしょ?
0805デフォルトの名無しさん2014/07/17(木) 17:42:17.18ID:ITI45oJ8
どっちもダウト
0806デフォルトの名無しさん2014/07/17(木) 17:58:05.22ID:0l31ALfX
ダウトって何だよ、はいダウトって
0807デフォルトの名無しさん2014/07/17(木) 20:14:45.43ID:oG7QfsM9
トランプでダウトってゲームがあって、ダウトってのは嘘って意味なんだけど以下略
0808デフォルトの名無しさん2014/07/17(木) 20:36:35.61ID:+37EBU2h
>>807

doubt『疑い』, 『疑う』
●『疑い』, 疑惑; 疑わしさ, 疑問
●を『疑う』, 疑問に思う
0809デフォルトの名無しさん2014/07/18(金) 08:12:45.08ID:Eltj5rKA
確実に誤りレベルのことでも「ダウト」としか指摘できない程度の奴
0810デフォルトの名無しさん2014/07/18(金) 09:36:39.10ID:5AiP+nFp
未定義だからどうでもいい
0811デフォルトの名無しさん2014/07/18(金) 11:17:43.06ID:KnXUTMy4
ダウトの意味も知らなかった >>809 が不憫だわ w
0812デフォルトの名無しさん2014/07/18(金) 11:59:29.82ID:rqweNMeD
>>811
807じゃなくて?
0813デフォルトの名無しさん2014/07/18(金) 12:09:50.35ID:YVo5FHQe
807はトランプの場合の話だから以下略
0814デフォルトの名無しさん2014/07/18(金) 12:57:56.67ID:QuIJUfIo
hide out
0815デフォルトの名無しさん2014/07/18(金) 13:56:43.18ID:Eltj5rKA
間違いに対していつもダウトと言ってる奴が
擦り付けに必死w
0816デフォルトの名無しさん2014/07/18(金) 18:34:34.13ID:KnXUTMy4
間違いのひとつも指摘できない奴がなんかほざいてるな w
0817デフォルトの名無しさん2014/07/18(金) 18:57:57.00ID:XOq/FGJS
>>816
ダウト!
0818デフォルトの名無しさん2014/07/18(金) 19:31:59.80ID:KnXUTMy4
そう言うと気が晴れるの? w
0819デフォルトの名無しさん2014/07/18(金) 20:17:15.18ID:AYfxGtzX
それ、使い出したのfjだから。
0820デフォルトの名無しさん2014/07/19(土) 01:03:22.86ID:EgkYCaU8
Cは関数のプロトタイプ宣言のとき、引数なしの場合は
int func(void);
と書かないとダメなんでしょうか。
int func();
だったら?
0821デフォルトの名無しさん2014/07/19(土) 01:28:44.74ID:Ps2LU5VJ
>>820
後者は可変引数と判断される
引数無しとしたいのであれば前者
0822デフォルトの名無しさん2014/07/19(土) 01:55:42.00ID:rMa3MVVS
>>821
違うよ。
0823デフォルトの名無しさん2014/07/19(土) 02:05:03.91ID:ECXAO9gw
好きにすればええ
0824デフォルトの名無しさん2014/07/19(土) 02:07:33.36ID:Ps2LU5VJ
>>822
まじでか
正直すまんかった
回答頼む
0825デフォルトの名無しさん2014/07/19(土) 02:17:03.73ID:J4W8tvW3
>>820>>824
引数情報を省略してる事になり実装によっては引数の不一致警告やエラーが出なくなる。
0826デフォルトの名無しさん2014/07/19(土) 02:20:26.37ID:fxv5G0UV
可変引数って、printfのようなのを指すんじゃ?
0827デフォルトの名無しさん2014/07/19(土) 14:32:08.82ID:RJFTE+GY
そうそう、だから()と(...)は違う。
0828デフォルトの名無しさん2014/07/19(土) 20:58:15.40ID:98oDM4wS
可変長引数といっても一つ目は必ず型を決めとかないといけなかったのでは?
(...) というのは、許してもらえるのかな‥
0829デフォルトの名無しさん2014/07/20(日) 11:26:50.22ID:ErUz0FQn
>>820
その辺が気になるなら C++をベターC として使えばよいのではないか
0830デフォルトの名無しさん2014/07/26(土) 23:23:08.07ID:Akt2fitS
pdfに書かれたソースコードをコピペしたら、\(円マーク)がそのままでコピペされてしまいました。

一括でバックスラッシュに変える方法ないでしょうか?
0831デフォルトの名無しさん2014/07/27(日) 04:44:14.53ID:j6qWMrth
普通はエディタに置換機能があるからそれを使えばいい。
0832デフォルトの名無しさん2014/07/27(日) 22:59:59.98ID:0xlnIBRW
Unicode以外の適当な文字コードで保存しなおしてみる
0833デフォルトの名無しさん2014/07/28(月) 01:49:11.29ID:QMz/AUC4
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
#define N 100
#define SLEEP 108
int main()
{
int i = N; int j;
int freq[8] = {494, 554, 440, 220, 330};
while(i--)
{
for(j=0; j<5; j++)
{
Beep( freq[j], 108*7);
Sleep(SLEEP*1);
}
Sleep(SLEEP*(rand()%8+1));
}
return 0;
}
0834デフォルトの名無しさん2014/07/28(月) 17:19:09.10ID:kGEXWNpv
あるソースコードがあって
「関数の各引数の意味を答えろ」って問題があったらどういう感じで答えたらいいですかね?

問題作成者の意図がイマイチわからん・・・
0835デフォルトの名無しさん2014/07/28(月) 17:31:31.66ID:vth2xUOY
> あるソースコード
が分からなけば意図がわからないです。
0836デフォルトの名無しさん2014/07/28(月) 17:59:54.51ID:kGEXWNpv
ソースコード自体は何でもいいんですが例えば

http://www.dotup.org/uploda/www.dotup.org5217769.jpg

このソースコードに対して「関数の各引数の意味を答えろ」だったらどうでしょうか
0837デフォルトの名無しさん2014/07/28(月) 18:06:34.15ID:OhtMA+Pb
>>836
「最大値を求める対象の2つの整数」
0838デフォルトの名無しさん2014/07/28(月) 18:08:03.34ID:nQYN6BeP
のうちの一つと、のこりのもう一つ
0839デフォルトの名無しさん2014/07/28(月) 18:43:38.01ID:kGEXWNpv
おぉなるほど
だいたい感じつかめました。
ありがとうございます
0840デフォルトの名無しさん2014/07/28(月) 23:08:09.14ID:QMz/AUC4
#include <stdio.h>

main()
{
printf("こんにちは、ご主人様…");
}
0841デフォルトの名無しさん2014/08/06(水) 16:41:46.08ID:FZDkv36t
http://www.buzzword.jp/img/face10.png
0842デフォルトの名無しさん2014/08/08(金) 01:27:13.99ID:kM8kmmeu
xxx.cにxxx.h、yyy.cにyyy.hみたくひとつのソースファイルにたいして
ひとつのヘッダーファイルを作り、mainで必要な分インクルードするという
のはメジャーなやり方なのですか?
0843デフォルトの名無しさん2014/08/08(金) 08:18:50.22ID:UVEcNXW4
メジャーだったらなんだ
そうした方がプログラムが読みやすくなるならそうするべきだし
そうならないならそうしない方がいい
他の人がそうしてるから真似するという姿勢では駄目だ
物事の本質を見据えて主体性を持って行動するべき
0844デフォルトの名無しさん2014/08/08(金) 08:32:17.22ID:Ow0uivX6
>>842
組で作るのはメジャー
使いたい所でincludeするのもメジャー
従ってmainでも何かしらをincludeするのもメジャー

ただし、バラバラダラダラと全てを書くのは必ずしもメジャーではないかな
0845デフォルトの名無しさん2014/08/09(土) 02:34:06.08ID:o68Wj79g
main関数を
exit(0); で終わらせるのと return 0; で終わらせるで
違いはありますか
0846デフォルトの名無しさん2014/08/09(土) 03:19:18.09ID:9vdEjx6Q
環境は?
0847デフォルトの名無しさん2014/08/09(土) 06:05:15.14ID:sPU18Xtd
>>845
普通はありません。
0848デフォルトの名無しさん2014/08/09(土) 10:19:52.66ID:rjH8LSpl
returnはERRORLEVELに反映されないんだっけ?
ポインタや構造体を反映されても困るが。
0849デフォルトの名無しさん2014/08/09(土) 14:44:12.61ID:sPU18Xtd
>>848
されますよ。exit()の引き数も。
0850デフォルトの名無しさん2014/08/09(土) 15:11:24.32ID:zl/VqujO
後はコンパイラとかそっち方面の問題じゃね?
int mainならintの値をreturnとか。
0851デフォルトの名無しさん2014/08/09(土) 19:10:29.18ID:rq1YAaJh
文字列宣言時の初期化について、
以下に違いはあるのでしょうか?

char str[5]="";
char str[5]={0};
0852デフォルトの名無しさん2014/08/09(土) 20:39:29.95ID:GHgUg0EK
>>851
気にしなくてよし。
0853デフォルトの名無しさん2014/08/10(日) 09:00:15.30ID:YKEPe6r6
exit();だとメモリ・ファイルなどリソースの解放やクローズが
保証されているんだっけ
0854デフォルトの名無しさん2014/08/10(日) 12:11:33.52ID:qvEZGcVl
>>853
それをするのは OS
0855デフォルトの名無しさん2014/08/10(日) 12:35:02.05ID:YKEPe6r6
それをするのはOSなのは分かるけど、
それをさせるためにAPIなりシステムコールを
exit();は呼ぶのではないのでしょうか?
0856デフォルトの名無しさん2014/08/10(日) 12:49:12.90ID:qCeD72H+
return; されたらリソース開いたままとかOSの風上にもおけない
0857デフォルトの名無しさん2014/08/10(日) 12:59:22.53ID:YKEPe6r6
いや、実装の話ではなくて…
0858デフォルトの名無しさん2014/08/10(日) 14:25:42.87ID:e1we3CSQ
アプリ側から呼ばないとクリーンアップしないなんて、今時のOSじゃないなw

普通は、アプリがやろうがやらまいが、アプリの実行が終了したら
アプリが動作中に確保していたリソースはOSが全て開放する。
0859デフォルトの名無しさん2014/08/10(日) 16:53:45.36ID:aBoAeD3q
malloc - free 論争を思い出した
0860デフォルトの名無しさん2014/08/10(日) 17:04:55.73ID:DcfkR93x
でも本来はリークチェックが容易なのでnew/mallocしたものはdelete/freeしたほうがいいよ
valgrindなどでこれはリークじゃないんです
見ないでく下さい
という設定をやらなくて済む
linuxでGUIやるとXlibの時点でその作業があるので大変だったなぁ
0861デフォルトの名無しさん2014/08/10(日) 17:20:08.69ID:l5Qd4ft5
ま、リークの存在は他の部分でも論理的におかしいところがあることを示唆する場合が多いしね
書けるのなら手を抜かずに delete/free() したほうが自分のためだね
0862デフォルトの名無しさん2014/08/10(日) 18:22:07.36ID:vzQyKdrK
常駐用に確保したメモリは開放しないでね。
0863デフォルトの名無しさん2014/08/10(日) 18:58:41.01ID:l5Qd4ft5
>>862
int21h/31hを使え
0864デフォルトの名無しさん2014/08/12(火) 02:16:27.36ID:pMraHo9U
終了するだけのプログラム↓hogeを作っといて
int main(int argc, char **argv){}

int main(int argc, char **argv)
{
char *v[] = {"hoge", NULL};
char *e[] = {NULL};
...

execve("hoge", v, e);
}
すれば良いよ。free教の狂典ではexecveは例外となってるらしいから。
0865デフォルトの名無しさん2014/08/12(火) 04:28:38.98ID:iwXgz5NB
malloc禁止の方向で
0866デフォルトの名無しさん2014/08/12(火) 04:51:18.22ID:Rps995A5
常駐先企業の人件費抑制に利用されただけの人生だったな残念
0867デフォルトの名無しさん2014/08/12(火) 23:23:38.77ID:QTnvo/EF
>>864
execv*() に malloc() で確保したベクターを渡すときに、そのベクターはfree() しょうがない、だね厳密には
0868デフォルトの名無しさん2014/08/13(水) 12:51:15.78ID:Za2EKwLK
>>867
どういう意味?それ以外のメモリならfree()できるってこと?
どうやって?
0869デフォルトの名無しさん2014/08/13(水) 23:54:54.14ID:9jHt6nG8
free絶対使うなとかいう変な宗教の人だろうから触るな。
大容量の動的確保・開放を繰り返す場合でさえ、
自前でメモリ管理を再発明すればfree不要とかのたまいかねん連中だぞ。
0870デフォルトの名無しさん2014/08/13(水) 23:56:37.31ID:tOwUt3z1
きゃろっく、まろっくしたらおとなしくふりーしとけよ、つべこべいってねーでよぉ
0871デフォルトの名無しさん2014/08/14(木) 00:02:03.83ID:3NEVz360
じぶんできゃろったりまろったりしたもののあとしまつもできねーぷろぐらまはいってよし
0872デフォルトの名無しさん2014/08/14(木) 00:08:53.71ID:Eelz7SYO
realloc()があればfree()は要らね。
0873デフォルトの名無しさん2014/08/14(木) 00:11:46.57ID:3NEVz360
んなわけねーだろ
そのばあいは、りあろったやつがせきにんをもってふりーすんだよ
0874デフォルトの名無しさん2014/08/14(木) 00:26:12.52ID:Eelz7SYO
つ[realloc(ptr, 0)]
0875デフォルトの名無しさん2014/08/14(木) 00:39:23.84ID:3NEVz360
>>874
は?
0876デフォルトの名無しさん2014/08/14(木) 04:02:38.85ID:jDhN7lgE
>>874
それは Micro Soft 独自機能 http://msdn.microsoft.com/ja-jp/library/xbebcx7d.aspx
ISO/IEC 9899:1999 7.20.3.4 には realloc() が malloc() と同様の動作になる場合の記述はあっても、realloc() が free() と同等の動作になる場合については記述はない
0877デフォルトの名無しさん2014/08/14(木) 05:15:58.94ID:mYwSdCAJ
>>872
realloc(ptr,0)をfreeとして使うならrealloc(0,size)をmallocとして使えばmallocも要らん(Linux)
つか「free(ptr) と等価である。」てfreeしてるじゃねぇか!
>>875-876
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/malloc.3.html
一応ここでは準拠した上での拡張とは書かずただC89、C99準拠としてそういう挙動だと書いてるな。
0878デフォルトの名無しさん2014/08/14(木) 06:17:31.10ID:jDhN7lgE
>>877
JIS X3010:2003
要求された領域の大きさが 0 であるとき、その動作は処理系定義とする。

その man はあてにならない
0879デフォルトの名無しさん2014/08/14(木) 06:44:52.91ID:prwA4+6G
>>878
まじか
877じゃないが俺のmanにも等価って書いてあるわ
0880デフォルトの名無しさん2014/08/14(木) 08:33:27.40ID:mYwSdCAJ
「ま、WindowsとLinuxでさえ動くならいっか」的な捨てコードなら、
reallocでmallocとfreeを代用出来んこともない、という程度。
多分BSDでは死ぬし、Windowsでも保障はないし(そういう実装だがMSDNには記載がない等)。

>>878
「一応」と書いといたが、やっぱりそうか。しかし拡張は拡張として記載してほしいねぇ…
0881デフォルトの名無しさん2014/08/14(木) 09:01:23.94ID:wROGfWf+
処理系定義なんだから拡張ではないし、MSDNに記載がない事を考えると
今後の全バージョンで今までと等価な動作が保証される訳でもない。

つまり、そういうことだ。
0882デフォルトの名無しさん2014/08/14(木) 09:53:26.01ID:3NEVz360
>>874
reallocでサイズ0にすることでfree等価だよって言いたかったのか
あほかぁーっ、だったらfreeせんかいw
結局freeの必要性感じてんじゃねーか

何か変にひねくれてるやつ多いよな
0883デフォルトの名無しさん2014/08/14(木) 09:54:08.14ID:MeOL7pvQ
>>869
ちげーよ、バカ。
いつ、いかなる場合でも、mallocしたメモリブロックはfreeすべし
という狂義に従っているのが、free狂信者
0884デフォルトの名無しさん2014/08/14(木) 10:03:36.54ID:3NEVz360
GCがなかったころの以前のObjective-Cでは、retainとreleaseで、
その辺うまいことやってたよね

いずれにしても、mallocやcallocしたやつがfreeするのは当然やるべき責務

何かの関数の引数として渡すことは、malloc、calloc、freeの関数ライブラリが
考慮していないのでやるべきではないってことだろ
0885デフォルトの名無しさん2014/08/14(木) 10:19:54.84ID:NVPBD/WO
当然やるべき責務?

なんだそりゃ。freeは権利。
ヒープに空きを作りたいときに呼べばいい。
たったそれだけのこと。
0886デフォルトの名無しさん2014/08/14(木) 10:43:16.91ID:3NEVz360
free呼ばなくても、アプリ終了時に、アプリ内でまろったりきゃろったりりあろったやつは
開放してくれるんだっけ?(メモリーリークにならないんだっけ?)
08878542014/08/14(木) 11:10:19.71ID:jDhN7lgE
>>886
仮に処理系が何もしなくても、OS が綺麗に掃除してくれる。

「須らくmalloc()したものfreeすべし()」とう狂義に従うfree狂信者だが、それくらいのことは知っている
malloc() にしても、いちいち OS にお伺いをたててメモリ領域を都度もらってくる、とかしているわけではない
0888デフォルトの名無しさん2014/08/14(木) 11:19:21.98ID:RcQEYo9o
むしろfreeしてしまってからその領域の中身にアクセスするとかw
0889デフォルトの名無しさん2014/08/14(木) 11:37:19.97ID:3NEVz360
>>887
じゃあ、ほんとに>>885ってことなんだね
りょーかい
0890デフォルトの名無しさん2014/08/14(木) 11:39:06.18ID:EcJA/eZW
つーても、1つの関数内で完結するデータにmalloc()自体そうそう使わんし(C99からは特に)
後々のこと考えるとfree()まで書いとかんとバグり易い…
ダングリングポインタ問題は、free()を抜いて解決する問題じゃなくて
管理方法で解決すべき問題でしょ
0891デフォルトの名無しさん2014/08/14(木) 11:47:22.64ID:3NEVz360
全て自前の関数群内で使い回すメモリをmalloc, calloc, reallocしたやつについて
freeしないやつは、正直どうかと思うけど、他の既製APIの関数にmallocしたメモリーを
渡す場合にどうすべきか?って話だよね?

個人的にはやっぱり、mallocしたやつがfreeすべきだし、ポインタもらった関数は、
そのコピーを自分でmallocして保持し、関数側が責任をもってfreeするルールが
必要だとおもうけど

前にも書いたけど、昔のObjective-Cでは、retainカウンタによってそれを
実現してた
0892デフォルトの名無しさん2014/08/14(木) 11:48:03.20ID:MeOL7pvQ
狂信者は狂義を必死で布教しようと企むから排斥される。
黙々と必死に無意味なfreeしてろ。
0893デフォルトの名無しさん2014/08/14(木) 11:56:08.16ID:3NEVz360
まあ、メモリが潤沢にあるこのご時世、アプリ終了時にOSがちゃんと
開放してくれるんなら全然いいっすよ
別にfree教?の布教がやりたいわけではないんで

ちなみに、Objective-Cでやってた仕組み
https://developer.apple.com/library/ios/documentation/general/conceptual/DevPedia-CocoaCore/Art/memory_management.jpg

今はGCは自動化されているのが普通だけど、めんどくさいながらちゃんと
考えられた仕組みではある

Cで真面目にメモリ管理するんだったら、こういうことする感じだろうなと
0894デフォルトの名無しさん2014/08/14(木) 12:02:40.96ID:6tELeMbI
ID:3NEVz360の言ってる事ってなーんかピントがズレてんだよなぁ
俺が何を言っているのか分からないんだろうけど
0895デフォルトの名無しさん2014/08/14(木) 12:06:32.47ID:3NEVz360
>>894
あなたの元IDを教えてください
あなたの言っていることは何なのかを考えます
0896デフォルトの名無しさん2014/08/14(木) 12:14:43.32ID:jDhN7lgE
>>891
>他の既製APIの関数にmallocしたメモリーを渡す場合にどうすべきか?って話だよね?

確かにね、これは考えるね
malloc() したものを別の関数に引数として渡すときは、渡された関数は「もらったものは触らない」でいいと思うんだ
malloc() したものを返り値として返す、とか mallloc() したものを、キューやスタックやマップに載っける、とかだとね‥
‥そこをうまくもれなく処理するのが C の軽み、ってことで。
0897デフォルトの名無しさん2014/08/14(木) 12:16:47.47ID:MeOL7pvQ
夏休みだねえ。リファレンスカウントGCをドヤ顔でかたるとは…
0898デフォルトの名無しさん2014/08/14(木) 12:20:54.35ID:3NEVz360
>>896
そうなんすよね

やっぱり、malloc()した側が、そのメモリの状態を知っているので、
その人が最後まで管理するのが自然

そういう意味では、渡された関数側はfreeしてはいけないし、する必要もない
ただ、処理中に渡し元でfreeされたら困る場合は、コピーを自前でmalloc()して
処理するしかない

あるいは、>>893のようなObjective-Cでの保持カウンタのような、
使いたい人はそのメモリのリテインカウンタを+1して、いらなくなったら-1する
そして、カウンタが0になった時、release(free)される仕組みがあれば
コピーを自前で作ることなく、一つの同一アドレスのメモリーを共有することができる

そろそろスレチかな
0899デフォルトの名無しさん2014/08/14(木) 12:21:22.62ID:qppS6X9h
ここに出てくるkmmallocっていいの?



Windows Mobile用Java SE対応JVM「Mysaifu JVM」の開発者に聞く | スラッシュドット・ジャパン
http://slashdot.jp/story/09/02/24/0315248


このソフトウェアあるいはプロジェクトについて誇れるところは?

Windows Mobile上でJava SEをサポートする数少ないJava仮想マシンという点です。
また、いろいろなライブラリをWindows Mobileに移植しています。
クラスライブラリであるGNU Classpathを始め、libxml, libiconv等を移植しています。

JVM本体の開発に一番重宝しているのがkmmallocというライブラリです。
これはヒープのエラーチェックを行ってくれるメモリ管理ライブラリで、Mysaifu JVMではmalloc()/free()をkmmallocで置き換えています。
確保した領域を超えた部分にデータを書き込んでしまうような厄介なバグは、該当箇所をなかなか見つけにくいのですが、kmmallocはすぐに検知してくれます。
0900デフォルトの名無しさん2014/08/14(木) 12:23:46.82ID:xlLN/xxE
またmalloc/freeで荒れてるのか。
俺的には「やりたいように勝手にやれ」だな。

ただ、リアルで付き合うなら、必ずfreeする奴と友達になりたい気はする。
free要らないって言ってる奴は、それなりにもっともらしい事を言うんだけど、実はその場しのぎのテキトーな思考な事が多いんだよなー。
後から良くわからんバグ出すのもこのタイプの人間が多いし、正直仕事の同僚としたくないタイプ。

すまん、論点をずらしてグチった。
0901デフォルトの名無しさん2014/08/14(木) 12:25:14.53ID:jDhN7lgE
>>898
>やっぱり、malloc()した側が、そのメモリの状態を知っているので、
>その人が最後まで管理するのが自然

まあね
この原則は win32api にもよくあるしね、最初のコールで必要領域を教えてもらって、それを使って確保してから、確保先ポインタを二回目のコールで渡す、とかね
でもこの原則は縛りがきつすぎて正直嫌い、malloc() したものが、延々と他の関数を渡り歩いていろいろ弄られるのもありだと思うんだ
0902デフォルトの名無しさん2014/08/14(木) 12:29:20.55ID:3NEVz360
まあ、めんどくさいっすよね
私も、それぞれが好きにmalloc()して、お互いに使い回して、最終的に
アプリ終了時に抜かりなくOSが開放して帳尻あわしてくれるというなら、
それでいいっすw
0903デフォルトの名無しさん2014/08/14(木) 12:41:08.75ID:Rhqauv2C
TEMPのゴミは消してくれ。
0904 ◆QZaw55cn4c 2014/08/14(木) 12:42:24.02ID:jDhN7lgE
>>902
>最終的にアプリ終了時に抜かりなく

自 分 で free() し ろ 
0905デフォルトの名無しさん2014/08/14(木) 12:57:20.96ID:mYwSdCAJ
>>900
1、「freeが必要になる状況」を想定できずに「free関数自体が不要」と言い出す
2、「free関数自体は必要」を「mallocした領域全てでfreeが必須」と曲解して「free不要」なのだと主張を変える

1は論外だし、2は間違っては居ないけどミスを減らす為にも普通にfreeできるやつはfreeしたほうが良いし、
「free不要」なんてお題目は有害無益だと思うけどねぇ…
0906デフォルトの名無しさん2014/08/14(木) 13:13:53.74ID:3NEVz360
>>904
あんたは何もんだよ
そんでもって主張はどっちだよ?
0907デフォルトの名無しさん2014/08/14(木) 13:33:48.04ID:3NEVz360
いままでのID非表示時代のくせで自演しちゃったのか?
◆QZaw55cn4cというやつはこれまでも見かけたことがあったが
2面性のあるとんでもないやつなのか
0908デフォルトの名無しさん2014/08/14(木) 13:56:25.40ID:MeOL7pvQ
>>905
> 1、「freeが必要になる状況」を想定できずに「free関数自体が不要」と言い出す
こんな事言ってる奴はいない。

> 2、「free関数自体は必要」を「mallocした領域全てでfreeが必須」と曲解して「free不要」なのだと主張を変える
これもいない。

いるのは、
3、「いかなる場合でもfree関数自体は必要」と主張する狂信者だけだ。
0909デフォルトの名無しさん2014/08/14(木) 14:03:42.08ID:xlLN/xxE
ま、何事も極端は良くないよな。
程々に自分の信念に従いつつ、他者にも寛容で、例外にも柔軟に対応できる姿勢こそが重要と思ってる。

そんな俺からすると宗教論争なんて「何それ美味しいの?」状態やわ。
それでもリアルで付き合うならmallocしたらfreeを出来るだけ心がけている信念の持ち主だけどね。
0910デフォルトの名無しさん2014/08/14(木) 14:05:30.77ID:xlLN/xxE
>>907
なるほど!
そういう事かー。
俺も、こいつなんかスジが通ってないなーって思ったけど、自演なら納得いくわ。
0911デフォルトの名無しさん2014/08/14(木) 14:18:23.09ID:MeOL7pvQ
> それでもリアルで付き合うならmallocしたらfreeを出来るだけ心がけている信念の持ち主だけどね。
バカは黙ってろ。
0912デフォルトの名無しさん2014/08/14(木) 14:21:40.59ID:3NEVz360
>>911
あんたは感情的な文句しかいってないので黙ってなさい
0913デフォルトの名無しさん2014/08/14(木) 14:26:37.34ID:MeOL7pvQ
バカは一々説明せんとわからないか?
必要なのは信念じゃなくて合理的判断。信念でプログラムするバカは死ね。
0914デフォルトの名無しさん2014/08/14(木) 14:33:21.99ID:jDhN7lgE
>>907
一応売れない芸人なもんで、芸をかまさないかんときには、後先考えずについ >>904 とやっちまうんだ‥‥
でも、>>896 >>901 は本音だよ
0915デフォルトの名無しさん2014/08/14(木) 14:37:15.40ID:xlLN/xxE
>>913
気が合うじゃないか?
合理的判断いいね。

合理的に判断すると、ちゃんとfreeしてくれる人と付き合う方が自分の身のためなんだよね。
0916デフォルトの名無しさん2014/08/14(木) 14:39:11.31ID:a9fNUb2/
>>913
お前のレベルの低さがよく分かる
周りが迷惑だからチンコ切って逝ってくれ
0917デフォルトの名無しさん2014/08/14(木) 14:39:44.66ID:i8Ph/y/2
>>913
ブーメラン乙
オマエはその自らが語る合理的判断とやらに信念を持っている
信念は別に良いが押しつけはウザい
0918デフォルトの名無しさん2014/08/14(木) 14:46:17.39ID:xlLN/xxE
いや、正直信念とか合理的とかどうでもいいんだけどね。
ちゃんと動くもの作ってくれれば。

そこで何で信念とか書いたかというと、それはリアルで同僚として付き合う場合の話。
信念無き合理性は、その場しのぎのパッチワーク化するんだよ。
はっきり言うと、その場で自分の労力をケチるだけが目的で、他人が後々尻拭いするはめになる事が多いだわ。

すまん、また愚痴った。
0919デフォルトの名無しさん2014/08/14(木) 14:48:54.98ID:LJ/HGjMi
昔、同じ議論があったときは、こんな感じの流れだったかなー?

exit する時でも freeは必要だよ派:
 exit時に free されない環境がある以上、free は必要とするのが包括的な解釈として正しい。

exit する時に freeは不要だよ派:
 free しなくていいケースにまで free が必要という主張はおかしい。

今回は、ちょっと流れを見てないけど(ノ∀`)
0920デフォルトの名無しさん2014/08/14(木) 14:49:59.29ID:MeOL7pvQ
>>915
見苦しいいいのがれすんな 主語が入れ替わってるぞ。
>>909 お前が、アホな信念の持ち主とつきあう
>>915 お前が、合理的に判断する

>>917
バカ? 死んだ方がいいぞ。
0921デフォルトの名無しさん2014/08/14(木) 14:55:02.69ID:3NEVz360
>>919
exit時にfreeされない環境(OS)があるの?

>>920
ハウス!
0922デフォルトの名無しさん2014/08/14(木) 15:08:17.82ID:xlLN/xxE
>>920
言い逃れではなくて皮肉なんだが…
まいったなぁ、もしかして、そういう行間が読めない人なのかな?
0923デフォルトの名無しさん2014/08/14(木) 15:24:59.02ID:0kGyXnFa
>>897
わろたw
もうそれいじょうそいつの相手しても何の得もねえぞw

しかも>>886とか言いながらのそれだから
生まれもっての知ったか野郎よそいつは
0924デフォルトの名無しさん2014/08/14(木) 15:36:19.15ID:sq+uQd00
>>921
組込み系だと free されない環境(OS)はザラにある
UNIX/Windows等の汎用OSなら自動的に free されるけど:
・カーネル空間では(=デバドラ開発時等は)free されない
・メモリではないけど、アプリでもセマフォや共用メモリといった
 SystemV系UNIX 由来のOS資源は free されない

だから、アプリで明示的に free しなくてもいいケースは多くて、
そういったプロジェクトであれば free 無用論は正しい判断
ただし、必要に応じて(=必要性を見抜いて)適切なコードを実装できる
技術力を磨くことは、Cプログラマにとって重要な事柄だと思う
0925デフォルトの名無しさん2014/08/14(木) 15:37:48.20ID:LJ/HGjMi
>>921

>exit時にfreeされない環境(OS)があるの?

ごめなさい、これについては自分はノーコメントとさせてください。
ここを問題にすると、大昔の fj.comp.lang.c のように議論が発散して
カオスになってしまうので><;
0926デフォルトの名無しさん2014/08/14(木) 15:48:06.93ID:UKa3zRV/
>>925
hosted と freestanding environment でカタがついてる
0927デフォルトの名無しさん2014/08/14(木) 15:56:57.06ID:MeOL7pvQ
>>922
信念でプログラミングする底辺は黙ってろ。
0928デフォルトの名無しさん2014/08/14(木) 16:15:39.31ID:3NEVz360
>>924-925
ありがとうございます

私の方針としては、
 Unix/Windows OSで、Cによるソフト開発する際にmalloc, calloc, reallocしたときはfreeする
 ただ、freeし忘れても気にしない
ということにします
0929デフォルトの名無しさん2014/08/14(木) 16:22:36.43ID:MeOL7pvQ
freeし忘れるバカは死ね。
0930デフォルトの名無しさん2014/08/14(木) 16:28:53.22ID:vio0lUwM
int main()
{
void * ptr = malloc(SIZE_WHAT_YOU_NEED);
for (;;) {
some_processes(ptr);
}
/* どうせループを抜けられないからfree()は割愛。 */
/* ループを抜けるケースができたがどの途終了間際なので割愛。 */
/* 教条主義者が五月蠅いので追加。 */
free(ptr);
return 0;
}
0931デフォルトの名無しさん2014/08/14(木) 16:28:54.93ID:qppS6X9h
freeするのが普通だけど。
メモリリークするから。
しかしwebサーバーなど連続稼働させるものでなく、目に見えて、体感できて
メモリリークが確認されなければしなくてもいい。
int型の確保でも10回だったら不具合はないが、1000万回free忘れれば体感するだろ。
0932デフォルトの名無しさん2014/08/14(木) 16:36:17.51ID:3NEVz360
何かいろいろな意見に合わせてたけど、もういい、めんどくせーわ

当初のポリシー通り、自分でmalloc()したものは普通にfree()するわ

以上
0933デフォルトの名無しさん2014/08/14(木) 16:53:10.04ID:jDhN7lgE
こうして「須らくmalloc()したものfree()すべし」狂信者がまた一人生まれたのであった‥
0934デフォルトの名無しさん2014/08/14(木) 17:38:42.09ID:vio0lUwM
「須らく」ならいいんじゃない? 「悉く」じゃないんだから。
0935デフォルトの名無しさん2014/08/14(木) 17:51:00.92ID:FBUeKmY4
全くのド素人として聞きますけど、仕事上のプログラムを作成する時に
そこら辺の事については書かれていたりしないんですか?
09369352014/08/14(木) 17:52:12.48ID:FBUeKmY4
訂正
×そこら辺の事については書かれていたりしないんですか?
○そこら辺の事については仕様書とかに書かれていたりしないんですか?
0937デフォルトの名無しさん2014/08/14(木) 19:17:29.88ID:EcJA/eZW
>>930
それ、配列で良くね?
0938デフォルトの名無しさん2014/08/14(木) 19:41:10.95ID:MeOL7pvQ
>>937
痛々しいから無理して参加するな。
0939デフォルトの名無しさん2014/08/14(木) 20:02:58.76ID:rbJt+feP
>>928
> ただ、freeし忘れても気にしない

いかんがな
必要があるんならfreeしろやフツーに
狂ってんの?

freeしなくていい場面で、単にしないだけ
freeしたい場面で、し忘れるのはド素人
0940デフォルトの名無しさん2014/08/14(木) 20:17:47.82ID:q/LLkOD6
>>930
freeするなら、malloc失敗対処のコードを追加した方がいい。
又は、freeしない。
0941デフォルトの名無しさん2014/08/14(木) 20:33:50.81ID:jDhN7lgE
>>940
free(NULL)の挙動を調べてみよう
0942デフォルトの名無しさん2014/08/14(木) 20:36:51.30ID:MeOL7pvQ
>>940
痛々しいから無理して参加すんな。
0943デフォルトの名無しさん2014/08/14(木) 20:39:34.37ID:UKa3zRV/
>>940
失敗したら NULL が返るから free しても問題ない
some_processes が NULL で変なことしないなら OK
0944デフォルトの名無しさん2014/08/14(木) 20:41:10.81ID:3NEVz360
>>939
てめーみてーなうぜーのがいるから、>>932に書き直したんだよ
自分の前レスぐらいちゃんと読んでから書き込めやカス
0945デフォルトの名無しさん2014/08/14(木) 20:45:22.01ID:YwnlFQd4
>>944
お前はただ、周回遅れを自覚しろ
0946デフォルトの名無しさん2014/08/14(木) 20:48:33.78ID:MeOL7pvQ
そりゃ、リファレンスカウントGCをドヤ顔で紹介しちゃう奴だから
0947デフォルトの名無しさん2014/08/14(木) 20:53:46.38ID:3NEVz360
ただちゃちゃいれてるだけなあんたはお家に帰ってなさい
>>883
>>892
>>897
>>908
>>911
>>913
>>920
>>927
>>929
>>938
>>942
>>946
0948デフォルトの名無しさん2014/08/14(木) 21:00:53.75ID:MeOL7pvQ
バカにはわからない
0949デフォルトの名無しさん2014/08/14(木) 22:18:34.48ID:wROGfWf+
お前ら小物をちょこっと作るだけなら、はっきり言ってどうでもいいが、
常駐プロセスや作ることになったら、ちゃんとしろよ…
>メモリ管理に対する意識
0950デフォルトの名無しさん2014/08/14(木) 22:20:07.50ID:CKm4h8Cf
幼稚園児が大人にお説教ですか
0951デフォルトの名無しさん2014/08/14(木) 22:39:02.78ID:sq+uQd00
>>947
ム板に強制ID表示が導入されたのは、大正解だったねw
0952デフォルトの名無しさん2014/08/14(木) 22:49:23.26ID:MeOL7pvQ
>>879
>>880
ID:jDhN7lgEはQz 信用しちゃダメ
実装依存でデリファレンスしてはいけないポインタを返す(NULLかもしれないし、
そうじゃないかもしれない)

>>951
うん、QzやGCでドヤ顔するアホを簡単に識別できる。
0953デフォルトの名無しさん2014/08/14(木) 23:59:29.27ID:YUeJKR8t
>>952
>>942
0954デフォルトの名無しさん2014/08/15(金) 00:15:48.06ID:06IqYKhN
>>953 ドヤっ
https://developer.apple.com/library/ios/documentation/general/conceptual/DevPedia-CocoaCore/Art/memory_management.jpg
0955デフォルトの名無しさん2014/08/15(金) 00:27:22.41ID:e0ujQLO6
>>954の
ID: 06IqYKhN
は
ID: MeOL7pvQ
です

日付が変わっても、うざく登場し、皆様にはご迷惑をおかけ致しますが
何卒ご配慮のほどお願い申し上げます
0956デフォルトの名無しさん2014/08/15(金) 00:42:10.63ID:06IqYKhN
>>955
自信たっぶりに「めんどくさいながらちゃんと考えられた仕組みではある」と紹介したんだろ。
恥ずかしがるなよ。
0957デフォルトの名無しさん2014/08/15(金) 01:00:16.90ID:19rSkqot
>>954
俺にそのコードで何かを伝えようとしているようだけど
多分君がそれを見せたい相手は俺とは別人のようだよ
0958デフォルトの名無しさん2014/08/15(金) 01:10:09.43ID:fhr+Nllp
>>955
GCやメモリ管理のウンチクを語ることが生き甲斐である
ID: 06IqYKhN(= MeOL7pvQ)にとって、
>>893 が示した図(>>954)がよほどの屈辱だったのだろね
10の言葉よりも1枚の絵のほうが説得力があるのはよくある話

ID: 06IqYKhN が >>955 を否定しなかったという事実は、
>>947 で示された昨日の ID: MeOL7pvQ の行動が
彼本人によるものだったことを実証している訳で、
今となってはその判断には慎重さが足りなかったと言うしかない

粘着は程々にしろよとは思うけど、ここは 2ch なんだし、
気の毒な彼を生暖かく見守ってあげればいいんじゃまいかと思われ....
0959デフォルトの名無しさん2014/08/15(金) 01:18:22.83ID:06IqYKhN
https://developer.apple.com/library/ios/documentation/general/conceptual/DevPedia-CocoaCore/Art/memory_management.jpg

これが屈辱 wwww おつむの程度が知れる。 wwww
0960デフォルトの名無しさん2014/08/15(金) 03:20:26.28ID:C1TsWSjw
一人、自分の事を頭が良いと思ってるアスペがいる
0961デフォルトの名無しさん2014/08/15(金) 03:53:04.47ID:1yOnOTpl
>>952
>>878 >>876 >>942

ID:MeOL7pvQ = ID:06IqYKhN
>>951
0962デフォルトの名無しさん2014/08/15(金) 03:55:37.90ID:HK6rf5jP
定例貼り

http://www54.atwiki.jp/qzaw55cn4c/pages/17.html
http://www54.atwiki.jp/qzaw55cn4c/pages/16.html
0963デフォルトの名無しさん2014/08/15(金) 05:11:59.55ID:1yOnOTpl
>>962
それテンプレートにいいね
C++のにもあるしね「それで教えたつもりかうむごくろう」みたいなやつ
そろそろ次スレはどうだい?
0964デフォルトの名無しさん2014/08/15(金) 05:58:43.42ID:ZaXPBhtE
free(ETERNAL_SUMMER);
0965デフォルトの名無しさん2014/08/15(金) 07:46:14.43ID:Refxkepy
ポインタにNULLを入れて何回もdeleteしてやる
0966デフォルトの名無しさん2014/08/15(金) 08:06:36.08ID:1yOnOTpl
open(DOOR_INTO_SUMMER);r
0967デフォルトの名無しさん2014/08/15(金) 08:28:34.10ID:06IqYKhN
>>962
本日のQzはID:HK6rf5jPか
0968デフォルトの名無しさん2014/08/15(金) 19:12:44.82ID:1yOnOTpl
>>967
いいえ、ID:1yOnOTpl なのです。
最近必死チェッカーの調子は悪いね
0969デフォルトの名無しさん2014/08/16(土) 02:13:19.07ID:nQiWsyll
うわ、QZここにも出没してんのかよ
いいかげんCから卒業しろ
0970デフォルトの名無しさん2014/08/16(土) 03:26:13.63ID:LqzQwTxG
>>969
http://peace.2ch.net/test/read.cgi/tech/1313183984/768
0971デフォルトの名無しさん2014/08/16(土) 03:57:25.73ID:noAQ/N6w
初心者だが、まとめていく
キャストは左シフトがわかれば、何ら問題はない
unsigned char c;
unsigned n = 0xff;
c = (char)n;
n >> 3;
sizeofは型のときのみカッコでくくる
fgets(foo.buf, sizeof foo.buf, stdin);
p = (struct S *)malloc(sizeof(struct S));
constは
const int *foo;
int const *foo;
int * const foo;
const int * const foo;
int const * const foo;
のように、実に多種多様な形をとるので諦める
0972デフォルトの名無しさん2014/08/16(土) 11:51:02.00ID:xGOV3cHH
何の纏めだ、それ。

・キャストは左シフト云々
意味が分からん。キャストと左シフトに何の関連があるんだ。

・sizeofは云々
うん、これはまぁどうでもいいや。

・constは云々
諦めるって何だよw
そもそも、const int * fooとint const * fooは同じだが、
int * const fooとint const * fooは別物だぞ。
0973デフォルトの名無しさん2014/08/16(土) 12:26:38.21ID:OEbTMwcs
>>971
初心者wはだまってメモ帳にでも書いてろ
0974デフォルトの名無しさん2014/08/16(土) 12:52:36.01ID:nQiWsyll
QZ台炎上中
0975デフォルトの名無しさん2014/08/18(月) 14:00:24.27ID:892n+SiV
俺の使ってるOSはそもそもヒープなんて管理してくれないから
mallocしたらちゃんとfreeしないとすぐ死ぬ。
そんなことは置いといて、constは直後の1つだけしか修飾しないと覚えればいい。
そうすればどれとどれが同じとか考えなくていい。
0976デフォルトの名無しさん2014/08/19(火) 08:47:06.61ID:Mliou7o7
よくわからんが、その解釈だとconst int *とint const *は違うことにならないか
0977デフォルトの名無しさん2014/08/19(火) 09:05:57.16ID:sySXWyjv
大丈夫、どっちもポインタを就職している。
0978デフォルトの名無しさん2014/08/19(火) 09:06:27.72ID:68cY/vKe
> 俺の使ってるOSはそもそもヒープなんて管理してくれないから
なんていうOSだ?
0979デフォルトの名無しさん2014/08/19(火) 14:18:02.25ID:puCvM3PA
8bitのブートだけのOSなんだろ。
0980デフォルトの名無しさん2014/08/19(火) 18:57:52.33ID:DKoHwpCp
>>978
OSEK/VDX
0981デフォルトの名無しさん2014/08/21(木) 14:07:33.44ID:Xx+xsjAi
独習C 8割近くわかるようになって、問題とっけって言われると
全くわかっらん・・・orz
どうすればいい?
0982デフォルトの名無しさん2014/08/21(木) 15:04:21.88ID:HANJarNw
判った「つもり」になってるだけであって実際は理解はできていなかったって事でしょw
サンプルをいろいろいじって自分の体で「理解」しないと

ま、俺もそうなんですが w
0983デフォルトの名無しさん2014/08/21(木) 21:48:23.11ID:kAWBaRyW
俺の場合、大学でC言語マスターするのに3年かかったwww
1年間に出る問題の数は700問だった
1日たったの2問
0984デフォルトの名無しさん2014/08/21(木) 21:50:07.17ID:S6UF3tIm
いくらやってもマスターしたなんて思わないなぁ
0985デフォルトの名無しさん2014/08/21(木) 22:52:27.64ID:BmcMS01r
>>981
実行結果が、画面だけだと実感無いからねー。
Raspberry Piみたいなワンボードコンピュータ買ってハード動かすとかしてみたら?
0986デフォルトの名無しさん2014/08/21(木) 22:54:48.74ID:YGjTxNbP
わかるんじゃなくて、読めないといけないんじゃないの?
0987デフォルトの名無しさん2014/08/22(金) 08:09:30.13ID:C1VpVNeJ
マスターして何ができるようになったの
何か世の中の役に立つソフトウェアでも作れたの
0988デフォルトの名無しさん2014/08/22(金) 09:11:22.94ID:mL6N5s5Z
マスターしったって言うより、わかるようになってるっていう時がアンだよねぇ
0989デフォルトの名無しさん2014/08/22(金) 16:42:50.04ID:uy14AgDh
すいませんコンパイラを学ばずに独学で構文処理したいと思ってます。
for(条件)for(条件)for(条件){処理; 処理;}

これは

for (条件) for (条件) for (条件) { 処理; 処理; }
のように10個の部分に分けられると思うんですが、どうやって後戻りするんでしょう?
0990デフォルトの名無しさん2014/08/22(金) 16:48:03.20ID:g5OyREW2
後戻りの逆はどうやってるの?
0991デフォルトの名無しさん2014/08/22(金) 16:49:15.93ID:uy14AgDh
3目のforは一番戻ってくる事が多いforです
今どの部分の処理をしてるかってのをポインタで表してます
例えばポインタが3行目の4、10なら
3行目の4〜10までの処理をしてることです。
0992デフォルトの名無しさん2014/08/22(金) 16:49:46.96ID:uy14AgDh
>>990
gotoとかですか?
0993デフォルトの名無しさん2014/08/22(金) 16:53:17.13ID:uy14AgDh
for(i 0→3 3まで)for(j 0→3 3まで)for(k 0→3 3まで){処理; 処理;}
0994デフォルトの名無しさん2014/08/22(金) 16:54:50.83ID:uy14AgDh
こういう仕組みでOKですか?

1上処理
2for
3(処理)
4{処理}
0995デフォルトの名無しさん2014/08/22(金) 16:55:31.37ID:g5OyREW2
基本的なことを聞いてみたんだけど
こりゃ...
0996デフォルトの名無しさん2014/08/22(金) 16:59:22.10ID:n13/cLZk
構文解析(と実際の駆動)ってことなら
インタプリタをCで記述したいって欲求なら yacc なり使うとか
再帰下降型の構文解析について調べるとか そういう話になるのでは
0997デフォルトの名無しさん2014/08/22(金) 18:38:39.44ID:uy14AgDh
yaccを使ったら一人で組んだ事にならない
0998デフォルトの名無しさん2014/08/22(金) 18:53:17.24ID:g5OyREW2
質問してる時点で...
0999デフォルトの名無しさん2014/08/22(金) 19:26:46.72ID:Q7ExT4u4
yacc安心構文解析?
1000デフォルトの名無しさん2014/08/22(金) 21:07:01.37ID:PYD8lyoN
次スレ立てました
C言語なら俺に聞け
http://peace.2ch.net/test/read.cgi/tech/1408709181/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。