你好,所以我在新的C和我想知道如果我能做到這一點:我想知道如果我這樣做不對使用||或&&中的strcmp()函數,它是如何工作
if (strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0)
printf("Sexo Invalido");
和如果是的話我該怎麼辦
你好,所以我在新的C和我想知道如果我能做到這一點:我想知道如果我這樣做不對使用||或&&中的strcmp()函數,它是如何工作
if (strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0)
printf("Sexo Invalido");
和如果是的話我該怎麼辦
這是無效的語法。
if (strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0)
printf("Sexo Invalido");
這將是正確地寫代替
if ((strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0))
printf("Sexo Invalido");
或
if (strcmp(sexo,sexom)!= 0 && strcmp(sexo,sexof) != 0)
printf("Sexo Invalido");
strcmp
返回一個整數值;如果輸入字符串是等價的,則爲零,否則爲非零。
所以,是的,一個電話strcmp
的結果可以是&&
或||
運營商的操作數:
if (strcmp(sexo, sexom) && strcmp(sexo, sexof))
printf("Sexo Invalido\n");
只要確保你的括號匹配。
記住&&
力左到右的評價,而且它短路 - 如果a
是0,則表達式的結果a && b
是0不管b
值,所以b
不會完全評估。
正如其他人已經指出的那樣,您有一點語法錯誤,即您錯過了整個邏輯表達式的一組(...)
。
除了你的代碼是好的。它說:
If sexo is neither sexom nor sexof then print "Invalid".
這是很容易用一個小程序來測試,如:
#include<stdio.h>
#include<string.h>
int main()
{
char* sexom = "Male";
char* sexof = "Female";
char sexo[10];
strcpy(sexo, "Male");
if ((strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0))
printf("Sexo Invalido %s\n", sexo);
strcpy(sexo, "Female");
if ((strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0))
printf("Sexo Invalido %s\n", sexo);
strcpy(sexo, "Child");
if ((strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0))
printf("Sexo Invalido %s\n", sexo);
return 0;
}
,它將打印:
Sexo Invalido Child
什麼,當你嘗試過了? –
你不要在** strcmp函數中使用它們**。你的C書告訴你關於邏輯運算符的是什麼?你還發現了什麼?你的具體**問題是什麼?我們不提供輔導服務。 – Olaf
用這些括號不應該編譯。 –