合計 昨日 今日

整数型について

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: しき
[URL]
入門者(3,242 ポイント)
Date: 2017年10月11日(水) 17:36
No: 1
(OFFLINE)

 整数型について

以下のようなプログラムを組んだのですが実行時にSegmation faultと出ます。
何が原因なんでしょうか・・。よろしくお願いします。
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#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;
}

Name: lunnear
[URL]
ぴよぴよ(232 ポイント)
Date: 2017年10月11日(水) 20:00
No: 2
(OFFLINE)

 Re: 整数型について

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

Name: lunnear
[URL]
ぴよぴよ(232 ポイント)
Date: 2017年10月11日(水) 20:19
No: 3
(OFFLINE)

 Re: 整数型について

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

Name: しき
[URL]
入門者(3,242 ポイント)
Date: 2017年10月11日(水) 20:50
No: 4
(OFFLINE)

 Re: 整数型について

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


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[19人]