好了,我有以下功能:函數== 0的返回值?
int functionX()
{
return strcmp(array1,array2)==0;
}
爲什麼會有人這樣做? == 0會暗示此函數將始終返回FALSE。這是真的還是我錯過了一些奇特的C語法引擎?
好了,我有以下功能:函數== 0的返回值?
int functionX()
{
return strcmp(array1,array2)==0;
}
爲什麼會有人這樣做? == 0會暗示此函數將始終返回FALSE。這是真的還是我錯過了一些奇特的C語法引擎?
該構建體進行比較的strcmp
與0的結果,並返回的比較
(strcmp(array1, array2) == 0)
結果是評估strcmp()
,其可以返回一個負,正,或零數的表達式。當兩個字符串相同時,strcmp()
返回0
。
== 0
正在比較strcmp()
與0
的返回值。在兩個字符串相同的情況下,如果需要functionX()
以返回「true」(非零)值,則可以使用此值。具體而言,strcmp(array1,array2)==0
將在這種情況下返回1
,否則返回0
。
有關strcmp()
的更多信息,請查看其man page。
strcmp()
如果兩個參數比較相等,則返回0。在你的例子中,functionX()
返回「true」iff array1
和array2
比較相等。
strcmp()
返回一個整數,如果兩個字符串是等價的,則爲0,否則爲非零。
該函數只是「反轉」結果,意思是說,如果結果爲0,則返回1,如果結果爲非零,則返回0。在C中,任何不是0的東西都被認爲是「真的」,因爲沒有真正的布爾類型(除了C99)。
@OliCharlesworth固定 – fge 2011-12-23 15:35:38
這裏沒有任何異國情調......您將返回表達式strcmp(array1, array2)==0
的結果,它將strcmp
的結果與0進行比較,如果它們相等則返回1,如果它們不同則返回0。
總而言之,如果strcmp
的結果爲0(即,如果兩個比較的字符串相等),則functionX
將返回1,否則爲0。
與零相比,與否定布爾表達式相同,因爲在C中使用整數作爲布爾值。所以
return strcmp(array1,array2)==0;
比
return !strcmp(array1,array2) ;
一樣的STRCMP只返回零,如果兩個字符串相等,那麼如果字符串相等,則表達式將返回true。
問題是什麼? 如果strcmp返回0,則表示字符串相等。 否則,根據結果的符號(負值或正值結果),另一個值大於另一值。 – Rolice 2011-12-23 15:23:51
您返回評估結果「strcmp(array1,array2)== 0」。如果strcmp(array1,array2)確實等於0,那麼您將返回true,否則返回false。它不比「return 1 == 1」更具異國情調,除了該例子顯然總是返回true。 – 2011-12-23 15:26:05