在C中,它是O.K.增加一个未初始化的int?

前端之家收集整理的这篇文章主要介绍了在C中,它是O.K.增加一个未初始化的int?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
根据 this SO answer,在C中递增未初始化的int会导致未定义的行为.但是,如果我根本不在乎初始价值呢?例如,如果我只想要递增ID怎么办?这是出于任何原因的危险或不良做法吗?

解决方法

当大多数人读到“这会导致未定义的行为”时,他们最初会将其解释为“你感兴趣的变量的价值是不确定的”.

这是错的.

文本意味着字面意思:程序本身的行为是不确定的.
如果他们想告诉你一个值是不确定的,那么他们会说这个值是不确定的.但他们没有.这些是具有不同含义的不同句子.

当行为未定义时,这意味着程序没有意义 – 例如,变量可能不再存在于您对其值进行推断的位置.
该程序甚至可能没有执行您认为的代码.它可能只是跳到其他地方,它可能会突然删除磁盘上的文件,它可以做任何事情.质疑变量的值完全没有意义.

这与您的示例一样糟糕,因为虽然您可能期望它等于i = 0,但它也会导致未定义的行为:

int i;
i -= i;

即,未定义的行为与任何特定变量的值无关.这是关于行为(动词),而不是数据(名词).

猜你在找的C&C++相关文章