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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 15:48:19 ]
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 59
pc12.2ch.net/test/read.cgi/tech/1263014439/
★過去スレ
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++室 Ver.70【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1258873470/
とか
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 133代目
pc12.2ch.net/test/read.cgi/tech/1260532772/
★C++言語についてはなるべく聞かないでください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

72 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 10:49:37 ]
再帰を使う。

73 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:08:38 ]
>>71
#include <stdio.h>
int *next(int *is, int size, int max) {
int i;
for (i = 0; i < size; ) {
(*(is + i))++;
if (max < *(is + i)) {
(*(is + i)) = 0;
i++;
} else {
return is;
}
}
return 0;
}
int main() {
int i, nums[3] = {0}, *p;
for (p = nums; p; p = next(nums, 3, 9)) {
printf("%d %d %d\n", nums[0], nums[1], nums[2]);
}
return 0;
}
実装はヘボイが、狙いは見ての通り。
0からmaxまででint配列の要素を増やしていく。
あとは、その配列を使う。

74 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:09:23 ]
>>72
頭が固くてぱっとは見えませんが調べる方向はわかりました。
どうもありがとうございます。

75 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:13:45 ]
>>73
おおありがとうございます><

76 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:14:45 ]
for(n1=n2=n3=0;n1<n1Max;++n3,n2+=(n3>n3Max?(n3=0,1):0),n1+=(n2>n2Max?(n2=0,1):0))
/*any処理*/;

77 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:18:10 ]
常に { } で括らなくちゃいけないわけではないので

for(int n1 = 0; n1 < 10; ++n1)
for(int n2 = 0; n2 < 10; ++n2)
for(int n3 = 0; n3 < 10; ++n3)
{
 /* ある処理 */
}

とすれば深くならないぞ
for文を10個も100個も並べる面倒さは変わらないが・・・

78 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:21:00 ]
再帰って限界あるよね?
俺の記述がバグってただけかもしれないが、
八回までは正常に再帰してくれるけど、
九回からはおかしくなる、九回目の呼び出しがされなかった覚えが。
八回目までで勝手に引き返してきた覚えが。

79 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:23:16 ]
>>78
よっぽどスタックが浅いのか、あるいは局所変数がデカいのか。

80 名前:デフォルトの名無しさん [2010/02/02(火) 11:54:57 ]
>>78
それは本当に再帰の限界だったのか?
再帰に限ったことではなくループや順次でも n 回目からおかしいといバグは出るが
それだけでループが n 回までに制限されているという結論は出せないだろ



81 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 12:23:59 ]
>71
10個100個になるのは異常
深くならないように工夫する

>72
ふ〜ん、考えてみるか

>73
大域変数とプロシジャでも使うのか

>76
100個になったときを想像したら

82 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 12:50:57 ]
>>73
さらっと書いてあったので簡単かと思いきや
nextの動きを理解するのにめちゃ時間かかってしまったw
日常的に使われるテクニックなんでしょうか。

>>77
数個程度のオーダーなら一番読みやすいですね。
どうもありがとうございます。

再帰についてはこれから調べてみます。

83 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 12:54:10 ]
>>81
> 100個になったときを想像したら
プログラムで生成すればいい。コンパイラリミットとの戦いになるけど。w

84 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 13:02:35 ]
>>71
for(i=0; i<pow(10,n); i++) {
n0 = i % 10;
n1 = (i / 10) % 10;
n2 = (i / 100) % 10;
....

85 名前:73 mailto:sage [2010/02/02(火) 13:25:38 ]
>>82
日常的に使われるかどうかは分かりません。
必要に迫られてひねり出した苦肉の策です。
もとは、再帰でやっていたのですが、
再帰が深くなりすぎると失敗するみたいなので、
配列を使うことした、ということです。

86 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 14:30:19 ]
そもそもからして
int x[100];
for(x[0]=0;x[0]<3;x[0]++)
for(x[1]=0;x[1]<3;x[1]++)
for(x[2]=0;x[2]<3;x[2]++)
.....
for(x[99]=0;x[99]<3;x[99]++)
....

これが現在最速のPCですら、まともな時間で動作する
ような計算量ではない件

87 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 14:36:36 ]
3の100乗回か

88 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:36:45 ]
#include<stdio.h>
#define MAX 3

int num[MAX] = {0, 1, 2

となってるときに2をしてするなら

num[3]

だと思うのですがMAXを使って2を指定するには
どうすればいいですか

89 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:39:22 ]
num[3]は2じゃないぞ

90 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:42:03 ]
>>73
なるほどキモイね
イイ意味で



91 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:42:03 ]
MAXが3だから
num[MAX-1]にすれば、2を取り出すことは出来る

92 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:43:13 ]
> となってるときに2をしてするなら
> num[3]

うんにゃ 戻りが2を指す場所は num[2] だ。 (配列の添え字は 0 から始まるので)
int hoge[] = { 5, 4, 3 };
 hoge[0] → 5
 hoge[1] → 4
 hoge[2] → 3


> だと思うのですがMAXを使って2を指定するには
> どうすればいいですか

num[MAX-1] とでも書く

int foo[MAX] と MAX個の器を用意した場合には 0〜MAX-1 で参照するんだぜー

93 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:48:51 ]
char str[10];
str = {"234"}

っていれたあとは、str[3]〜[9]は何もはいってないですよね?
このはいってない部分を削除することできる?
容量を小さくしたいんですが、strに入れる文字列の長さが毎回違うので。

94 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:50:05 ]
静的確保してるから無理

95 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:50:24 ]
mallocについて調べると蝶最高な気分になれるぞ

96 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:52:44 ]
多少スレ違い気味で質問
str = {"234"}

この代入が可能なのは C99 から?

97 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:53:33 ]
amountという単語が有ってだな容量を表したりするんだ
maximumがゼロからカウントするかどうかに関わらず容量と

98 名前:88 mailto:sage [2010/02/02(火) 17:55:41 ]
num[MAX-1]
で動きました。ありがとうございます



99 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:00:44 ]
プログラムの設定ファイルの、読み込めなかった場合のデフォルトの値ってプログラムに埋め込んじゃうの?

100 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:01:27 ]
>>99
yes



101 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:03:25 ]
>>93
>何もはいってないですよね?
いや、何だかわからない値が入っている。

102 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:06:59 ]
>>101
str[3] は '\0' 固定じゃね?

103 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:09:38 ]
何が入るかは場所にもよるけどな。
しかし毎回変わるというのがグローバルっぽくないのだが、
容量を小さくしたい、というからにはグローバルなんだろうか。

104 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:11:19 ]
>101
記憶クラスによる

105 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:12:53 ]
malloc使って動的に確保すれば
char str[3][10];

str[0][10]〜str[2][10]に入れる文字列の長さが違ってもサイズ無駄なく格納できますか?

106 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:14:09 ]
>>105
すきまができますね。

107 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:16:25 ]
>malloc使って動的に確保すれば

から

>char str[3][10];

の類推の段階で、無駄なくつめることができていない

char* str[3]

ならそう記述する可能性は高まるけど…
ポインタと配列に関することは大丈夫か? と不安になる返答だね

108 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:18:02 ]
>>96
オレも気になる

109 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:52:07 ]
試してみた
1^Inbsp;^Inbsp;int
2^Inbsp;^Inbsp;foo(void)
3^Inbsp;^Inbsp;{
4^Inbsp;^Inbsp;^Inbsp;^Inbsp;char *foo;
5^Inbsp;^Inbsp;^Inbsp;^Inbsp;char bar[10];
6^Inbsp;^Inbsp;
7^Inbsp;^Inbsp;^Inbsp;^Inbsp;foo = (char []){"abc"};
8^Inbsp;^Inbsp;^Inbsp;^Inbsp;// 下と同じ
9^Inbsp;^Inbsp;^Inbsp;^Inbsp;// foo = (char []){'a', 'b', 'c', '\000'};
10^Inbsp;^Inbsp;
11^Inbsp;^Inbsp;^Inbsp;^Inbsp;// foo = {"abc"};
12^Inbsp;^Inbsp;^Inbsp;^Inbsp;// error : 左ブレースが異常
13^Inbsp;^Inbsp;
14^Inbsp;^Inbsp;^Inbsp;^Inbsp;foo[0] = 'q';
15^Inbsp;^Inbsp;^Inbsp;^Inbsp;// ok : 書き換え可能
16^Inbsp;^Inbsp;
17^Inbsp;^Inbsp;^Inbsp;^Inbsp;foo = (char *){"abc"};
18^Inbsp;^Inbsp;^Inbsp;^Inbsp;// foo = "abc"; と似たようなもの
19^Inbsp;^Inbsp;
20^Inbsp;^Inbsp;^Inbsp;^Inbsp;// foo = (char *){'a', 'b', 'c', '\000'};
21^Inbsp;^Inbsp;^Inbsp;^Inbsp;// warning : 初期化子が多い
22^Inbsp;^Inbsp;
23^Inbsp;^Inbsp;^Inbsp;^Inbsp;// foo[0] = 'q';
24^Inbsp;^Inbsp;^Inbsp;^Inbsp;// maybe : foo : char const *
25^Inbsp;^Inbsp;
26^Inbsp;^Inbsp;^Inbsp;^Inbsp;// bar = (char []){"abc"};
27^Inbsp;^Inbsp;^Inbsp;^Inbsp;// error : bar : char * const
28^Inbsp;^Inbsp;^Inbsp;^Inbsp;(void)bar;
29^Inbsp;^Inbsp;
30^Inbsp;^Inbsp;^Inbsp;^Inbsp;return 0;
31^Inbsp;^Inbsp;}

110 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:53:44 ]
>109 おっと、正規表現で&をエスケープしてなかった>110
1  int
2  foo(void)
3  {
4    char *foo;
5    char bar[10];
6  
7    foo = (char []){"abc"};
8    // 下と同じ
9    // foo = (char []){'a', 'b', 'c', '\000'};
10  
11    // foo = {"abc"};
12    // error : 左ブレースが異常
13  
14    foo[0] = 'q';
15    // ok : 書き換え可能
16  
17    foo = (char *){"abc"};
18    // foo = "abc"; と似たようなもの
19  
20    // foo = (char *){'a', 'b', 'c', '\000'};
21    // warning : 初期化子が多い
22  
23    // foo[0] = 'q';
24    // maybe : foo : char const *
25  
26    // bar = (char []){"abc"};
27    // error : bar : char * const
28    (void)bar;
29  
30    return 0;
31  }



111 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:56:58 ]
インデントは専ブラにやらせるのが楽

112 名前:デフォルトの名無しさん [2010/02/02(火) 23:17:10 ]
 codepad
 ttp://codepad.org/

長いソースを貼るときはここへ!


ってテンプレートに入れようぜ。

113 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:38:54 ]
お前が立てるときに足せばいいじゃないか

114 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:50:30 ]
>>109
検証下手だなぁ

115 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:34:09 ]
配列 int out[3]={1,5,3};
の配列の各要素の大小関係を比べるプログラムをfor文で作りたんですけど
どうすればいいですか?

116 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:36:39 ]
宿題は宿題スレへ

117 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:37:09 ]
>>115
バブルソートでググればおk

118 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:41:28 ]
>>116
わかりました。
宿題スレに行きます

119 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 11:56:08 ]
最近気づいたんだが、固定幅フォントより非固定幅のほうが目に優しいわ

120 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 12:31:20 ]
>>119
これ?

プログラミングはプロポーショナルフォントの方が読みやすい ?
slashdot.jp/developers/article.pl?sid=10/01/20/025204



121 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 14:21:11 ]
#defineで定義されたマクロの有効範囲は#undefされない限り翻訳単位内のみとのことですが
#define HOO foo という定義を含むファイルをincludeした場合
includeした側にもこのマクロが適用されると言うことでしょうか

122 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 14:23:36 ]
>>121
yes

そうでないと インクルードガードが効かなくなっちゃう

123 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 14:24:03 ]
そうだよ
意識しなくても標準ライブラリで#defineされたものを普通に使ってると思うけど

124 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 14:27:41 ]
逆にファイル外に伝播して欲しくない場合はundefで明示しないといけないと言うことですね

ありがとうございました

125 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:16:34 ]
二つの文字列を連結させるプログラムを書いたんですが
以下のままでは文字列終端のNULL処理がされていないと言われました
mojiC[100]の中身を初期化した時点でNULL処理できている気がするんですが

#include<stdio.h>
int main(void) {
/* 連結した文字列を格納するのに十分な長さの配列 */
char mojiC[100] ;
/* 連結元の文字列 */
char mojiB[] = "World" ;
char mojiA[] = "Hello" ;

/* 連結を行うプログラム */
int i, j;
       for(i=0;i<100;i++){ //mojiC[100]の中身を初期化
mojiC[i]=0;
}
for(i=0;mojiA[i]!=0;i++){ //mojiC[100]にmojiA[]の中身をコピー
mojiC[i]=mojiA[i];
}
for(i=0,j=0;mojiC[i]!=0;i++,j++){
}
for(i=0;mojiB[i]!=0;i++,j++){ //mojiC[100]にmojiB[]の中身をコピー
mojiC[j]=mojiB[i];
}

printf("%s\n", mojiC) ; /* HelloWorld と表示 */

return(0) ;
}



126 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:19:35 ]
100+300では駄目だろ 100個しかしてないからな

127 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:22:27 ]
memcpyつかった方が転送効率良いよ。
どんな長さでも動くようにするには、動的確保。
あと初期化する必要なし、手間がかかる。
動的確保 -> memcpyでデータ配置  -> 最後にNULL付加でよし

128 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:24:54 ]
>>125
>文字列終端のNULL処理
NULL じゃねえ、'\0' 或いは NUL。
てのは置いといて、
>できている気がするんですが
できてる。

無駄は多いけどな。
(2つ目のループは j = i; とすれば要らないだろ、とか)

129 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:26:39 ]
NULLってのとナル文字(ヌル文字?)の区別を学ぼう。
char c = '\0'がそれ。

あと、char mojiC[100] = {'\0'};こういうことをしておけば、
「mojiC[100]の中身を初期化」の部分は不要。

ただ、普通は配列を初期化なんぞしないで、
文字列をコピーした最後に'\0'をくっつけるのフツー。

130 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:27:34 ]

こんなふうだ。

mojiwa(char *p, char *a ,char *b,){
int m=strlen(a);
int n=strlen(b);
char *p = (char *)malloc(m+n);
memcpy(&p[0],a,m);
memcpy(&p[m],b,n);
p[m+n]=NULL;;
}



131 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:27:49 ]
かぶった。>>129>>125宛て。

132 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:32:38 ]
>>127
>memcpyつかった方が転送効率良いよ。
それ言うなら strcat 使え、って話に…
まあ習作なんだろうから、自分でコピーしてみるのはアリかも知れん。

133 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:34:06 ]
>>132
ですよねー

134 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:36:45 ]
>130
やべぇ、何やってんのかさっぱりわからん

135 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:37:00 ]
勉強のためなんだろうから、あえて使ってないんだろう。
最初にj=0にしておけば、mojiCへの代入はすべて
mojiC[j++]= とやれば途中のj++の部分は全部消せる。
最後にmojiC[j++]='\0';とかいれとけ

136 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:43:51 ]
strlen memcpyという関数を自作すれば見通し良い。

137 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 18:14:08 ]
同一名称、あるいは酷似した名称を使うのは
車輪の再発明で悦に入る行為かもな
内容は同じなライブリ関数を自作して使用するの
は悪いこととは限らないといった程度

138 名前:やってみた mailto:sage [2010/02/03(水) 18:16:48 ]
void *
memcopy(void *d1, const void *s1, size_t sz)
{
 char *d2 = d1;
 const char *s2 = s1;

 while (sz-- > 0)
  *d2++ = *s2++;
 return d1;
}

139 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:02:08 ]
int m=strlen(a); // 超違和感

140 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:03:45 ]
何故sprintf()を使わないのか?無意味な苦労はバグを生むだけ。



141 名前:デフォルトの名無しさん [2010/02/03(水) 19:18:46 ]
無意味な苦労でも、車輪の再発明でも、実装を知っていることは良いことだ。
日本のイット業界なんかアルゴリズム詳しく知らなくても仕事できちゃうもん。
あはは。

142 名前:推奨 mailto:sage [2010/02/03(水) 19:51:46 ]
実装など実務経験の間に自然に知って欲しかった
というのはあるかも知れないが
いつの時代でもコンスタントにそれが
出来るとは限らない
とりわけ露出狂時代にはね。

143 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:53:58 ]
>>141
だって、技術者じゃなくドカタだもん

144 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:07:14 ]
アルゴリズムってなに?

145 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:08:48 ]
>>144
Wikipedia読んで、それでもわからなかったら、丸一日考えて、
それでもわからなかったら、何がわからないのか質問しなさい。

146 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 09:22:26 ]
>>144
いーっぽすすんでまえならえ〜♪

147 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 10:37:05 ]
コンパイル環境のエンディアンを調べるれるようなマクロとかってある?
それか明示的にエンディアン指定できるpragmaとかあればいいんだけど

148 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 11:23:22 ]
こういうのか
ttp://www5d.biglobe.ne.jp/~noocyte/Programming/CMacros.html#DetermineEndian

149 名前:デフォルトの名無しさん [2010/02/04(木) 15:43:38 ]
#include <stdio.h>
/* 整数の2進表現を下位から表示 */
int main(void)
{
int n, b;
n = 0;
do {
b = n % 2;
printf("%d\n", b);
n /= 2;
} while (n > 0);
return 0;
}

このプログラムをn=0にしたときに同じ結果を得るにはどうしたらいいのですか?


150 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 15:46:26 ]
if(n==0)で0の時だけ処理分ける



151 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 15:48:50 ]
>>149
何と同じにするのか分からん

152 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 15:58:59 ]
>>149
2進数はビット演算子を使うのが常套手段じゃないのかな?

int n;
n = 15;
do {
printf("%d\n", n & 1);
} while ((n >>= 1) > 0);


153 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 16:03:20 ]
>>152 n進数への応用がきかない。

154 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 16:14:42 ]
#include <stdio.h>
int main() {
int n = 7, i;
for (i = 0; i < sizeof n * 8; i++) {
printf("%d\n", !!(n & (1 << i)));
}
return 0;
}

155 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 16:35:11 ]
そもそも>>151の言うように、どういう出力を期待してるのか
質問者は書いてみてくれないか






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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