笔记——打印变量取值范围的两种方法
2015-06-17 09:30
393 查看
1、打印标准头文件中的相应值
2、利用按位运算符进行直接计算
(char)((unsigned char) ~0 >> 1)的说明:
先把0的各二进制位转换为1 --> ~0
将结果值转换为unsigned char类型 --> (unsigned char) ~0
右移一位清除符号位 --> (unsigned char) ~0 >> 1
转换为char类型 --> (char)((unsigned char) ~0 >> 1)
得到了signed char类型字符的最大值
问题:如此计算signed char最小值为-127,应该为-128,少处理了一步
# include <stdio.h> # include <limits.h> /* determine ranges of types */ main() { /* signed types */ printf("signed char min = %d\n", SCHAR_MIN); printf("signed chat max = %d\n", SCHAR_MAX); printf("signed short min = %d\n", SHRT_MIN); printf("signed short max = %d\n", SHRT_MAX); printf("signed int min = %d\n", INT_MIN); printf("signed int max = %d\n", INT_MAX); printf("signed long min = %ld\n", LONG_MIN); printf("signed long max = %ld\n", LONG_MAX); /* unsigned types */ printf("unsigned char max = %u\n", UCHAR_MAX); printf("unsigned short max = %u\n",USHRT_MAX); printf("unsigned int max = %u\n", UINT_MAX); printf("unsigned long max = %lu\n",ULONG_MAX); }
2、利用按位运算符进行直接计算
# include <stdio.h> /* determine ranges of types */ main() { /* signed types */ printf("signed char min = %d\n", -(char)((unsigned char) ~0 >> 1)); printf("signed char max = %d\n", (char)((unsigned char) ~0 >> 1)); printf("signed short min = %d\n", -(short)((unsigned short) ~0 >> 1)); printf("signed short max = %d\n", (short)((unsigned short) ~0 >> 1)); printf("signed int min = %d\n", -(int)((unsigned int) ~0 >> 1)); printf("signed int max = %d\n", (int)((unsigned int) ~0 >> 1)); printf("signed long min = %ld\n", -(long)((unsigned long) ~0 >> 1)); printf("signed long min = %ld\n", (long)((unsigned long) ~0 >> 1)); /* unsigned types */ printf("unsigned char max = %u\n", (unsigned char) ~0 >> 1); printf("unsigned short max = %u\n", (unsigned short) ~0 >> 1); printf("unsigned int max = %u\n", (unsigned int) ~0 >> 1); printf("unsigned long max = %lu\n", (unsigned long) ~0 >> 1); }
(char)((unsigned char) ~0 >> 1)的说明:
先把0的各二进制位转换为1 --> ~0
将结果值转换为unsigned char类型 --> (unsigned char) ~0
右移一位清除符号位 --> (unsigned char) ~0 >> 1
转换为char类型 --> (char)((unsigned char) ~0 >> 1)
得到了signed char类型字符的最大值
问题:如此计算signed char最小值为-127,应该为-128,少处理了一步
相关文章推荐
- 路由器的DMZ主机功能
- 14-2使用抽出滤镜
- TPL
- WPF MVVM 多线程中MessageBox
- 版本控制-git
- Android Fragment应用实战,使用碎片向ActivityGroup说再见
- android在Canvas使用drawBitmap画一幅画
- eclipse中导入web项目变成java项目解决办法
- iOS数据持久化技术
- 第十五周阅读项目3.(2)
- IOS UI segmentedControl UISegmentedControl 常见属性和用法
- 【剑指offer】面试题十:二进制中 1 的个数
- 【剑指offer】面试题九:斐波那契数列
- C#中遍历Hashtable的4种方法
- Android Studio 启动连接服务器的问题
- typedef常见用法
- Linux定时任务Crontab详解
- iOS音频技术
- 第15周 项目二-二进制文件浏览器
- 一些VC的快捷键以及调试技巧