有、无符号类型的计算,char值的上下限
int main()
{
char a = -1;
//10000000000000000000000000000001 ——-1的原码
//11111111111111111111111111111110 ——-1的反码
//11111111111111111111111111111111 ——-1的补码
//11111111 a
//打印的是%d 整型提升
//11111111111111111111111111111111 —— 按符号位类型提升
//char a 是有符号的
signed char b = -1;
//11111111 b
//打印的是%d 整型提升
//11111111111111111111111111111111 —— 按符号位类型提升
//signed char a 是有符号的
unsigned char c = -1;
//11111111 c
//打印的是%d 整型提升
//0000000000000000000000011111111 —— 按符号位类型提升
//unsigned char a 是无符号的 补0
char d = -128;
//10000000 00000000 00000000 10000000 ——-128 原码
//11111111 11111111 11111111 01111111 ——-128 反码
//11111111 11111111 11111111 10000000 ——-128 补码
//char 截断
printf("%u\n", d);// 值为4294967168
char e = 128;//127+1 -128 值为4294967168
//有符号的char 存的是补码 数值的范围 -128——127
printf("%u\n", e);
printf("a = %d b = %d c = %d \n", a, b, c);//-1 -1 255
int i = -20;
//10000000 00000000 00000000 00010100 —— 原码
//11111111 11111111 11111111 11101011 —— 反码
//11111111 11111111 11111111 11101100 —— 补码
unsigned int j = 10;
//00000000 00000000 00000000 00001010 —— 原 反 补码 相同
//11111111 11111111 11111111 11110110 —— i+j 补码
//11111111 11111111 11111111 11110101 —— 反码
//10000000 00000000 00000000 00001010 —— 原码 = -10
printf("%d\n",i+j);
//unsigned int k;//无符号的 k 永远是大于等于0
//for (k = 9; k >= 0; k--)
//{
// printf("u%\n", k);//死循环
//}
char arr[1000];
int l;
for (l = 0; l < 1000; l++)
{
arr[l] = -1 - l;
}
printf("%d\n", strlen(arr));//"\0"的ASCII码是0,遇到\0停止计数
//{-1,-2......-128,127,126......0}共255个元素
unsigned char m = 0;//unsigned char 无符号char 范围0-255,循环恒成立
for (m = 0; m <= 255; m++)
{
printf("hello!");
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下