zoukankan      html  css  js  c++  java
  • C语言数值表示和计算

    ---恢复内容开始---

    一、数据类型

    在我的Windows上查看<limit.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

    此外推荐<stdint.h>根据比特位数选择数据类型如uint16_t,无符号16位整数

    typedef signed char int8_t;
    typedef short int16_t;
    typedef int int32_t;
    typedef long long int64_t;
    typedef unsigned char uint8_t;
    typedef unsigned short uint16_t;
    typedef unsigned int uint32_t;
    typedef unsigned long long uint64_t;

     大尾端:高字节放在存储地址低位(地址0最低),低字节放高端(不同尾端,每个字节内部顺序都是一样,不同字节在内存、磁盘中排列顺序不同)

    网络字节序转本机字节序:ntohl,ntohs

    本机字节序转网络字节序:htonl,htons

    浮点数都有符号位,float整体精确表示位数有限,23位尾数表示7位十进制数字,使用更精确的中间值如long double,最后存入double(精确16位),使用浮点数关注末尾误差的累积。

    二、数据类型隐式转换规则

    隐式转换是在赋值右边计算过程临时改变对其二进制码解释规则,不改变二进制码也不会根本性改变解释规则,C语言缺省规则为数值表示范围小的数据转换为大的。最后赋值结果数据长度和解释方式决定于=左边数据类型。

    1、有符号数无符号数同时出现在一个表达式,无符号转换为有符号,即把负数的补码解释为无符号数,往往是很大的正数,这在逻辑表达式以及减法运算中易错误,除非与数值计算无关的,其他少用无符号数

    2、都是有符号数直接扩,无符号同理

    整形数的截断与扩展

    1、赋值时左小于右的数据长度,左边只能截取右边的低位,解释方式不变,故负数可能变成正数

    2、正数相乘相加后溢出截断保留低位,长度为左边类型的

    2、扩展后数值不变

    三、类型转换

    基本转换:char,short运算前被转换int,float变double,做完基本转换若运算符两端数据类型仍不一致,编译器做自动类型转换

    C语言没有规定char一定是有符号的,故使用时一定写名signed或unsigned,ASCII字符最高位0

    自动类型转换:窄变宽(同类无符号变有符号);浮点数间大转小丢失小数;浮点转整数具体分析,反之ok

    强制类型转换也是临时的

    ---恢复内容结束---

  • 相关阅读:
    Azure PowerShell (2) 修改Azure订阅名称
    Windows Azure Platform Introduction (11) 了解Org ID、Windows Azure订阅、账户
    Azure PowerShell (3) 上传证书
    Azure PowerShell (1) PowerShell入门
    Windows Azure Service Bus (2) 队列(Queue)入门
    Windows Azure Service Bus (1) 基础
    Windows Azure Cloud Service (10) Role的生命周期
    Windows Azure Cloud Service (36) 在Azure Cloud Service配置SSL证书
    Android studio 使用心得(一)—android studio快速掌握快捷键
    android 签名、混淆打包
  • 原文地址:https://www.cnblogs.com/yifan2015/p/5714749.html
Copyright © 2011-2022 走看看