[第9期] 它究竟是什么样的(二)

2019-04-30  本文已影响0人  坑儿里的小朕

✌大家好,这里是小磊说书,我是小磊,欢迎大家来听我说书!言归正传...

  ➡ ,书接上文..

C语言课程
⭐ 进制

  进位计数的制度(规定,规则,规律),是一种计数方法;比如:计算机中的二进制,十进制,八进制,十六进制等等,也可以自己定义进制:三进制,五进制,…

⭐ 类型转换

  C语言的类型比较多,因此不同情况需求的数据类型也不同,这样就需要进行类型转换,常见的类型转换可以分为自动(隐式)类型转换和强制类型转换;前者一般来说编译器会悄悄的给处理了,相对安全,但不一定是需求需要的结果,后者需要开发人员去人工处理,可以得到需求需要的结果,但安全系数及精度会下降。


🍴接下来,对这两期的内容进行详细讲解 ... ...

⭐ 整数类型
类型 说明
signed short 有符号短整数类型
unsigned short 无符号短整数类型
signed int 有符号整数类型
unsigned int 无符号整数类型
signed long 有符号长整数类型
unsigned long 无符号长整数类型
⭐ 类型大小

  原型:

    sizeof unary-expression
    sizeof ( type-name ) 
    sizeof ( unary-expression ) /*补充*/

  说明:
   1. type-name是类型名称
   2. unary-expression是元表达式,元是参数个数的单位
   3. sizeof是运算符,不是函数(虽然它有一对小括号)
   4. 单位:字节

  源码:

    printf("size of signed short: %d\n", sizeof(signed short));
    printf("size of unsigned short: %d\n", sizeof(unsigned short));
    printf("size of signed int: %d\n", sizeof(signed int));
    printf("size of unsigned int: %d\n", sizeof(unsigned int));
    printf("size of signed long: %d\n", sizeof(signed long));
    printf("size of unsigned long: %d\n", sizeof(signed long));
类型 取值范围
signed short [-2^15, 2^15-1]
unsigned short [0, 2^16-1]
signed int [-2^31, 2^31-1]
unsigned int [0, 2^32-1]
signed long [-2^31, 2^31-1]*
unsigned long [0, 2^32-1]*
类型 极限值(宏)
signed short [SHRT_MIN, SHRT_MAX]
unsigned short [0, USHRT_MAX]
signed int [INT_MIN, INT_MAX]
unsigned int [0, UINT_MAX]
signed long [LONG_MIN, LONG_MAX]*
unsigned long [0, ULONG_MAX]*

说明:
 1. 宏定义,VS中声明文件:
  X:\...\Microsoft Visual Studio 9.0\VC\crt\src\limits.h

    #define SHRT_MIN    (-32768)        /* minimum (signed) short value */
    #define SHRT_MAX      32767         /* maximum (signed) short value */
    #define USHRT_MAX     0xffff        /* maximum unsigned short value */
    #define INT_MIN     (-2147483647 - 1) /* minimum (signed) int value */
    #define INT_MAX       2147483647    /* maximum (signed) int value */
    #define UINT_MAX      0xffffffff    /* maximum unsigned int value */
    #define LONG_MIN    (-2147483647L - 1) /* minimum (signed) long value */
    #define LONG_MAX      2147483647L   /* maximum (signed) long value */
    #define ULONG_MAX     0xffffffffUL  /* maximum unsigned long value */

 2. 溢出问题
  根据编译器不同,有些编译器会按照补码体现;有些编译器会按照取余进行体现;有些编译器会截取;有些编译器不允许溢出,溢出则死程序;有些编译器会进行类型自动隐式转换;有些时候编译器会自动按照自己的规则进行优化;情况很多,相对比较复杂,因此要具体情况具体分析,当然,在优化专题中我们会专门去解析这一类问题(最好解决溢出问题的办法:编码人员尽量不要溢出)。


✨ 更多精彩,期待中...

  👉 详情请参考视频解说! 📄n525
  ✉ liuxiaoleivc@163.com
  ℹ Wechat: liuxiaoleione(添加时请注明'简友')


版权声明®

  版权所有,翻版必究!
  小磊说书系列课程文本及表格均为原创作品,可以转载或学习,但要注明作者和出处,然文章中图片均链接自百度网页,未经作者许可禁止一切商用活动!

上一篇下一篇

猜你喜欢

热点阅读