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表示开头位置
数据类型转换——数字(int/unsigned...)转字符串(char)
于 2024-08-08 22:00:02 首次发布