网站首页 > 技术文章 正文
继续第二章之后的学习,上一章学习认识了一些最简单的C程序。第三章将基于C的数据类型进行笔记学习,和之前一样本文还是已一个重新学习角度去认识C语言,所以文中只会引用到需要数据类型介绍。不会像其他C语言教程中直接将所有类型都堆积上(在最后总结部分列出来了仅供参考)。
学习参考书籍《C Primer Plus》
1,数据类型
1.1,int类型(整型)
C语言中使用最多的数据类型,可表示不同的取值范围和正负值。但是必须是一个整数,可以是正整数,0或者负整数,只要是整数就行。都2022年了使用的操作系统基本都是64位了,所以不太担心存储整数。
之前在第一章和第二章中都是用声明int的操作:
int a,b,c;
int n;
int n2;
int n3;
但是以上都只是声明变量类型并没有给变量赋值,赋值方式可以使用a = 3;或是以后章节会介绍输入方式(scanf())的方式给变量赋值。C语言把不含小数点和指数的数作为整数。所以说,24和-56都是整型常量,但是24.0和2.2E1则不是整型。
1.2,输出(打印)int值
使用printf()函数打印int类型的值时使用%d来表示打印整数的位置。%d称为转换说明,它指定了printf()应使用什么格式来显示一个值。格式化字符串中的每个%d都与待打印变量列表中相应的int值匹配。就比如下列来自第二章程序中的printf():
printf("a与b的乘积c = %d\n",c);
特别注意,如果在printf()中缺少参数(也就是说没有给%d提供任何值的话),那么程序就会打印程序(内存)中的任意值。比如下列操作:
printf("a与b的乘积c = %d\n"); //缺省参数
那么输出结果将会是:
a与b的乘积c = -1163170912
1.3,float和double类型(浮点型数据类型)
在1.1介绍了整型,也就是不包含小数点类型。那么带小数点的数据类型就是使用float和double,所以在写程序的时候根据需求声明,这两种浮点类型主要区别在于它们的取值范围,如下表所示:
类型 | 比特数 | 有效数字 | 数值范围 |
float | 32 | 6-7 | -3.4*10(-38)~3.4*10(38) |
double | 64 | 15-16 | -1.7*10(-308)~1.7*10(308) |
在C语言程序中声明浮点型变量以及赋值方式(与之前整型的赋值方式大同小异):
float noah, jonah;
double trouble;
float a=0.1f;
1.4,输出(打印)float和double值
与整型int不同的是printf()函数使用%f转换说明打印十进制记数法的float和double类型浮点数。在C语言中,float类型的数据默认保留小数点后6位,不足6位的以0补齐。举例:
int b;
float a=0.1f; //float类型赋值时 补充f
b = 6 ;
printf("a与b的乘积c = %f",a*b);
printf("a与b的乘积c = %.2f",a*b); //补充一句如果觉得默认保留6位小数点看着烦可以使用(%.2f)保留两位小数
2,程序案例
错误版本:
#include <stdio.h>
int main(void)
{
int n = 3;
int m = 2;
float f = 9.0f;
float g = 5.0f;
printf("%d\n", n, m);
printf("%d %d %d\n", n);
printf("%d %d\n", f, g);
return 0;
}
输出的结果为:
其实是可以看出问题均出现在了最后的输出环节(printf())中:第九行中变量过多、第十行中变量过少、第十一行由于f和g声明数据类型为浮点型,所以在输出时应该使用%f来表示输出浮点型变量值。所以正确版本应该是:
#include <stdio.h>
int main(void)
{
int n = 3;
int m = 2;
float f = 9.0f;
float g = 5.0f;
printf("%d %d\n", n, m);
printf("%d\n", n);
printf("%f %f\n", f, g);
return 0;
}
这样输出结果为:
3,字符数据类型-char类型
char类型用于存储字符(如,字母或标点符号),所以char类型变量的声明方式与其他类型变量的声明方式相同。但其实char类型在程序中也算是一个整型数据,所以如果在输出printf()中使用%d的话,答案输出为90,这是因为大写的Z在ASCII码中十进制存储是90。比较有意思,读者如果有兴趣可以多尝试一些输出方式或者声明方式,比如将char KingZsf声明为90输出尝试使用%c同样得出结果是Z。
char KingZsf;
char wca, ltcb;
char KingZsf = 'Z'; //通过初始化把字母A赋给KingZsf
printf("%c", KingZsf); //输出结果为 Z
printf("%d", KingZsf); //输出结果为 90
4,总结
补充一些内容便于记,包括在第二章没有详细介绍的\n(字符转义序列)
C语言的数据类型关键字
最初 K&R 给出的关键字 | C90标准添加的关键字 | C99标准添加的关键字 |
int | signed | _Bool (布尔型) |
short | void | _Complex(复数) |
long | _Imaginary(虚数) | |
unsigned | ||
char | ||
float | ||
double |
字符转义序列(粗体比较常用)
名称 | 转义序列 | 名称 | 转义序列 |
换行符 | \n | 回退符 | \b |
水平制表符 | \t | 垂直制表符 | \v |
单引号 | \' | 换页符 | \f |
双引号 | \" | 问号 | ? |
回车符 | \r | 报警(响铃)符 | \a |
反斜杠 | \\ |
本章主要介绍了程序的数据类型(整型、浮点型和字符型),知识点还有很多细节感兴趣的读者可以移步至C语言参考书,很多概念没有详细写。
如有不足或有疑问欢迎各位大佬们指正,同时也希望非IT专业的小白们能感受到C语言的魅力。如果对你有帮助的话点赞收藏哦!
[1] 《C Primer Plus》
- 上一篇: 【国产化】Linux命令速学之 date 命令
- 下一篇: 干货丨零基础如何学习 R 语言?
猜你喜欢
- 2025-01-11 C语言变量和常量
- 2025-01-11 文档段落异常怎么办?
- 2025-01-11 wxPython - 给菜单添加图标和快捷键
- 2025-01-11 使用 Python 开发一个 Python 解释器
- 2025-01-11 Linux系统中最常用的文本显示工具:cat命令
- 2025-01-11 Word中如何快速对齐ABCD选项?
- 2025-01-11 编写一个自动生成双色球号码的 Python 小脚本
- 2025-01-11 Python-九九乘法表
- 2025-01-11 关于Java正则和转义中\\和\\\\的理解
- 2025-01-11 干货丨零基础如何学习 R 语言?
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)