zoukankan      html  css  js  c++  java
  • C学习笔记(三)数据和C

    位、字节和字

    最小的存储单位称为(bit),它容纳两个值之一,0或1。

    字节(byte)是常用的计算机存储单位,几乎对所有的机器,1个字节均为8位。因为一个位是0或者1,所以一个8位字节包含256种可能的0、1组合。

    对于给定的计算机,(word)是自然的存储单位。比如原始的Apple机,一个字刚好有8位。

    C的数据关键字

    int类型

     int是有符号整数,可正可负可以是0,而取值范围则依赖于系统。旧的PC机有16位的字,因而用16位存储一个整数值,取值范围为-32768到32767。目前的PC机有32位的字,所以取值范围是-2147483647到2147483647。

    声明int变量

    int erns;
    int hogs,cow,goats;

    初始化变量

    int hogs=21;
    int cows=32,goats=14;
    int dogs,cats=94;/*这种语句有效,但是形式不友好*/

    八进制和十六进制

    要用八进制显示就用%o代替%d,要用十六进制显示就用%x。如果要显示C语言前缀,可以使用说明符%#o、%#x、%#X分别生成0、0x、0X前缀。

    printf("dec=%d,octal=%o,hex=%x\n",x,x,x);
    printf("dec=%d,octal=%#o,hex=%#x\n",x,x,x);

    其他整数类型

    C提供3个附属关键字修饰基本整型:short、long和unsigned。

    short int类型(可简写为short类型)可能占用比int更少的空间,用于数值比int值小的场合。

    long int类型(可简写为long类型)可能占用比int类型更多的空间,用于大数值的场合。

    long long int类型(可简写为long long类型)可能占用比long类型更多的空间,用于更大数值的场合。

    unsigned int(可简写为unsigned类型)用于非负值的场合。范围与有符号的不同,16位的unsigned取值范围为0到65535,而int的取值范围为-32768到32767。

    C90标准中允许unsigned long int(简写为unsigned long)和unsigned short int(简写为unsigned short)类型。C99又增加了unsigned long long int(简写为unsigned long long)类型。

    整数溢出

     如果整数太大超出了整型范围会怎么样?

    /*toobig.c 超出您系统上最大int值*/
    #include<stdio.h>
    int main(void)
    {
     int i=2147483647;
    unsigned int j=4294967295;
    
    printf("%d %d %d\n",i,i+1,i+2);
    printf("%u %u %u\n",j,j+1,j+2);
    return 0;   
    }

    下面是结果:

    2147483647 -2147483648 -2147483647
    4294967295 0 1

    当整型数据达到最大值时,它将溢出到起始点。

    无符号整型的起始点是0,有符号整型的起始点是-2147483648。

    long和long long常量

    在支持long long类型的系统中,使用ll或者LL后缀标识long long类型,如3LL。

    u或者U后缀标识unsigned long long类型,比如5ull、10LLU、6LLU、9Ull。

    char类型

    字符常量及其初始化

    char grade='A';
    char grade=65;

    这两种方法都是可以的。

    非打印字符

     

    Bool类型

    C用值1表示true,用值0表示false。

    可移植类型:inttypes.h

    C99提供了可选的名字集合,确切描述有关信息。

    例如:int16_t表示16位有符号整数类型,uint32_t表示32位无符号整数类型。

    要是这些名字有效,必须在程序中包含inttypes.h头文件。

    float、double和long double类型

    C标准规定,float必须至少表示6位有效数字,取值范围至少为10^-37到10^+37。

    double类型必须至少表示10位有效数字。double一般使用64位长度,有更高的精度。

    long double比double精度更高。

    浮点常量

    -1.56E+12
    2.87e-3

    可以省略正号,可以一没有小数点或者指数部分。

    3.14159
    .2
    4e16
    .8E-5
    100.

    在浮点常量中不要使用空格。

    默认情况下编译器将浮点常量当做double类型。可以加f或者F后缀使编译器把它当做float类型,或者加l或L当做long double类型。

    C99有种新的十六进制格式表示浮点常量,0x或0X为前缀,接着是十六进制数字,然后是p或者P,最后是2的指数。

    0xa.1fp10

    a是10,.1f表示1/16加上15/256,p10表示2^10。

    浮点值的上溢和下溢

     假设系统中的最大float值是3.4E38。

    float toobig=3.4E38*100.0f;
    printf("%e\n",toobig);

    以上语句会发生上溢。printf函数会显示此值为inf或infinity。

    将0.1234E-10除以10,将得到结果0.0123E-10,但是失去了一位有效数字,这叫下溢。

    负数和虚数类型

    三种复数类型:float_Complex、double_Complex和long double_Complex。

    三种虚数类型:float_Imaginary、double_Imaginary和long double_Imaginary。

  • 相关阅读:
    解决VS2013中的控制台一闪而过的问题
    无法查找或打开 PDB 文件解决办法
    一些课题
    KVM下raw和qcow2格式磁盘文件IO测试
    CentOS6.5下安装jdk配置环境变量错误问题:
    小代码训练
    tomcat启动一闪而过处理
    Tomcat 中get请求中含有中文字符时乱码的处理
    ssm框架错误展示-1
    a标签指定的url,在表单提交前进行js验证的实现
  • 原文地址:https://www.cnblogs.com/hahazexia/p/2989863.html
Copyright © 2011-2022 走看看