为什么会有以下循环:
for (int i=0; string[i] != 0; i++)通常是这样写的:
for (int i=0; string[i] != '\0'; i++)如果他们会对同一件事进行评估,为什么会有人在上面使用\0?这样做有什么好处吗?还是同一件事?
发布于 2019-09-07 01:55:53
这也是一回事。没有什么特别的优势。string[i] != '\0'表单强调我们看到的是字符。但是进一步简化for (int i=0; string[i]; i++)也同样有效。
它和指针类似。您可以编写p != NULL或p != 0,也可以只编写p。第一种形式强调我们谈论的是指针。但这是风格的问题,不是正确性的问题。
发布于 2019-09-07 01:49:19
'\0'是具有ASCII值的0。所以,
ASCII('\0') == 0 // same thing编辑:
其中: ASCII():返回ASCII值的函数。C没有这样的函数(尽管您只需将char打印为%d以获得其ASCII值)。
发布于 2019-09-07 01:59:27
主要区别在于类型。0是一个int,'\0‘是一个字符。非常老的编译器会因为大小差异而插入转换代码,因此使用'\0‘更有效,但这种情况已经很久没有了。
不过,有些人更喜欢使用'\0‘来明确比较的类型。
https://stackoverflow.com/questions/57830069
复制相似问题