1

マクロにパラメーターを与えるときに 2 つの余分な中括弧が異なる結果になる理由はわかりません。

次のマクロを指定します。

#define   DEGREES_TO_RADIANS(degrees)  ((M_PI * degrees)/ 180)

なぜ次のコード:

NSLog(@"test 1: %f", DEGREES_TO_RADIANS(70.0));
NSLog(@"test 2: %f", DEGREES_TO_RADIANS(160.0-90.0));
NSLog(@"test 3: %f", DEGREES_TO_RADIANS((160.0-90.0)));

異なる結果があります:

2012-12-05 00:43:07.177 test[9267:11603] test 1: 1.221730
2012-12-05 00:43:07.179 test[9267:11603] test 2: 2.292527
2012-12-05 00:43:07.180 test[9267:11603] test 3: 1.221730

テスト 1 と 3 は正しいです。しかし、なぜ「テスト 2」の答えが間違っているのか、私にはわかりません。たぶん、教祖の一人がこれに光を当てることができます.

ありがとう!

4

1 に答える 1

5

なぜならM_PI * 160.0 - 90.0!=M_PI * (160.0-90.0)

これがまさに、括弧を使用してマクロを記述することが強く推奨される理由です。

#define   DEGREES_TO_RADIANS(degrees)  ((M_PI * (degrees))/ 180)
于 2012-12-04T23:53:15.130 に答える