为什么出现以下循环:
for (int i=0; string[i] != 0; i++)
通常写为:
for (int i=0; string[i] != '\0'; i++)
如果他们会评价同一件事,那么为什么有人在上面使用\0
?这样做有什么好处吗?
答案 0 :(得分:3)
是同一回事。没有特别的优势。 string[i] != '\0'
表单强调我们正在查看字符。但是进一步简化for (int i=0; string[i]; i++)
也会同样有效。
与指针相似。您可以写p != NULL
或p != 0
,也可以只写p
。第一种形式强调我们在谈论指针。但这是样式问题,而不是正确性。
答案 1 :(得分:-1)
'\0'
具有ASCII值0
。
ASCII('\0') == 0 // same thing
修改:
哪里:
ASCII():返回ASCII值的某些函数。 C没有这种功能(尽管您可以将char打印为%d以获得其ASCII值)。
答案 2 :(得分:-1)
主要区别在于类型。 0是一个整数,'\ 0'是一个字符。非常老的编译器会由于大小差异而插入转换代码,因此使用'\ 0'效率更高,但是这种情况已经很长时间了。
不过,有些人还是喜欢使用'\ 0'来使比较类型明确。