一个程序员告诉我,如果我们不给任何变量赋值,例如 max ,它将被视为空值。
onBindViewHolder
输出:
if( position+ 1 == questionList.size()){
// you are at the last item
}
,当键入 max = 0 时,意味着在声明中将 0 分配给 max
它给出的结果相同,即空值等于 0 。 如果是,那么空值和 0
之间有什么区别答案 0 :(得分:0)
这实际上取决于您使用哪种编程语言编写代码。 例如,如果您在c / c ++中读取in的未初始化变量,则无法知道它将为您提供哪个值。 分配变量后,内存不会归零,因此,无论那里的什么位,它们都将作为该变量类型的值读取。
Game Maker自己的语言GML允许您在编译时决定是否必须将未初始化的变量默认设置为0;但是任何体面的程序员都会关闭该选项而不依赖它;我不知道会自动初始化变量值的其他语言。
我会说依靠这样的功能是不好的做法。
关于null和0之间的差异,它实际上取决于变量的基本类型。 整数只能存储整数,因此null仍可作为整数读取。
答案 1 :(得分:0)
如果您默认在自动存储中初始化基本类型对象(例如int
),则该值将为不确定。读取不确定值的行为是不确定的。
未定义的行为意味着标准不会以任何方式限制程序的行为。就C ++标准而言,可能的行为包括但不能保证:
一个程序员告诉我,如果我们不给任何变量赋值,例如max,它将被视为空值。
在C ++中,没有像 null value integer这样的东西。有一个空指针和空字符之类的东西,它们都没有直接的关系,也与未初始化的变量无关。
您的程序员正在使用令人困惑的术语,但是如果使用空值,则表示不确定值,那么它们是正确的。在那种情况下,您的问题变为不确定值和0之间的区别,答案是读取不确定值是不确定的行为(见上文)。
当类型max = 0表示在声明中将0分配给max
要学究,您有int max=0
,这不是 分配,而是初始化。
答案 2 :(得分:0)
在c ++中没有'null'值。局部基元未初始化(此时您将得到恰好在内存中的垃圾),而静态变量和全局变量则被零初始化。因此,说出int max;
,您将得到随机垃圾或为零(取决于声明的位置)。