簡體   English   中英

有人可以解釋這個簡單的C字符比較功能如何工作嗎?

[英]Can someone explain how this simple C character comparison function works?

我是C編程語言的新手。 我很困惑為什么函數將指針作為參數? 根據我的理解,該函數似乎返回2個字符的字符值之差,這是正確的嗎?

繼承函數:

int charcomp(char *x, char *y) { return *x - *y; }

在此先感謝您的幫助!

這將比較兩個C字符串的第一個字符(指針到字符)。 如果字符相同,則將返回0 ,否則將返回非零。 可以將其用作布爾比較器,如下所示:

if (charcomp("alice", "aarvark"))
    print("they start with different letters")
else
    printf("they start with the same letter");

有一個C庫習慣用法,“通用”比較函數將兩個指向對象的指針進行比較並返回一個int結果,該結果指示以下內容:

  • 否定結果表示第一個對象小於第二個對象
  • 零結果表示兩個對象相等
  • 正結果表示第一個對象大於第二個對象

由於負值和正值不必一定是特定值(雖然通常使用-1和1),所以使用減法生成用於數字比較的結果也是常見的習慣用法。 這就是這里發生的事情。

但是,請注意,在可能發生溢出的某些情況下,減去兩個int值可能導致未定義的行為(但是,在減去char類型時通常不會出現這種情況)。 一個簡單的if / else測試集可以用來避免溢出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM