C语言的基本数据类型总结

一,整型
       1,int类型
               a:int变量:

                        int变量是有符号整数,占用一个字的大小。但是ANSI规定int类型最少占用16位 即-2^15~2^15-1
                                                     (注:计算机中一个字表示最自然的存储单位)

                        2种声明的方法: int x;                            //单独声明
                                                    int x, y, z;                    //多个变量一起声明
                        3种为变量赋值的方法:x = 12;                              //直接赋值               
                                                              scanf("%d", &x);              //用scanf()赋值
                                                              int x = 12;                          //初始化的时候赋值
               b,int常量
                        C把不含小数点和指数的常数当做int常量来存储
               c,八进制和十六进制的int常量
                        在C语言中默认的数字为十进制。如果在一个数字前面加上前缀0(零),就可以表示为八进制了
                                                                 如果在一个数字前面加上前缀0x或者0X,就可以表示为十六进制
                  (注意:不论是十进制还是八进制还是十六进制表示法,最终被转换成的机器语言的值都是一样的)
               d,用printf()打印八进制和十六进制数字
                     %o-----以八进制形式打印
                     %x-----以十六进制形式打印
                     %#o----以带前缀0的方式打印八进制数
                     %#x----以带前缀0x的方式打印十六进制数
                     %#X----以带前缀0X的方式打印十六进制数
                                (注意:这些说明符可以打印任意基本数据类型,不论是long还是unsigned long类型等)
               e,整数溢出(省略)
       2, 其它数据类型
               a,变量(加上short、long、unsigned关键字)
                     short int(简写为short)
                     long int(简写为long)
                     long long int(简写为long long)
                     unsigned int(简写为unsigned)
                     unsigned long int(简写为unsigned long)
                     unsigned short int(简写为unsigned short)
                     unsigned long long int(简写为unsigned long long)
                    (注意:关键字signed表示有符号类型,加上去之后使数据类型更加明确,一般可以省略
                                  占用字节大小的排列顺序为 short <= int <= long,C标准保证short至少为16位,int至少为16位,long至少为32位
                                   大多数情况下,long long类型为64位,long类型为32为,int类型为16位或32位)
              b,常量
                   不论是十进制、八进制还是十六进制的常量,根据数字大小,以int、long、unsigned long、long long、unsigned long long的顺序依次适应存储
                   如果要将较小的常量存储在较大的数据类型中,可以加后缀。后缀L或l、LL、u或U、ul等
              c,用printf()打印short、long、long long 和 unsigned类型数
                    %hd-----short    %ld-----long    %lld----long long    %u------unsigned    %lu------unsigned long     %llu-----unsigned long long (注意l和u的顺序)
       3,字符char类型
                     a,一个char类型变量所占用的字节与平台相适应,C保证char类型所占内存足够大,以存储其所在系统上的基本字符集
                       (注:C语言中的一个字节定义为一个char变量所占用的位数)
                     b,大多数情况下占用8个字节,取值范围为-127到128。可以在前面加上unsigned使其取值范围为0-255以便表示扩展的ASCII码
                     c,2种声明方法:char x;                            //单独声明一个变量
                                                     char x, y, z;                        //同时声明多个变量
                     d,4种赋值方法:char x = 'A';                             //直接用字符赋值
                                                      char x = 65;                           //用ASCII码赋值
                                                      char x = '\007';                       //八进制形式。格式为\0oo 可以省略前面的零
                                                      char x = '\x7';                          //十六进制形式。格式为\xhhh或\Xhhh
                           (注意:65本来应该是一个常量,而这个常量应该被存为int类型,因此当被赋值的时候,只读取最后一个字节的内容
                             八进制和十六进制形式的转义字符形式还可以用于字符串中)
                     e,转义字符序列

                                   \a----------报警     \b----------退格     \f----------走纸     \n----------换行    
                                    \r----------回车     \t----------水平制表符\v----------垂直制表符    
                                    \\------反斜杠(\)      \‘---------单引号(')       \"----------双引号("")  
                                     \?----------问号(?) \0ooo-------八进制值(o表示一个八进制数字)    
                                     \xhhh----------十六进制值(h表示一个十六进制数字)

二,浮点型
        1,float、double和long double类型
               a,float类型:
                     有效数字至少6位
                     取值范围至少为10的-37次方到10的37次方
                     存储方式:以二进制的指数形式用32位存储一个浮点数,其中8位用于表示指数及其符号,24位用于表示尾数
               b,double类型:
                     有效数字至少10位
                     取值范围同float,至少为10的-37次方到10的37次方
                     存储方式:以二进制的指数形式用64位存储一个双精度数,指数和尾数的位数随系统不同而不同
         2,声明方法同上
         3,浮点常量
                    浮点常量是指一个常量数字中至少存在一个小数点或者指数部分(区别于int常量)
                    默认情况下编译器将浮点常量视为double类型,占8个字节,以便使常量之间的计算更加精确。
                    如果要更改为float类型,可以在后面加上f或F,如果要更改为long double类型,可以在后面加上l或L
                     还可以用十六进制来表示浮点常量,那么就需要在前面加上0x或0X接着就是十六进制数字,但是指数P或p,表示是2的指数
                               比如:0xa.1fp10-------1010.00011111 * 2^10 = 101000011111  换成10进制就是10364
         4,用printf()打印浮点数
               %f-----以小数形式打印float或double类型
               %e-----以指数形式打印float或double类型
               %a-----以十六进制的指数形式打印float或double类型
               %lf、%le、%la-----分别以小数、指数、十六进制指数的形式打印long double类型
       (注意:打印double类型的时候,默认只有6位有效数字,要打印更多的有效位可以在f前面加上.7 .8等)
         5,浮点值的上溢和下溢
               上溢:当计算结果是一个达到不能在计算机里面表达的时候,就会发生上溢。发生上溢之后,计算得到的值为INF,表示无穷大
               下溢:当一个数字的尾数和指数已经是最小了,在进行运算以时这个数字更小的时候,就会发生下溢。发生下溢的时候,会损失有效数字的精度
         6,浮点数的舍入误差
                当一个数字的精度太大的时候,将这个数字进行加减运算,由于计算机能够表示出的有效位数有限,因此不能正确计算出结果
                比如:2e20 + 1 - 2e20   在第21位加上1,计算机是做不到的  如果是2e4 + 1 - 2e4  结果是1

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值