2016-11-28 15 views
0

你好,所以我在新的C和我想知道如果我能做到這一點:我想知道如果我這樣做不對使用||或&&中的strcmp()函數,它是如何工作

if (strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0) 
    printf("Sexo Invalido"); 

和如果是的話我該怎麼辦

+2

什麼,當你嘗試過了? –

+0

你不要在** strcmp函數中使用它們**。你的C書告訴你關於邏輯運算符的是什麼?你還發現了什麼?你的具體**問題是什麼?我們不提供輔導服務。 – Olaf

+3

用這些括號不應該編譯。 –

回答

3

這是無效的語法。

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"); 
1

strcmp返回一個整數值;如果輸入字符串是等價的,則爲零,否則爲非零。

所以,是的,一個電話strcmp結果可以是&&||運營商的操作數:

if (strcmp(sexo, sexom) && strcmp(sexo, sexof)) 
    printf("Sexo Invalido\n"); 

只要確保你的括號匹配。

記住&&力左到右的評價,而且它短路 - 如果a是0,則表達式的結果a && b是0不管b值,所以b不會完全評估。

0

正如其他人已經指出的那樣,您有一點語法錯誤,即您錯過了整個邏輯表達式的一組(...)

除了你的代碼是好的。它說:

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 
相關問題