[英]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.