前提・実現したいこと
C言語でビット表示した整数のあるビット目を1,0にする,または反転させるというプログラムを書いているのですが,コンパイルエラーが出てきてなおしかたがわかりません
発生している問題・エラーメッセージ
「25行目」で記述エラーを発見しました。 「identifier」を付け忘れています。
該当のソースコード
C
1#include <stdio.h> 2 3void printbits(unsigned x){ 4 int i; 5 6 for (i = (8 * sizeof(unsigned)) - 1; i >= 0; i--){ 7 if ((x >> i) & 1){ 8 putchar('1'); 9 } 10 else{ 11 putchar('0'); 12 } 13 } 14} 15 16unsigned lrotate(unsigned x, int n){ 17 18 int bits = (8 * sizeof(unsigned)); 19 20 return (n ? (x << n ) | (x >> (bits - n)) : x); 21} 22 23unsigned set_n(unsigned x, int pos, int n){ 24 25 for (int i = pos; i <= pos + n - 1; i++){ 26 x = (x | lrotate(1U, i)); 27 } 28 return x; 29} 30 31unsigned reset_n(unsigned x, int pos, int n){ 32 33 for (int i = pos; i <= pos + n - 1; i++){ 34 x = (x &~ lrotate(1U, i)); 35 } 36 return x; 37} 38 39unsigned inverse_n(unsigned x, int pos, int n){ 40 41 for (int i = pos; i <= pos + n - 1; i++){ 42 x = (x ^ lrotate(1U, i)); 43 } 44 return x; 45} 46 47int main(){ 48 49 unsigned x; 50 int pos, n; 51 52 printf("整数を入力してください : "); scanf("%u", &x); 53 printf("何ビット目を変更しますか? : "); scanf("%d", &pos); 54 printf("そこから何ビット変更しますか : "); scanf("%d", &n); 55 56 printf("元の数 : "); printbits(x); putchar('\n'); 57 printf("%dビット目~%dビット目を1にした数", pos, pos + n - 1);printbits(set_n(x, pos, n));putchar('\n'); 58 printf("%dビット目~%dビット目を0にした数", pos, pos + n - 1);printbits(reset_n(x, pos, n));putchar('\n'); 59 printf("%dビット目~%dビット目を反転した数", pos, pos + n - 1);printbits(inverse_n(x, pos, n));putchar('\n'); 60 61 return 0; 62}
試したこと
同じような質問への回答を見て<=の間にスペースがないか確認し改めて書き直したりしましたが治りませんでした.
補足情報(FW/ツールのバージョンなど)
使用しているのは, EasyIDEC Ver. 0.0.6.0 です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/13 16:20