##解決したい事
C++言語で、電卓的なものを作っていました。そして、そのプログラムのコンパイル時に次に示すようなエラーが出てくるんです。一応、実行可能ファイル(.exe)は作成してくれるのですが、このエラーが気になるのです。エラーの意味を教えてください。
##コンパイラの画面
ソースコードもこの後に提示します。
「ファイル名」(90) : warning C4717: 'sqrt': すべてのコントロールのパス、関数を回帰するとラン タイム スタック オーバーフローが発生します。 「ファイル名」(136) : warning C4700: 初期化されていないローカル変数 'second' が使用されます 「ファイル名」(136) : warning C4700: 初期化されていないローカル変数 'first' が使用されます 「ファイル名」(148) : warning C4700: 初期化されていないローカル変数 'value' が使用されます
##ソースコード
コンパイルエラーの内容は前に書いてあります。
C++
1#include <iostream> 2using namespace std; 3 4double addition(double first, double second) { 5 using namespace std; 6 double ans; 7 8 cout << endl; 9 //数値を入力させる 10 cout << "A+B=Cの時、Aに当てはまる数を入力してください:"; 11 cin >> first; 12 cout << "A+B=Cの時、Bに当てはまる数を入力してください:"; 13 cin >> second; 14 15 //計算する 16 ans = first + second; 17 18 //戻り値として、ansを返す 19 return ans; 20} 21 22double subtraction(double first, double second) { 23 using namespace std; 24 double ans; 25 26 cout << endl; 27 //数値を入力させる 28 cout << "A-B=Cの時、Aに当てはまる数を入力してください:"; 29 cin >> first; 30 cout << "A-B=Cの時、Bに当てはまる数を入力してください:"; 31 cin >> second; 32 33 //計算する 34 ans = first - second; 35 36 //戻り値として、ansを返す 37 return ans; 38} 39 40double multiplication(double first, double second) { 41 using namespace std; 42 double ans; 43 44 cout << endl; 45 //数値を入力させる 46 cout << "A×B=Cの時、Aに当てはまる数を入力してください:"; 47 cin >> first; 48 cout << "A×B=Cの時、Bに当てはまる数を入力してください:"; 49 cin >> second; 50 51 //計算する 52 ans = first * second; 53 54 //戻り値として、ansを返す 55 return ans; 56} 57 58double division(double first, double second) { 59 using namespace std; 60 double ans; 61 62 cout << endl; 63 //数値を入力させる 64 cout << "A÷B=Cの時、Aに当てはまる数を入力してください:"; 65 cin >> first; 66 cout << "A÷B=Cの時、Bに当てはまる数を入力してください:"; 67 cin >> second; 68 69 //計算する 70 ans = first / second; 71 72 //戻り値として、ansを返す 73 return ans; 74} 75 76double sqrt(double value) { 77 using namespace std; 78 double ans; 79 80 cout << endl; 81 //数値の入力 82 cout << "平方根を求めたい数を入力してください:"; 83 cin >> value; 84 85 //計算 86 ans = sqrt(value); 87 88 //戻り値 89 return ans; 90} 91 92int error() { 93 using namespace std; 94 string o; //エラー終了の確認 95 96 cout << endl; 97 cout << "error!!!" << endl; 98 cout << "プログラムを終了します。何か文字を入力して、enterキーを押してください..."; 99 cin >> o; 100 101 return 1; 102} 103 104int main() { 105 string explanation; //使い方/何算か 106 double first; //一つ目の数 107 double second; //二つ目の数 108 double value; //値 109 double ans; //答え 110 string a; 111 112 cout << "Ver2.0" << endl; 113 114 cout << "このアプリの使い方を見ますか?(入力した後、enterキーを押してください)" << endl; 115 cout << "はい:a\tいいえ:b" << endl; 116 cin >> explanation; 117 118 if (explanation == "a") { 119 cout << endl; 120 cout << "計算機です。" << endl; 121 cout << "これからの質問に答えた後は、毎回enterキーを押してください。" << endl; 122 } 123 if (explanation != "a" && explanation != "b") { 124 error(); 125 126 return 0; 127 } 128 129 do { 130 cout << endl; 131 cout << "何の計算をするかを下から選んで下さい。" << endl; 132 cout << "a:足し算\tb:引き算\tc:掛け算\td:割り算\te:平方根" << endl; 133 cin >> explanation; 134 135 if (explanation == "a") { 136 ans = addition(first, second); 137 } 138 else if (explanation == "b") { 139 ans = subtraction(first, second); 140 } 141 else if (explanation == "c") { 142 ans = multiplication(first, second); 143 } 144 else if (explanation == "d") { 145 ans = division(first, second); 146 } 147 else if (explanation == "e") { 148 ans = sqrt(value); 149 } 150 else { 151 error(); 152 return 0; 153 } 154 155 //計算結果を表示させる 156 cout << ans << endl; 157 158 //まだ計算しますか? 159 cout << endl; 160 cout << "まだ計算しますか?(はい:a\tいいえ:[a]以外の文字):"; 161 cin >> a; 162 } while (a == "a"); 163 164return 0; 165}
##利用環境
コンパイラ:visual studio 2019 (コニュニティ)に付属しているもの
##最後に
質問等あれば、なんでも聞いてください。
初心者ですので、出来るだけ分かりやすく回答していただけると助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。