作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望它生成一个 if
语句来检查 name
和 familyname
变量。
我希望我的声明是这样的:
if(strcmp(name && family name , "first" /* how can i do here??? */ ) == 0){}
我当前的代码如下所示:
if (strcmp(name , "MyName" ) == 0 ){
if (strcmp(familyname,"Myfamilyname") == 0){
printf("Name:%s %s is Verified!\n", name , familyname);
}
}
最佳答案
您可以使用&&
运算符:
if(!strcmp(name, "MyName") && !strcmp(family_name, "MyFamilyName")) {
// do your stuff
}
C 的逻辑运算符( &&
和 ||
)支持短路。这意味着一旦表达式的值已知,就不会计算其其余部分。例如,如果第一个 strcmp
计算结果为非零(第一个名称不匹配),第二次比较根本不会进行,因为此时表达式无法为真。这可以用来检查 NULL
的情况。 ,例如:if(name != NULL && !strcmp(name, "blah")) ...
!
运算符是逻辑非,它将任何非零值转换为零,并将任何零转换为一。 (这与二进制不同,不是 ~
,它单独翻转所有位: !5 == 0
,而是 ~5 == -6
)。 !strcmp(...)
因此是 strcmp(...) == 0
的简写.
!A && !B
形式的任何逻辑表达式可以重铸为!(A || B)
。这是 De Morgan's Laws 的一个具体示例,这通常会让你的代码阅读更容易。鉴于此,您的if
语句可以重写为
if(!(strcmp(name, "MyName") || strcmp(family_name, "MyFamilyName"))) {
// do your stuff
}
这就是 @Boiethios 编写的方式。
关于c - 如何将多个if语句合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41243253/
我是一名优秀的程序员,十分优秀!