C---高低字节转换、printf本质、有无符号的极大极小值、_Bool

#include<stdio.h>
#include<limits.h>
void main(){
	printf("%d,%d",INT_MAX,INT_MIN);
	printf("\n%u,%u", UINT_MAX, 0);
	
	/*printf的本质为赋值是赋值的二进制数据!!!!!!!!!!!
	  不管数据是什么类型,统一按着自己的方式解析

	  1111 1111 1111 1111 1111 1111 1111 1111 -1的补码
	  1111 1111 1111 1111 1111 1111 1111 1110 -1的反码
	  1000 0000 0000 0000 0000 0000 0000 0001 -1的原码
	*/
	int x = -1;
	printf("\n%d,%u",x,x);
	/*
	数组越界,计算机就将二进制的值赋值过来
	4294967295不在int范围内,的二进制32个1
	*/
	int y = 4294967295;
	printf("\n%d,%u",y,y);

	/*高字节的类型向低字节转换,会被截取*/
	short s1 = 255;//0000 0000 1111 1111
	unsigned char ch1 = s1;//1111 1111
	printf("\n%d",ch1);

	short s2 = 256;//0000 0001 0000 0000
	unsigned char ch2 = s2;//0000 0000
	printf("\n%d", ch2);

	short s3 = 257;//0000 0001 0000 0001
	unsigned char ch3 = s3;//0000 0001
	printf("\n%d", ch3);


	//0000 1010
	char c1 = 10;
	/*
	-1原码1000 0001
	-1反码1111 1110
	-1补码1111 1111
	*/
	char c2 = -1;
	short ss1 = c1;//0000 0000 0000 1010
	/*
	-1原码1000 0000 0000 0001
	-1反码1111 1111 1111 1110
	-1补码1111 1111 1111 1111
	*/
	short ss2 = c2;
	printf("\n%d,%d",ss1,ss2);

	unsigned char cc1 = 255;//1111 1111
	unsigned int in1 = cc1;// 0000 0000 0000 0000 0000 0000 1111 1111
	int in2 = cc1;//0000 0000 0000 0000 0000 0000 1111 1111
	printf("\n%d,%u",in1,in2);
	//补码

	getchar();
}


2147483647,-2147483648
4294967295,0
-1,4294967295
-1,4294967295
255
0
1
10,-1
255,255

#include<stdio.h>
#include<limits.h>
void maind(){
	//赋值是赋值的二进制数据!!!!!!!!!!!
	//会把double类型的二进制按照整数来解析,结果为0
	printf("%d",1.0);
	//double占8个字节
	printf("\n%d",sizeof(1.0));

	//强制类型转换,得到所需类型的中间变量,原变量类型、变量值保持不变
	printf("\n%d", (int)1.0);
	printf("\n%f", (float)1);

	//实数往整数转换,会舍弃掉小数点后边的部分
	int x;
	float y;
	y = 3.6;
	x = (int)y;
	printf("\n%d,%f",x,y);

	//数据溢出,
	unsigned char ch = 255;
	printf("\n%d",ch);
	printf("\n%d",UCHAR_MAX);
	//char最大能装255,进位被舍弃,所以得到结果为1
	//1111 1111 255
	//1 0000 0000 256
	//1 0000 0001 257
	int num = 257;
	ch = num;
	printf("\nch=%d",ch);
	getchar();
}

0
8
1
1.000000
3,3.600000
255
255
ch=1

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
#include<float.h>
#include<stdbool.h>
void main(){
	int num = 65543;
	printf("%d,%x,%o",num,num,num);

	//32元素的数组
	char str[32];
	//第一个是要转换的数据,第二个是字符串,字符数组,第三个是进制
	_itoa(num,str,2);
	printf("\n%s",str);

	printf("\n%d,%d", CHAR_MIN, CHAR_MAX);
	printf("\n%u,%u", 0, UCHAR_MAX);

	printf("\n%d,%d", SHRT_MIN, SHRT_MAX);
	printf("\n%u,%u", 0, USHRT_MAX);

	printf("\n%d,%d",INT_MIN,INT_MAX);
	printf("\n%u,%u", 0, UINT_MAX);

	printf("\n%d,%d", LONG_MIN, LONG_MAX);
	printf("\n%u,%u", 0, ULONG_MAX);
	//longlong超过%d%u极限,需要%f来打印
	printf("\n%f,%f",(float)LLONG_MIN,(float)LLONG_MAX);
	printf("\n%f,%f", (float)0, (float)ULLONG_MAX);

	printf("\n%f,%f", FLT_MIN, FLT_MAX);
	printf("\n%.5f,%.5f", FLT_MIN, FLT_MAX);
	printf("\n%f,%f", DBL_MIN, DBL_MAX);


	printf("\n%d",sizeof(char));
	printf("%d", sizeof(unsigned char));

	printf("%d", sizeof(short));
	printf("%d", sizeof(unsigned short));

	printf("%d", sizeof(int));
	printf("%d", sizeof(unsigned int));

	printf("%d", sizeof(long));
	printf("%d", sizeof(unsigned long));

	printf("%d", sizeof(long long));
	printf("%d", sizeof(unsigned long long));

	printf("%d", sizeof(float));
	
	printf("%d", sizeof(double));



	_Bool bl;
	bl = true;
	printf("\nbl=%d", bl);
	printf("\nsize=%d", sizeof(bl));

	_Bool blfalse;
	blfalse = false;
	printf("\nbl=%d", blfalse);
	printf("\nsize=%d", sizeof(blfalse));

	getchar();
}

65543,10007,200007
10000000000000111
-128,127
0,255
-32768,32767
0,65535
-2147483648,2147483647
0,4294967295
-2147483648,2147483647
0,4294967295
-9223372036854775800.000000,9223372036854775800.000000
0.000000,18446744073709552000.000000
0.000000,340282346638528860000000000000000000000.000000
0.00000,340282346638528860000000000000000000000.00000
0.000000,17976931348623157000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000.0
00000
112244448848
bl=1
size=1
bl=0
size=1


你可能感兴趣的:(C---高低字节转换、printf本质、有无符号的极大极小值、_Bool)