char ch和char ch = 0有什么区别?

问题描述

我正在阅读Stroustrup PPP的第10章,以及他在读取文件时使用的示例:

http://www.c-jump.com/bcc/c155c/c155Stxtbook2nd/Chapter10/chapter_10_11_2_cpp.htm

当他读取温度时,我注意到他使用了char ch1;char ch2;

但是,当他阅读月份时,我看到他char ch = 0;

我想知道,初始化char ch = 0;的目的是什么,而他在上一个函数中没有这样做呢?有什么区别吗?

解决方法

0x00\0对应的字符通常表示字符串的结尾。当您听到诸如“以空终止的字符串”之类的声音时,这就是隐含的字符。

使用strlen之类的函数扫描字符串时,这说明函数已到达末尾。

这就是说,看着您的链接,我没有看到在月份检测而不是其他功能中将其初始化为0的特殊原因。在每种情况下,似乎ch都提供了流中的值...当然,初始化变量是一件好事,但我敢说它并不总是必要的。

,

没有理由。此代码段不是编码样式的好例子。争论可以双向进行:一方面,即使您要在之后重新初始化变量,也要初始化变量,这是一个好习惯;另一方面,为什么要花(甚至减少)资源来做永远不会使用的事情呢? (尽管编译器很可能会检测到该错误,并且仍会跳过初始化)。

但是将两种方法混合在同一个文件中,除非确实是出于展示两种可能性的目的而进行的,否则只会造成混淆。