使用| |或&&;在strcmp()函数中,它是如何工作的
你好,我是C的新员工,我想知道我是否能做到:使用| |或&&;在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"); 改为写是正确
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的工作原理,比如