In VS I am told this function “does not return a value in all control paths.” A bot told me specifically the issue is with this line: else if (letter + key <= 90). It said that if the outcome results in letter + key equally exactly 90 then a value is not returned, but I thought that was covered where ‘<=’ means ‘less than or equals.’
char rotate(char letter, int key)
{
if (isalpha(letter) == true)
{
if (letter + key > 90)
{
int overage = letter + key - 90;
letter = 64 + overage;
while (letter > 90)
{
overage = letter - 90;
letter += overage;
}
return letter;
}
else if (letter + key <= 90)
{
letter += key;
return letter;
}
}
else if (isalpha(letter) == false)
{
return letter;
}
you are missing a returning
else
block.Ah I see. I had a bad habit of using else if statements instead of else statements because I thought else if could be better in seeing the condition it’s testing for so it was clearer. I get the logic is actually different now.
https://en.wikipedia.org/wiki/Defensive_programming might be an interesting read.
you are checking the result of a method that returns a boolean (true/false) there is no reason to check for
true
,else
,FILE_NOT_FOUND
. you can also forgo equating its return value to something to get a boolean value required for the if statement since its already a boolean value.e.g.
if (isalpha(letter)) { // ... } else { // ... }