| |
|
|
开发:
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.数据类型:
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语言常见错误合集 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/25 15:13:37- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |