応用プログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
rayor

応用プログラム

#1

投稿記事 by rayor » 12年前

いつもお世話になっています。マルチポストのため、以下の質問をご参照ください。

http://detail.chiebukuro.yahoo.co.jp/qa ... 1379526178

表と図も含まれているので、打ち込むのは難しいと思います。御了承ください。

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: 応用プログラム

#2

投稿記事 by beatle » 12年前

マルチポストする場合は相互リンクしなければいけません.
知恵袋からこちらへのリンクが見当たりません.

rayor

Re: 応用プログラム

#3

投稿記事 by rayor » 12年前

beatle さんが書きました:マルチポストする場合は相互リンクしなければいけません.
知恵袋からこちらへのリンクが見当たりません.
ご回答ありがとうございます。失礼しました。今追加しましたのでよろしくお願いいたします。

アバター
bitter_fox
記事: 607
登録日時: 13年前
住所: 大阪府

Re: 応用プログラム

#4

投稿記事 by bitter_fox » 12年前

rayor さんが書きました:いつもお世話になっています。マルチポストのため、以下の質問をご参照ください。

http://detail.chiebukuro.yahoo.co.jp/qa ... 1379526178

表と図も含まれているので、打ち込むのは難しいと思います。御了承ください。
返答の前に質問形式についてですが、今回のケースにおいて問題文から回答まで必要とは思えません。

コード:

	1 << (4 - i);
	printf("[%c]%05d; %-20s %2d", 
		pNenga->dflg == 1 ? 'x' : ' ',
		pNenga->no,
		pNenga->name,
		result);
この様なプログラムがあったのですが、
1 << (4 - i)
"[%c]%05d; %-20s %2d"
の二つはどのような意味があるのでしょう?
上の様に要約すれば十分ではないでしょうか?

まず1 << 4 - iですが、これは2の(4-i)乗を意味するイディオムです。
<<はシフト演算子と言いn << mと書くとnのビット列を左にm個ずらします。
例えば、10 << 3だと
10のビット列が[0000 1010]でこれを左に3個ずらすと[0101 0000]となり、これは10進数では80となります。

1 << nだと
1のビット列[1]を左にn個ずらすので[10...0]と0がn個続きます。
1がn+1ビット目にあるとき10進数では2^nと表されるので1 << nは2^nとなります。
オフトピック
一般にn << mはn * 2^mとなります。
http://www1.cts.ne.jp/~clab/hsample/Bit/Bit1.html

次に"[%c]%05d; %-20s %2d"についてです。
これはフォーマット指定子と呼ばれるものです。
http://www.k-cube.co.jp/wakaba/server/format.html

コード:

pNenga->dflg = 1
pNenga->no = 123
pNenga->name = "namename"
result = 5
の時、質問のprintfが実行されると次のように表示されます。

コード:

[1]12345; 12345678901234567890 12
[x]00123; namename              5
なお、一行目は補助線なので実際に表示されるのは二行目だけです。

閉鎖

“C言語何でも質問掲示板” へ戻る