基本类型学习小结

环境: Dev-C++ 4.9.6.0 (gcc/mingw32), 使用-Wall编译选项

基本类型包括字节型(char)、整型(int)和浮点型(float/double)。

定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对于int、double)对变量的取值区间和精度进行说明。

下面列举了Dev-C++下基本类型所占位数和取值范围:

符号属性      长度属性      基本型      所占位数      取值范围       输入符举例       输出符举例

--                    --                  char            8                -2^7 ~ 2^7-1      %c         %c、%d、%u
signed          --                  char            8                -2^7 ~ 2^7-1       %c         %c、%d、%u
unsigned       --                  char            8                    0 ~ 2^8-1       %c         %c、%d、%u

[signed]         short            [int]             16               -2^15 ~ 2^15-1   %hd
unsigned       short            [int]             16                 0 ~ 2^16-1         %hu、ho、%hx

[signed]         --                    int             32                -2^31 ~ 2^31-1               %d
unsigned       --                  [int]             32                0 ~ 2^32-1               %u、%o、%x

[signed]         long               [int]          32                -2^31 ~ 2^31-1               %ld
unsigned       long              [int]            32                0 ~ 2^32-1              %lu、%lo、%lx

[signed]        long long      [int]             64                -2^63 ~ 2^63-1              %I64d
unsigned       long long       [int]           64                0 ~ 2^64-1           %I64u、%I64o、%I64x

--                    --                   float           32                 +/- 3.40282e+038          %f、%e、%g
--                    --                   double       64               +/- 1.79769e+308   %lf、%le、%lg    %f、%e、%g
--                    long              double       96              +/- 1.79769e+308         %Lf、%Le、%Lg

几点说明:

1. 注意! 表中的每一行,代表一种基本类型。“[]”代表可省略。
    例如:char、signed char、unsigned char是三种互不相同的类型;
    int、short、long也是三种互不相同的类型。
    可以使用C++的函数重载特性进行验证,如:
    void Func(char ch) {}
    void Func(signed char ch) {}
    void Func(unsigned char ch) {}
    是三个不同的函数。

2. char/signed char/unsigned char型数据长度为1字节;
    char为有符号型,但与signed char是不同的类型。
    注意! 并不是所有编译器都这样处理,char型数据长度不一定为1字节,char也不一定为有符号型。

3. 将char/signed char转换为int时,会对最高符号位1进行扩展,从而造成运算问题。
    所以,如果要处理的数据中存在字节值大于127的情况,使用unsigned char较为妥当。
    程序中若涉及位运算,也应该使用unsigned型变量。

4. char/signed char/unsigned char输出时,使用格式符%c(按字符方式);
    或使用%d、%u、%x/%X、%o,按整数方式输出;
    输入时,应使用%c,若使用整数方式,Dev-C++会给出警告,不建议这样使用。

5. int的长度,是16位还是32位,与编译器字长有关。
    16位编译器(如TC使用的编译器)下,int为16位;32位编译器(如VC使用的编译器cl.exe)下,int为32位。

6. 整型数据可以使用%d(有符号10进制)、%o(无符号8进制)或%x/%X(无符号16进制)方式输入输出。
    而格式符%u,表示unsigned,即无符号10进制方式。

7. 整型前缀h表示short,l表示long。
    输入输出short/unsigned short时,不建议直接使用int的格式符%d/%u等,要加前缀h。
    这个习惯性错误,来源于TC。TC下,int的长度和默认符号属性,都与short一致,
    于是就把这两种类型当成是相同的,都用int方式进行输入输出。

8. 关于long long类型的输入输出:
    "%lld"和"%llu"是linux下gcc/g++用于long long int类型(64 bits)输入输出的格式符。
    而"%I64d"和"%I64u"则是Microsoft VC++库里用于输入输出__int64类型的格式说明。
    Dev-C++使用的编译器是Mingw32,Mingw32是x86-win32 gcc子项目之一,编译器核心还是linux下的gcc。
    进行函数参数类型检查的是在编译阶段,gcc编译器对格式字符串进行检查,显然它不认得"%I64d",
    所以将给出警告“unknown conversion type character `I' in format”。对于"%lld"和"%llu",gcc理所当然地接受了。
    Mingw32在编译期间使用gcc的规则检查语法,在连接和运行时使用的却是Microsoft库。
    这个库里的printf和scanf函数当然不认识linux gcc下"%lld"和"%llu",但对"%I64d"和"%I64u",它则是乐意接受,并能正常工作的。

9. 浮点型数据输入时可使用%f、%e/%E或%g/%G,scanf会根据输入数据形式,自动处理。
    输出时可使用%f(普通方式)、%e/%E(指数方式)或%g/%G(自动选择)。

10. 浮点参数压栈的规则:float(4 字节)类型扩展成double(8 字节)入栈。
     所以在输入时,需要区分float(%f)与double(%lf),而在输出时,用%f即可。
     printf函数将按照double型的规则对压入堆栈的float(已扩展成double)和double型数据进行输出。
     如果在输出时指定%lf格式符,gcc/mingw32编译器将给出一个警告。

11. Dev-C++(gcc/mingw32)可以选择float的长度,是否与double一致。

12. 前缀L表示long(double)。
     虽然long double比double长4个字节,但是表示的数值范围却是一样的。
     long double类型的长度、精度及表示范围与所使用的编译器、操作系统等有关。

c语言基本类型学习小结相关推荐

  1. Doctype文档类型学习小结

    Doctype历史学 随手打开一个HTML页面的源码的顶部,我们将看到诸如:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//E ...

  2. python语言的变量类型_Python语言变量类型基础学习

    本文主要向大家介绍了Python语言变量类型基础学习,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. Python基本语法1.定义常量: 之前定义变量没有一起介绍定义常量,是因为P ...

  3. php基础小结,PHP基础学习小结

    PHP基础学习小结 更新时间:2011年04月17日 22:10:44   作者: PHP基础学习小结,学习php的朋友可以参考下. 词法结构1. 大小写 在PHP中,关键字.函数名以及类名不区分大小 ...

  4. Linux多线程Pthread学习小结

    简介 POSIX thread 简称为pthread,Posix线程是一个POSIX标准线程.该标准定义内部API创建和操纵线程. 作用 线程库实行了POSIX线程标准通常称为pthreads.pth ...

  5. php 可变变量 数组赋值,PHP可变变量学习小结

    可变变量,就是一个变量的变量名可以动态的设置和使用.语法形式是PHP的特殊语法,其他语言中少见,本文给大家分享php可变变量学习小结,对php可变变量相关知识感兴趣的朋友一起学习吧 所谓可变变量,就是 ...

  6. C语言各章学习心得,小节

    C 语言是一门有用的学科,是每个大学生应该学习的课程. 我很有幸能够跟随老师学习这门课程,半个学期的时间,我学到了 很多,对C语言有了很多的了解. 作为初学者,我觉得这么课程不是那么容易,可能是没有太 ...

  7. SAP快速学习小结1

    SAP快速学习小结1 一.SAP基础 SAP(System,Applications and Products in Data Processing,即数据处理的系统.应用和产品) SAP R/3 系 ...

  8. 【HTML5学习小结(1)】

    HTML5学习小结 了解Web 一.web网页 1.网页究竟是什么? 2.认识网页 3.构成网页的要素有哪些? 4.web页面的组成. 二.web标准 1.结构标准 2.样式标准 3.行为标准 二.H ...

  9. YouDontKnowJS 小黄书学习小结

    YouDontKnowJS 学习小结 真正的理解闭包的原理与使用 更加透彻this绑定的四种规则机制 你不知道的JavaScript 人称小黄书,第一次看到这本书名 就想到了一句话 "You ...

最新文章

  1. 深入理解Pytorch之register_buffer
  2. YOLOv2论文理解
  3. 121 monogdb安装, 增删改查, mongodb中的update修改器 pymomgo
  4. 快递物流类API推荐
  5. mysql数据库的设计工具_MySQL Workbench,专为MySQL设计的数据库建模工具
  6. 【收藏的一些博客地址-后端开发】
  7. RS-485 工作逻辑
  8. Flutter 3.0 极光推送
  9. 随身WIFI刷机记录 UF1003
  10. 文件不见还占用空间咋修复
  11. 天猫精灵智能设备对接—前篇(1)
  12. oracle 11g duplicate database基于备份复制数据库(四)
  13. Office Tips 3 - 如何设置电脑屏幕背景色为淡绿色
  14. Jekyll 教程——合集(collections)
  15. 传奇登陆器 link.html 网页无法显示,打开登陆器后无法显示游戏各区列表的问题...
  16. 手机上好用的apm测试软件,在哪才能找到测apm的软件  及如合使用  – 手机爱问...
  17. aodv协议源代码分析
  18. 金山Office飓风版如今到哪里去了?
  19. 毕业设计论文参考文献排版格式难题word字符间距变大了。
  20. Linux1G光口网卡状态灯不亮,电脑网卡灯不亮怎么办 电脑网卡灯不亮解决方法介绍【详解】...

热门文章

  1. pyhanlp 中文词性标注与分词简介
  2. Android数据填充器LayoutInflater
  3. zabbix 自定义 key (转)
  4. Dynatrace DPM数字性能管理方案确保安吉星领跑车联网技术
  5. jQuery 选择器中的空格问题
  6. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)
  7. mongochef如何链接有权限的mongodb3.x数据库
  8. C语言,C#,Java,JavaScript之强类型与弱类型
  9. Js中substr,substring,slice截取字符串的异同
  10. linux 命令行简介