使用“== 0”和“IF”语句

时间:2016-11-30 10:04:56

标签: c

这两个陈述是否相同?

if (input != NULL && strcmp(input, "quit") == 0)

if (input != NULL && strcmp(input, "quit"))

4 个答案:

答案 0 :(得分:2)

没有。第一个检查strcmp的结果是否为0。

第二个检查strcmp的结果是否为真。但是true等于任何其他非null值(感谢UnholySheep告诉我,因为我忘了)并且0等于NULL。所以他们是不同的。

但这些是相同的:

if (input != NULL && strcmp(input, "quit") == 0)

if (input != NULL && !strcmp(input, "quit"))

由于!strcmp检查值是否为false。 False等于0。

答案 1 :(得分:0)

你需要写。

if(input != NULL && !strcmp(input, "quit"))

这是因为如果strcmp相等则为零,这意味着它返回" false"当他们是相同的。这就是为什么你需要逻辑而不是。

同样只是为了你的信息NULL实际上只是一个常数零,所以你也可以写。

if(input && !strcmp(input, "quit")

答案 2 :(得分:0)

在C中,if语句仅检查值是否为zero or non-zero。例如,if(3)if(-1)始终有效但if(0)无法正常工作。

同样strcmp()函数返回两个字符串之间的差异,结果可能是1,35,-27 ...根据您的输入。如果只有字符串相等,strcmp()结果为0。

所以if(input && !strcmp(input, "quit"))不是if(input && !strcmp(input, "quit") == 0)

答案 3 :(得分:0)

此函数返回以下值:

  • 如果返回值< 0然后它表示str1小于str2。

  • 如果返回值> 0然后它表示str2小于str1。

  • 如果返回值= 0则表示str1等于str2。

对于你的情况,strcmp(输入,"退出")不等于0.所以第一个语句将为false而第二个语句为true。

有关详情,请查看:link

相关问题