所以,我只是在练习 C 语言(我是初学者),但我现在陷入了这个程序:
#include <stdio.h>
#include <string.h>
int main(){
int numbers[12] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37};
int i;
int *point;
point = numbers;
while(i){
printf("Write number in ranging 1 - 40: \n");
scanf("%d", &numbers);
if (numbers, point){
printf("Your number is prime number.\n");
}
else if ((numbers <= 0) || (numbers >= 41)){
printf("Only numbers: 1 - 40.\n");
}
else{
printf("Try again.\n");
}
i;
}
return 0;
}
当我想编译它时,我只是收到此错误消息:
test.c: In function ‘main’:
test.c:19:38: warning: comparison between pointer and integer [enabled by default]
我查看了 Stack Overflow,但没有找到类似的主题,对我没有帮助。
最佳答案
即使您是初学者,您仍然应该努力告诉我们哪些行给您带来了错误,因为准确说出第 19 号行并不容易。
我认为这条线给你带来了麻烦。
if (numbers, point){ // bad
您可能想调用一些需要 numbers
的函数和point
作为一个论点。现在,这个 if 语句将始终评估为 true,因为您使用的是逗号运算符,它只使用其右侧的值,该值恰好是一个非空指针 ( point
)。怎么样:
if is_a_prime(numbers, point)
继续,实际导致错误的行很可能是这一行:
else if ((numbers <= 0) || (numbers >= 41)){ // bad
自 numbers
是一个数组,写numbers <= 0
没有多大意义。也许你想写 numbers[0] <= 0
,或*point <= 0
,或者您可能想使用 for
循环迭代数组中的每个数字以确保它是正数。
此外,(感谢 isedev 看到这一点),你从未设置 i
在访问它之前将其设置为任何值,因此您的程序将具有未定义的行为。尝试写类似 i = 1;
的内容靠近顶部。
关于c - 警告 : comparison between pointer and integer [enabled by default],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26145691/