簡體   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