检测字符流结束

时间:2019-09-07 01:45:21

标签: c

为什么出现以下循环:

for (int i=0; string[i] != 0; i++)

通常写为:

for (int i=0; string[i] != '\0'; i++)

如果他们会评价同一件事,那么为什么有人在上面使用\0?这样做有什么好处吗?

3 个答案:

答案 0 :(得分:3)

是同一回事。没有特别的优势。 string[i] != '\0'表单强调我们正在查看字符。但是进一步简化for (int i=0; string[i]; i++)也会同样有效。

与指针相似。您可以写p != NULLp != 0,也可以只写p。第一种形式强调我们在谈论指针。但这是样式问题,而不是正确性。

答案 1 :(得分:-1)

'\0'具有ASCII值0

ASCII('\0') == 0 // same thing

修改:
哪里: ASCII():返回ASCII值的某些函数。 C没有这种功能(尽管您可以将char打印为%d以获得其ASCII值)。

答案 2 :(得分:-1)

主要区别在于类型。 0是一个整数,'\ 0'是一个字符。非常老的编译器会由于大小差异而插入转换代码,因此使用'\ 0'效率更高,但是这种情况已经很长时间了。

不过,有些人还是喜欢使用'\ 0'来使比较类型明确。