signed int vs int - 有没有办法在C++中区分它们?

hut*_*rny 0 c++ signed templates type-traits

是否有一个模板或方法哪一个可以用声明来区分signed int,并int在下面的例子中,像

signed int foo;
int bar;
static_assert(magic_signed<decltype(foo)>::value,"signed"); //PASS
static_assert(magic_signed<decltype(bar)>::value,"not signed"); //ASSERT
Run Code Online (Sandbox Code Playgroud)

cha*_*255 5

尽管如此signed int,int我认为你可能有的意思是如何区分unsigned intint.看看std::is_signed.在c ++ 11之后它是可行的.

https://en.cppreference.com/w/cpp/types/is_signed

还有一个 std::is_unsigned

https://en.cppreference.com/w/cpp/types/is_unsigned

如果你真的真的意思是如何分辨signed int和正常int,我认为你不能因为int被隐含地理解为signed int编译器意味着它们实际上是完全相同的东西.

看看这个. int和signed int声明之间的区别