如果我定义该unsigned int类型的变量并使用其范围之外的值对其进行初始化,那么它会使用模并为自己分配一个在其范围内的值,对吧?
例如:
unsigned int a = 4294967298;
std::cout << a << std::endl;
Run Code Online (Sandbox Code Playgroud)
将打印2.
但是,如果不是这样,我写:
std::cout << 4294967298u << std::endl
Run Code Online (Sandbox Code Playgroud)
它打印4294967298而不打印2。
这是为什么?
我认为我们在这两个例子中做了几乎相同的事情。
是因为在第二个示例中,默认情况下文字不是int, butlong或其他东西,并且我们unsigned long通过添加u作为后缀将其转换为?那么,我们如何将它用作unsigned int文字呢?
我是 C++ 新手,我正在使用 C++ Primer 来学习。
long对我来说,变量具有像和long longfor这样的“子类型”是有意义的int,这样它们就可以容纳更大的值,即使它们是用不太大的值初始化的。
但我似乎无法理解为什么人们可能需要重写整数文字的默认类型,例如42使其long long代替默认类型int?这不像文字必须保存另一个值,因为它实际上是一个常量。