メインでは 0 が出力され、strcmp 関数内では 6 が出力されるのはなぜですか?
7 int main()
8 {
9 char* str = "test string";
10 char* str2 = "test strong";
11 //printf("string length = %d\n",strlen(str));
12
13 int num = strcmp(str,str2);
14
15 printf("num = %d\n",num);
16 }
29 int strcmp(char* str, char* str2)
30 {
31 if(*str == '\0' && *str2 == '\0')
32 return 0;
33 if(*str2 - *str == 0)
34 {
35 strcmp(str+1,str2+1);
36 }
37 else
38 {
39 int num = *str2 - *str;
40 cout << "num = " <<num<<endl;
41 return num;
42 }
43 }
出力は次のとおりです。
数値 = 6 数値 = 0
返すべき値が明らかに 6 であるのに、なぜ 0 を出力するのでしょうか?