Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用| |或&&;在strcmp()函数中,它是如何工作的_C - Fatal编程技术网

使用| |或&&;在strcmp()函数中,它是如何工作的

使用| |或&&;在strcmp()函数中,它是如何工作的,c,C,你好,我是C的新员工,我想知道我是否能做到: if (strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0) printf("Sexo Invalido"); 我想知道我是不是做错了,如果是的话,我该怎么做这是无效的语法 if (strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0) printf("Sexo Invalido"); 改为写是正确

你好,我是C的新员工,我想知道我是否能做到:

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");
改为写是正确的

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
的值无关,因此根本不会求值

strcmp
返回一个整数值;如果输入字符串相等,则为零,否则为非零

因此,是的,
strcmp
调用的结果可以是
&&
|
运算符的操作数:

if ( strcmp( sexo, sexom ) && strcmp( sexo, sexof ) )
  printf( "Sexo Invalido\n" );
只要确保你的括号匹配就行了


请记住,
&
强制从左向右求值,并且它会短路-如果
a
为0,则表达式
a&&b
的结果为0,而与
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;
}

正如其他人已经指出的,您有一个小的语法错误,即,您遗漏了整个逻辑表达式周围的一组
(…)

此外,您的代码很好。它说:

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;
}

你尝试时发生了什么?你没有在“strcmp”函数中使用它们。关于逻辑运算符,你的C语言书告诉了你什么?你还发现了什么?你的具体问题是什么?我们不是辅导服务。使用这些括号不应该编译。
if(strcmp(sexo,sexom)!=0&&strcmp(sexo,sexof)!=0)
您可以在任何地方阅读strcmp的工作原理,就像您尝试时所发生的那样?您不会在“strcmp”函数中使用它们。关于逻辑运算符,你的C语言书告诉了你什么?你还发现了什么?你的具体问题是什么?我们不是辅导服务。有了这些括号,这不应该编译。
if(strcmp(sexo,sexom)!=0&&strcmp(sexo,sexof)!=0)
你可以在任何地方阅读strcmp的工作原理,比如