【自用】 memset对于int、long long、float、double 的极值怎么清

链接:

#include <stdio.h>
int main()
{
    puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢");
    puts("网址:blog.csdn.net/vmurder/article/details/46537613");
}

int

”较“的原则:加法不爆。

极大值:0x7f

较大值:0x3f

较小值:0xc0

极小值:0x80

long long

”较“的原则:加法不爆。

极大值:0x7f

较大值:0x3f

较小值:0xc0

极小值:0x80

float

”较“的原则:保证一定位精度。

7f以上一直到be都是-0 (实际上是一个很小的>-1.0的负数)

极大值:0x7f

较大值:0x4f

较小值:0xce

极小值:0xfe

0xff是 -1.#QNAN0000…… (-∞?)

double

”较“的原则:保证一定位精度。

极大值:0x7f

较大值:0x43

较小值:0xc2

极小值:0xfe

实验代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 5
using namespace std;
int a[N];
long long b[N];
float c[N];
double d[N];
void _int()
{
    puts("");
    puts("int:");

    puts("");
    memset(a,0x7f,sizeof a);printf("%d\n",a[0]);
    memset(a,0x80,sizeof a);printf("%d\n",a[0]);
    memset(a,0x81,sizeof a);printf("%d\n",a[0]);

    puts("");
    memset(a,0xbf,sizeof a);printf("%d %d\n",a[0],a[0]*2);
    memset(a,0xc0,sizeof a);printf("%d %d\n",a[0],a[0]*2);
    memset(a,0xc1,sizeof a);printf("%d %d\n",a[0],a[0]*2);

    puts("");
    memset(a,0x3e,sizeof a);printf("%d %d\n",a[0],a[0]*2);
    memset(a,0x3f,sizeof a);printf("%d %d\n",a[0],a[0]*2);
    memset(a,0x40,sizeof a);printf("%d %d\n",a[0],a[0]*2);

    puts("");
    memset(a,0x7e,sizeof a);printf("%d\n",a[0]);
    memset(a,0x7f,sizeof a);printf("%d\n",a[0]);
    memset(a,0x80,sizeof a);printf("%d\n",a[0]);
}
void _long()
{
    puts("");
    puts("long long:");

    puts("");
    memset(b,0x7f,sizeof b);printf("%I64d\n",b[0]);
    memset(b,0x80,sizeof b);printf("%I64d\n",b[0]);
    memset(b,0x81,sizeof b);printf("%I64d\n",b[0]);

    puts("");
    memset(b,0xbf,sizeof b);printf("%I64d %I64d\n",b[0],b[0]*2);
    memset(b,0xc0,sizeof b);printf("%I64d %I64d\n",b[0],b[0]*2);
    memset(b,0xc1,sizeof b);printf("%I64d %I64d\n",b[0],b[0]*2);

    puts("");
    memset(b,0x3e,sizeof b);printf("%I64d %I64d\n",b[0],b[0]*2);
    memset(b,0x3f,sizeof b);printf("%I64d %I64d\n",b[0],b[0]*2);
    memset(b,0x40,sizeof b);printf("%I64d %I64d\n",b[0],b[0]*2);

    puts("");
    memset(b,0x7e,sizeof b);printf("%I64d\n",b[0]);
    memset(b,0x7f,sizeof b);printf("%I64d\n",b[0]);
    memset(b,0x80,sizeof b);printf("%I64d\n",b[0]);
}
void _float()
{
    puts("");
    puts("float:");

    puts("");
    memset(c,0xfd,sizeof c);printf("%f\n",c[0]);
    memset(c,0xfe,sizeof c);printf("%f\n",c[0]);
    memset(c,0xff,sizeof c);printf("%f\n",c[0]);

    puts("");
    memset(c,0xcd,sizeof c);printf("%f %f\n",c[0],c[0]*2);
    memset(c,0xce,sizeof c);printf("%f %f\n",c[0],c[0]*2);
    memset(c,0xcf,sizeof c);printf("%f %f\n",c[0],c[0]*2);

    puts("");
    memset(c,0x4e,sizeof c);printf("%f %f\n",c[0],c[0]*2);
    memset(c,0x4f,sizeof c);printf("%f %f\n",c[0],c[0]*2);
    memset(c,0x50,sizeof c);printf("%f %f\n",c[0],c[0]*2);

    puts("");
    memset(c,0x7e,sizeof c);printf("%.15f\n",c[0]);
    memset(c,0x7f,sizeof c);printf("%.15f\n",c[0]);
    memset(c,0x80,sizeof c);printf("%.15f\n",c[0]);
}
void _double()
{
    puts("");
    puts("double:");

    puts("");
    memset(d,0xfd,sizeof d);printf("%lf\n",d[0]);
    memset(d,0xfe,sizeof d);printf("%lf\n",d[0]);
    memset(d,0xff,sizeof d);printf("%lf\n",d[0]);

    puts("");
    memset(d,0xc1,sizeof d);printf("%lf %lf\n",d[0],d[0]*2);
    memset(d,0xc2,sizeof d);printf("%lf %lf\n",d[0],d[0]*2);
    memset(d,0xc3,sizeof d);printf("%lf %lf\n",d[0],d[0]*2);

    puts("");
    memset(d,0x42,sizeof d);printf("%lf %lf\n",d[0],d[0]*2);
    memset(d,0x43,sizeof d);printf("%lf %lf\n",d[0],d[0]*2);
    memset(d,0x44,sizeof d);printf("%lf %lf\n",d[0],d[0]*2);

    puts("");
    memset(d,0x7e,sizeof d);printf("%lf\n",d[0]);
    memset(d,0x7f,sizeof d);printf("%lf\n",d[0]);
    memset(d,0x80,sizeof d);printf("%lf\n",d[0]);
}
int main()
{
    _int();
    _long();
    _float();
    _double();
}
时间: 2024-10-25 04:59:54

【自用】 memset对于int、long long、float、double 的极值怎么清的相关文章

Day1 (let and var)/(String,Int,Float,Double)/(Tuples,contains: array,dictionary)

let secondSystem:Int = 0b10001 let eightSystem:Int  = 0o21 let tenSystem:Int    = 17 let sixthSystem:Int  = 0x11 // summary: 1.u need insert a "Enter" behind equal symbol let num_a:Float = 1 let num_b:Int = 1 let a:Int = 3 let b:Double = 0.14159

关于c中 int, float, double转换中存在的精度损失问题

先看一段代码实验: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include<limits> #include<iostream> using namespace std; int main() {     unsigned int i = numeric_limits<unsigned int >::max();     float f = i;     unsigned

[C++] string与int, float, double相互转换

参考:http://blog.csdn.net/candadition/article/details/7342380 将string类型转换为int, float, double类型 主要通过以下几种方式: # 方法一: 使用stringstream stringstream在int或float类型转换为string类型的方法中已经介绍过, 这里也能用作将string类型转换为常用的数值类型. Demo: #include <iostream> #include <sstream>

C++中将string类型转换为int, float, double类型 主要通过以下几种方式:

# 方法一: 使用stringstream stringstream在int或float类型转换为string类型的方法中已经介绍过, 这里也能用作将string类型转换为常用的数值类型. Demo: [cpp] view plaincopy #include <iostream> #include <sstream>    //使用stringstream需要引入这个头文件 using namespace std; //模板函数:将string类型变量转换为常用的数值类型(此方法

C 语言实例 - 计算 int, float, double 和 char 字节大小。

使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小. sizeof 是 C 语言的一种单目操作符,如C语言的其他操作符++.--等,它并不是函数. sizeof 操作符以字节形式给出了其操作数的存储大小. #include <stdio.h>int main(){    int integerType;    float floatType;    double doubleType;    char charType;    // sizeof

解决java float double 浮点型参与计算失精度

本人前段时间做一个社区电商应用,发现了一个 天坑   ...................让我哭会 . 下面听听我的踩坑之路吧 ,电商肯定跟¥打交道了,计算少不了的.由于本人太菜 单纯的以为  float  double 可以直接参与加减乘除 感觉这种代码万无一失没去想这么多直接 float*int . 之前简单测试没问题,项目上线后自己偶然才发现的(不知道公司测试干嘛的) ,当选择多件商品时 , 还是直接说现象吧 比如 在代码中    0.1 f  * A         A为int 型  

既然float不能表示所有的int_那为什么在类型转换时C++将int转换成float?

摘要: 既然float不能表示所有的int,那为什么在类型转换时C++将int转换成float? 问题: 代码如下: int i = 23; float f = 3.14; if (i == f) // 执行某段代码 编译器会将i转换成float类型,然后比较这两个float的大小,但是float能够表示所有的int吗?为什么没有将int和float转换成double类型进行比较呢? 回答: 在整型数的演变中,当int变成unsigned时,会丢掉负数部分(有趣的是,这样的话,0u < -1就是

刨根问底:C++中浮点型变量(float, double)的比较问题。

首先,让我们先来看一段代码: #include <iostream> #include <iomanip> int main() { using namespace std; cout<<setprecision(17); float num1 = 1.1; double num2 = 1.1; if (num1 == num2) cout << "yes"<<endl; else cout << "no

python实现float/double的0x转化

1. 问题引出 最近遇到了一个小问题,即: 读取文本文件的内容,然后将文件中出现的数字(包括double, int, float等)转化为16进制0x存储 原本以为非常简单的内容,然后就着手去写了python,但是写着写着发现不对: python貌似没办法直接读取内存数据; 因此不得不借助于C语言,这样又引出了python如何调用C lib 开始写c发现又有问题了: int 类型的数据和float/double数据在内存中的存储方式是不同的 因此花了一些力气解决了这些问题,成功得将数字转化为了1