如题,如何区分没有初始化获得的 0 和初始化以后获得的 0 ?

1 Mithril Apr 12, 2020 全部变量都手动初始化就不需要判断了,这个完全看你们的 coding rule 。而且静态检查也能查得出来。 |
2 May725 Apr 12, 2020 写了这么多年代码,从来没考虑过这个问题,或者称之为需求。 我一般都习惯手动初始化变量,不依靠默认值。 也可以将 0 视为无效值,其他值为有效值,就不要考虑 0 的问题了 |
3 msg7086 Apr 12, 2020 via Android 无法区分。未初始化的变量含有任意数值。 |
4 ipwx Apr 12, 2020 没有办法,所以你不要这么用呗。 bool is_initialized; 或者 int *value = NULL; |
5 smdbh Apr 12, 2020 是被谁初始化的? |
6 liuzhiyong Apr 12, 2020 似乎没有办法,坐等高手出招,我是想不出。 |
7 codyfeng Apr 13, 2020 可以用 std::optional |
9 caskeep Apr 13, 2020 via iPhone 这不可能吧…… |
10 codyfeng Apr 13, 2020 话说楼主所述的“没有初始化获得的 0”在 C 语言是不存在的。没有初始化的 int 值是不可预知的。 |
11 delpo Apr 13, 2020 via Android 根据 cppreference,变量未初始化属于 ub 行为,并不能保证其值为 0 |
12 jimmyv22ex Apr 13, 2020 全局变量根据符号 map 判断是.bss 段还是.data 段,倒是可以判断出来;函数局部变量‘没有初始化获得的 0’条件不成立。 |
13 canyue7897 Apr 13, 2020 难道不是变量定义后,使用之前一定要手动初始化的嘛? |