比较“if(arr< = arr1)”如何在给定程序中起作用?

时间:2015-07-01 15:27:04

标签: c pointers comparison

这种比较如何运作?

#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;
}

在这个程序中,如果条件这总是转到别的, 所以请有人帮助我在这里进行比较。

2 个答案:

答案 0 :(得分:2)

比较最终会询问两个数组arrarr1在内存中相对于彼此的位置。它询问哪个地址较低。

如果您正在尝试比较两个数组中包含的字符串值,请使用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");