我正在查看我的产品中的一些旧代码,我发现了以下代码。
#include <stdio.h>
#include <string.h>
int main ( int argc, char **argv) {
const char *str = "abcdefghi";
int value = strcmp(str, "abcdefghi") == 0;
}
int value = strcmp(str, "abcdefghi") == 0;
此类代码的目的是什么。
我正在查看我的产品中的一些旧代码,我发现了以下代码。
#include <stdio.h>
#include <string.h>
int main ( int argc, char **argv) {
const char *str = "abcdefghi";
int value = strcmp(str, "abcdefghi") == 0;
}
int value = strcmp(str, "abcdefghi") == 0;
此类代码的目的是什么。
它使用将是或取决于返回value
的结果进行初始化。strcmp(str, "abcdefghi") == 0
0
1
strcmp
在 C 表达式中使用关系运算符的结果是 0 或 1。
如果strcmp(str, "abcdefghi")
返回0
则将strcmp(str, "abcdefghi") == 0
返回 true 并value
分配值 1。如果返回 1 则将value
分配值 0。
int value = strcmp(str, "abcdefghi") == 0;
是这样的
int value = (strcmp(str, "abcdefghi") == 0);
现在在 () 内部 if strcmp 返回 0 then (0 == 0) 这意味着它将给出 1
if strcmp returns anything else then 0 then () will give 0