c – 始终初始化所有变量
我正在阅读
the FreeBSD coding style并且非常喜欢它(因为我喜欢垂直紧凑的代码).但是有这个:
如果变量没有合适的初始值,那么保留它没有值更好.这样编译器可能会在未初始化的情况下读取它.我不是在谈论T * p = NULL,这是一个陷阱表示,可能(或可能不是)非常有用,而是int personal_number = 0 / *但是0是有效的个人号码!! * / 为了澄清,为了回应abasu的评论,我的例子是试图说明没有可用无效值的情况.我已经问了question并且回答说使用不可能的值来标记错误或其他条件是很棒的.但情况并非总是如此.例子很多:8位像素值,速度矢量等. 我总是可以看到“始终初始化变量”的一个有效替代方法是: //logical place for declarations T a; /*code,for example to set up the environment for evaluating a*/ a = fooForA(); /*more code*/ fooThatUsesA(a); 这样,如果忘记了初始化,就会出现警告并修复错误,删除警告. 解决方法
所有整数都是有效的个人号码吗?
如果没有,则使用无效值初始化personal_number. 如果它们是,那么即使您没有自己初始化personal_number,它仍然保留一个有效的个人号码值 – 但该值是未知的.所以无论如何将它初始化为0 – 你没有引入问题(之前的有效数字,之后的有效数字),唯一的区别是这个数字现在已为您所知. 当然,在这两种情况下,最好不要使用整数文字进行初始化,而是做类似这样的事情: enum { INVALID_PERSONAL_NUMBER = -1 } int personal_number = INVALID_PERSONAL_NUMBER; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |