zoukankan      html  css  js  c++  java
  • 基本类型:整型与字符型

    一、整型int

    1.1 概述

    整数类型用来表示不同的取值范围和正负值,含义和数学一样,整数是没有小数部分的值;

    区分正负的类型,称为有符类型(signed),无正负的类型(只有正值),称为无符类型。 (unsigned);当声明某变量类型为无符号类型时,需要在类型声明前显示使用unsigned;

    1.2 int类型

    short int 类型:简写short,C规定占用的空间不能多于int

    long int 类型: 简写 long ,占用的空间可能比int多;

    long long int 类型: 简写 long long 占用的空间可能比long多;

    C标准对基本数据类型只规定了允许的最小大小,这样占用空间的规定是为了适应不同的机器,int 默认被认为是计算机处理整数类型时最高效的类型;考虑某些硬件寄存器16位或者程序开发占用空间资源紧缺情况下,才考虑使用short,只有超出int类型表示的范围才考虑long及long long类型;

     1 //占用空间的大小
     2 #include <stdio.h>
     3 int main(void)
     4 {
     5      /* c99 provides a %zd specifier for sizes */
     6      printf("Type short     has a size of %zd bytes.
    ", sizeof(short));
     7      printf("Type int       has a size of %zd bytes.
    ", sizeof(int));
     8      printf("Type long      has a size of %zd bytes.
    ", sizeof(long));
     9      printf("Type long long has a size of %zd bytes.
    ",sizeof(long long));
    10      return 0;
    11 }
    12 
    13 //Ubuntu16.04 64bit print:
    14 Type short     has a size of 2 bytes.
    15 Type int       has a size of 4 bytes.
    16 Type long      has a size of 8 bytes.
    17 Type long long has a size of 8 bytes.

    1.3 C语言中的转换说明打印不同int类型

    以十进制显示输出使用%d,

    以八进制显示输出使用%o或%#o(在数字前面显示进制代表符号)

    十六进制显示输出使用%x或%X或%#X;

    short类型使用前缀h:即%hd表示以十进制显示short类型的整数,%ho以八进制显示short类型的整数,%hx表示以十六进制显示short类型的整数;

    1 #include <stdio.h>
    2 int main(void)
    3 {
    4     short  i = 4;
    5     printf("i = %hd 
    ", i);
    6     printf("i = %#ho 
    ", i);
    7     printf("i = %#hx 
    ", i);
    8     return 0;
    9 }

    long 类型使用前缀l:即%ld表示以十进制显示short类型的整数,%lo以八进制显示short类型的整数,%lx表示以十六进制显示short类型的整数;

    相应的,long long类型使用前缀ll;

    注意:

    不同的转换说明是指定计算机以什么样的格式进行存储和计算,使用不正确的转换可能产生错误;

     1 #include <stdio.h>
     2 int main(void)
     3 {
     4     short sn = 200;
     5     long ln = 65537;
     6     long long lln = 184467440737095516;
     7     printf(" sn = %hd and %d
    ", sn, sn);
     8     printf(" ln = %ld not is %hd
    ", ln, ln);
     9     printf("lln = %lld not is %ld 
    ", lln, lln);
    10     return 0;
    11 }
    12 //print as:
    13  sn = 200 and 200
    14  ln = 65537 not is 1
    15 lln = 1234567891708641112 not is -171798692

    结论:

    1.int类型被认为是计算机处理整数类型时最高效的类型,当给函数传递参数时,编译器把short类型自动转换为int类型

    2.65537已超出short类型能表示的范围,使用%hd转换说明来显示一个已超出short类型的数据时,计算机则进行显示该较大整数截断成short类型的值后进行输出显示,由此可推出:超出类型所表示的范围时,数据将产生截断;

    short类型最大范围:2^16 - 1 = 65535 即这16位上的数字全是1

    可以推出65537用二进制表示时第17位和第1位上的数字为1其余为0;

    用short类型显示输出long类型数据时,只显示后16位,故输出为1;

    二、字符型char

    2.1 字符型的本质

    计算机使用数字编码来处理字符,即使用特定的整数表示特定的字符,故char本质上为整型;

    美国最常用的编码是ASCII编码,标准范围0~127,只需要7位二进制即可表示;但也存在其他字符集超过了127,例如日本汉字kanji字符集,商用统一码Unicode等等;

    C语言把1字节定义为char类型占用的位数;即1Byte=8bit,故无论16位还是32位系统都可以使用char类型

    2.2 字符常量和初始化

    用单引号括起来的单个字符被称为字符常量,当编译器发现’A’便会将其转换为相应的代码值(65);注意:单引号仅适用于字符、数字和标点符号;

    2.3 非打印字符

    非打印字符通常是一些表示行为的字符,如退格、换行、终端响铃或封鸣,C语言中使用转义序列来表示一些特殊的字符,同样的将转义序列赋值给字符变量时,必须使用单引号将转义序列括起来;

     1 转义序列         含义
     2 a              警报
     3               退格
     4 f              换页
     5 
                  换行
     6 
                  回车
     7 	              水平制表位
     8 v              垂直制表位
     9 \              反斜杠()
    10 ’              单引号
    11 ”              双引号
    12 ?              问号

    2.4 打印字符

    1 #include <stdio.h>
    2 int main(void)
    3 {
    4     char ch;
    5     printf("Please enter a character…
    ");
    6     scanf("%c",&ch)
    7     printf("The code for %c is %d
    ", ch, ch);
    8     return 0;
    9 }

    输入某字母后按下回车键,scanf()函数会读取输入的字符,&符号表示将输入的字符赋给变量ch,printf()函数将打印两次ch,一次打印字符类型(转换说明%c),一次打印整型(%d)

    2.5 字符型是有符号还是无符号

    取决于编译器,有的编译器将char实现为有符号类型,表示范围是-128~127,有些编译器则实现为无符号类型,即表示范围是0~255;但是C语言允许在char前面使用signed,unsigned来显示指定具体;

  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/Shuqing-cxw/p/9251430.html
Copyright © 2011-2022 走看看