精华内容
下载资源
问答
  • 运算整数型与浮点型的处理 当运算中含有浮点型是以浮点型的规则进行运算,当出现整数常数时,如3,可以写成3.0来表示浮点型格式。 以下举例来说明一些情况: 浮点型*整数型,这个是以浮点型来运算的; 整数型/整数...

    运算中整数型与浮点型的处理
    整数型的除法运算是舍位运算,而不是四舍五入,如 int t;t=20/3;这里的结果t=6;浮点型的运算按精度要求四舍五入。
    当运算中的两个数分别是浮点型和整数型是以浮点型的规则进行运算,当出现整数常数时,如3,可以写成3.0来表示浮点型格式。当算式中超过三个数是,从左到右分别按如上两位数的规则进行。

    以下举例来说明一些情况:
    首先说明各个数值的类型,其次举例说明结果。
    1.整数型=浮点型/整数型:
    这个是以浮点型来运算的,但是结果是整数型的,例20.0/3=6.66…,但由于结果是整数型的,进行舍位,结果为6;
    2.浮点型(0.1f)=浮点型/整数型:浮点型规则运算,结果等于6.7;
    3.浮点型=整数型/整数型:整数型运算,计算结果舍位,等于6.0;
    4.整数型/整数型×浮点型,同级运算从左到右,这里先进行整数型的除法,再进行浮点型乘法,如11/4×10.0=20;因为整数除法会舍位,故11/4=2,2×10=20.
    给我们的教训是我们在写程序时应注意变量类型的的定义,以及对精度有要求时尽量先计算浮点型,出现常数时用3.0这个书写形式定于为浮点型。

    展开全文
  • 浮点运算 1、浮点数的保存与整数一样是通过二进制进行的 所以从十进制小数转成二进制再转回去就会不一样。 2、比较两个浮点数最好的方法就是利用一个精确地阈值 ex: if(fabs(a - b)) <= epsilon * fabs(a) ) 可变...

    浮点运算

    1、浮点数的保存与整数一样是通过二进制进行的

    所以从十进制小数转成二进制再转回去就会不一样。

    2、比较两个浮点数最好的方法就是利用一个精确地阈值

    ex: if(fabs(a - b)) <= epsilon * fabs(a) )

     

    可变参数

    1、在printf()中,%f同时表示float和double

    2、使用stdarg.h可以使用可变参数

    使用次序必须是va_list, va_start(),va_arg(),va_end()

    3、可以使用下列函数输出和输入可变参数

    int vprintf(char *format, va_list param);

    int vfprintf(FILE *stream, char *format, va_list param);

    int vsprintf(char *string, char *format, va_list param);

    int vscanf(char *format, va_list param);

    int vsprintf(char *string, char *format, va_list param);

    int vsscanf(char *s, char *format, va_list param);

     

    奇怪的问题

    转载于:https://www.cnblogs.com/steven_oyj/archive/2010/05/30/1747712.html

    展开全文
  • ------------------------------------------------------...【C语言的类型】 1. 整型(都分为有符号signed无符号unsigned两个版本): char, short, int, long, long long   # 注:long long 为C99标准,是6...

    ---------------------------------------------------------------------------------

    【C语言的类型】

    1. 整型(都分为有符号signed和无符号unsigned两个版本):

    char, short, int, long, long long 

     

      # 注:long long 为C99标准,是64位长整型,需要编译器对C标准的支持。

    引:C标准规定整型值相互间大小规则,长整型至少应该和整型一样长,而整型至少应该和短整型一样长。

    short int 至少为16位,long int 至少32位,至于缺省的 int 究竟是16还是32,通常选择的缺省值是这种机器最为高效的位数。

    头文件 limits.h 说明了各种不同的整数类型的特点。  ———《C和指针》

     

    2. 浮点型:

    float,double,long double

     

    3. 布尔类型:

    bool:通过头文件定义,只需要引入stdbool.h即可使用

      # 注:C99之前没有布尔型,C99标准引入新关键字_Bool表示布尔类型,引入stdbool.h可以用 bool 代替_Bool,true代替1,false代替0

     

    4. 指针

     

    自定义类型

     

    【类型有什么不同】

    类型名称:int,long,double

    输入输出时的格式化:%d,%ld,%lf

    所表达的数的范围:char < short < int < float < double     # 注意,它们的大小与编译器和操作系统

    内存中所占据的大小:1个字节到16个字节,使用sizeof()得到大小,sizeof是静态运算符,它的结果在编译时刻就决定了,sizeof的运算不会计算。

    内存中的表达形式:二进制数(补码),编码

     

    【整数类型】

    //  main.c
    //  Created by weichen on 15/3/25.
    //  Copyright (c) 2015年 weichen. All rights reserved.
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        printf("sizeof(char)=%ld\n", sizeof(char));         //1 字节(8bite)
        printf("sizeof(short)=%ld\n", sizeof(short));       //2 字节
        printf("sizeof(int)=%ld\n", sizeof(int));           //4 取决于编译器(cpu),通常的意义是“1个字”
        printf("sizeof(long)=%ld\n", sizeof(long));         //8 取决于编译器(cpu),通常的意义是“1个字”
        printf("sizeof(long long)=%ld\n", sizeof(long long));//8 8字节
    
        //gcc ./test.c -o -m32  #以32平台架构编译显示
        
        
        char c = 255;
        int i = 255;
        printf("c=%d, i=%d\n", c, i); //c=-1, d=255
        
        unsigned char d = 255;        //用来表示整数不以补码的形式表示,看做纯二进制
        printf("d=%d\n", d);          //d=255
        
        char e = 127;
        e = e + 1;
        printf("e=%d\n", e);          //-128
        
        unsigned char f = 127;
        f = f + 1;
        printf("f=%d\n", f);          //128
        
        return 0;
    }
    
    //int 是用来表达寄存器的
    /*
     计算机以二进制表达正整数,表达负数用补码:
     
        0  ->  00000000
        1  ->  00000001
     
        11111111 + 00000001 -> 1000000000 \
                                          |
        00000000 - 00000001 -> (负1)     |
                                          |
     (1)00000000 - 00000001 -> 11111111   /
    
       ① 11111111被当做纯二进制时,是255,被当作补码时,是-1
       ② 同样,对于-a,实际是(2^n - 1),n是这种类型的位数;补码是0-a
       ③ 补码的意思是拿补码和原码可以加出一个溢出的“零”
    */
    
    
    //数的范围
    /*
     一个字节(8位),表达的是:
     00000000 - 11111111
    
     其中,00000000 -> 0
         11111111 ~ 10000000 -> -1 ~ -128   //用补码表示
    00000001 ~ 01111111 -> 1 ~ 127          //纯二进制表示
    */
    
    //unsigned
    /*
     如果一个字面量常数想要表达自己是unsigned,可以在后面加u或U
        255U
     用l或L表示long(long)
     unsigned的初衷并非扩展数能表达的范围,而是为了做纯二进制运算,主要是为了移位。
     */
    
    //整数越界
    /*
     整数是以纯二进制方式进行计算的,所以:
     11111111 + 1 -> 100000000 -> 0
     01111111 + 1 -> 10000000  -> -128
     10000000 - 1 -> 01111111  -> 127
     */
    
    //整数的输入输出
    /*
     只有两种形式:int或long long
     %d:int
     %u:unsigned
     %ld:long long
     %lu:unsigned long long
     */
    
    //8进制和16进制
    /*
     一个以0开始的数字字面量是8进制
     一个以0x开始的数字字面量是16进制
     %o用于8进制,%x用于16进制
     8进制和16进制只是如何把数字表达为字符串,与内部如何表达数字无关
     
     16进制很适合表达二进制数据,因为4位二进制正好是一个16进制位
     8进制的一位数字正好表达3位二进制
        因为早期计算机的字长是12的倍数,而非8
     */
    
    //选择整数类型
    /*
     为什么整数要有那么多种?
        为了准确表达内存,做底层程序的需要
     没有特殊需要,就选择int
        现在的CPU的字长普遍是32位或64位,一次内存读写就是一个int,一次计算也是一个int,选择更短的类型不会更快,甚至可能更慢
        现代的编译器一般会涉及内存对齐,所以更短的类型实际在内存中有可能也占据一个int的大小(虽然sizeof告诉你更小)
     unsigned与否只是输出的不同,内部计算是一样的,所以现代高级语言大多已不区分非负。
     */

     

    【浮点类型】 

    //  main.c  
    //  Created by weichen on 15/4/6.
    //  Copyright (c) 2015年 weichen. All rights reserved.
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        // 浮点类型
        /*
         类型     字长      范围                                                      有效数字
         float    32   ±(1.20*10^-38 ~ 3.40*10^38), 0, ±inf(无穷大), nan(非数字)       7(准确的位数)
         double   64   ±(2.2*10^-308 ~ 1.79*10^308),0, ±inf, nan                     15
         
         类型     scanf     printf
         float     %f       %f,%e(科学计数法)
         double    %lf      %f,%e
         */
        
        double ff = 12.345;
        printf("%e, %f\n", ff, ff);     //1.234500e+01, 12.34500
        printf("%E\n", ff);             //1.234500E+01
        
        //在%和f之间加上.n可以指定输出小数点后几位,这样的输出是做四舍五入的
        printf("%.3f\n", -0.0049);      //-0,005    小数点后保留三位
        printf("%.30f\n", -0.0049);     //-0.004899999999999999841793218991
        printf("%.3f\n", -0.00049);     //0.000
        
        printf("%f\n", 1.0/0.0);        //inf
        printf("%f\n", -1.0/0.0);       //-inf
        printf("%f\n", 0.0/0/0);        //nan
        //printf("%d\n", 12/0);           //无法编译通过,无穷大无法用整数表达,可以用浮点数表达
        
        float a, b, c;
        a = 1.34f;
        b = 1.22f;
        c = a + b;
        if( c == 2.56) {
            printf("a = b\n");
        } else {
            printf("a != b, c=%.10f 或 %f\n", c, c); //a != b, c=2.5599999428 或 2.560000(七位有效数字四舍五入而来)
        }
        
        //浮点运算的精度
        /*
         带小数点的字面量是double而非float
         float需要用f或F后缀来表明身份
         float1 == float2 可能失败
         fabs(f1-f2) < 1e^-12   #计算绝对值与最小误差比较,来判断是否相等
         */
         
        //浮点数的内部表达
        /*
         浮点数在计算时是由专用的硬件部件实现的
         计算double和float所用的部件是一样的
         */
        
        //选择浮点类型
        /*
         如果没有特殊需要,只使用double
         现代CPU能直接对double做硬件运算,性能不会比float差,在64位的机器上,数据存储的速度也不比float慢 
         */
        
        return 0;
    }

     

    【逻辑类型】

    //  main.c
    //  Created by weichen on 15/4/8.
    //  Copyright (c) 2015年 weichen. All rights reserved.
    #include <stdio.h>
    #include <stdbool.h>
    
    int main(int argc, const char * argv[]) {
        // bool
        /*
         C语言本没有逻辑类型,在内部计算中使用整数表达关系运算和逻辑运算的结果,0表示false,而非0的值表示true。
         在C99中,也没有固定的逻辑类型,但是通过一个头文件定义了可以直接使用的true和false这两个值,以及bool这个类型。
         逻辑运算则是C语言固有的成分。
         
         #include <stdbool.h>
         之后就可以使用bool和true、false
        */     
        bool a = 6 < 5;
        bool b = true;
        
        printf("%d\n", a);  //0
        printf("%d\n", b);  //1
        
        //逻辑运算
        /*
         逻辑运算是对逻辑量进行的运算,结果只有0或1
         逻辑量是关系运算或逻辑运算的结果
         ! 逻辑非
         && 逻辑与
         || 逻辑或
         
         如果要表达数学中的区间,如:x∈(4,6) 或 x∈[4,6] 应该如何写C的表达式?
         像 4 < x < 6 这样的式子,不是C能正确计算的式子,因为 4 < x 的结果是一个逻辑值(0或1),
         应该写成 (x > 4 && x < 6) 或 (x >= 4 && x <= 6)
         判断一个字符a是否是大写字母? a >= 'A' && a <= 'Z'
         
         优先级    运算符         结合性
         1        ()            从左到右
         2        ! + - ++ --   从右到左(单目+和-)
         3        * / %         从左到右
         4        + -           从左到右
         5        < <= > >=     从左到右
         6        == !=         从左到右
         7        &&            从左到右
         8        ||            从左到右
         9     = += -= *= /= %= 从右到左
         
         */
        
        return 0;
    }

     

     【类型转换与条件运算】

    //  main.c
    //  Created by weichen on 15/4/8.
    //  Copyright (c) 2015年 weichen. All rights reserved.
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
    
        //自动类型转换
        //当运算符的两边出现不一致的类型时,会自动转换成较大的类型,能表达范围更大的数
        
        //char -> short -> int -> long -> long long
        //int -> float -> double
        
        //对于printf,任何小于int的类型会被转换成int;float会被转换成double
        //但是scanf不会,要输入short,需要%hd,即short int,要输入long long,需要%ld。 (h:短整数或单精度浮点数,l:长整数或双精度浮点数)
        
        
        // 强制类型转换的优先级高于四则运算
        //1. (类型)值
        double a = 1.0;
        double b = 2.0;
        int i = (int)a/b;
        int j = (int)(a/b);
        
        int c = 5;
        int d = 6;
        double e = (double)(c/d);
        
        printf("%d\n", i);
        printf("%d\n", j);
        printf("%lf\n", e);
        
        //2. 小的变量不总能表达大的量
        printf("%d\n", (short)32768);   //-32768,short最多能表示32767
        printf("%d\n", (char)32768);    //0
        
        //3. 强制类型转换只是从那个变量计算出了一个新的类型的值,它并不改变那个变量,无论是值还是类型都不改变
        int k = 32768;
        short kk = (short)k;
        printf("%d\n", k);  //32768
        
        //条件运算符
        //c = (count > 20) ? count - 10 : count + 10;
        //条件运算符的优先级高于赋值运算符,但是低于其他运算符
        
        
        //逗号运算符
        //逗号用来连接两个表达式,并以其右边的表达式的值作为它的结果。逗号的优先级是所有的运算符中最低的,所以它两边的表达式会先计算;逗号的组合关系是自左向右,所以左边的表达式会先计算,而右边的表达式的值就留下来作为逗号运算的结果。
        //在for中使用, for(i=0,j=0;i<j;i++,j--){},这里逗号划分两个表达式。
        int n;
        int m;
        n = 1+2,3+4;        //n=1+2是一个表达式,3+4没有用到,最终结果是3
        m = (1+2,3+4);      //组合关系,右边表达式的值作为结果
        printf("%d\n", n);  //3
        printf("%d\n", m);  //7
        
        return 0;
    }

     

    Link:http://www.cnblogs.com/farwish/p/4382543.html 

    转载于:https://www.cnblogs.com/farwish/p/4382543.html

    展开全文
  • C语言中两个整数相除的结果

    万次阅读 2019-02-03 13:43:38
    c语言中对于除法运算符,当被除数除数都是整数时,并不会得到一个double的浮点型的数,而是直接舍去小数部分(即向下取整) 我在做patB1026时遭遇此问题,代码改了好久测试点1都不能通过,原来在一开始的除法...

    大坑,大坑,大坑!!!!!!!!!!!!

    在c语言中对于除法运算符,当被除数和除数都是整数时,并不会得到一个double的浮点型的数,而是直接舍去小数部分(即向下取整)

    我在做patB1026时遭遇此问题,代码改了好久测试点1都不能通过,原来在一开始的除法运算时就出错了。。。

    希望大家引以为戒,不要像我一样犯这种低级错误

    展开全文
  • 3.浮点运算加法乘法 3.1加法 3.2乘法 1.实数数的表示 参考深入理解C语言-03-有符号数,定点数,浮点数 1.1定点数 一般在没有FPU寄存器的嵌入式系统中使用比较多。比如常见的32位系统中,将高16位作为整数...
  • C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型 1.0数据类型 1.1整数类型 1.2浮点类型 1.3逻辑类型 1.4类型转换条件运算 1.0数据类型 1 整数 char(%c), short, int(%d), long(%ld...
  • 2016年06月02日学习日记c语言操作符表达式 算数运算符中+ - *数学中完全一样 / 1.整数除以整数结果是整数 2.如果操作数中有浮点型则结果一定为浮点型 % 对于“%”运算,操作数不可以为浮点型,不能有...
  • 除了%操作符以外,其他都适用于整型和浮点型,当/操作符的两个操作数都是整数时,它执行整除运算,在其他情况下执行浮点数除法。 %操作符时取模操作符,接受两个整型操作数,把左操作数除以右操作数,返回值是...
  • 描述:给出三个整数,请你设计一个程序,求出这三个数的、乘积平均数。输入:输入只有三个正...样例输入:1 2 3样例输出:6 6 2.00考点:运算符的使用,不同类型数据的运算注意事项:因为average是浮点型的数据(a+b...
  • C语言的科学艺术.pdf

    热门讨论 2012-01-19 14:09:05
    本资源包含《C语言的科学艺术(英文版)》.pdfC语言的科学艺术(中文版)》.pdf两本书,有兴趣的朋友可以进行对照阅读。 《C语言的科学艺术》,原名《The Art and Science of C: A Library-Based Introduction...
  • C语言程序基础4.5

    2015-07-14 21:23:40
    运算符:(1)浮点类型的出发运算得到一个浮点数结果,而整数除法运算则产生一个整数结果。整数不能有小数部分,在C语言中,整数除法结果的小数部分都被丢弃,这个过程被称为截尾。 (2)实际上,计算机不能真正用...
  • C语言的除法取余问题

    千次阅读 2020-08-01 17:27:37
    除法 / 的运算当中如果被除数除数都是int类型的,那么对应的商也是int类型的,...取余的话,运算对象必须是整数的,结果是整除后的余数,其余数的符号被除数相同; 13 % 3 = 1; 13 % -3 = 1; -13 % 3 = -1; ...
  • 变量中存储的数据类型是由变量类型来决定的,比如整型变量存储整数浮点型变量存储浮点数。那么指针变量存储什么呢?答案是地址! 地址的运算 我们知道,变量本身并没有什么运算能力,所谓变量的运算一定是变量中...
  • MATLAB的数据类型整型和浮点

    万次阅读 2018-08-08 10:31:53
    可以看出MATLAB的数值类型跟C语言一样分为整型和浮点型,但是需要特别注意的是,它的用意和C语言完全不一样。前者的整型数据主要为图像处理等特殊的应用问题提供数据类型,而对于一般数值运算,绝大多数是采用双精度...
  • C语言中级

    2019-07-24 10:30:28
    常量包括整数常量、浮点常量、字符常量字符串常量。 整数常量:整数,如1、4、35、329 浮点常量:小数,如0.0、0.1、4.7、8.224 字符常量:括在单引号中,如’c’、‘s’ 字符串常量:括...
  • 浮点数和整数在计算机内部存储的方式是不同的,整数运算永远是精确的,然而浮点数的运算则可能会有四舍五入的误差。比如观察以下运算,在数学中很容易得出结果应该是0.8965,而使用程序运算得出的结果却是:0....
  • c语言操作符

    2017-10-09 15:50:57
    在学习了c语言操作符的基础上,进行了如下简单的总结: ... % 模运算或求余:左右两边位两个整数,返回值是余数而不是商。 移位操作符:   >> 右移操作符 左边空出的位有两种方式补充: 逻辑移
  • C语言中fmod函数的功能是x/y的求余运算,适用于double ,float,long double,如果y=0的话,那么返回 值得一提的是%,‘%’同样是取余,但是% 适用于整数取余,%是整数的取余符号,而fmod是函数,它的参数必定是浮点...
  • 除法运算符:浮点类型的除法运算得出一个浮点结果,而整数除法运算得出一个整数结果。整数不能有小数,因此,在C语言中,整数除法的运算中小数部分都被丢弃,这个过程称为截尾。 注意:计算机不能真正用整数去除...
  • Python基本数据类型之浮点

    万次阅读 2019-01-31 17:24:34
    1.浮点数的介绍 ...浮点数和整数在计算机内部存储的方式是不同的,整数运算永远是精确的,然而浮点数的运算则可能会有四舍五入的误差。比如观察以下运算,在数学中很容易得出结果应该是0.8965,而使用程序运...
  • C语言操作符

    2019-04-10 21:29:39
    C语言操作符 算术运算符 移位操作符 位操作符 赋值 复合赋值符 单目操作符 关系操作符 逻辑操作符 条件操作符 ...当/操作符的两个操作数都是整数时执行整除运算,其他情况执行浮点数除法。 % 为取模操作...
  • C语言算术运算符

    千次阅读 2017-12-10 16:04:55
    如果,运算符放在操作数的后面,则向进行其他运算,再进行自增或自减运算除法运算如果,除数被除数都为整数时,得到的结果也是一个整数 如果,除法运算有浮点数参与运算,系统会将整型,隐式转换为浮点类型,最终...
  • C语言笔记1

    2012-02-17 08:45:58
    1. C语言整数除法,无论操作数是正还是负,都把小数部分截掉,在数轴上表现为向零的方向取整。 2. %取余运算(取模运算)结果符合总是与被除数相同。(不同编程语言对取模运算的规则各不相同)。 3. 浮点...
  • 当你选择了一种语言,意味着你还选择了一组技术、一个社区。——Joshua Bloch ...变量的数据类型同时决定着该变量能取哪些值进行哪些运算,例如整数类型只能取整数值,小数类型可以表示小数,整数和小...
  • 由于C语言的强大功能各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。 C语言的特点  C语言是...
  • 总结c语言操作符

    2017-10-08 12:18:05
    算数操作符,简单的说就是加减乘除运算即为+-*/,这里强调对于取余'%',操作数不能是浮点型,而对于除‘/’,如果操作数其中有浮点型,则结果一定是浮点型,而且整数除法会直接去除掉小数位。对于i++++i,前者是先取...
  • 2、整数运算相比浮点运算 3、乘除法移位运算 左移1位相当于乘2,右移1位相当于除2 4、查表运算 比如计算cos sin 函数 例如: 5、并行计算 充分利用ALU单元,在循环内写多次相同的语句,但该数据不能...
  • C语言操作符的总结

    2017-10-08 18:43:50
    浮点型,则结果一定是浮点型,而且整数除法会直接去除掉小数位。对于i++++i,前者是先取变量本身的值然后做自减自增运算, 后者是先做自减自增运算然后取变量本身的值。这里说明不同的编译器对于这种运算有不同...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 138
精华内容 55
关键字:

c语言浮点和整数运算

c语言 订阅