首頁  >  問答  >  主體

c++ - strcmp

char a[2] = { '1','2' };
printf("%d", strcmp(a, "12"));

结果为 1

一个没有结束符,一个有结束符,为什么没有的比有的大?

迷茫迷茫2765 天前628

全部回覆(2)我來回復

  • 高洛峰

    高洛峰2017-04-17 15:05:10

    char 一般當作無符號整數,a[2]是個隨機值,只有大於0 和 等於0 兩種情況。

    多數時候,a[2]大於'

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 15:05:10

    與之前一個問題類似——那個問題,我的答案還被吃瓜群眾踩了一腳——字符串是字符串,字符數組是字符數組。 strcmp 函數需要你傳入的是字串,因為只有字串才有

    char a[] = {'1', '2', 'rrreee'};
    printf("%d", strcmp(a, "12"));

    你得到的結果其實不是 1,而是一個隨機值。因為 strcmp 函數並不知道

    的長度,它對記憶體進行了越界存取。 a

    回覆
    0
  • 取消回覆