您的位置:首页 > 其它

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

2016-01-10 22:51 393 查看
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: