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
相关文章推荐
- postgreSQL用C写触发器的例子中的问题
- 厦门Uber优步司机奖励政策(1月4日~1月10日)
- 浏览器端的九种缓存机制介绍
- 秒杀系统架构分析与实战(参考、转载)
- 上海Uber优步司机奖励政策(1月4日~1月10日)
- Python对文件的操作(转)
- android studio 使用xml:app命名空间代码不提示问题
- readwrite、readonly、retain、copy、assign、nonatomic的作用以及使用场景
- COM 组件设计与应用(七)——编译、注册、调用
- BIOS工程师手边事—中断
- 事件拦截
- new Exception().getStackTrace()用法
- 青岛Uber优步司机奖励政策(1月4日~1月10日)
- J2EE基础概念
- 重拾编程之路--jeetcode(java)--Remove Duplicates from Sorted List
- smbpasswd 用法
- 【ITOO 4】WCF中,分布式事务处理
- 【ITOO 4】WCF中,分布式事务处理
- Java实现Excel导入数据库
- openfire + asmack