0

我有三个问题,

  1. 我们将 -1 作为 strncmp() 中第三个参数的值传递,即。n 要比较的字节数?
  2. 为什么ARM和PPC的输出不同?IE。如果哪一个正确?
  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");    
    }
    

以 ppc 输出

str: ,len:0
inside else

手臂输出

str: ,len:0
inside if
4

1 回答 1

0

我们将 -1 作为 strncmp() 中第三个参数的值传递会发生什么

假设第三个参数被定义为存在size_t并且进一步假设size_t被定义为unsigned整数,传入-1将导致“环绕”并且函数将接收 的值SIZE_MAX。在 32 位系统上,这可能是0xffffffff.

于 2015-07-31T11:07:36.270 回答