2つの数値の逆正接を計算するプログラムを作成しています。コードを単純化するためにif:文を使用したいと思います。 ゼロを超えるゼロのatanがマイナスの無限大であるため、計算されたatanの絶対値が90より大きい場合、結果は90度に等しくなるような文を追加しました。 しかし、私のコードの出力は90ではなく-2147483648です。私のコードの問題は何ですか?どうもありがとうございました! 。C:+でif:as if文を使用する際の問題
#define _USE_MATH_DEFINES
#include <iostream>
#include <math.h>
#include <vector>
#include <stdlib.h>
using namespace std;
int main()
{
vector<int> abc(1);
int a=0,b=0;
abc[0]=abs((int)(atan((float)a/b) * 180/M_PI)) > 90 ? 90 : (int)(atan((float)a/b) * 180/M_PI);
cout<<abc[0];
return 0;
}
を使用してコンパイルすることを忘れないでください。ところで、長すぎて読めないので、あなたの指示をいくつかに分けてください。 –
値はまさに32ビット整数の最小値です。ほとんどの場合、Cスタイルの整数へのキャストに問題があります。これは、自分のコードに論理エラーがあります。 –
すべての警告とデバッグ情報でコンパイルします: 'g ++ -Wall -Wextra -g'と[GCC](http://gcc.gnu.org/)。次に**デバッガを使用してください。 –