zoukankan      html  css  js  c++  java
  • [PCS] Hw1. Short int & Float

    一、使用 short int 和 float 两种类型的变量计算和验证两个问题。

     1. x ^ 2 >= 0 ?

      // 使用 C++ 编码如下(只显示 main 函数内的部分,头文件包括<iostream>, <limits.h>, <float.h>, <stdio.h>):

    // 对于 short int 类型,其范围应为 [-32768,+32767]
    
    for (short int i = -32768; i < 32768; i++){
      if (i ^ 2 - 0 < 0)
        cout << "Warning! " << i << "^2 < 0" << endl; 
    }
    // 对于 float 类型,一般由 1符号位+8指数位+23尾数位组成,其范围为[-2^128,+2^128]
    
    for (float f = FLT_MIN; f <= FLT_MAX; f + 0.1)
    {
      if(f ^ 2 - 0 < 0)
        cout << " Warning! " << f << "^2 < 0" << endl;
    }

     2. (X + Y) + Z == X + (Y + Z) ?

    short int i1, i2, i3, int1, int2;
    while (cin >> i1 >> i2 >> i3)
    {
      int1 = (i1 + i2) + i3;
      int2 = i1 + (i2 + i3);
      if (int1 != int2)
        cout << "Warning! " << "( " << i1 << " + " << i2 << " ) + " << i3 << " != " << i1 << " + ( " << i2 << " + " << i3 << " )" << endl;
    }
    float f1, f2, f3, flt1, flt2;
    while (cin >> f1 >> f2 >> f3)
    {
      flt1 = (f1 + f2) + f3;
      flt1 = f1 + (f2 + f3);
      if (flt1 != flt2)
        cout << "Warning! " << "( " << f1 << " + " << f2 << " ) + " << f3 << " != " << f1 << " + ( " << f2 << " + " << f3 << " )" << endl;
    }

    二、内存参照错误验证

     1. fun 函数 和 主函数

    double fun(int i){
    volatile
    double d[1] = {3.14}; volatile long int a[2];
    a[i]
    = 1073741824;
    return d[0]; }
    int main(){
    for(int i = 0; i < 5; i++){
    cout
    << fun(i) << endl;
    }
    return 0; }

     2. 记录 fun(1)/ fun(2)/ fun(3)/ fun(4) 时的输出结果:

    结果如图:

       

    三、总结

           我们发现由于变量类型存在约束范围,会因为变量的溢出而导致结果与自然认知不符;

           同时,由于计算机在进行较大数值计算时会忽略较小数值,造成结果的些许偏差,甚至在二次计算时出现明显的错误。

           这使我们明白,编写程序不能想当然,也应该考虑现实因素:硬件因素,编译因素等。 并且编程过程中的测试也是必不可少的一环。

  • 相关阅读:
    ViewPager自动轮播、小圆点切换
    android自定义view属性
    单点触控
    自定义view、自定义圆形imageview
    为textview中的字符串着色
    xstream解析、httputils请求
    WebView加载页面
    HorizontalScrollView滑动 ViewPager切换
    Spring Boot 热部署(IDEA与Gradle)
    Linux下安装JDK
  • 原文地址:https://www.cnblogs.com/cragoncanth/p/6688241.html
Copyright © 2011-2022 走看看