숫자의 모든 숫자가 홀수인지 확인하는 함수를 작성했습니다. 나는 이상한 행동을 보았다. 두 번째 함수가 다른 (잘못된) 결과를 반환하는 이유는 무엇입니까?이상한 숫자의 모든 숫자 확인
#include <stdio.h>
int all_odd_1(int n) {
if (n == 0) return 0;
if (n < 0) n = -n;
while (n > 0) {
if (n&1 == 1)
n /= 10;
else
return 0;
}
return 1;
}
int all_odd_2(int n) {
if (n == 0) return 0;
if (n < 0) n = -n;
while (n > 0) {
if (n&1 == 0)
return 0;
else
n /= 10;
}
return 1;
}
int main() {
printf("all_odd_1\n");
printf("%d\n", all_odd_1(-131));
printf("%d\n", all_odd_1(121));
printf("%d\n", all_odd_1(2242));
printf("-----------------\n");
printf("all_odd_2\n");
printf("%d\n", all_odd_2(131));
printf("%d\n", all_odd_2(121));
printf("%d\n", all_odd_2(2242));
return 0;
}
경고를받지 못했거나 설정할 수 없습니다. 어떤 컴파일러를 사용하고 있습니까? 어떤 종류의 옵션을 사용합니까? – tryt
어떤 컴파일러 nc3b가 사용 중인지 확실히 알 수는 없지만'gcc -Wall'은 축 어적으로 경고합니다. http://gcc.gnu.org/ – msw
네, gcc를 사용합니다. OP가 자신의 컴파일러에 대해 언급하지 않았기 때문에'use gcc -Wall'을 언급하지 않았습니다. – nc3b