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来显示指定具体;

  • 相关阅读:
    dpdk优化相关 转
    常用的TCP Option
    c10k C10M
    Linux惊群效应详解
    bloomfilter 以及count min sketch
    Squid 搭建正向代理服务器
    Openflow的架构+源码剖析 转载
    Hyperscan与Snort的集成方案
    动态图
    psutil 模块
  • 原文地址:https://www.cnblogs.com/Shuqing-cxw/p/9251430.html
Copyright © 2011-2022 走看看