C++ 判断int是否在C++;?
我通常想判断是否分配了C++ 判断int是否在C++;?,c++,c++11,C++,C++11,我通常想判断是否分配了int 示例代码如下: int a; // some pre-codes... if (a is not assgined) ... not assigned operation else ... assigned operation // I tried to do that with code below: if (a == NULL) ... not assigned operation else ... assigned operation 问题是,如果在预编码
int
示例代码如下:
int a;
// some pre-codes...
if (a is not assgined) ... not assigned operation
else ... assigned operation
// I tried to do that with code below:
if (a == NULL) ... not assigned operation
else ... assigned operation
问题是,如果在预编码中分配了a
,0
,则仍然执行未分配的操作
目前,我必须设置bool
的额外assigned_标志
,以检查a
是否已分配
还有更优雅的方法吗?
a
是一个int
,只能存储整数。您可能需要一个额外的变量来跟踪它是否被显式赋值,需要保留一个您永远不允许有效赋值的前哨值(例如INT\u MAX
,INT\u MIN
),或者需要将INT
包装在一个对象中(例如std::optional
)它可以跟踪您(通过在内部维护一个额外的标志)。a
是一个int
,只能存储整数。您可能需要一个额外的变量来跟踪它是否被显式赋值,需要保留一个您永远不允许有效赋值的前哨值(例如INT\u MAX
,INT\u MIN
),或者需要将INT
包装在一个对象中(例如std::optional
)它可以跟踪您(通过在内部维护一个额外的标志)。该语言不提供哨兵值来指示是否已将int
分配给
你可以选择这样做。例如,如果您非常确定变量在正常执行时不会被指定这样的值,那么可以使用INT_MAX作为哨兵值
如果您可以选择使用C++17,则可以使用
您可以使用std::pair
作为std::optional
的穷人版本,但需要了解的是,当pair的第二个未赋值时,pair的第一个将初始化为false
。在将值分配给该对的第二个
时,您必须将第一个
更改为真
,并且永远不要将其更改回原来的值
std::pair <bool, int> a{false};
// some pre-codes...
if (a.first == false )
{
... not assigned operation
}
else
{
... assigned operation
}
std::对a{false};
//一些预编码。。。
如果(a.first==false)
{
…未分配操作
}
其他的
{
…分配的操作
}
该语言不提供哨兵值来指示是否已将int
分配给
你可以选择这样做。例如,如果您非常确定变量在正常执行时不会被指定这样的值,那么可以使用INT_MAX作为哨兵值
如果您可以选择使用C++17,则可以使用
您可以使用std::pair
作为std::optional
的穷人版本,但需要了解的是,当pair的第二个未赋值时,pair的第一个将初始化为false
。在将值分配给该对的第二个
时,您必须将第一个
更改为真
,并且永远不要将其更改回原来的值
std::pair <bool, int> a{false};
// some pre-codes...
if (a.first == false )
{
... not assigned operation
}
else
{
... assigned operation
}
std::对a{false};
//一些预编码。。。
如果(a.first==false)
{
…未分配操作
}
其他的
{
…分配的操作
}
没有检查int
变量是否已初始化或赋值的内置函数。在使用变量之前,您有责任跟踪并初始化变量。编译器可能会也可能不会警告您此类可能性。没有内置函数检查int
变量是否已初始化或赋值。在使用变量之前,您有责任跟踪并初始化变量。编译器可能会也可能不会警告您此类可能性。不要在不知道变量是否有值的情况下编写代码。尽可能在第一次使用时声明变量。初始化它们。如果你真的需要,我建议你这样做。如果你不初始化它,它有一个“空”状态,你可以检查它。非常肯定,这是一个错误。你最终想要完成什么?你能展示突出显示的真实代码吗?为什么你认为这是必要的?不要在不知道变量是否有值的地方编写代码。尽可能在第一次使用时声明变量。初始化它们。如果你真的需要,我建议你这样做。如果你不初始化它,它有一个“空”状态,你可以检查它。非常肯定,这是一个错误。你最终想要完成什么?你能展示突出显示的真实代码吗?为什么你认为这是必要的?std::pair
是一个很好的解决方案,如果你没有访问真实的可选的
。但是我建议将int
放在第一位,将bool
放在第二位,以便与标准库保持一致(例如参见std::map::insert()如果您无法访问真正的可选,则std::pair
是一个很好的解决方案。但我建议将int
放在第一位,将bool
放在第二位,以便与标准库保持一致(例如,请参见std::map::insert()
)。