我们将 -1 作为 strncmp() 中的第三个参数的值传递会发生什么,即。 n number bytes 要比较的字节数?
What will happen we pass -1 as value for 3rd parameter in strncmp() ie. n number bytes of bytes to compare?
我有三个问题,
- 我们将 -1 作为 strncmp() 中的第三个参数的值传递会发生什么,即。 n number bytes 要比较的字节数?
- 为什么 ARM 和 PPC 的输出不同? IE。如果哪一个正确?
如果我使用 memcmp 而不是 strncmp,我将在 ARM 和 PPC 中得到 "inside else" 输出。如何以及为什么?
char str[10];
memset(str,'[=10=]',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
What will happen we pass -1 as value for 3rd parameter in strncmp()
假设第三个参数被定义为 size_t
并且进一步假设 size_t
被定义为 unsigned
整数,传入 -1
将导致 "wrap-around" 并且该函数将接收 SIZE_MAX
的值。在 32 位系统上,这可能是 0xffffffff
。
我有三个问题,
- 我们将 -1 作为 strncmp() 中的第三个参数的值传递会发生什么,即。 n number bytes 要比较的字节数?
- 为什么 ARM 和 PPC 的输出不同? IE。如果哪一个正确?
如果我使用 memcmp 而不是 strncmp,我将在 ARM 和 PPC 中得到 "inside else" 输出。如何以及为什么?
char str[10]; memset(str,'[=10=]',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
What will happen we pass -1 as value for 3rd parameter in strncmp()
假设第三个参数被定义为 size_t
并且进一步假设 size_t
被定义为 unsigned
整数,传入 -1
将导致 "wrap-around" 并且该函数将接收 SIZE_MAX
的值。在 32 位系统上,这可能是 0xffffffff
。