zoukankan      html  css  js  c++  java
  • 一点一滴《C++处理数据》

    1:(整数)short,int,long类型

    short:至少16位

    Int:至少与short一样长

    long:至少32位,且至少与int一样长

       

    下来看下程序输出的结果:

    #include <iostream>

    #include <math.h>

    #include <limits>

    using namespace std;

       

    int main()

    {

    int a=INT_MAX;

    short b=SHRT_MAX;

    long c=LONG_MAX;

       

    cout<<"int is"<<sizeof(a)<<"bytes"<<endl;

    cout<<"short is"<<sizeof(b)<<"bytes"<<endl;

    cout<<"long is"<<sizeof(c)<<"bytes"<<endl;

       

    cout<<"最大值"<<endl;

    cout<<"int"<<a<<endl;

    cout<<"short"<<b<<endl;

    cout<<"long"<<c<<endl;

       

    cout<<"最小值"<<INT_MIN<<"----"<<CHAR_BIT<<endl;

    return 0;

    }

    输出为:

    int is 4 bytes

    short is 2 bytes

    long is 4 bytes

    int 的最大值:2147483647

    short的最大值:32767

    long的最大值:2147483647

    int的最小值:-2147483648

    一个byte是8个bit

    这些我都是在 Windows 7 x64 旗舰版上测试的,其它的系统就没测试了,估计也有一样和不一样的。

    2:操作符 sizeof和头文件limits

    sizeof操作符指出,在使用8位字节的系统中,int的长度为4个字节。可以对类型名和变量名使用sizeof操作符。

    如:cout<<"int is"<<sizeof(int)<<"bytes"<endl;

       

    climits的符号常量

    符号常量

    表示

    CHAR_BIT

    char的位数

    CHAR_MAX

    char的最大值

    CHAR_MIN

    char的最小值

    SCHAR_MAX

    signed char的最大值

    SCHAR_MIN

    signed char的最小值

    UCHAR_MAX

    unsigned char的最大值

    SHRT_MIN

    short的最小值

    SHRT_MAX

    short的最大值

    USHRT_MAX

    unsigned short的最大值

    INT_MAX

    int的最大值

    INT_MIN

    int的最小值

    UINT_MAX

    unsigned int的最大值

    LONG_MAX

    long的最大值

    LONG_MIN

    long的最小值

    ULONG_MAX

    unsigned long的最大值

       

    3:初始化

    将声明和赋值合并在一起:如

    int a=INT_MAX;

       

    注:不对函数内部定义的变量初始化,该变量的值将是不确定的。这意味该变量的值将是它被创建之前,该内存单元保存的值

    4:无符号类型

    unsigned short a;

    unsigned int b;

    unsigned c;

    a,b,c都是int类型

       

    看段程序:

    #include <iostream>

    #include <limits>

    using namespace std;

    #define ZERO 0

    int main()

    {

    short a=SHRT_MAX;

    unsigned short b=a;

    cout<<"a has $"<<a<<"and b add $1 to each account"<<endl<<"NOW";

    a=a+1;

    b=b+1;

    cout<<"a has $"<<a<<"and b has $"<<b<<endl;

    a=ZERO;

    b=ZERO;

    cout<<"a has $"<<a<<"and b has $"<<b<<endl;

    cout<<"take $1 to each account"<<endl;

    a=a-1;

    b=b-1;

    cout<<"a has $"<<a<<"and b has $"<<b<<endl;

    cin>>a;

    return 0;

    }

       

       

    解释下这段程序:

    short类型的a和unsigned short类型的b都取最大值,在这里最大值是:32767。

    从而都加上1,从这开始这两个的值都变了,short类型的最大值还要再加上1,可以见得,a的值变成:-32768

    unsigned short类型的b值变成:32768

    下来同时设置a和b的值为:0,再减去1,从而得出的结果为

    short类型的a最后值为:-1

    unsigned short类型的b最后值为:65535

       

    可以看出,整形变量的行为就是里程表。如果超出了限制,其值为另一端的值。

    如下图:典型的整形溢出行为

       

    5:选择整形类型

    什么情况是用什么类型,这可真是个麻烦啊。

    一般基本都是int类型,而超出int类型范围的用long类型。

    所以要看具体情况而定用什么类型,现在电脑基本都是X86或者X64 的电脑,不存在16位的电脑,所以随便用,但也要注意点用,越节约越好。

    6:整形常量

    如:

    int a=42;

    int b=0x42;

    int c=042;

    cout<<a<<endl;

    cout<<b<<endl;

    cout<<c<<endl;

       

       

    1:第一位为1-9,则基数为10(10进制)

    2:第一位为0,第二位为1-7,则基数为8(8进制)

    3:前两位为0x,或者0X,则基数为16(16进制),对于16进制数:a-f,A-F表示了16进制位,对应与10-15.0xF为15,ox45为165(10个16加5个1)。

    cout默认是以10进制显示的。

    显示上面的列子为:

    42

    66

    34

    7:如何确定常量的类型

    如把1900确定什么类型呢,答案马上揭晓。(如果使用了特殊的后缀表示特定的类型,或者值太大,不能存储为int类型。)否则都是i存储nt类型。

       

    数字后面跟上字母,字母表示的是数字的类型。

    整数后面跟的是l或者L表示该整数类型为:long,u或者U后缀表示unsigned int常量。ul(可以表示任何一种顺序,大小写都可以)表示unsigned long类型的常量(例如:22022LU或者22022UL都被存储为unsigned long类型)。

    接下来考察的是数字的长度。

    对与不带后缀的10进制的数字来说:2000表示int类型,40000表示long类型,3000000000表示unsigned long类型。

    对于不带后缀的16进制的数字来说:0x9c40(40000)表示unsigned int类型。这表示的内存的地址

       

    因此:unsigned int 比long更为合适的表示16位地址

    8:char类型:字符和小数

    char a;

    cout<<"enter string"<<endl;

    cin>>a;

    cout<<a<<endl;

       

    假如输入的是:M

    输出的是M呢,还是77,显而易见的是M。而在内存中的值是:77

    char a;

    cout<<"enter string"<<endl;

    cin>>a;

    int b=a;

    cout<<"The ASCII code for"<<a<<"is"<<b<<endl;

    b=b+1;

    cout<<"The ASCII code for"<<a<<"is"<<b<<endl;

    cout<<"using cout.put()"<<endl;

    cout.put(a);

    输入:M

    输出:77

    78

    M

    所以就cout.put();就很关键了。

    9:cout.put()函数

    cout.put();可以代替<<操作符

    它提供了一种显示字符的方法。不用在转换ASCII码了!

       

    10:char常量

       

       

    11:通用字符名

    12:signed char和unsigned char

    13:

    14:const 限定符

       

       

  • 相关阅读:
    【剑指Offer面试编程题】题目1370:数组中出现次数超过一半的数字--九度OJ
    【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ
    【剑指Offer面试编程题】题目1503:二叉搜索树与双向链表--九度OJ
    【剑指Offer面试编程题】题目1524:复杂链表的复制--九度OJ
    【剑指Offer面试编程题】题目1368:二叉树中和为某一值的路径--九度OJ
    【剑指Offer面试编程题】题目1367:二叉搜索树的后序遍历序列--九度OJ
    【剑指Offer面试编程题】题目1523:从上往下打印二叉树--九度OJ
    【剑指Offer面试编程题】题目1366:栈的压入、弹出序列--九度OJ
    【剑指Offer面试编程题】题目1522:包含min函数的栈--九度OJ
    【剑指Offer面试编程题】题目1391:顺时针打印矩阵--九度OJ
  • 原文地址:https://www.cnblogs.com/macheal/p/2807174.html
Copyright © 2011-2022 走看看