我们将传递-1作为strncmp()中第3个参数的值,即会发生什么。要比较的n个字节字节数?

时间:2015-07-31 10:28:16

标签: c cross-platform memcmp strncmp

我有三个问题,

  1. 我们将在-1作为strncmp()中的第3个参数的值传递-1,即。要比较的n个字节字节?
  2. 为什么ARM和PPC的输出不同?即。如果哪一个正确?
  3. 如果我使用memcmp而不是strncmp,我会在ARM和PPC中获得“inside else”输出。怎么样和为什么?

    char str[10];
    
    memset(str,'\0',sizeof(str));
    
    printf("str:%s ,len:%d\n\r",str,strlen(str));
    
    if(strncmp(str,"Maximum",(strlen(str)-1)) == 0)    
    {         
        printf("inside if\n\r");     
    }   
    else    
    {    
        printf("inside else\n\r");    
    }
    
  4. ppc输出

    str: ,len:0
    inside else
    

    手臂输出

    str: ,len:0
    inside if
    

1 个答案:

答案 0 :(得分:0)

  

我们将传递-1作为strncmp()

中第3个参数的值

假设第3个参数被定义为size_t,并且假设size_t被定义为unsigned整数,则传入-1将导致"环绕式"并且该函数将接收SIZE_MAX的值。在32位系统上,这可能是0xffffffff