繁体   English   中英

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

[英]What will happen we pass -1 as value for 3rd parameter in strncmp() ie. n number bytes of bytes to compare?

我有三个问题,

  1. 将会发生什么,我们将-1作为strncmp()中第3个参数的值传递。 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"); } 

以ppc输出

str: ,len:0
inside else

手臂输出

str: ,len:0
inside if

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM