欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ 中 各种类型数值的表示法/C++数值后缀

程序员文章站 2022-03-23 16:53:55
...

当我们在C++ 中 写一个整型数值时,编译器会自动的将其识别为 int 类型,同样的当我们写一个小数时,编译器会自动的将其识别为double 类型,但如果想指定特定类型时该怎么办呢,加表示类型的 ”后缀“

常用的类型 后缀 有

  1. u :  表示无符号整形(unsigned)
  2. l  :  表示long类型或long double 类型, 
  3. ll :  表示long long 类型
  4. ul:表示unsigned long 类型
  5. ull:  表示 unsigned long long 类型
  6. 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;
}

运行结果如下:

C++ 中 各种类型数值的表示法/C++数值后缀