Visual C++ 文字 0 整数
Visual C++ Literal 0 Integer
我目前将 0U 作为函数的参数,它导致 "warning C4965: implicit box of integer 0; use nullptr or explicit cast." 此警告假设我使用 0U
表示 nullptr
;但是,我试图实际使用 0U
作为无符号零值整数。我找到的所有帮助都建议如何将 0U
转换为 nullptr
但不是相反。有什么建议吗?
String::Format("{0}", 0U);
String::Format 将格式字符串(第一个参数)之后的参数作为对象类型的参数。由于 0 或 0U 都是结构,因此它们将被隐式装箱为对象类型,因为这就是参数的类型。在您的情况下,隐式装箱还不错,因为无论如何代码都必须对其进行装箱,而要明确装箱,您将需要更多代码。
你的例子有点奇怪,因为通常你会做 "0"
而不是 String::Format("{0}", 0)
。通常你有一个参数来引用和绕过你会调用 ToString
的隐式框警告(这是 String::Format 无论如何都会在内部做的事情)以避免额外的装箱。
所以下面应该给出警告,因为您将结构传递给需要对象的参数,因此结构将被隐式装箱
int x = 0;
String::Format("{0}", x);
为了摆脱隐式装箱,我通常这样做
int x = 0;
String::Format("{0}", x.ToString());
这将一个字符串传递给函数,字符串是引用类型,因此不需要装箱。在我上面给出的情况下避免隐式装箱确实有助于提高性能,因为您可以避免隐式装箱操作。
我目前将 0U 作为函数的参数,它导致 "warning C4965: implicit box of integer 0; use nullptr or explicit cast." 此警告假设我使用 0U
表示 nullptr
;但是,我试图实际使用 0U
作为无符号零值整数。我找到的所有帮助都建议如何将 0U
转换为 nullptr
但不是相反。有什么建议吗?
String::Format("{0}", 0U);
String::Format 将格式字符串(第一个参数)之后的参数作为对象类型的参数。由于 0 或 0U 都是结构,因此它们将被隐式装箱为对象类型,因为这就是参数的类型。在您的情况下,隐式装箱还不错,因为无论如何代码都必须对其进行装箱,而要明确装箱,您将需要更多代码。
你的例子有点奇怪,因为通常你会做 "0"
而不是 String::Format("{0}", 0)
。通常你有一个参数来引用和绕过你会调用 ToString
的隐式框警告(这是 String::Format 无论如何都会在内部做的事情)以避免额外的装箱。
所以下面应该给出警告,因为您将结构传递给需要对象的参数,因此结构将被隐式装箱
int x = 0;
String::Format("{0}", x);
为了摆脱隐式装箱,我通常这样做
int x = 0;
String::Format("{0}", x.ToString());
这将一个字符串传递给函数,字符串是引用类型,因此不需要装箱。在我上面给出的情况下避免隐式装箱确实有助于提高性能,因为您可以避免隐式装箱操作。