#include <stdio.h>
void main()
{
// printf的输出是发现是二进制就转换输出
{
// printf的输出是发现是二进制就转换输出
int num = -1;
printf("%d\n", num); // -1
printf("%u\n", num);
/* 首先 -1 1000 0000 0000 0000 0000 0000 0000 0001
反码1111 1111 1111 1111 1111 1111 1111 1110
补码1111 1111 1111 1111 1111 1111 1111 1111
输出,就是 4294967295*/
printf("%u\n", num);
/* 首先 -1 1000 0000 0000 0000 0000 0000 0000 0001
反码1111 1111 1111 1111 1111 1111 1111 1110
补码1111 1111 1111 1111 1111 1111 1111 1111
输出,就是 4294967295*/
int num1 = 4294967295;
printf("%d\n", num1);
/*unsigned int a = 4294967295 转成2进制就是 1111 1111 1111 1111 1111 1111 1111 1111
%d不取符号位 1000 0000 0000 0000 0000 0000 0000 0000
补码 1000 0000 0000 0000 0000 0000 0000 0001
输出就是-1*/
printf("%u\n", num1); // 4294967295
/*unsigned int a = 4294967295 转成2进制就是 1111 1111 1111 1111 1111 1111 1111 1111
%d不取符号位 1000 0000 0000 0000 0000 0000 0000 0000
补码 1000 0000 0000 0000 0000 0000 0000 0001
输出就是-1*/
printf("%u\n", num1); // 4294967295
unsigned int a = 4294967295;
printf("%d\n", a);
/*%d按照有符号来解析,和上面一样,输出的是-1*/
printf("%u\n", a); // 4294967295
printf("%d\n", a);
/*%d按照有符号来解析,和上面一样,输出的是-1*/
printf("%u\n", a); // 4294967295
unsigned int a1 = -1;
printf("%d\n", a1); // -1
printf("%u\n", a1); // 4294967295
printf("%d\n", a1); // -1
printf("%u\n", a1); // 4294967295
getchar();
}
}
// 输出的如果是双引号,需要在双引号前面加\
// 同样的,输出\ 也需要在\前加\
printf("\"");
printf("\\");
char a = '1';
printf("%d", a);对应ASCCII码值 49
printf("%d", a);对应ASCCII码值 49
printf默认是右对齐
printf("%d", 3); // 根据输出分配宽度
printf("%10d", 3); // 宽度是10
printf("%2d", 234); // 输出还是234,大于实际宽度,根据输出分配宽度
printf("%010d", 235);// 默认填充0
printf("%-d", 2); // 负号右对齐
char str[100] = "12345";
printf("%.2s", str); // 截取两个,输出结果是12