質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

1回答

3835閲覧

「identifier」を付け忘れています。の修正方法がわかりません。

maru20000707

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2020/09/13 15:49

前提・実現したいこと

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 です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

EasyIDECが使用するTiny C Compilerが、C言語の規格C99に対応していないため、

C

1 for (int i = pos; i <= pos + n - 1; i++){

のようにfor文の先頭で変数宣言する書き方ができません。

C

1 int i; 2 for (i = pos; i <= pos + n - 1; i++){

のように、変数宣言を先に行なってください。

使用するアプリとCコンパイラーが時代遅れなので、早めに他のアプリに乗り換えることをおすすめします。

投稿2020/09/13 16:13

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maru20000707

2020/09/13 16:20

早速の回答ありがとうございます! なおりました!! 他のアプリも検討します。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問