5

GNU GCC コンパイラでコード ブロックを使用しています。そして、私はこのコードを試しています

int number,temp;

printf("Enter a number :");
scanf("%d",&number);
temp = sqrt(number);
printf("\n%d",sqrt(number)); //print 987388755 -- > wrong result
printf("\n%d",temp); //print 3 -- > write result

return 0;

このコードには、入力値10の結果があります

987388755  
3

このコードで何が間違っていますか?

4

3 に答える 3

10

sqrtdouble を返します。

double sqrt(double x);

必要なもの:

printf("\n%g",sqrt(number));
于 2012-04-30T10:38:20.030 に答える
6

printf()invokesで不適切な書式指定子を使用していますUndefined Behavioursqrt()double を返しますが、使用します%d

于 2012-04-30T10:39:45.383 に答える
0

変化する:

printf("\n%d",sqrt(number));

に:

printf("\n%g",sqrt(number));

ではなくをsqrt()返すことに注意してください - 警告が有効になっている限り、コンパイラはこれについて警告するはずです。例(警告を有効にしていない場合は、それを習慣化する時が来ました)。doubleintgcc -Wall ...

于 2012-04-30T10:39:33.200 に答える