ページ 11

CHAR型に変換

Posted: 2011年6月16日(木) 12:20
by ares

コード:

#include <stdio.h>
#include <limits.h>

int count_bits(unsigned  x)
{
	int	count = 0;
	while(x){
		if(x&1U){
			count++;
			x >>= 1;
		}
	}
	return(count);
}

int int_bits(void)
{
	return(count_bits(~0U));
}

void print_bits(unsigned  x)
{
	int	i;
	for(i = int_bits() - 1;i >= 0;i--)
		putchar(((x >> i) & 1U) ? '1' : '0');
}

int main(void)
{
	unsigned  i;
	
	for(i = 0;i < UINT_MAX;i++){
		print_bits(i);
		printf(" %6o %5u %4X\n", i, i, i);
	}
	return(0);
}
このプログラムをCHAR型で表現できる数値を10進、2進、8進、16進で表示するプログラムに書き換えたいのですが
unsignedをcharに変えるだけではできなくて困っています。アドバイスください。

Re: CHAR型に変換

Posted: 2011年6月16日(木) 12:35
by bitter_fox
ares さんが書きました:

コード:

	for(i = 0;i < UINT_MAX;i++){
		print_bits(i);
		printf(" %6o %5u %4X\n", i, i, i);
	}
このループはiが何よりも小さい間実行されるでしょうか?それが分かればおのずと答えはわかります。(ただ他にも問題があったりもしますが・・・)

Re: CHAR型に変換

Posted: 2011年6月16日(木) 12:36
by non
>return(count_bits(~0U));

これもまずいかな。