The program compares signed and unsigned integers, which can lead to unexpected results due to type conversion.
int main() {
int signed_var = -1;
unsigned int unsigned_var = 1;
if (signed_var < unsigned_var) {
printf("signed_var is less\n");
} else {
printf("unsigned_var is less\n"); // This will execute!
}
return 0;
}
Cast variables to the same type before comparing them.
int main() {
int signed_var = -1;
unsigned int unsigned_var = 1;
if ((long long)signed_var < (long long)unsigned_var) {
printf("signed_var is less\n"); // This will execute
} else {
printf("unsigned_var is less\n");
}
return 0;
}