The C programing language K&R 笔记
2013-06-05 11:23
148 查看
《C程序设计语言(第2版·新版)》
2.1
编写一个程序以确定分别由signed及unsigned限定的char、short、int及long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现:
小结:
利用按位运算符进行计算。表达式:(char)((unsigned char)~0>>1)
先把数字0的各个二进制位全部转换为1:取反,~0 0默认为int型,占用4个字节,存储为0x00000000 ~0的存储值为0xffffffff
然后,将结果值转换为unsigned char类型:(unsigned char)~0 转换为unsigned char后存储为0xff,其值为255
再把这个unsigned char类型值右移一位以清除符号位:(unsigned char)~0 >> 1 >>1就是除以2,存储为0111 1111, 所以为255/2 = 127
最后,把它转换为char类型:(char)((unsigned char)~0>>1)
这一系列操作的最终结果就得到了signed类型字符的最大值。
2.1
编写一个程序以确定分别由signed及unsigned限定的char、short、int及long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现:
#include <stdio.h> int main() { printf("采用直接计算的方式:\n"); //signed types printf("signed char min = %d\n", -(char)((unsigned char)~0>>1)-1); printf("signed char max = %d\n", (char)((unsigned char)~0>>1)); printf("signed short min = %d\n", -(short)((unsigned short)~0>>1)-1); printf("signed short max = %d\n", (short)((unsigned short)~0>>1)); printf("signed int min = %d\n", -(int)((unsigned int)~0>>1)-1); printf("signed int max = %d\n", (int)((unsigned int)~0>>1)); printf("signed long min = %ld\n", -(long)((unsigned long)~0>>1)-1); printf("signed long max = %ld\n", (long)((unsigned long)~0>>1)); //unsigned types printf("unsigned char max = %u\n", (unsigned char)~0); printf("unsigned short max = %u\n", (unsigned short)~0); printf("unsigned int max = %u\n", (unsigned int)~0); printf("unsigned long max = %lu\n", (unsigned long)~0); system("pause"); return 0; }
小结:
利用按位运算符进行计算。表达式:(char)((unsigned char)~0>>1)
先把数字0的各个二进制位全部转换为1:取反,~0 0默认为int型,占用4个字节,存储为0x00000000 ~0的存储值为0xffffffff
然后,将结果值转换为unsigned char类型:(unsigned char)~0 转换为unsigned char后存储为0xff,其值为255
再把这个unsigned char类型值右移一位以清除符号位:(unsigned char)~0 >> 1 >>1就是除以2,存储为0111 1111, 所以为255/2 = 127
最后,把它转换为char类型:(char)((unsigned char)~0>>1)
这一系列操作的最终结果就得到了signed类型字符的最大值。
相关文章推荐
- the c programing language 练习1-17
- <<The C Programming Language>>学习之路-练习题参考答案 1-3
- <<The C Programming Language>>学习之路-练习题参考答案 1-11
- The Python Standard Library » 31. Python Language Services
- Selected solutions to exercise of "The C Programming Language" 2e (Part 6)
- K&R The C Programming Language(SecondEdition)中getchar()与EOF
- Selected solutions to exercise of "The C Programming Language" 2e (Part 7, End of Chapter 1)
- The C programing language 第三章课后题
- 读书笔记之-----"The C Programming Language"
- 重新夯实基础,the c programingn language 再读笔记
- <<The C Programming Language>>学习之路-练习题参考答案 1-4
- <<The C Programming Language>>学习之路-练习题参考答案 1-10
- c++程序设计语言(the c++ programing language) 目录
- <The C++ Programming Language> 读书笔记
- The python programing language
- 重新夯实基础,the c programingn language 再读笔记之函数与程序结构
- <<The C Programming Language>>学习之路-练习题参考答案 1-5
- C Language Study - the use of symbol '##'
- <<The C Programming Language>>学习之路-练习题参考答案 1-12
- the c programing language 1-22 较长输入行折成短些的多行,非缓冲方式实现