根据
this SO answer,在C中递增未初始化的int会导致未定义的行为.但是,如果我根本不在乎初始价值呢?例如,如果我只想要递增ID怎么办?这是出于任何原因的危险或不良做法吗?
解决方法
当大多数人读到“这会导致未定义的行为”时,他们最初会将其解释为“你感兴趣的变量的价值是不确定的”.
这是错的.
文本意味着字面意思:程序本身的行为是不确定的.
如果他们想告诉你一个值是不确定的,那么他们会说这个值是不确定的.但他们没有.这些是具有不同含义的不同句子.
当行为未定义时,这意味着程序没有意义 – 例如,变量可能不再存在于您对其值进行推断的位置.
该程序甚至可能没有执行您认为的代码.它可能只是跳到其他地方,它可能会突然删除磁盘上的文件,它可以做任何事情.质疑变量的值完全没有意义.
这与您的示例一样糟糕,因为虽然您可能期望它等于i = 0,但它也会导致未定义的行为:
int i; i -= i;
即,未定义的行为与任何特定变量的值无关.这是关于行为(动词),而不是数据(名词).