#include <stdio.h>
int main() {
char array[2][2] = {"-", " "};
printf("%s", array[0]);
if(array[0] == "-"){
printf("Its a minus/n");
}
else{
printf("\nNothing");
}
return 0;
}
每次我運行代碼時,只有 else 會被執行。我已經明確提到,如果陣列的第 0 個索引等于字串減號,則列印其減號。
我已經宣告了char array[2][2]字符陣列。無論限制為 2 個元素,只在其中存盤一個元素。我打電話array[0]是因為我只想要第一個字符。
if(array[0] == "-"){
printf("Its a minus/n");
}
else{
printf("\nNothing");
}
有沒有人有解決方案?
uj5u.com熱心網友回復:
== 不比較字串。
使用strcmp了點。
if(!strcmp(array[0], "-")
{
/* ... */
}
uj5u.com熱心網友回復:
在if陳述句的運算式中
if(array[0] == "-"){
這兩個字符陣列,array[0]和"-"(字串文字在內部表示為字符陣列;例如,字串文字"-"像兩個元素的陣列一樣存盤{ '-', '\0' })被隱式轉換為指向它們的第一個元素的指標,并比較這些指標。
事實上你有
if ( &array[0][0] == &"-"[0]){
由于陣列占用不同程度的記憶體,因此運算式將始終評估為邏輯假。
就算你會寫
if ( "-" == "-" )
然后運算式可以計算為邏輯真或假,這取決于編譯器如何存盤相同的字串文字,作為一個字串文字或兩個字串文字(字符陣列)。
要比較存盤在陣列中的字串,您需要使用標strcmp頭中宣告的標準字串函式<string.h>,例如
#include <string.h>
//...
if ( strcmp( array[0], "-" ) == 0 )
{
//...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/359729.html
