这种比较如何运作?
#include <stdio.h>
#include <string.h>
int main(void) {
char arr[]="WELCOME";
char arr1[]="WELCOME";
if (arr<=arr1)
printf("equal");
else
printf("not equal");
return 0;
}
在这个程序中,如果条件这总是转到别的, 所以请有人帮助我在这里进行比较。
答案 0 :(得分:2)
比较最终会询问两个数组arr
和arr1
在内存中相对于彼此的位置。它询问哪个地址较低。
如果您正在尝试比较两个数组中包含的字符串值,请使用strcmp:
if(strcmp(arr, arr1) <= 0) ...
答案 1 :(得分:1)
据我所知,arr
或事实上任何数组变量都存储数组中第一个元素的地址。因此,当您执行arr<=arr1
时,您实际上是在比较他们的地址。这就是它的作用。
P.S。你可以打印地址,以防你想检查。如:
printf("\n%p", (void*) arr);
从程序的外观来看,似乎你想比较两个字符串。然后你必须这样做:
if(strcmp(arr,arr1)==0)
printf("Entered strings are equal.\n");
else
printf("Entered strings are not equal.\n");