-1

なぜ私はiの異なる値を取得しているのですか。

#include <stdio.h>
void pri(int,int);
int main()
{
    float a=3.14;
    int i=99;
    pri(a,i);
    getch();
}
void pri(int a,int i)
{
    printf("a=%f i=%d\n",a,i);
    printf("i=%d a=%f\n",i,a);
}
4

2 に答える 2

3

aintとして宣言しましたが、使用し%fているため、floatとして宣言する必要があります。

void pri(float a, int i)
{
    printf("a=%f i=%d\n", a, i);
    printf("i=%d a=%f\n", i, a);
}

タイプが正しくない場合、未定義の動作が発生します。読み取りの仕様printf(7.19.6.1段落9):

変換仕様が無効な場合、動作は定義されていません。いずれかの引数が対応する変換仕様の正しいタイプでない場合、動作は定義されていません。

強調鉱山。

ソース

于 2012-09-27T08:07:41.597 に答える