数据类型转换——数字(int/unsigned...)转字符串(char)


	unsigned val0= -1;//4294967295
	int val = -15465;
	char str[12]{};//定义长度要比val数据类型大
	int len{11};//注意不能len=12,字符串最后一位要留0

//应对无符号变量负数妙计,只有val为int时bfs才可能为1触发
	bool bfs = val >= 0;					//	0|0*2-1	=-1
	val = (bfs * 2 - 1) * val;			//	1|1*2-1	=1

//用固定长度倒装的方式 str:|_____4294967295|
	do
	{
		str[--len] = val % 10 + 48;
	} while (val /= 10);

//注意len-=这个=,关系到后面len的使用
	str[len -= (1-bfs)] = '-' * (!bfs) + str[len] * bfs;
	
	//0|	1-0		1
	//1|	1-1		0
	//	0|	'-' * 1 + str[len] * 0	-
	//	1|	'-' * 0	+ str[len] * 1	str[len]
	
//输出不能直接用地址,遇0直接结束
	std::cout <<  &str[len] << std::endl;//此处len表示开头位置
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值