1read 100read
2013年04月プログラム10: C言語なら俺に聞け(入門編)Part 113 (618) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Perlについての質問箱 58箱目 (423)
Perlについての質問箱 58箱目 (423)
ふらっとVisual C#,C♯,C#(初心者用) Part103 (793)
C/C++の宿題片付けます 164代目 (272)
HSP総合スレ【part 4】 (210)
Win32API質問箱 Build114 (232)

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


1 :2013/03/09 〜 最終レス :2013/04/07
C言語の入門者向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 112
http://toro.2ch.net/test/read.cgi/tech/1358278884/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 163代目
http://toro.2ch.net/test/read.cgi/tech/1361082416/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

2 :
NULLってなんですか?

3 :
>>2
NULLです。

4 :
#define NULL 0
ポインタとかメモリアドレスを聞かれてる時にはnullptrつかうとええよ

5 :
>>5
ga

6 :
>>4
さあC++スレにお帰り

7 :
NULLってのはポインタ使わない限り使わないよね
ポインタって基本的に使わない配列があるし

8 :


9 :
           ___   ━┓
         / ―  \  ┏┛
        /  (●)  \ヽ ・
       /   (⌒  (●) /
       /      ̄ヽ__) /
.    /´     ___/
    |        \
    |        |

10 :
>>7
0 と書いて全然OKだから、私は NULL でさえ使わない。

11 :
0がぬるぽになるとか悪魔の仕様だよね
何で最初にキーワード導入しなかったんだろうと思ったが
当初ぬるぽのビット表現が0にならない環境とか無考慮で0を入れるようにしてて
その時代との互換性とかなんだろうか

12 :
リテラルの0と
数値の0と
アドレスの0と
ポインタのNULL
違いが分かる人は好きにすればいいんじゃない?
わからない人はきちんと使い分けましょう

13 :
>>8>>9
配列の場合
a[i]=NULL;→エラー
ポインタの場合
int *a=NULL;→不エラー

14 :
リテラルの0だけ仲間はずれ感があるけど気のせいか

15 :
C/C++の仕様を洗練した低レベルでネイティブな言語てないの?

16 :
どういうところを洗練すればいいと思うの?

17 :
ぬるぽになるのはリテラルの0に限らないぞ
計算して0になれば複数のリテラルからなる式でも構わない

18 :
>>15 D言語

19 :
D言語は魔改造を繰り返した結果、
C++より遥かに邪悪な黒魔術が使えるようになってしまった

20 :
C#によく似た文法のCトランスレーターなら名前忘れたが有ったような

21 :
CとC++を同一に考える時点でアホ

22 :
アドレスの0とポインタのNULLは普通のパソコンなら同じ意味じゃないの

23 :
うん

24 :
Cなら普通のパソコンでビット表現が0にならない事はほとんどないと思われるが、
C++ならg++だとメンバ変数ポインタのNULLはのビット表現は0じゃなく-1

25 :
むしろどういう環境だと変わってくるの?
CPUによるものなのかOSによるものなのか。
普通のパソコンでの当たり前が当たり前じゃない例を知らないから
想像しようとしてもよく分からないんだよね・・・

26 :
0番地が普通に使える環境だったらダメそう。なさそうだけど。

27 :
DOS時代は普通に使えてた気がする

28 :
Null Pointer Assignmentのメッセージを出すために使われてたね。

29 :
array[]= {15,78,98,15,98,85,17,35,42,15};
int main(void)
{
 int *p_array=array;
 int sum= 0;
 while(p_array<array+10)
  {
 sum += *p_array++ ;  
 printf("sum %d\n",sum);
  }

printf("average %d\n",sum/10);
return 0;
}
sum += *p_array++ ここが疑問です。
実際にはsumへの加算が終わってから、ポインタが移動しているようなのですが、
演算の優先順位( ++ > * > =)に従うとポインタが先に移動してから加算される気がしますが、そうなってはいません。
なぜこうなるのでしょうか。

30 :
ぬるぽが正しくつかわれているのを久々に見た

31 :
>>29
演算子の優先順位は ++ → * → += であるのは間違いない。
ここで *(p_array++) であるが、値は、副作用++が適用されるの前の値となる。
したがって ++ が先に適用されるにしても、加算に供される値は、++ 実行前のものとなる
キーワード「後置インクリメント」

32 :
>>29
++と*は同じ優先度で、右から左の結合でしょ?
つまり、* ( p_array++ )  

33 :
インクリメントを分離しろ

34 :
演算の優先順位と、インクリメントが行われるタイミングは別の問題

35 :
インクリメント使わずにa=a+1方式使えばいいだけの話じゃ……

36 :
・ポインタ演算は避けられるなら避けるべき。
・forが自然に使えるなら使うべき。
・型指定のintはunsigned intのようなケース以外は省略すべきでない。
いずれにしても、アナクロなコードだ。
それと、sumの出力はループの外ジャマイカ。

37 :
【PC遠隔操作】 「僕はC#を扱う技術がなかった。職場の社長も証言」 片山容疑者、容疑否認のメモ公開 取り調べ可視化を主張★3
http://uni.2ch.net/test/read.cgi/newsplus/1362890199/

38 :
みなさま、有難うございます
>>31>>32>>34
インクリメント演算子についてしらべたところ、
「値を1増加させるという意味は同じものの、増加させるタイミングが異なる。
後置のものは値を使った後に増加させ、前置のものは値を増加させてから使う。」
だからちゃんと1番目の数値がsumに代入されていたんですね。ちなみに>>29で前置インクリメントにしてみたら暴走しました。
逆にデクリメントするのだったら前置にしないと変な値になるんですね。
int *data = array + 10;
int sum = 0;
do {sum += * --data;
}while (data >array);
>>33
sum += * p_array++ ;は、
sum += * p_array;
p_array++;
と同じになりますね
>>35>>36
for(i=0;i<10;i=i+1) {
 sum = sum + array[i];}
普通は配列の合計値はこうして出した方が素直ですよね。(sumの出力は代入の確認で、配列のint宣言はコピーし忘れてました。)
自分は昔のCPU用のプログラムをいじってみようと思っています。
ポインタ演算は使うと速くてサイズも小さくなるそうなので、使ってみようと思います。

39 :
>ポインタ演算は使うと速くてサイズも小さくなる
残念ながら、これ自体が過去のもの。
却って素直にforと配列アクセスで書いた方がコンパイラが最適化してくれる可能性もある。

40 :
そうなんですか。ちょっとでも速く出来ればなと思ったんですけど。
やたら構造体が多くて、下手にポインタを使うと型が一致しなくなりそうなので、リスクの割りに効果がないならやめときます。

41 :
くだらない最適化より先にやる事がある

42 :
というより、最適化は最後の手段。

43 :
最適化のコツ:
 初心者は最適化などに色気を出さないこと。
 ベテランも最適化のことは忘れること。

44 :
最適化のコツ
・ポインタより配列を使う
・コンパイラの最適化オプションを吟味する
・GPGPUを検討する

45 :
最適化の骨
・三日後の自分が簡単に理解できるコードを心がける

46 :
最適化の落ち
・馬鹿の考え休むに似たり

47 :
初心者は、「最適化」と「あるべき姿のコード」の区別がつかない。
読み易いなコードを書けと言うと、シンプルなコードではなく、冗長なコードを書く傾向がある。
これは「非最適化」とされ、要するに初期悪化なので注意。

48 :
お前好みのコードになってるかそうじゃないかだけだろカスwwwww

49 :
#include <stdio.h>
int main(void) {
int a=1,b=2; /* 「a=1」、「b=2」とする。  */
if ( a = b ) puts ("YES"); /* 1=2ならYESと表示する。   */
return 0; /* 終了する。         */
}

50 :
if (a == b) だろ、ボンクラ

51 :
Cを勉強中1週間目の超ド素人です。
数値を文字列に変換し、下記のようにくっ付けるなんて関数はありますか?

"123" + "456" + "789"

123456789
こんなふうにできますか?よろしくおねがいします。

52 :
sprintf
strcat

53 :
リテラルなら並べときゃくっつくが、
まあそういうハナシじゃないよな。

54 :
例だと文字列から数値に変換したいようにも見えるが

55 :
文字列として連結した結果をさらに整数型に変換しろって問題?

56 :
すみません言葉足らずでした
整数A,B,Cを、文字列に変換し、ABCという文字列にしてから、ABCという整数に変換したいです

57 :
strtol()でも使えばええやん

58 :
>>56
整数100,200,300,....を <= 入力整数の個数は?
文字列の"100200300...."にして <= 出力
更にこれを整数100200300....にする <= 出力
こんな関数あるかと?

59 :
int abc;
char s[256];
sprintf(s, "%d%d%d", a, b, c);
abc = atoi(s);

60 :
>>59
いつものようにさりげなく嘘書くな
>int abc;
なんだよこれ

61 :
>>60
それは>>56の整数ABCを宣言したものです。何か間違いでもありますか?

62 :
C言語でDXライブラリ無しでゲーム作るとしたらどの程度のゲーム作ることできる?
普通に2Dとかのアクションゲームやらシューティングやら作れる?

63 :
>>62
SDL
OpenGL

64 :
 OpenGL+C言語+SDLで3Dに挑戦!

65 :
DXライブラリなしならDirectXを直接叩けばいいのでは

66 :
>>60
嘘つきはお前だ、同業者さん。

67 :
しかしながらDirectXは、Windowsプログラミングをある程度こなせるようになる必要があるし
さらに数多くの引数や初期化で頭がパンクして、画面に描画するのですらめんどくさいしで
ゲーム作ろうと思うと線形代数が必要になってと、ものすごく覚えることがあるし
確実に艱難辛苦が待ち受けているからな、そういう意味では2Dのゲームを作るのならDXライブラリで十分だと思う

68 :
2DならGDIとMCIしてれば十分

69 :
とりあえず「DXライブラリ」利用者は
「C言語」やら「2Dのゲーム」などのように
全角英数字を使う事への抵抗が皆無なのは分かった

70 :
>>51
× int abc;
○ int abc, a, b, c;

71 :
それだけでa,b,cは未初期のまま使われてて意味ない
/* a,b,cは以上宣言されて初期化もされている */
というコメントが入れられてたら納得できたか

72 :
>>56
文字列にする必要はあるの?
abc = ((a * 1000) + b) * 1000 + c; じゃだめ?
イマイチ何がしたいか分からない

73 :
a、b、cが3桁固定とは限らないだろ

74 :
なら調べればいい

75 :
そのうちlong int超えるケタになって
まーた動かないとか言いだすぞ

76 :
桁数調べて*10再帰

77 :
>>75
連結するからすぐにそうなるだろな
入力の整数の最大値はint指定で入力整数の個数から、桁数を計算するぐらいしないと駄目かも

78 :
スイーツ(笑)
{
while(ナタデココ)
main();
}

}

79 :
doubleの使えなさは以上
精度糞スギ

80 :
まじプロフェッショナルは多売長整数使うからヨロシク

81 :
doubleが使えないならBigDecimalを使えばいいじゃない

82 :
15桁以上の精度が必要ってどんな領域よ。
本来、多倍長整数使うべきところでで浮動小数点使ってるだけじゃないのか?

83 :
(1+√(5))^n = a[n]+b[n]√(5) としたときの整数a[n],b[n]の一般項は
a[n] = (1/2)((1+√(5))^n+(1-√(5))^n)
b[n] = (1/(2√(5)))((1+√(5))^n-(1-√(5))^n)
この値を整数演算だけでO(log n)で算出する方法があれば教えて下さい。

84 :
>>82
物理

85 :
>>84
でも、多倍長実数は使わずに妥協するんでしょ。結局必要ないじゃん。

86 :
GMP使えば計算できるんじゃないかな?
ただ難解な物理をやりたいならマセマティカ買った方がいいんでない?

87 :
>>83
a(1)=1 b(1)=1
a(2)=6 b(2)=2
a(3)=56 b(3)=24
a(4)=6016 b(4)=2688
a(5)=72318976 b(5)=32342016
符号付32bit整数だと n=6 でオーバフロー
こんだけでいいならテーブルで持てばいいけど
多倍長演算するなら桁数が n^2 オーダーで増えるから
O(log n) ってのは無理じゃね?

88 :
n^2 オーダーじゃなくて n*2 オーダーだった

89 :
O(n) で増える桁数をセットするためにはどうしても O(n) オーダーの時間がかかると思う
どう転んでも無理ぽ

90 :
>>86
いや、出来る出来ないじゃなくて性能的な問題。
規模と精度で折り合いつけると倍精度で妥協する事になるでしょ。

91 :
桁数のオーダー O(2^n) じゃね?

92 :
>>73
むしろ固定じゃないものを連結するってどういう状況なんだ

93 :
めんどくさい奴らだな
typedef char d[10000] で1万桁だ

94 :
で?

95 :
InitCommonControlsEx イニットコモンコントロールR

96 :
>>83
実はフィボナッチ数列(の亜種)じゃね?

97 :
a[n]=a[n-1]*a[n-1]+5*b[n-1]*b[n-1];
b[n]=2*a[n-1]*b[n-1];

98 :
ランダム・アクセスでの読み込みについて聞きたいです
まず、バイリファイルを作成し、それを読み込もうと思ったのですが、どうしてもできません
どこが間違ってるか教えてください。

99 :
>>98
あなたの姿勢に問題があります。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【JS,PHP,Python】スクリプト,バトルロワイヤル30【Perl,Ruby】 (1001)
C/C++の宿題片付けます 164代目 (272)
Eclipse統合M34【Java/C++/Ruby/Python/Scala】 (309)
ふらっとVisual C#,C♯,C#(初心者用) Part103 (793)
C/C++の宿題片付けます 164代目 (272)
スレ立てるまでもない質問はここで 126匹目 (367)
--log9.info------------------
ポケモンコロシアム/ポケモンXDについて語るスレ (345)
ブースターについて語るスレ (222)
【BW2】Wi-Fi大会総合スレ【PGL】 (234)
【ラブライブ!】かしこい!かわいい!エリーチカ!総合関連1772 (630)
見た目と強さがあってないポケモン (368)
【カノン?】カノン萌えスレpart6【ラティアス?】 (522)
なぜポケモンのヒロイン厨はキチガイばかりなのか (523)
プリンのスレ (669)
【3DS】スーパーポケモンスクランブル 15匹目 (238)
【HGSS】ハートゴールドソウルバー 264 (769)
【切断厨】放置厨切断厨晒しスレ96【KRD】 (388)
ポケットモンスターリバーストのミルト萌えスレ (502)
毒だよ、毒!! - どくタイプ総合スレ part36 (552)
アニメポケモン 強さ議論スレ Part12 (226)
ポケセン限定ピカチュウイエロー3DSLL 2台目 (545)
【WCS】ワールドチャンピオンシップス312【R/∞】 (402)
--log55.com------------------
【米国務省】韓国の北朝鮮制裁破りに韓国語で警告 韓国を中国並みの「制裁の抜け穴」と見なす
【国際】 韓国経済迷走 文政権支持率急落  朴斗鎮(コリア国際研究所所長) [08/05]
【朝日新聞】北朝鮮、モテモテ状態 各国から会談の申し出殺到[08/05]
【韓国】盗撮先進国の韓国では公共施設利用時に隠しカメラのチェックが欠かせない[08/03]
【話題】香山リカ「ネトウヨいろはカルタ ほしがりません人権は 東亜東亜で日が暮れる」@rkayama
【韓国】 安全点検後に火災、BMW車の信頼性に疑問の声 [08/06]
【韓国】 文大統領側近取り調べ = 世論操作疑惑で特別検 [08/06]
【米韓】 対北制裁破り:米国の制裁指定に戦々恐々の韓国企業 [08/06]