このコードでは、elseで実行されたコードとブロック後に実行されたコードの違いは何ですか?elseブロック内のコードの実行とその後のブロック
#include <iostream>
using namespace std;
int digits(int number, int value, int times){
int counter = times;
counter++;
int result = number/value;
value=value*10;
if (result != 0){
digits(number,value,counter);
}
return counter;
}
int main() {
int number,no_of_digit;
cout << "Enter the number : ";
cin >> number;
no_of_digit = digits(number, 10, 0);
cout << "No of digits are : " << no_of_digit << "\n";
return 0;
}
このコードは正しく動作しません。値1を与える。 しかし、もし私がreturn counter;
をelseブロックに入れると、それは動作する。なぜそうなのか?
適切なツールは、あなたのデバッガであると言うべきです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。少なくとも、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、デバッガでの観察結果を含めるように質問を編集する必要があります。 –