IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言学习笔记二、数据类型、控制符、数据储存、原码/反码/补码转换 -> 正文阅读

[C++知识库]C语言学习笔记二、数据类型、控制符、数据储存、原码/反码/补码转换

二、数据类型、控制符、数据储存、原码/反码/补码转换

1.数据类型:

数据类型种类:32位系统所占字节数64位系统所占字节数格式控制符
字符类型char1%c/%hhd
无符号字符类型unsigned char1%hhu
短整型short2%hd (hàhalf)
无符号短整型unsigned short2%hu
整型int4%d
无符号整型unsigned int4%u
长整型long48%ld
无符号长整型unsinged long48%lu
长长整型long long8%lld
无符号长长整型unsigned long long8%llu
单精度浮点型float4%f
双精度浮点型double8%lf
布尔类型bool1%hhd

1.可以用sizeof()来计算变量的字节大小。

注意:①:在32位的Ubuntu系统中:printf("%u\n", sizeof(char));

在64位的Ubuntu系统中,要用%lu / %ld来printf!!!

②:使用bool类型时,需要加头文件stdbool.h; bool类型变量的值,非0为真!!!

③:浮点型(float, double)默认保留6位小数,第七位会四舍五入。

2.内存的单位换算:1TB == 1024GB == 1024 * 1024MB == 1024 * 1024 * 1024KB== 1024 * 1024 * 1024 * 1024Byte (字节)== 1024 * 1024 * 1024 * 1024 * 8 bit(位/比特);

2.格式控制符:

%d ---》十进制数

%x ---》十六进制数 ------只支持输出正整数,如果是负数,会出错;

%c ---》字符

%o ---》八进制数 ------只支持输出正整数,如果是负数,会出错;

%s ---》字符串

3.输入(scanf)和输出(printf)

①. printf函数的使用方法

(1)直接输出数据,不加变量

            printf("hello world\n");

(2) 加变量输出变量的数据

            int a =100;
            char b ='s'
            printf("%d\n%c", a, b);

(3)使用printf输出特殊字符""、""" -->要加转义字符''

    printf("\ \ \n");       /*输出结果:\  */
    printf("\ \\ \n");  /*输出结果:\\ */
    printf("\"hello\"\n");  /*输出结果:"hello" */

②. scanf函数的用法 ---》从键盘给变量赋值

(1)给一个变量赋值

    int a; 
    scanf("%d", &a); //&(取址符) -->在这里表示取地址(获取变量a的地址)
    printf("a:%d\n", a);

(2)给一个字符类型变量赋值

    char a=0;
    scanf("%c", &a);
    printf("%c\n", a);      //输出变量a的ASCII码值对应的字符
    printf("%hhd\n", a);    //输出变量a的ASCII码值

(3)给一个数组赋值

    char buf[10];
    scanf("%s", buf);   //buf不用加&符,因为数组名是首元素地址
                        //赋值时不要输入空格,否则无法获取空格后面的字符串

(4)同时给整形变量和字符变量赋值

    char a = 0;
    int b = 0;
    scanf("%c %d", &a, &b); //先给字符变量赋值,再给整形变量赋值,不要颠倒顺序;
    //注意:1> 一般定义变量的时候要赋值为0;否则该变量默认为随机数;
         ? 2> scanf函数里面的双引号不要加除了格式控制符之外的字符,不要和printf函数混淆
         ? 3> 给数组赋值字符串时不可以输入空格
         ? 
//错误的使用方法:  
①.  char a=0;
    int b =0;
    scanf("%d%c", &b, &a);  //输入200'\n'  -->他会把'\n'当作一个字符直接赋值到a里面,
                            //没有办法给a赋值了
②.  int a;
    char b;
    scanf("%d", &a);
    scanf("%c", &b);    //输入200'\n'--》也不能实现,会把'\n'当做字符赋值到b
?
改正:
    int a;
    char b;
    scanf("%d", &a);
    getchar();       //把'\n' 取走扔了,下一个scanf就不会读到'\n'
    scanf("%c", &b);            
?

4.数据的储存

(1)数据是先转换成二进制,然后再进行储存的;

(2)无符号char类型的数据储存空间为2^(8*字节数)

例如:char a = 0;
    a的储存空间为2^(1*8)=256位,a的取值范围为0~255;
    因为char类型只有1个字节,所以是2^(1*8)。
    如果a是int类型则为2^(4*8)=4294967296位,a的取值范围则为0~4294967295;
    因为取值范围是从0开始计算,所以最大值为4294967296-1。

(3)有符号的数据类型数据储存空间为2^(8*字节数),其中最高位用来储存正负符号,其余位储存二进制数据。

例如: char a = 100 ? ? //a的数据储存空间有8*1-1=7位,
                     ? //存放形式为其原码:0110 0100  其最高位表示正负(0为正,1为负)
      char b = -100  ? //存放形式为其补码:1001 1100

5.原码、反码、补码

原码:该数绝对值的二进制数

反码:原码取反

补码:反码+1

例如:  char a = -100      //原码为 0110 0100
                          //反码为 1001 1011
                          //补码为 1001 1100
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:31:35  更:2021-08-18 12:33:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 10:45:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码