1

以下は私がcに入力したコードです

unsigned long long int Je=23; 
int col=2,row=2; 
void mod(unsigned long long int mat1[][col],unsigned long long int mat2[][col],int r) 
{
    int i,j;
    for(i=0;i<r;i++)
        for(j=0;j<col;j++)
        {
            mat1[i][j]=mat2[i][j]%Je;
            printf("Value mat1=%u mat2=%u Je=%u\n",mat1[i][j],mat2[i][j],Je);
        } 
}

この関数を次の行列で呼び出します

t1[2][2]={1036,1090,1526,1472};
mod(t2,t1,row);

しかし、コンソール画面では、関数定義内に含めた「printf」ステートメントに対して次の結果が得られます。

Value mat1=5 mat2=0 Je=1036
Value mat1=2 mat2=0 Je=1090
Value mat1=16 mat2=0 Je=1526
Value mat1=9 mat2=0 Je=1472

どうしてこのように値が出力されるのですか?DevCppコンパイラを使用しています。

4

1 に答える 1

1

printf ステートメントの書式指定子 "%u" が正しくありません。unsigned long long の場合、指定子は "%llu" にする必要があります

于 2012-09-16T21:30:40.827 に答える