C言語なら俺に聞け(入門編)Part 79at TECH
C言語なら俺に聞け(入門編)Part 79 - 暇つぶし2ch1:デフォルトの名無しさん
11/02/15 09:07:06
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 78
スレリンク(tech板)
★過去スレ
URLリンク(makimo.to:8000)
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 146代目
スレリンク(tech板)
★C++言語もOK、ガンガン質問してください。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

2:デフォルトの名無しさん
11/02/15 10:38:46
>>1
勝手にテンプレ変えんなクソったれが
C++はスレ違いだ

3:デフォルトの名無しさん
11/02/15 12:02:31
スレ立て直後で申し訳有りませんが、加算演算子についてです。

#include <stdio.h>
main()
{
int i,j;
i = 3; j = 4;
i = i+ +j;
printf("%d\n\r",i);
}

とした場合、 + が二つあっても,あいだにスペースやtabなどのセパレータがあれば、
warningもなく、きちんと動作します。
i = i + j;
とした場合と同じになります。
もちろん、
i = i++j;
とした場合はエラーとなります。

10年以上cをいじってて、はじめて気が付きました。

gccの4.3.2でテストしました。gcc以外に組込系の環境がいくつかあるのですが、
どれもも同じ動作でした.。

上記の処理は、言語仕様としてはどのようになっているのでしょうか?


4:デフォルトの名無しさん
11/02/15 12:11:59
プログラムはまずトークンに分割することになっています
トークンに分割する際は最も長いシーケンスを採用することになっています
つまり + よりも ++ の方が長いので、+ がいくつか連続していればそれは ++ というトークンとして切りだされます
トークンに分割した後に、そのプログラムの構文を解釈します
例えば x+++++y は x ++ ++ + y と分割されコンパイルエラーになるという例が仕様書にも記載されています

5:デフォルトの名無しさん
11/02/15 12:14:52
それは、わかるんですが、
i=i+ +j;
の場合、どう処理されているのかが知りたいんです。


6:デフォルトの名無しさん
11/02/15 12:22:11
それは単に i と +j を足して i に代入してるだけです
+j というのは単項演算子の + が j にくっついたものです
負の値を表すのに -j などと書けるように正の値をわざわざ + を付けて +j などと書いてもよいです

7:デフォルトの名無しさん
11/02/15 12:30:49
なるほど、わかりました。大変スッキリしました。
加算演算子でなくて、単項演算子となるわけですね。

実際のコードでは、数行にわたる計算式で、+の後ろに関数やらマクロやら
あったので、発見が遅れたので、バグとして計上するかどうかに悩んでたのでした。
コンパイルされたアセンブラコードとしては問題なかったのですが。

ありがとうございました。


8:デフォルトの名無しさん
11/02/15 18:02:00
914 :デフォルトの名無しさん:2011/02/06(日) 17:00:59
そんな話は聞いたことないけどしたいならそうすればいいんじゃない?
それより、 i * 10 + 9 + ( i == 9 ) は意図したとおりに動かないね。

920 :デフォルトの名無しさん:2011/02/06(日) 17:34:11
問題ないように思える人はもう一度Cの規格票をよく読むんだ^^

923 :デフォルトの名無しさん:2011/02/06(日) 17:38:32
…というのも不親切なので答えをいうと
i == 9の部分はtrueの時1になることを想定しているけど
(90-100の階級幅だけ11あるので、ここだけ特別処理にしている)
Cの規格上はtrueは0以外の整数であればなんでもいいことになっているので
実装にっては「90-100」のような表示にならない可能性があるってことなのよ^^;
ここは

printf( "%d-%d %d人\n", i * 10, i == 9 ? 100 : i * 10 + 9, cv[ i ] );

のようにすべきでした。

924 :デフォルトの名無しさん:2011/02/06(日) 17:41:11
って、答えを書いているうちに即レスするんじゃない貴様ら^^

ちなみに、この「trueは0以外の整数」というのは
Cではけっこう重要な落とし穴なので初学者は覚えておくといいよ^^

929 :デフォルトの名無しさん:2011/02/06(日) 17:44:46
あれ?そうだっけ?すまんすまん^^ワラ

935 :デフォルトの名無しさん:2011/02/06(日) 17:49:37
こうして人は成長していくのであった^^;

9:デフォルトの名無しさん
11/02/15 18:05:28
663 :デフォルトの名無しさん:2011/02/12(土) 22:47:08
>>654
その 6.5.6 って意味がよく判らん記述だなぁ、解りやすく解説できる?

そもオーバーフローとは加算・乗算によって桁あふれを起こす場合だろ
減算によって引き起こされるのはアンダーフローって呼ぶのでは?

10:デフォルトの名無しさん
11/02/15 18:09:59
572 :当然未定義な。:2011/02/12(土) 20:27:07
>>561, >>564
マスターのレベルにもよるよね。
普通に配列使うだけなら、他の言語知ってりゃできて当然。

char *x;
char y
char a[] = "012345678";
*x = a - 1;
y = x[2];

で、x に何が入るかまでわかってるなら結構すごいと思う。

11:デフォルトの名無しさん
11/02/15 18:23:00
>>3
printf("%d\n\r",i); // mac から windows の改行コードってネタ?


12:デフォルトの名無しさん
11/02/15 18:27:24
>>8
Part77のコピペか
突っ込みも一緒にコピペしないと分かりにくいんじゃね?

13:デフォルトの名無しさん
11/02/15 18:42:10
>>8
ひどいじゃなイカもコピペすれ

14:デフォルトの名無しさん
11/02/15 19:04:11
940 :デフォルトの名無しさん :2011/02/06(日) 17:52:53
おまえら、おもしろいおもちゃを手にいれたみたいに。ひどいじゃなイカ^^;

15:Perl忍者 ◆M5ZWRnXOj6
11/02/15 21:05:45
俺さあ、ここのスレ俺が立てたって設定にしてんだよね

俺「2chでC言語なら俺に聞けっていうスレをはじめました あれぼくです」

みたいに おーすげえっていわれるけど

16:デフォルトの名無しさん
11/02/15 21:08:00
そう・・・(無関心)

17:デフォルトの名無しさん
11/02/15 21:19:07
SAW…(拷問系)

18:デフォルトの名無しさん
11/02/15 21:46:23
爽…(氷菓子)

19:デフォルトの名無しさん
11/02/15 22:16:30
前スレ
250 名前: デフォルトの名無しさん [sage] 投稿日: 2011/02/09(水) 01:01:41

void mem_cpy(void *dst,void *src,u_int size){
     char *p1 = *dst;
     char *p2 = *src;
     while(size--){
          *p1** = *p2++;
     }
}
基本的なソースはこういう形として,
こういう形で,エンディアンの問題を回避する方法ってある?


*p1** = *p2++;
これ、どんな動作なの?


20:デフォルトの名無しさん
11/02/15 22:20:49
コンパイルエラー

21:デフォルトの名無しさん
11/02/15 22:26:33
ス、スマソ

22:デフォルトの名無しさん
11/02/15 22:34:58
エンディアン
うそつかない

23:デフォルトの名無しさん
11/02/15 22:53:52
>>19
C言語でないものはスレ違い

24:デフォルトの名無しさん
11/02/15 23:19:45
行列の取り扱いに関する質問なのですが

for(i=0;i<N=100;i++){
 for(j=0;j<N=100;j++){
  scanf("%d",&matrix[i][j]);
 }
}

このような手順で行列を作成した場合例えばi=j=4となる
i行j列の成分を除いた99*99の行列を作成するにはどう記述すべきですか?

25:デフォルトの名無しさん
11/02/15 23:27:45
>>24
まず i<N=100 や j<N=100 がコンパイル通らないけど…
それから、i=j=4となるi行j列要素を除くと99*99行列じゃなくて100*100-1行列じゃね?

26:デフォルトの名無しさん
11/02/15 23:40:28
比較演算子の方が優先順位高いから i<(N=100) としなきゃ

27:デフォルトの名無しさん
11/02/15 23:44:59
>>25
すいません書き方が酷かった
i=4またはj=4となるような行と列除くという意味です
あと省略しましたがNもscanfで入力させたいです

28:デフォルトの名無しさん
11/02/15 23:45:51
すみません。N=部分は削除お願いします
その通り、i=j=4となるi行j列要素を除く100*100-1行列です

29:デフォルトの名無しさん
11/02/15 23:48:37
>>27
i=5,j=5のときはmatrix[4][4]?
それともmatrix[5][5]?

30:デフォルトの名無しさん
11/02/15 23:52:40
>>27-28
意味が分からん…

31:デフォルトの名無しさん
11/02/15 23:53:20
どうせ学校の宿題だろ

32:29
11/02/15 23:56:11
前者なら
for(i=0;i<N=100;i++){ if(i==4) continue;
 for(j=0;j<N=100;j++){ if(j==4) continue;
  scanf("%d",&matrix[i][j]);
 }
}

後者なら何をしたいのか分からないが
for(i=0;i<N=100;i++){
 for(j=0;j<N=100;j++){
 if(i!=4 && j!=4)
  scanf("%d",&matrix[i][j]);
 }
}

33:デフォルトの名無しさん
11/02/15 23:57:39
>>32
scanfで読み込んだ行列に対して、指定した行と列を除く話だと思うよ

34:Perl忍者 ◆M5ZWRnXOj6
11/02/15 23:59:23
複雑なコード見慣れてるからさ
Cのコードが凄くカスにみえんだよね

はぁ・・・どうしよう 嫌味に聞こえたらごめんね

35:Perl忍者 ◆M5ZWRnXOj6
11/02/16 00:00:35
C言語なんて凄いやつたくさんいるしさあ^-^;
ユーザー多いから^-^;

俺TUEEEEEEEEEEEEEEEEEEEEE!!

できないよね^^; 馬鹿だね君たちも^^;

^-^;

36:デフォルトの名無しさん
11/02/16 00:05:03
>>28
100*100-1行列だとしてさ、「除く」って具体的にどういう事?
100*100-1要素の2次元配列を作りたい、それとも100*100要素の2次元配列で
[4][4]には代入しない、のどっち?

37:デフォルトの名無しさん
11/02/16 00:05:43
いいぞPerl忍者
もっとやれ

38:デフォルトの名無しさん
11/02/16 00:08:06
人を上から目線にしか見れない上級者様()は来なくていいです

39:デフォルトの名無しさん
11/02/16 00:08:38
◆QZaw55cn4c

40:デフォルトの名無しさん
11/02/16 00:11:59
面白いことも書けねえんならコテ付けんなカス

41:C忍者 ◆Iw4kwU1lPo
11/02/16 00:13:03
Perl忍者はもう少し頭を使った方がいい

42:Python忍者 ◆/vgV4RIG3g
11/02/16 00:20:26
拙者はスネークしてるでござるよ。pythonだけに。

43:舐め忍者 ◆gHyRb0WDMU
11/02/16 00:23:23
ぺろぺろぺろぺろ

44:PHP忍者 ◆46cuXalB7s
11/02/16 00:24:49
忍者の里

45:デフォルトの名無しさん
11/02/16 00:25:53
Perl忍者弱えw

46:デフォルトの名無しさん
11/02/16 00:27:22
ここはC言語なら俺ことイカ娘に聞け(上級編)Part 79でゲソ

   ,.__y⌒'ー---┐          ,.____        _へ、_、__,.ヘ、___
  /         \        , '´        `丶、    r´
  }  (  聞 ど  l      / l   _, -― -  ヽ、┌´      ナ丶
 f´   )  こ う  ヽ  n⌒l/  l ,. .´: : : : ハ: : : : :`.ヽ'ヽ  ├┬゛  tナ
 l   (  え も   }  l |l |n l / : :/ j:/ーヘl: : :|: : : : |  }.   ノ     /
 {   )  ん     〉 | {  j」_l /:l :/     |:/`}ノ!.:/  {   ヽ /  /へノ
 }   (  で      { _j  /ヘ/: :l  ミミ      l/}  〈   ノ  -‐ァ、、
. )   !  ゲ     (: :´メ、_,.メ、|: : |  , ,     ミミ./ :l .  }. ┌─┐ (,__
└-、     ソ    ,/ ヽ : : : : 丿」: : |、   /`¬ , , |: :|   )   ┌┘
    ゝ 、_,,,,,,,... -ゝ/ ̄/´,.__.|: : | >-| /_,ノ. : :\__l\ ・
.           ,/  / ̄ヽ l!: : :ヽ、l  丶イ |.|ト、:.\: : : : : : : :>-、-、 __,,.、
          (        ヾ \:_: :\__  ,‐//.| `l:\ ̄ ̄l/
            ̄  ̄ ̄ ̄ヽr―ァ' \: : /、 //  }/: : し\
               /: :,L,. く ___/::/ \'/   { ヽ┬┐/
               /: :/ /: ヾ¬ー'^ヽ     ヽ 丶__ _,-、
          __/: :/ /: :/ \          {、´   __ _l::::l⌒\
          |: : : : /   |: : i   /:\ `       >'´  \`-´^ヽJ
       /: : | ̄     |: : レ /: ://                  \

47:デフォルトの名無しさん
11/02/16 00:28:01
 

48:デフォルトの名無しさん
11/02/16 00:28:26
>>24
宿題スレへ号

49:Perl忍者 ◆M5ZWRnXOj6
11/02/16 00:30:07
わろwwwwwwwwwww

50:デフォルトの名無しさん
11/02/16 00:30:22
【モリタポ有償】C/C++の問題を片付けます(2)
スレリンク(tech板)

あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。

・モリタポ(URLリンク(moritapo.jp))により決済を行います。
・投稿にあたっては、トリップを使ってください。トリップがなければ決済の確認ができません。
 ◆QZaw55cn4c は、トリップ以外の質問者の情報を知ることができませんので安心です。

【回答掲示までの流れ】
1. 質問者がトリップを使って問題を投稿する。
2. ◆QZaw55cn4c が回答できる問題があれば、◆QZaw55cn4c が受諾レスを行う。
 受諾レスには決済日を基点とした回答猶予期間が示される。
3. 質問者が ◆QZaw55cn4c にモリタポを進呈する。
 進呈の際には、問題を投稿したときに表示されたトリップ(パスワードではない)をメッセージに記入する。
4. モリタポの進呈を確認したら、◆QZaw55cn4c は回答を掲示する。(URLリンク(codepad.org) URLリンク(ideone.com) を使用します。)

【料金】
・一問あたり 500円(5000モリタポ・手数料込み)です。
・一つのレスに記述できる内容を一問とします。アップローダーを使用してもかまいません。
・◆QZaw55cn4c が受諾レスを行い、受諾レスに回答期日を示したにも関わらず、回答期日に間に合わなかった場合には、モリタポを返還します。
それ以外の場合にはモリタポの返還はいたしません。

【修正】
・◆QZaw55cn4c が一度示した回答に対しては、明白な錯誤があった場合を除いては、◆QZaw55cn4c は修正は基本的に行いません。

ただし、最大限ご希望に応じたいと考えていますので、修正希望があれば、トリップを使用して投稿してください。
修正希望回数は、最大3回を目安としてください。3回を超えて修正を希望する場合は、新規に質問を投稿しなおしてください。
いずれも場合も、修正に応じることを保障するものではありません。

51:Haskell忍者 ◆Lgxotu9vfE
11/02/16 00:31:47
Perl忍者もっと頑張れよ

52:デフォルトの名無しさん
11/02/16 00:33:55
34 :Perl忍者 ◆M5ZWRnXOj6 :2011/02/15(火) 23:59:23
複雑なコード見慣れてるからさ
Cのコードが凄くカスにみえんだよね

はぁ・・・どうしよう 嫌味に聞こえたらごめんね


35 :Perl忍者 ◆M5ZWRnXOj6 :2011/02/16(水) 00:00:35
C言語なんて凄いやつたくさんいるしさあ^-^;
ユーザー多いから^-^;

俺TUEEEEEEEEEEEEEEEEEEEEE!!

できないよね^^; 馬鹿だね君たちも^^;

^-^;

53:デフォルトの名無しさん
11/02/16 01:25:33
 

54:デフォルトの名無しさん
11/02/16 01:40:19
100*100-1要素の2次元配列って何?

55:デフォルトの名無しさん
11/02/16 02:09:10
やっぱ専門家以外には通じないか…

56:デフォルトの名無しさん
11/02/16 02:10:16
#include<stdio.h>

int main(void)
{
....................int no;

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

.....................while(no > 0){
....................................if(no % 2){
..........................................................--no;
..........................................................printf("%d ", no);
..........................................................no -= 2;
.........................................................}
.....................................else{
..........................................................printf("%d ", no);
..........................................................no -= 2;
...............................................}
.................................}
...........................return(0);
}
C言語の教本の演習問題で「入力した整数以下の正の偶数を降順に表示しろ」
って言うから思いついたように組み込んで行ったら出来たんだが、
後々、何でこれで間違ってないのか分からん。
偶数入れた時はifのelseが使われて偶数が表示されるのは分かるが、奇数(例えば9)入れた時は
8, 5, 2 が表示されるんじゃないの?
入門一週間目の俺に教えてくれ

57:デフォルトの名無しさん
11/02/16 02:13:39
>>56
奇数を入れた1回目のループは
if(no % 2){} の中身が実行されるが
その時noが偶数になるので2回目以降のループは
else{}の中身が実行される

58:デフォルトの名無しさん
11/02/16 02:17:01
>>57
ああ、そっか
しょーもない読み違いで長文レスしてしまってすまんなありがとう

59:デフォルトの名無しさん
11/02/16 02:20:37
>>58
1を入力したときに
正の偶数ではない0が出力されちゃうから
修正した方がいいよ

60:デフォルトの名無しさん
11/02/16 02:28:22
んで、100*100-1行列って何?

61:デフォルトの名無しさん
11/02/16 02:36:26
arr[100][100]の1要素が不定ってところじゃないかなぺろ

62:デフォルトの名無しさん
11/02/16 02:38:13
>>59
whileの複合文の上に
..................if(no == 1){
..................printf(" ");
..................--no;
......................................}
と、whileの複合文の下に
.................putchar(' ');
入れれば良い感じか

63:デフォルトの名無しさん
11/02/16 02:39:54
>>61
>>36を見ると単純にそうとは言えないんじゃかいかぺろ

64:デフォルトの名無しさん
11/02/16 02:41:55
【モリタポ有償】C/C++の問題を片付けます(2)
スレリンク(tech板)

あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。

・モリタポ(URLリンク(moritapo.jp))により決済を行います。
・投稿にあたっては、トリップを使ってください。トリップがなければ決済の確認ができません。
 ◆QZaw55cn4c は、トリップ以外の質問者の情報を知ることができませんので安心です。

【回答掲示までの流れ】
1. 質問者がトリップを使って問題を投稿する。
2. ◆QZaw55cn4c が回答できる問題があれば、◆QZaw55cn4c が受諾レスを行う。
 受諾レスには決済日を基点とした回答猶予期間が示される。
3. 質問者が ◆QZaw55cn4c にモリタポを進呈する。
 進呈の際には、問題を投稿したときに表示されたトリップ(パスワードではない)をメッセージに記入する。
4. モリタポの進呈を確認したら、◆QZaw55cn4c は回答を掲示する。(URLリンク(codepad.org) URLリンク(ideone.com) を使用します。)

【料金】
・一問あたり 500円(5000モリタポ・手数料込み)です。
・一つのレスに記述できる内容を一問とします。アップローダーを使用してもかまいません。
・◆QZaw55cn4c が受諾レスを行い、受諾レスに回答期日を示したにも関わらず、回答期日に間に合わなかった場合には、モリタポを返還します。
それ以外の場合にはモリタポの返還はいたしません。

【修正】
・◆QZaw55cn4c が一度示した回答に対しては、明白な錯誤があった場合を除いては、◆QZaw55cn4c は修正は基本的に行いません。

ただし、最大限ご希望に応じたいと考えていますので、修正希望があれば、トリップを使用して投稿してください。
修正希望回数は、最大3回を目安としてください。3回を超えて修正を希望する場合は、新規に質問を投稿しなおしてください。
いずれも場合も、修正に応じることを保障するものではありません。

65:デフォルトの名無しさん
11/02/16 02:42:53
no > 1
って突っ込み待ちか?

66:デフォルトの名無しさん
11/02/16 02:43:25
【質問の際】
質問の際は以下の条件に従ってください。
従わない投稿の問題に対しては、回答を差し上げられない可能性が高くなります。
・トリップを使用してください。トリップがない場合、受諾レスも回答も差し上げられません。
・質問は【質問テンプレート】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、内容について説明をつけてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。

【質問テンプレート】
[1] 問題文(含コード&リンク):
[2] 環境
 [2.1] OS: (Windows/Linux/等々)
 [2.2] コンパイラ名とバージョン: (gcc 3.4, VisualC++2010 Express, Borland C++ 5.5 等)
 [2.3] 言語: (C/C++/どちらでも可 のいずれか)
[3] 回答希望期限:([yyyy年mm月dd日hh:mm])なお ◆QZaw55cn4c は回答希望期限を最大限尊重しますが、かならずしも希望にそえるとは限りません。
[4] その他の制限: (どこまで習っているか、<****.h>は使ってはいけない等々)

【過去スレ】
【◆QZaw55cn4c 隔離】C/C++の問題を片付けます
スレリンク(tech板)

【関連スレ】
C/C++の宿題片付けます 145代目
スレリンク(tech板)

67:デフォルトの名無しさん
11/02/16 03:09:21


68:デフォルトの名無しさん
11/02/16 03:39:08


      唸れ、俺の左手―!



                  宿りし力を今こそ解き放つ―!!

69:デフォルトの名無しさん
11/02/16 04:22:46
酒粕で作った甘酒が飲みたい・・・

70:デフォルトの名無しさん
11/02/16 04:46:11
Perl忍者

71:デフォルトの名無しさん
11/02/16 06:00:52
計算したい

72:デフォルトの名無しさん
11/02/16 09:00:48
includeファイルの優先順位とかって、指定できますか?
コンパイルはvisual studio 2008 Expressでやってます。
先にvarargs.hをincludeして、
va_start(引数)の形でコンパイルを通したいんですが、
va_start(引数1,引数2)が先に読まれてしまいエラーになってしまって・・・。

73:デフォルトの名無しさん
11/02/16 09:39:09
ほうほうそれでそれで?

74:デフォルトの名無しさん
11/02/16 09:51:27
>>72
理屈の上では、
#include <varargs.h>
va_start(引数)
#undef va_start
#include <stdarg.h>
va_start(引数1,引数2)
で少なくともコンパイルは通りそうな気がするけど

75:デフォルトの名無しさん
11/02/16 09:56:24
>>72 釣る
>>74 釣られる

ぺろぺろの予感!!!

76:デフォルトの名無しさん
11/02/16 10:30:16
>>72
僕も先ほどそれでエラーは回避できました。

#include <stdarg.h>
#undef va_start
#include <varargs.h>
va_start(引数)

実際はこーゆー流れでしたが。

これでやろうと思ってるんですが、
Visual studio 6.0と2008ではvarargs.hが変わってますよね?
2008はva_argが定義されてるかどうかが聞かれてるようになってますが。
なにか理由があって変わったってことは、
安易にそのようにすると6.0と挙動が変わってくるのかな。。。
とか不安なんですが、何かわからないでしょうか?

77:デフォルトの名無しさん
11/02/16 10:48:36
>>76
そのあたりの挙動を吸収してくれるのがstdな訳です
俺は規格外だ、アドホックに行くぜ
というならその理由を明確に提示してもらわないと
回答しようがないですし
そもそもそれが明確ならここより適したスレがあると思います

78:デフォルトの名無しさん
11/02/16 10:59:06
>>76
6.0では
#include <stdarg.h>
#include <varargs.h>
va_start(引数)
の流れでやってたのを2008に移行したいがための質問でした。
stdarg.hをincludeした後にva_argをundefした時に
著しく挙動が変わるような事がなければ問題ないです。
実際にログにはva_startとva_endしか再定義されないみたいで、
個人的には大丈夫かなとは思ってるんですが。

>俺は規格外だ、アドホックに行くぜ
そこらへんは良くわかってないです・・・。
すいません。。。

丁寧に答えていただきありがとうございました。

79:デフォルトの名無しさん
11/02/16 11:01:57
va_start(引数)にするメリットってあるの?

80:デフォルトの名無しさん
11/02/16 11:45:29
>>79
メリットというか・・・。
現行がそーゆー記述
(とゆーか、varargs.hで定義している形)になってたんで。
としか言えないです。
ソースは極力触りたくないんで。

81:デフォルトの名無しさん
11/02/16 11:45:51
fprintfとかfwriteなどは、内部でバッファリングしてて、ある程度たまったら
実際にディスクに書き込むようですが、
そのバッファのサイズはどこで定義されていますか?
また変更することはできるのでしょうか
ちなみにコンパイラはgcc 4.3.2です

82:デフォルトの名無しさん
11/02/16 12:07:47
特に定義されてないと思います
setvbufで変更できます

83:デフォルトの名無しさん
11/02/16 15:23:38
#include <stdio.h>
#define NUM 5
int main(void)
{
int test[NUM];
int tmp;
int i,j,s,t;
printf("%d人の点数を入力してください。\n",NUM);
for(i=0;i<NUM;i++){
scanf("%d",&test[i]);
}
for(s=0;s<NUM-1;s++){
for(t=s+1;t<NUM;t++){
if(test[t]>test[s]){
tmp=test[t];
test[t]=test[s];
test[s]=tmp;
}}}
for(j=0;j<NUM;j++){
printf("%d番目の人の点数は%dです。\n",j+1,test[j]);
}
return 0;
}
配列の要素を大きい順にソートするコード?らしいんですが意味がわかりません
どうして大きい順にちゃんと並び変わるんですか教えてください;;

84:デフォルトの名無しさん
11/02/16 15:29:03
>>83
if 文のところ
test[t] が test[s] よりも大きい場合に test[t] と test[s] を入れ替えて大きい順に並び変えている

85:デフォルトの名無しさん
11/02/16 15:36:44
>>84
>がありますしそれは分かるんですが
tmp=test[t];
test[t]=test[s];
test[s]=tmp;
のところがよく分からないんです・・・
22,80,57,60,50 5人の点数はこれです

86:デフォルトの名無しさん
11/02/16 15:40:35
excel使った方が早いよ

87:デフォルトの名無しさん
11/02/16 16:00:40


88:デフォルトの名無しさん
11/02/16 16:13:01
>>85
それは test[t] と test[s] を入れ替えている
最初 test[t] が 80 で test[s] が 22 だったとすると
tmp = test[t]; // tmp に 80 を代入
test[t] = test[s]; // test[t] に 22 を代入
test[s] = tmp; // test[s] に 80 を代入
最後 test[t] が 22 で test[s] が 80 となり入れ替わっている

89:デフォルトの名無しさん
11/02/16 18:08:08
return 0 と return 1 の違いを初心者でもわかるように教えて

90:デフォルトの名無しさん
11/02/16 18:16:20
関数の呼び出し元が受け取る戻り値が違う

91:デフォルトの名無しさん
11/02/16 18:20:00
受け取らなかったとしたら?

92:デフォルトの名無しさん
11/02/16 18:21:43
意味不明

93:デフォルトの名無しさん
11/02/16 19:27:01
コンパイルエラー

はい次

94:デフォルトの名無しさん
11/02/16 19:52:03
釣れたw

95:デフォルトの名無しさん
11/02/16 19:54:23
えらくしょぼい釣果だったな

96:デフォルトの名無しさん
11/02/16 19:59:51
いえいえ

97:デフォルトの名無しさん
11/02/16 20:27:12
>>82
BUFSIZ @stdio.h

98:デフォルトの名無しさん
11/02/16 22:00:31
関数宣言の時にvoid型にするとreturn値には何も書いちゃいけないの?

99:Perl忍者 ◆M5ZWRnXOj6
11/02/16 22:00:42
ひゅひゅだよ

100:デフォルトの名無しさん
11/02/16 22:03:48
>>98
いけないでござるよ。

101:デフォルトの名無しさん
11/02/16 22:15:26
>>98
書いていいとして、何を書くつもりだ?

102:あぼーん
あぼーん
あぼーん

103:あぼーん
あぼーん
あぼーん

104:あぼーん
あぼーん
あぼーん

105:デフォルトの名無しさん
11/02/16 23:36:55
>>98
1mmの捻りも感じない釣だな~

106:デフォルトの名無しさん
11/02/16 23:42:01
捻りの単位はmmじゃないよ

107:デフォルトの名無しさん
11/02/16 23:44:21
自然科学の話じゃないんじゃないの

108:デフォルトの名無しさん
11/02/16 23:54:19
そうだよ
捻りの単位は℃だよ

109:デフォルトの名無しさん
11/02/17 00:06:22
関白宣言の時にvoidされるとreturnは何も残らないの?


110:デフォルトの名無しさん
11/02/17 00:09:07
>>104
それは擬態の術でござるよ。

111:デフォルトの名無しさん
11/02/17 00:10:55
>>109
昔はスタックにint型の無効値を積んで読み捨てているものもあったらしい(伝聞)。

ま、宣言時に「使わねえよ」と漢らしく宣言した以上、それを貫くのが道ってもんだろ?

112:デフォルトの名無しさん
11/02/17 00:13:48
>>109
鬼嫁が残る

113:デフォルトの名無しさん
11/02/17 00:16:33
>>111
main()で漢らしく宣言しましたが、10年後に失脚してしまいました。
(´・ω・`)ショボーン

114:デフォルトの名無しさん
11/02/17 00:19:51
>>113
アクセスバイオレーションで主導権を回復できる例は殆ど無いもんね。

115:デフォルトの名無しさん
11/02/17 00:24:53
失脚したら再帰できないのかなあ

116:デフォルトの名無しさん
11/02/17 00:34:32
>>112
そんな鬼嫁でも、私が先立つときに、俺も死ぬと言ってなどと可愛い時期もありました。

117:デフォルトの名無しさん
11/02/17 00:37:13
>>116
スレッド/プロセスが複線化すると人間の能力では追いきれなくなるわけで、
ゾンビプロセスが残っててもしょうがないと思う。

118:デフォルトの名無しさん
11/02/17 00:39:57
>>117
はい、嫁が死ぬ時は、私も道連れにされますが、
私が死んでも、嫁は保険金で生き残って、太り続けます。
悲しいですね…

119:デフォルトの名無しさん
11/02/17 01:30:56
お前と嫁との関係は親プロセス子プロセスではなく、マスタースレーブだろ

120:デフォルトの名無しさん
11/02/17 04:25:08
だからなに?

121:あぼーん
あぼーん
あぼーん

122:デフォルトの名無しさん
11/02/17 06:35:55
#include <stdio.h>

int main()
{

123:デフォルトの名無しさん
11/02/17 06:41:32
#include <stdio.h>

int main()
{
int a[3][2] = {10, 20, 30, 40, 50, 60};
int i, j;

for (i = 0; i < 3; i++) {
for (j = 0; j < 2; j++) {
printf("&a[%d][%d] = %p (a[%d] + %d) = %p\n",
i, j, &a[i][j], i, j, (a[i] + j));
}
}

return 0;
}
(a[i] + j)は何故アドレス演算子が必要ないのですか?

124:デフォルトの名無しさん
11/02/17 06:44:31
a[i] + jがアドレスだから

125:デフォルトの名無しさん
11/02/17 06:47:14
何通りも無いんだから総当りでチェックして
一度自分の目で確かめた方がいい

126:デフォルトの名無しさん
11/02/17 07:04:03
>>124
>>125
配列名はその配列の先頭アドレスを表すと書かれていたのですが、
この場合a[i]を配列名として見るということでしょうか?

127:デフォルトの名無しさん
11/02/17 07:07:36
>>126
a[i]と書いたときポインターに成り下がる
ぺろぺろぺろぺろ

128:デフォルトの名無しさん
11/02/17 07:22:23
>>126
int a[b][c][d][e][f][g][h][i][j][k];
a[b][c][d][e][f][g][h][i][j]; // ←は[k]に辿り着かなければ何処までもポインタ扱い

129:デフォルトの名無しさん
11/02/17 07:31:17
>>127
>>128
理解できました。
ありがとうございます。

130:あぼーん
あぼーん
あぼーん

131:あぼーん
あぼーん
あぼーん

132:あぼーん
あぼーん
あぼーん

133:デフォルトの名無しさん
11/02/17 14:33:04
cdecl の引数領域って関数の中で破壊してもいいんだっけ?
(スタックポインタの巻き戻しじゃなくて、引数領域を何かで上書きしてもいいのかってこと)

134:デフォルトの名無しさん
11/02/17 15:26:23
>>133
引数領域ってスタックの中だろ
普通、そこは参照しかしないからな…
Cの動作だけで考えれば、壊しても大丈夫な気もするが、
最適化とかすると、コンパイラ依存になりそうな気がする…

135:あぼーん
あぼーん
あぼーん

136:デフォルトの名無しさん
11/02/17 16:59:36
>>134
そうそう、スタック上の引数
アセンブラのルーチンで横着して引数をつぶすってのを昔から深く考えずにやってたんだけど
ふと心配になったんだ

経験上、関数から帰った後で引数を使いまわすコンパイラは見たことないけど
規格や規約ではっきり合法と書かれてるのも見たことないんだよね

137:デフォルトの名無しさん
11/02/17 17:36:40
C言語入門書でオススメを教えてください

138:あぼーん
あぼーん
あぼーん

139:あぼーん
あぼーん
あぼーん

140:あぼーん
あぼーん
あぼーん

141:デフォルトの名無しさん
11/02/17 17:55:05
>>136
んあ?
規格に、仮引数は関数スコープの変数、みたいな記述がなかったっけ?

確認してないんで無かったらスマン

142:あぼーん
あぼーん
あぼーん

143:デフォルトの名無しさん
11/02/17 19:51:54
warning: passing argument 2 of '__builtin___strcpy_chk' makes pointer from integer without a cast
このエラーの意味と対処法を教えていただけませんか?

144:デフォルトの名無しさん
11/02/17 20:00:25
そのままじゃん

145:デフォルトの名無しさん
11/02/17 20:05:36
>>143
__builtin___strcpy_chk の第二引数にintを入れたみたいだけど、
こっちで親切にポインタにキャストしておいてあげたからねっ、という意味。

対処法は、(void *) 0 みたいに明示的にキャストして引数を渡す。

146:デフォルトの名無しさん
11/02/17 20:16:56
>>143
多分 strcpy の第2引数に char* じゃなくて char を渡していると思われ。
コンパイラにとっちゃあ warning だけどプログラムとして見れば error! ご愁傷さま

147:デフォルトの名無しさん
11/02/17 20:20:45
>>145
ありがとうございます。

148:デフォルトの名無しさん
11/02/17 20:36:56
>>146
ありがとうございます。

149:デフォルトの名無しさん
11/02/17 20:52:49
>>143です。
URLリンク(codepad.org)
上のようなプログラムで前述した警告がline43,50,58に出るのですが、具体的な改善点が分かりません・・・。
よろしければ教えて頂けたら幸いです。何度も申し訳ありません・・・。

150:デフォルトの名無しさん
11/02/17 21:02:57
>>149
>>146

151:デフォルトの名無しさん
11/02/17 21:03:55
文字と文字列の違いを勉強するといいと思うよ

152:デフォルトの名無しさん
11/02/17 21:17:05
これはひどい

153:デフォルトの名無しさん
11/02/17 21:40:54
>>151
ありがとうございます。

154:デフォルトの名無しさん
11/02/17 22:07:26
>>152
ありがとうございます。

155:デフォルトの名無しさん
11/02/17 22:43:48
>>149
解決しました!ありがとうございました。

156:デフォルトの名無しさん
11/02/17 22:48:54
#include <string.h>
#include <stdio.h>

int main()
{
char str[32];
size_t len;

printf("文字列を入力してください---");
scanf("%s", str);

len = strlen(str);

printf("%sの長さ%dです\n", str, len);

return 0;
}
猫でもわかるCの文字列の長さを取り出すプログラムなのですが、
何故size_t型を使っているのでしょうか?

157:デフォルトの名無しさん
11/02/17 22:52:13
>>156
strlen()の戻り値がsize_tだから

158:デフォルトの名無しさん
11/02/17 22:53:05
strlenの戻り値の型がsize_tだから
つってもprintfに%d指定してるから意味ないけどな

159:デフォルトの名無しさん
11/02/17 22:54:03
>>156
size_tだと型によって何かのサイズであることを明示できる。
プログラマやソースを読んだ人に対するインフォメーションが多い。
そのため、コードの解読がしやすく、バグを作りこみにくくなる。

という優しさ。

160:デフォルトの名無しさん
11/02/17 22:55:12
>>156
strlenの戻り値の型がsize_tだから
strlenとかサイズを返す系の関数がなぜsize_tを使っているかというと、「サイズを表す」と明言したいから
別にintでもunsignedでもいいじゃんと思うかもしれないけど、型定義名を使っておけば後から変更するとき一箇所だけの書き換えで済む

161:デフォルトの名無しさん
11/02/17 22:56:14
なるほどー、ありがとうございます。

162:デフォルトの名無しさん
11/02/17 23:05:24
わんくま同盟ってなんなんですか?
プログラマ界の権威みたいなものですか?

163:デフォルトの名無しさん
11/02/17 23:09:56
はい、そうですよ。あれは超エリートプログラマ集団

164:デフォルトの名無しさん
11/02/17 23:14:43
メンバーのεπιστημηさんはC++語らしたら恐らく日本で一番。かれこれ20年近いんじゃないかな

165:デフォルトの名無しさん
11/02/17 23:16:53
επιστημηさんって本を出版している方ですよね?
やっぱり神プログラマなんですね

166:デフォルトの名無しさん
11/02/17 23:18:05
えぴすてーめさんには昔よくお世話になりました。
ええ人や。

167:デフォルトの名無しさん
11/02/17 23:18:05
他所でやれ

168:デフォルトの名無しさん
11/02/17 23:20:03
嫉妬する人がいるのも分かります

169:デフォルトの名無しさん
11/02/17 23:21:44
>>167
嫉妬しているの?

170:デフォルトの名無しさん
11/02/17 23:23:17
うん

171:デフォルトの名無しさん
11/02/17 23:26:57
そりゃそうだろ

172:デフォルトの名無しさん
11/02/17 23:30:38
嫉妬に値する

173:デフォルトの名無しさん
11/02/17 23:31:12
VC++でlibpng1.5.1がコンパイル出来ない!だれか助けて!><;

174:デフォルトの名無しさん
11/02/17 23:31:49
何で嫉妬しているの?

175:デフォルトの名無しさん
11/02/17 23:36:25
実力の差が明らかだから

176:デフォルトの名無しさん
11/02/17 23:49:45
επιστημηって名前もオシャレだよね
日本人離れしている

177:デフォルトの名無しさん
11/02/17 23:51:15
パソ通出身は変な名前多い。

178:デフォルトの名無しさん
11/02/18 00:02:25
クサチュー

179:デフォルトの名無しさん
11/02/18 00:13:43
επιστημηは頭良いからな

180:デフォルトの名無しさん
11/02/18 00:22:22
イプシロンパイイオタシグマタウエータミューエータさんがどうした?

181:デフォルトの名無しさん
11/02/18 00:29:12
>>180
お前は頭悪いだろ

182:デフォルトの名無しさん
11/02/18 00:31:45
>>180

183:デフォルトの名無しさん
11/02/18 01:07:17
えってぃいおてんうん
としか読めねえだろこれjk

184:デフォルトの名無しさん
11/02/18 01:22:59
ティウンティウン

185:デフォルトの名無しさん
11/02/18 01:33:09
>>179
左端が亀頭みたいでヒワイだとおもいます

186:デフォルトの名無しさん
11/02/18 01:34:26
おまえのせいで亀頭にしか見えない!!

187:デフォルトの名無しさん
11/02/18 01:35:11
ホーケイちんこのシワ的だよな。πのあたりが

188:デフォルトの名無しさん
11/02/18 01:36:58
あんもくに包茎自慢しやがって

189:デフォルトの名無しさん
11/02/18 01:37:42
おまえのせいでημηがきんたまにしかみえねえ!

190:デフォルトの名無しさん
11/02/18 01:44:20
System.out.println("επιστημη");

191:デフォルトの名無しさん
11/02/18 01:46:54




επιστημηの才能に嫉妬する人がこんなにも・・・




やはり社会に与える影響は大きかったか・・・





192:デフォルトの名無しさん
11/02/18 01:48:24
政権交代にもεπιστημηの影があったというしな

193:デフォルトの名無しさん
11/02/18 01:51:46
実力には逆らえない

194:デフォルトの名無しさん
11/02/18 01:57:27
ネタが無いなら無いで
無理にネタを振らなくてもいいよ
無理にネタに乗らなくてもいいよ
HN、レス番、レス日時、IDをネタにしてまで
頑張らなくていいんだよ


195:デフォルトの名無しさん
11/02/18 02:05:01
何言ってんのコイツ

196:デフォルトの名無しさん
11/02/18 02:07:12
馬鹿なんだろ

197:デフォルトの名無しさん
11/02/18 02:17:33
 

198:デフォルトの名無しさん
11/02/18 02:46:38
>>195-197

                 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                 | 
     , ,-;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:,.  ヽ─y───────   ,-v-、
    /;:;:;:;:;:;:ミミ;:;:;:;:;:;:;:;:;:;`、                          / _ノ_ノ:^)
    /;:;:;:;:彡―ー-、_;:;:;:;:;:;:;:;|                           / _ノ_ノ_ノ /)
    |;:;:;:ノ、     `、;;:;:;:;:;:i                        / ノ ノノ//
    |;:/_ヽ ,,,,,,,,,,  |;:;:;:;:;:;!                      ____/  ______ ノ
    | ' ゚ ''/ ┌。-、  |;:;:;:;:/                     _.. r("  `ー" 、 ノ
    |` ノ(  ヽ  ソ  |ノ|/               _. -‐ '"´  l l-、    ゙ ノ
_,-ー| /_` ”'  \  ノ   __       . -‐ ' "´        l ヽ`ー''"ー'"
 | :  | )ヾ三ニヽ   /ヽ ' "´/`゙ ーァ' "´  ‐'"´         ヽ、`ー /ノ
 ヽ  `、___,.-ー' |   /   /                __.. -'-'"
  |    | \   / |   l   /            . -‐ '"´
  \   |___>< / ヽ



199:デフォルトの名無しさん
11/02/18 02:48:23
AA荒らしキタ

200:デフォルトの名無しさん
11/02/18 02:52:31
AAうざ

201:あぼーん
あぼーん
あぼーん

202:あぼーん
あぼーん
あぼーん

203:あぼーん
あぼーん
あぼーん

204:あぼーん
あぼーん
あぼーん

205:デフォルトの名無しさん
11/02/18 02:55:40
一人3役荒らし VS AA荒らし

206:あぼーん
あぼーん
あぼーん

207:デフォルトの名無しさん
11/02/18 02:57:12
× 一人3役荒らし
○ 舐め達磨

ぺろぺろぺろぺろ

208:デフォルトの名無しさん
11/02/18 02:57:59
>>207
お前まだいたのか
さすがクドさが半端ない

209:デフォルトの名無しさん
11/02/18 02:58:11
舐め達磨 は おうむがえし を つかった
ぺろぺろぺろぺろ

210:あぼーん
あぼーん
あぼーん

211:あぼーん
あぼーん
あぼーん

212:あぼーん
あぼーん
あぼーん

213:あぼーん
あぼーん
あぼーん

214:あぼーん
あぼーん
あぼーん

215:あぼーん
あぼーん
あぼーん

216:デフォルトの名無しさん
11/02/18 03:03:05
あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。

・モリタポ(URLリンク(moritapo.jp))により決済を行います。
・投稿にあたっては、トリップを使ってください。トリップがなければ決済の確認ができません。
 ◆QZaw55cn4c は、トリップ以外の質問者の情報を知ることができませんので安心です。

【回答掲示までの流れ】
1. 質問者がトリップを使って問題を投稿する。
2. ◆QZaw55cn4c が回答できる問題があれば、◆QZaw55cn4c が受諾レスを行う。
 受諾レスには決済日を基点とした回答猶予期間が示される。
3. 質問者が ◆QZaw55cn4c にモリタポを進呈する。
 進呈の際には、問題を投稿したときに表示されたトリップ(パスワードではない)をメッセージに記入する。
4. モリタポの進呈を確認したら、◆QZaw55cn4c は回答を掲示する。(URLリンク(codepad.org) URLリンク(ideone.com) を使用します。)

【料金】
・一問あたり 500円(5000モリタポ・手数料込み)です。
・一つのレスに記述できる内容を一問とします。アップローダーを使用してもかまいません。
・◆QZaw55cn4c が受諾レスを行い、受諾レスに回答期日を示したにも関わらず、回答期日に間に合わなかった場合には、モリタポを返還します。
それ以外の場合にはモリタポの返還はいたしません。

【修正】
・◆QZaw55cn4c が一度示した回答に対しては、明白な錯誤があった場合を除いては、◆QZaw55cn4c は修正は基本的に行いません。

ただし、最大限ご希望に応じたいと考えていますので、修正希望があれば、トリップを使用して投稿してください。
修正希望回数は、最大3回を目安としてください。3回を超えて修正を希望する場合は、新規に質問を投稿しなおしてください。
いずれも場合も、修正に応じることを保障するものではありません。

217:あぼーん
あぼーん
あぼーん

218:あぼーん
あぼーん
あぼーん

219:あぼーん
あぼーん
あぼーん

220:あぼーん
あぼーん
あぼーん

221:あぼーん
あぼーん
あぼーん

222:デフォルトの名無しさん
11/02/18 03:24:30
>>208
ありがとう
でも、舐め達磨さん本人も見てるから誉めるのは止めて欲しい
やきもち焼いてこんな流れになっちゃうから・・・><

223:デフォルトの名無しさん
11/02/18 03:26:45
反応鈍いな


224:デフォルトの名無しさん
11/02/18 03:36:11
舐め達磨って流行ってるの?

225:あぼーん
あぼーん
あぼーん

226:あぼーん
あぼーん
あぼーん

227:デフォルトの名無しさん
11/02/18 03:42:11
おまいら for(;;) やめてこんな For 関数使おう!コードと説明は:
URLリンク(jp.alpha-lab.info)
*ただ、C++0xのlambda式使わないとそれほど便利じゃなくなる

228:あぼーん
あぼーん
あぼーん

229:あぼーん
あぼーん
あぼーん

230:あぼーん
あぼーん
あぼーん

231:あぼーん
あぼーん
あぼーん

232:デフォルトの名無しさん
11/02/18 03:49:18
テスト

233:デフォルトの名無しさん
11/02/18 03:51:35
>>224
キチガイって流行ってるの?

234:あぼーん
あぼーん
あぼーん

235:あぼーん
あぼーん
あぼーん

236:あぼーん
あぼーん
あぼーん

237:あぼーん
あぼーん
あぼーん

238:デフォルトの名無しさん
11/02/18 04:07:49
 

239:デフォルトの名無しさん
11/02/18 04:09:36
舐め達磨を流行らせよう!
ぺろぺろぺろぺろ

240:デフォルトの名無しさん
11/02/18 04:33:37
舐め達磨の人こそコテつけて欲しいな
レス内容が全部ぺろぺろに置き換わっても支障ないだろw

241:デフォルトの名無しさん
11/02/18 04:48:53
一人で何言ってんの

242:デフォルトの名無しさん
11/02/18 05:17:38
>>241
コテつけてよ

243:Perl忍者 ◆M5ZWRnXOj6
11/02/18 09:56:48
低レベルすぎて、わろwwwww

244:デフォルトの名無しさん
11/02/18 18:08:03
Perl忍者

245:デフォルトの名無しさん
11/02/18 19:20:18
{
char miozi[],namae[];

printf("苗字を入力してください。\n");
scanf("%s",miozi);
printf("名前を入力してください\n");
scanf("%s",namae);




return 0;
}
これで要素数を指定しなければ動かない理由はなんですか?

246:デフォルトの名無しさん
11/02/18 19:22:54
どれだけの大きさを用意すればいいかわからないから

247:デフォルトの名無しさん
11/02/18 19:36:05
>>27
int a[100][100], b[99][99], i, j;

for(i = 0; i < 99; i++) for(j = 0; j < 99; j++) b[i][j] = a[i >= 4 ? i + 1 : i][j >= 4 ? j + 1 : j];

248:デフォルトの名無しさん
11/02/18 19:49:56
>>246
ありがとうございます。
では要素数を指定しなくていい時はどういうときなんでしょうか?
指定しなければ動かない場合と指定しなくても動く場合の違いがわかりません。

249:デフォルトの名無しさん
11/02/18 19:56:29
初期化するとき

250:デフォルトの名無しさん
11/02/18 20:27:26
>>245
「動かない」じゃなくて「動かせない」じゃないかい?コンパイルエラーで…

251:デフォルトの名無しさん
11/02/18 20:45:10
>>249
すっきりしました。ありがとうございます。

252:デフォルトの名無しさん
11/02/18 21:37:24
お前らでオナニーしてもいいですkウッ…

すっきりしました。ありがとうございます。

253:デフォルトの名無しさん
11/02/18 22:23:02
はい。

254:デフォルトの名無しさん
11/02/18 22:40:56
Perl忍者

255:デフォルトの名無しさん
11/02/18 23:25:48
今日C言語3級受けた
過去問80点前後は取れてたけど今回はちょっと難しかった…

char型に整数って入れられたました?

256:デフォルトの名無しさん
11/02/18 23:26:55
いれられたます

257:デフォルトの名無しさん
11/02/18 23:29:12
>>255は釣り

258:デフォルトの名無しさん
11/02/18 23:35:00
>>256
ありがとございます。文字だけだと思って間違えました…

259:デフォルトの名無しさん
11/02/18 23:41:55
fseekってHDDにアクセスするんですか?
それともメモリ上の変数にアクセスするだけですか?
fseekをガンガン使おうか控えめにしようか迷ってます。

260:デフォルトの名無しさん
11/02/18 23:46:46
実装がどうなっているかなんて、C言語は関知しません

261:デフォルトの名無しさん
11/02/18 23:47:08
いいえ。ファイルにガンガンアクセスするんですよ
でも、自分ファイルって何か知らんとです、orz

262:デフォルトの名無しさん
11/02/18 23:47:44
>>259
書き込み後のfseek()はバッファのフラッシュをするし、読み込み専用でもディスクアクセスはあるかも知れない

263:デフォルトの名無しさん
11/02/18 23:57:30
C言語の範疇ではないな

264:デフォルトの名無しさん
11/02/19 00:21:49
>>262
ありがとうございます。
HDDにアクセスする可能性があるのか。

265:デフォルトの名無しさん
11/02/19 00:51:44
可能性としか言えない
どういう場合にアクセスが起こるかまで知ろうとすると、OSの方に依存する

266:デフォルトの名無しさん
11/02/19 02:04:00
>>265
OSが無い環境は無視されるのですね
わかります

267:デフォルトの名無しさん
11/02/19 02:17:37
そうだね

268:デフォルトの名無しさん
11/02/19 02:18:18
Cプログラムを自分がする環境で、OSがなくてHDDを使う環境ってどんなの?


269:デフォルトの名無しさん
11/02/19 02:19:57
>>268
クドクドと長い話が始まるからほっとけよ


270:デフォルトの名無しさん
11/02/19 02:31:53
ほんとクドいな

271:デフォルトの名無しさん
11/02/19 02:33:03
またクドクドと始まるぞ

272:デフォルトの名無しさん
11/02/19 02:34:19
クロス開発のことか?

273:デフォルトの名無しさん
11/02/19 02:34:56
>>268-271

                 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                 | 
     , ,-;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:,.  ヽ─y───────   ,-v-、
    /;:;:;:;:;:;:ミミ;:;:;:;:;:;:;:;:;:;`、                          / _ノ_ノ:^)
    /;:;:;:;:彡―ー-、_;:;:;:;:;:;:;:;|                           / _ノ_ノ_ノ /)
    |;:;:;:ノ、     `、;;:;:;:;:;:i                        / ノ ノノ//
    |;:/_ヽ ,,,,,,,,,,  |;:;:;:;:;:;!                      ____/  ______ ノ
    | ' ゚ ''/ ┌。-、  |;:;:;:;:/                     _.. r("  `ー" 、 ノ
    |` ノ(  ヽ  ソ  |ノ|/               _. -‐ '"´  l l-、    ゙ ノ
_,-ー| /_` ”'  \  ノ   __       . -‐ ' "´        l ヽ`ー''"ー'"
 | :  | )ヾ三ニヽ   /ヽ ' "´/`゙ ーァ' "´  ‐'"´         ヽ、`ー /ノ
 ヽ  `、___,.-ー' |   /   /                __.. -'-'"
  |    | \   / |   l   /            . -‐ '"´
  \   |___>< / ヽ





274:デフォルトの名無しさん
11/02/19 02:36:32
まぁ実際あるだろうが、このスレの範囲かどうかは知らん

275:デフォルトの名無しさん
11/02/19 02:53:07
九℃九度
>>268
組み込みならあるんじゃないか

276:デフォルトの名無しさん
11/02/19 03:03:14
組み込み

277:デフォルトの名無しさん
11/02/19 03:09:06
独学だと全然勉強が捗らない・・・

278:デフォルトの名無しさん
11/02/19 03:15:22
実行例やら例題やらをひたすらコンパイルするんだ

279:デフォルトの名無しさん
11/02/19 03:24:29
はやく何かツール作れるようになりたい。
プロンプトに文字を表示させるの飽きた

280:デフォルトの名無しさん
11/02/19 03:27:14
猫winでも読めばいいじゃん

281:デフォルトの名無しさん
11/02/19 03:45:32
うん・・・猫C全部読んでからやろうと思う。
あ、あと前猫win第2版のソースコピペしてビルドしたらエラー出たんだけどなんで?
プログラムの書き方変わったとか?

第3版出てたのに間違えて第2版買っちゃったんだよね

282:デフォルトの名無しさん
11/02/19 03:49:22
動作確認をとった環境がかかれてない本なの?

あとはエスパースレにどうぞ。

283:デフォルトの名無しさん
11/02/19 04:04:32
レビュー見てたらVC++ではコード修正しないとビルド出来ないって書いてあった。

284:デフォルトの名無しさん
11/02/19 06:24:20
猫ってVC++向けな気がするけどなぁ。

285:デフォルトの名無しさん
11/02/19 09:45:31
>>279
コマンドラインツールを作る気が今後もないのなら、違う言語にステップアップするのも手だ。
今時ピュアCで作ってるGUIツールなんて珍しいからな。

286:デフォルトの名無しさん
11/02/19 09:54:48
>>285
一応Pythonも勉強中してる

287:Perl忍者 ◆M5ZWRnXOj6
11/02/19 12:37:28
低レベル過ぎる

だいたいC詳しいやつなんて こんなスレ使わないから

低脳があつまるんだろうねここ

288:デフォルトの名無しさん
11/02/19 13:09:21
君を筆頭にね

289:デフォルトの名無しさん
11/02/19 16:58:03
超初心者です。
2~1000までの素数を全て表示するという練習問題で
以下のように記述したのですが、上手くいきません。
どこが間違ってるんでしょうか?

#include<stdio.h>
int main(void)
{
int i,j;
for(i=2; i<=1000; i++)
{
 for(j=1; j<=i/2; j++)
  {
    if((i%j)!=0)printf("%d\n",i);
  }
}
return 0;
}

290:デフォルトの名無しさん
11/02/19 17:00:08
全ての整数は1で割り切れる。

291:デフォルトの名無しさん
11/02/19 17:04:40
#include<stdio.h>
int main(void)
{
int i,j;
for(i=2; i<=1000; i++)
{
 for(j=1; j<=i/2; j++)
  {
    if((i%j)==0) break;
  }
 if(j > i/2)printf("%d\n",i);
}
return 0;
}

292:デフォルトの名無しさん
11/02/19 17:16:30
>>290
>>291
ありがとうございます。
やっと理解できました。

293:デフォルトの名無しさん
11/02/19 17:47:13
また随分中途半端な削除が入ったなぁ。
>64なんかも重複だろうに。

294:デフォルトの名無しさん
11/02/19 19:17:59
文句があるならお前が動けって話。

295:デフォルトの名無しさん
11/02/19 22:46:16.15
ソースが長くなりそうなので、関数毎にモジュール化したい(.cファイル)のですが
メインのソースファイルに他の関数とかを書いているcソースファイルを取り込めません(というか取り込み方間違ってる…?)

#include (分割したソースファイル名)

ではコンパイルエラーになります…。
一体どうやってやるのでしょうか?

296:デフォルトの名無しさん
11/02/19 22:48:39.96
すいません、一例。

■main.c
■sub1.c
■sub2.c

main.cがプログラム本体です。sub1.cとsub2.cは関数だけ集めたファイル。

(main.c)

#include sub1.c

これでエラー出力。

297:デフォルトの名無しさん
11/02/19 22:50:40.42
■main.c
■sub1.c
■sub2.c
■sub1.h
■sub2.h

*.cに
#include "sub1.h"
#include "sub2.h"
を書いて

gcc sub1.c sub2.c main.c
でコンパイル

298:デフォルトの名無しさん
11/02/19 22:52:26.77
#include sub1.c
初心者に、こんなやり方を教えるなんて

299:デフォルトの名無しさん
11/02/19 22:57:57.31
>>297
出来ました!どうもありがとうございます!!
ヘッダーファイルってそういう意味で使うんですね。なるほど

>>298
参考書のみの独学プログラマでして…。
申し訳ない。

300:デフォルトの名無しさん
11/02/19 23:13:51.18
ヘッダファイルにプロトタイプ宣言
.cに関数の定義を書くのが普通だな

301:デフォルトの名無しさん
11/02/19 23:29:36.11
>>296-300
丸く収まっているところを悪いけど、なんか最初の話とズレてないかい?
行儀の良し悪しはともかくとしても、#include sub1.c を #include "sub1.c"
とすりゃいいんじゃネーノ?

302:デフォルトの名無しさん
11/02/19 23:32:01.50
良くねーだろ

303:デフォルトの名無しさん
11/02/19 23:34:18.11
>>302
なんで?

304:デフォルトの名無しさん
11/02/19 23:37:02.64
「取り込み方間違ってる…?」って聞いてるからな。

とりあえずコンパイルを通す方法よりも
一般的なファイル分割の方法を説明するのが筋だろう。

それで満足しなければ、#include "sub1.c" の話をすればいい。

305:デフォルトの名無しさん
11/02/19 23:49:10.53
>>304
満足するしないの話か?
C言語の #include ディレクティブの記法ミスと気付かせるのも重要だと思うけど。
まっ、意見の相違ってやつだなw

306:デフォルトの名無しさん
11/02/19 23:53:07.51
「気付かせる」とかエラソーな態度が気に入らない。

307:デフォルトの名無しさん
11/02/19 23:54:20.63
まぁどっちでも良いじゃないか。
一応一般的な方法も教えるべきだったと俺は思うし。

308:デフォルトの名無しさん
11/02/20 01:14:21.46
>>305
俺も記法ミスのほうを優先すべきだと思う。

一般的な方法を教えるべきだと思ってる人は多重インクルードに対する一般的な解決法も書くべきだろ。

309:デフォルトの名無しさん
11/02/20 01:18:58.62
だから、お前が良いと思う方法を【お前が】書きこめばいい。

310:デフォルトの名無しさん
11/02/20 02:37:47.24
strcpy関数を使うときは#include <sting.h>を書かないとだめですよね?


311:デフォルトの名無しさん
11/02/20 02:38:45.02
>>310
関数宣言するだけでもいいよ

312:デフォルトの名無しさん
11/02/20 02:40:57.30
#include <string.h>

313:デフォルトの名無しさん
11/02/20 02:46:33.78
>>311
でも書いたほうがいいのでしょうか?
#include <string.h>を書いたときと書かなかったときに何か違いはあるのでしょうか?

314:デフォルトの名無しさん
11/02/20 02:54:05.24
引数も基本型だけだから、関数宣言だけで問題ない。

タイプ量を考えたら#includeのほうが手っ取り早いけどな。

315:デフォルトの名無しさん
11/02/20 03:00:10.25
>>313
関数宣言をしていれば、インクルードしなくてもいい。
だからと言ってstrcpy()以外にもstrcat()やstrchr()を使う度に関数宣言を増やすのも阿呆なので、
普通はインクルードしておく。

316:デフォルトの名無しさん
11/02/20 03:00:52.80
関数宣言だけってどういうこと~?

317:デフォルトの名無しさん
11/02/20 03:02:26.33
こういうこと?
#include<stdio.h>

void strcpy(char *, char *)

318:デフォルトの名無しさん
11/02/20 03:16:55.71
>>315
関数宣言とは・・・?
プロトタイプ宣言のこと?

319:デフォルトの名無しさん
11/02/20 06:22:29.17
>>315
関数宣言とは・・・?
関白宣言のこと?

おまえを嫁にもらう前に、言っておきたいことがある。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch