error de identificación no declarado ocurre cuando ya he declarado la variable

Recibí un error de identificación no declarado del código de seguimiento, pero claramente he declarado la variable “longitud” en ambos casos. ¿qué hice mal?

int startWordLenRec(char s[]) { if (isLetter(s) == false){ int length = 0; } else if{ int length = 1 + startWordLenRec(s+1); } return length; } 

Una statement es local al scope en el que la declara. Por lo tanto, si la declara dentro de {} , no se puede usar después del cierre } .

 int startWordLenRec(char s[]) { int length; if (isLetter(s) == false){ length = 0; } else if{ length = 1 + startWordLenRec(s+1); } return length; } 

Por supuesto, también puede return 0; directamente, sin una variable separada.

Has declarado dos variables en dos bloques diferentes, pero luego intentaste usarlas fuera de esos bloques. En su lugar, desea declarar una variable y asignarle un valor dentro de cada uno de los bloques:

 int startWordLenRec(char s[]) { int length; if (isLetter(s) == false){ length = 0; } else { length = 1 + startWordLenRec(s+1); } return length; } 

(Quité el extraño “if” de después del “else”).

Sin embargo, una expresión condicional sería más clara (IMO):

 int startWordLenRec(char s[]) { return isLetter(s) ? 1 + startWordLenRec(s+1) : 0; } 

Mueva la statement de longitud fuera de la instrucción if. La forma en que lo ha declarado actualmente deja de salir después de que se ejecute la instrucción if, por lo que la longitud de la devolución no se declara siempre

Declare la longitud fuera de las declaraciones if.

length debe declararse en la parte superior, ya que se utiliza en ambas twigs de if y outside (en la statement de devolución).

Declaró la variable “longitud” dentro de la primera y segunda instrucciones if. Por lo tanto, no es visible fuera si las declaraciones