2

f のどの値に対して、出力は「世界」になりますか?

#include<stdio.h>
int main(){
  float f= ... ;
  if(f==f)
     printf("hello\n");
  else
     printf("world\n");
 return 0;
}

3つのドットに置き換えられるもの (...)

4

4 に答える 4

4

これを試して:

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

int main(){
  float f = nanf("0.0");
  printf("%f\n", f);

  if(f==f)
     printf("hello\n");
  else
     printf("world\n");
 return 0;
}
于 2012-10-14T16:07:08.847 に答える
2

簡単。

float f = (puts("world"), exit(0), 0.0f);

編集:はい、私はあなたが別の答えを探していることを知っています。でも、宿題や持ち帰りクイズの問題のように見えて、部分的に分解されていないので、かわいくなります。

于 2012-10-14T16:00:53.813 に答える
2

IEEE 754 浮動小数点数は、正または負infinityNaN(数値ではない) を表すことができます。これら 3 つの値は、結果が定義されていないか、正確に表すことができない計算から生じます。常にNaN式を介して伝播します。つまり、 を含む式すべて評価されます。NaN NaN

意図的に浮動小数点変数を に設定することもできますNaN。たとえば、次の完全に有効な浮動小数点式はうまくいきます。

 sqrtf(-1.0f) // NaN

浮動小数点数の無限大NaNに関する詳細情報。


PS: 単純な宿題 Q のように見えるので、これを無視したくなりました。しかし、宿題タグが非推奨になり、すべて...

于 2012-10-14T16:12:31.483 に答える
0

NANからマクロを使用できますmath.h

#include <math.h>
#include <stdio.h>

int main(void)
{
  float f = NAN;
  if (f == f)
     printf("hello\n");
  else
     printf("world\n");
}

このマクロは C99 で導入されており、実装がfloat型の quiet NaN をサポートしていない場合は存在しないことに注意してください。

于 2012-10-14T16:13:34.327 に答える