C++ 中 各种类型数值的表示法/C++数值后缀
程序员文章站
2022-03-23 16:53:55
...
当我们在C++ 中 写一个整型数值时,编译器会自动的将其识别为 int 类型,同样的当我们写一个小数时,编译器会自动的将其识别为double 类型,但如果想指定特定类型时该怎么办呢,加表示类型的 ”后缀“
常用的类型 后缀 有
- u : 表示无符号整形(unsigned)
- l : 表示long类型或long double 类型,
- ll : 表示long long 类型
- ul:表示unsigned long 类型
- ull: 表示 unsigned long long 类型
- f :表示float 类型
这些后缀形式是C++标准所支持的,无论哪个编译器都能识别
此外 VC 在此基础上做了扩展,支持了另一种 后缀 形式
- i[n] : i8(char), i16(short), i32(int), i64(__int64)
- ui[n] : ui8(unsigned char), ui16(unsigned short), ui32(unsigned int), ui64(unsigned __int64)
我们在VS2017上做一些代码测试,看一下这些后缀的用法
#include <iostream>
#include <iomanip>
#include <typeinfo>
using namespace std;
#define fout cout << setw(20) << setiosflags(ios::left)
int main()
{
// char
auto c = 32i8;
fout << " on c = 32i8 " << typeid(c).name() << endl;
// unsigned char
auto uc = 32ui8;
fout << " uc = 32ui8 " << typeid(uc).name() << endl;
// short
auto s = 34i16;
fout << " s = 34i16 " << typeid(s).name() << endl;
// unsigned short
auto us = 34ui16;
fout << " us = 34ui16 " << typeid(us).name() << endl;
// int
auto i_1 = 36;
fout << " i_1 = 36 " << typeid(i_1).name() << endl;
auto i_2 = 36i32;
fout << " i_2 = 36i32 " << typeid(i_2).name() << endl;
// unsiged int
auto ui_1 = 36u;
fout << " ui_1 = 36u " << typeid(ui_1).name() << endl;
auto ui_2 = 36ui32;
fout << " ui_2 = 36ui32 " << typeid(ui_2).name() << endl;
// long
auto l = 38l;
fout << " l = 38l " << typeid(l).name() << endl;
// unsigned long
auto ul = 38ul;
fout << " ul = 38ul " << typeid(ul).name() << endl;
// long long
auto ll = 40ll;
fout << " ll = 40ll " << typeid(ll).name() << endl;
// unsigned long
auto ull = 40ull;
fout << " ull = 40ull " << typeid(ull).name() << endl;
// __int64
auto i64 = 42i64;
fout << " i64 = 42i64 " << typeid(i64).name() << endl;
// unsigned __int64
auto ui64 = 42ui64;
fout << " ui64 = 42ui64 " << typeid(ui64).name() << endl;
// float
auto f = 23.f; // 整数后面带点 表示其为浮点数 44. 等价于 44.0
fout << " f = 23.f " << typeid(f).name() << endl;
// double
auto d = 46.;
fout << " d = 46." << typeid(d).name() << endl;
// long double
auto ld = 48.l;
fout << " ld = 48.l " << typeid(ld).name() << endl;
system("pause");
return 0;
}
运行结果如下:
上一篇: 日本现美女机器人导游 精通中英日三国语言
下一篇: 具有人工智能的杀手机器人或在不久将来问世