首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符流末端检测

字符流末端检测
EN

Stack Overflow用户
提问于 2019-09-07 01:45:21
回答 3查看 62关注 0票数 2

为什么会有以下循环:

代码语言:javascript
复制
for (int i=0; string[i] != 0; i++)

通常是这样写的:

代码语言:javascript
复制
for (int i=0; string[i] != '\0'; i++)

如果他们会对同一件事进行评估,为什么会有人在上面使用\0?这样做有什么好处吗?还是同一件事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-07 01:55:53

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

它和指针类似。您可以编写p != NULLp != 0,也可以只编写p。第一种形式强调我们谈论的是指针。但这是风格的问题,不是正确性的问题。

票数 3
EN

Stack Overflow用户

发布于 2019-09-07 01:49:19

'\0'是具有ASCII值的0。所以,

代码语言:javascript
复制
ASCII('\0') == 0 // same thing

编辑:

其中: ASCII():返回ASCII值的函数。C没有这样的函数(尽管您只需将char打印为%d以获得其ASCII值)。

票数 -1
EN

Stack Overflow用户

发布于 2019-09-07 01:59:27

主要区别在于类型。0是一个int,'\0‘是一个字符。非常老的编译器会因为大小差异而插入转换代码,因此使用'\0‘更有效,但这种情况已经很久没有了。

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57830069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档