整数型について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
しき
記事: 34
登録日時: 6年前

整数型について

#1

投稿記事 by しき » 6年前

以下のようなプログラムを組んだのですが実行時にSegmation faultと出ます。
何が原因なんでしょうか・・。よろしくお願いします。

コード:

#include<stdio.h>

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

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');
}


unsigned set(unsigned x,int pos)
{
  return(x|(1<<pos));
}

unsigned reset(unsigned x,int pos)
{
  return(x&(~(1<<pos)));
}

unsigned inverse(unsigned x,int pos)
{
  return(x^(1<<pos));
}

int main(void)
{
  unsigned no, x;
  printf("符号なし整数のxビット目を変更します。\n");
  printf("非負の整数を入力してください:");
  scanf("%u",&no);
  printf("何ビット目を変更しますか:");
  scanf("%u",x);
  printf("\nno      :");         print_bits(no);
  printf("\nset     :");         print_bits(set(no,x));
  printf("\nreset   :");        print_bits(reset(no,x));
  printf("\ninverse :");       print_bits(inverse(no,x));
  putchar('\n');
  return 0;
}

lunnear
記事: 10
登録日時: 6年前

Re: 整数型について

#2

投稿記事 by lunnear » 6年前

unsignedという型はありません、unsignedは他の型と組み合わせて使います。
例えば unsigned int 等です。

lunnear
記事: 10
登録日時: 6年前

Re: 整数型について

#3

投稿記事 by lunnear » 6年前

すいませんunsignedだけだとunsigned intに変換されるようですね。
あとは47行目の第二引数に実体が入っています。

しき
記事: 34
登録日時: 6年前

Re: 整数型について

#4

投稿記事 by しき » 6年前

返信ありがとうございます。完全に凡ミスでした・・・。

返信

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