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

当我们在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;
}

运行结果如下:

运行结果

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值