1. ホーム
  2. c

[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー

2022-01-20 05:08:29

質問

#include <stdio.h>
#include <stdlib.h>

/*
 * 
 */
int main() {

    int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
    int p = &a[1];
    int q = &a[5]; 

    printf(*(p+3));
    printf(*(q-3));
    printf(*(q-p));
    printf(*p<*q);

    return (EXIT_SUCCESS);
}

エラー: "初期化はキャストなしでポインタから整数を作る [-Wint-conversion]" と "単項の無効な型引数 '*' (have 'int') " です。最初のエラーは、上記の変数の初期化で2回表示されます。 2つ目のエラーは、各print文に対して表示されます。

何が問題なのかよくわからないのですが、どなたか修正方法をご存じですか?

解決方法は?

を作るのを忘れています。 pq int のポインタを使用します。また、フォーマット指定子を使い忘れた printf ステートメントを使用します。以下を試してみてください。

#include <stdio.h>
#include <stdlib.h>

/*
* 
*/
int main() {
  int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
  int *p = &a[1];
  int *q = &a[5];   

  printf("%d\n", *(p+3));
  printf("%d\n", *(q-3));
  printf("%d\n", *q-*p);
  printf("%d\n", *p<*q);
  return (EXIT_SUCCESS);
}