C_C++数据类型相关

1、C_C++程序中怎样防止或判断数值计算的溢出问题

  1. 将程序中的数值计算变量都使用浮点型变量,浮点变量表示数值范围大,精度高,不易出现数据溢出,即使出现数据溢出,也比较好判断,浮点数溢出分为向上溢出、向下溢出;向上溢出:即数据太大,当前变量类型无法存储,这时C语言返回一个表示无穷大的特殊值,如:INF或INFINITY类型;向下溢出:即数据太小,当前变量类型无法表示这么小的精度,这时数据会向右移动,前面补0,这样会损失有效位数。
  2. 整数型变量表示范围小,并且出现溢出后,会从起始数开始计数,所以不易判断整数是否溢出。
  3. 浮点型数值溢出判断
  • 使用函数_finite(var)判断数值变量var是否溢出,溢出返回0,没有溢出则返回1;
  • 通过数值比较来判断是否溢出,<float.h>头文件中定义了float、double型数值能表示的最大最小值宏定义:
float型: FLT_MAX,  FLT_MIN
double型: DBL_MAX, DBL_MIN

通过将浮点型变量var与上面的最大最小值宏定义比较,就能知道是否溢出,如果浮点型数值向上溢出,最好是将该变量取值为FLT_MAX 或 DBL_MAX,即取浮点型数值的最大值,代码示例如下所示:

#include<stdio.h>
#include<float.h>

int main()
{
    float num = 3.4E38 * 100.0f;  // num变量溢出
    if(_finite(num))              //采用_finite()函数判断是否溢出
       printf("the number is too big!\n");
    num = num > FLT_MAX? FLT_MAX:num;   //先通过数值比较来判断是否溢出,溢出则取最大值
    
    return 0;
}

2、C_C++程序中单双引号字符混淆问题

  • 双引号:"string"表示字符串,字符串是一个char型指针;单引号:'c'表示一个字符,不要将"c"与'c'混淆。
  • 输入字符判断代码:
if (getchar() == 'c') //判断输入字符是否为'c',字符(ASCII)可以直接和int型比较
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值