1. ホーム
  2. c

[解決済み] バイナリ/のオペランドが無効('int *'と'int'がある)?

2022-01-30 14:19:19

質問

毎回、これを試しています。

long crypt(int *integer)
{
    printf("Enter five digit integer:\n");  
    scanf("%i",integer);
    
    int digit1=integer/10000;
    int digit2=(integer%10000)/1000;
    int digit3=(integer%1000)/100;
    int digit4=(integer%100)/10;
    int digit5=(integer%10)/1;

    const char *digit1c[10];
    const char *digit2c[10];
    const char *digit3c[10];
    const char *digit4c[10];
    const char *digit5c[10];

    /...
}

(他にもありますが、これが問題のようです。ご要望があれば残りを追加します)

を実行すると、このようなエラーが返されます。

math2.h:44:20: error: invalid operands to binary / (have ‘int *’ and ‘int’)
math2.h:45:21: error: invalid operands to binary % (have ‘int *’ and ‘int’)
math2.h:46:21: error: invalid operands to binary % (have ‘int *’ and ‘int’)
math2.h:47:21: error: invalid operands to binary % (have ‘int *’ and ‘int’)
math2.h:48:21: error: invalid operands to binary % (have ‘int *’ and ‘int’)

桁の初期化に使用した演算子が関係していることは分かっており、その演算子の型を int * が、うまくいきませんでした。 では、具体的に何が起こっているのでしょうか?

解決方法は?

integer ポインタ から int ( int* )であるため、それが指すintを使用したい場合は、それをデリファレンスする必要があります。

int digit1=(*integer)/10000; // and so on...