笔记记录

1、float 类型可以储存带小数的数字。

2、printf()中使用%f来处理浮点值。%.2f中的.2用于精确控制输出,指定输出的浮点数只显示小数点后面两位。

3、scanf()函数用于读取键盘的输入。

4、有些数据类型在程序使用之前已经预先设定好了,在整个程序的运行过程中没有变化,这些称为常量(constant)。其他数据类型在程序运行期间可能会改变或被赋值,这些称为变量(variable)。

5、C语言数据类型关键字: int 、short 、long 、unsigned 、char 、float 、double 、signed、void、_Bool、_Complex、_Imaginary。用int关键字来表示基本的整数类型。后3个关键字
(long、short和unsigned)和C90新增的signed用于提供基本整数类型的变式,例如unsigned short int和long long int。char关键字用于指定字母和其他字符(如,#、$、%和*)。另外,char类型也可以表示较小的整数。float、double和long double表示带小数点的数。_Bool类型表示布
尔值(true或false),_complex和_Imaginary分别表示复数和虚数。

7、最小的存储单元是位(bit),可以储存0或1(或者说,位用于设置“开”或“关”)。虽然1位储存的信息有限,但是计算机中位的数量十分庞大。位是计算机内存的基本构建块。字节(byte)是常用的计算机存储单位。对于几乎所有的机器,1字节均为8位。即1字节 = 8 bit。

8、浮点数与数学中实数的概念差不多。2.75、3.16E7、7.00 和 2e-8都是浮点数。注意,在一个值后面加上一个小数点,该值就成为一个浮点值。所以,7是整数,7.00是浮点数。显然,书写浮点数有多种形式。稍后将详细介绍e 记数法, 这里先做简要介绍: 3.16E7 表示3.16×107(3.16 乘以10 的7次方)。其中, 107=10000000,7被称为10的指数。

9、整数与浮点数的区别:①整数没有小数部分,浮点数有小数部分。

②浮点数可以表示的范围比整数大。

10、不同的进制要使用不同的转换说明。以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x。另外,要显示各进制数的前缀0、0x和0X,必须分别使用%#o、%#x、%#X。下面举个例子,

#include <stdio.h>
int main(void)
{int x = 100;printf("dec = %d; octal = %o; hex = %x\n", x,x, x);printf("dec = %d; octal = %#o; hex = %#x\n", x,x, x);return 0;
}
//编译并运行该程序,输出如下:
dec = 100; octal = 144; hex = 64
dec = 100; octal = 0144; hex = 0x64

注意,如果要在八进制和十六进制值前显示0和0x前缀,要分别在转换说明中加入#。

11、打印unsigned int类型的值,使用%u转换说明;打印long类型的值,使用%ld转换说明。如果系统中int和long的大小相同,使用%d就行。在x和o前面可以使用l前缀,%lx表示以十六进制格式打印long类型整数,%lo表示以八进制格式打印long类型整数。注意,虽然C允许使用大写或小写的常量后缀,但是在转换说明中只能用小写。

12、char broiled; /* 声明一个char类型的变量 */,broiled = 'T'; /* 为其赋值,正确 */用单引号括起来的单个字符被称为字符常量(character constant)。broiled = T; /* 错误!此时T是一个变量 */如果省略单引号,编译器认为T是一个变量名,broiled = "T"; /* 错误!此时"T"是一个字符串 */如果把
T用双引号括起来,编译器则认为"T"是一个字符串。

关键字:
基本数据类型由11个关键字组成:int、long、short、unsigned、
char、float、double、signed、_Bool、_Complex和_Imaginary。
有符号整型:
有符号整型可用于表示正整数和负整数。
int ——系统给定的基本整数类型。C语言规定int类型不小于16位。
short或short int ——最大的short类型整数小于或等于最大的int类型
整数。C语言规定short类型至少占16位。
long或long int ——该类型可表示的整数大于或等于最大的int类型
整数。C语言规定long类型至少占32位。
long long或long long int ——该类型可表示的整数大于或等于最大
的long类型整数。Long long类型至少占64位。
一般而言,long类型占用的内存比short类型大,int类型的宽度要么
和long类型相同,要么和short类型相同。例如,旧DOS系统的PC提供
16位的short和int,以及32位的long;Windows 95系统提供16位的short以
及32位的int和long。
无符号整型:
无符号整型只能用于表示零和正整数,因此无符号整型可表示的
正整数比有符号整型的大。在整型类型前加上关键字unsigned表明该类
型是无符号整型:unsignedint、unsigned long、unsigned short。单独的
unsigned相当于unsignedint。
字符类型:
可打印出来的符号(如A、&和+)都是字符。根据定义,char类型
表示一个字符要占用1字节内存。出于历史原因,1字节通常是8位,但
是如果要表示基本字符集,也可以是16位或更大。
char ——字符类型的关键字。有些编译器使用有符号的char,而有
些则使用无符号的char。在需要时,可在char前面加上关键字signed或
unsigned来指明具体使用哪一种类型。
布尔类型:
布尔值表示true和false。C语言用1表示true,0表示false。
_Bool ——布尔类型的关键字。布尔类型是无符号 int类型,所占用的空间只要能储存0或1。
实浮点类型:
实浮点类型可表示正浮点数和负浮点数。
float ——系统的基本浮点类型,可精确表示至少6位有效数字。
double ——储存浮点数的范围(可能)更大,能表示比 float 类型
更多的有效数字(至少 10位,通常会更多)和更大的指数。
long long ——储存浮点数的范围(可能)比double更大,能表示比
double更多的有效数字和更大的指数。
复数和虚数浮点数:
虚数类型是可选的类型。复数的实部和虚部类型都基于实浮点类型来构成:
float _Complex
double _Complex
long double _Complex
float _Imaginary
double _Imaginary
long long _Imaginary

13、如何知道当前系统的指定类型的大小是多少?运行下面程序,会列出当前系统的各类型的大小。

//* typesize.c -- 打印类型大小 */
#include <stdio.h>
int main(void)
{/* C99为类型大小提供%zd转换说明 */printf("Type int has a size of %zd bytes.\n",sizeof(int));printf("Type char has a size of %zd bytes.\n",sizeof(char));printf("Type long has a size of %zd bytes.\n",sizeof(long));printf("Type long long has a size of %zd bytes.\n",sizeof(long long));printf("Type double has a size of %zd bytes.\n",sizeof(double));printf("Type long double has a size of %zd bytes.\n",sizeof(long double));return 0;
}
//sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小。C99和C11提供%zd转换说明匹配sizeof的返//回类型[2]。一些不支持C99和C11的编译器可用%u或%lu代替%zd。
//该程序的输出如下:
Type int has a size of 4 bytes.
Type char has a size of 1 bytes.
Type long has a size of 8 bytes.
Type long long has a size of 8 bytes.
Type double has a size of 8 bytes.
Type long double has a size of 16 bytes.

14、C 有多种的数据类型。基本数据类型分为两大类:整数类型和浮点数类型。

最后,第三章的笔记记录就到这里了,下面进行编程练习的编写。

/*第一题*/
#include <stdio.h>
int main(void)
{int i = 2147483647;unsigned int j = 4294967295;printf("%d %d %d\n", i, i+1, i+2);printf("%u %u %u\n", j, j+1, j+2);float float_max = 3.40e38;float float_min = 3.40e-38;printf("%f %f\n",float_max,float_max+1);printf("%f %f\n",float_min,float_min-1);return 0;
}//输出的结果是:
2147483647     -2147483648  -2147483647
4294967295      0             1/*主要的区别是,在超过最大值时,unsigned int 类型的变量 j 从 0开始;而int类型的
变量i则从−2147483648开始。float的输出结果太长了这里就不放出来了,有兴趣的自己去复制运行一下看结果。
/*第二题*/
#include <stdio.h>
int main(void)
{char ASCII;printf("Please enter a character.\n");scanf("%d", &ASCII); /* 用户输入字符 */printf("The code for %d is %c.\n", ASCII, ASCII);return 0;
}
//运行该程序后,输出示例如下:
Please enter a character.
67
The code for 67 is C.
/*第三题*/
#include<stdio.h>
int main(void)
{printf("\aStartled by the sudden sound, Sally shouted,\n");printf("\"By the Great Pumpkin, what was that!\"");return 0;
}
/*第四题*/
#include<stdio.h>
int main()
{float n;printf("Enter a floating-point values: \n");scanf("%f",&n);printf("fixed-point notation: %f\n",n);printf("exponential notation: %e\n",n);printf("p notation: %#a",n);return 0;
}      /*输出结果如下*/
/* [user@CentOS84 test3.4]$ ./test3.4 */
Enter a floating-point values:
64.25
fixed-point notation: 64.250000
exponential notation: 6.425000e+01
p notation: 0x1.01p+6
/*printf()函数使用%f转换说明打印十进制记数法的float和double类型
浮点数,用%e打印指数记数法的浮点数。十六进制P计数法float类型用%#a打印。
/*第五题*/
#include<stdio.h>
int main()
{int age;double times;printf("please input your age: \n");scanf("%d",&age);times = 3.156e7 * age;printf("fixed-point notation: %lf\n",times);printf("exponential notation: %e\n",times);return 0;
}/* 输出结果[user@CentOS84 test3.4]$ ./test3.4  */
please input your age:
23
fixed-point notation: 725880000.000000
exponential notation: 7.258800e+08
//让程序分别输出小数和指数形式
/*第六题*/
#include <stdio.h>
int main()
{float a = 3.0e-23; //可写可不写float b = 950;     //可写可不写float kuatuo;float water;printf("Please enter the quarts of water:");scanf("\n%f", &kuatuo);water = b * kuatuo / a;printf("The number of water molecules is : %e。\n", water);return 0;
}*/终端命令 [user@CentOS84 test3.6]$ ./test3.6*/
//下面是输出结果
Please enter the quarts of water:3
The number of water molecules is : 9.499999e+25。
/*第七题*/
#include <stdio.h>
int main()
{int inch;float cm;printf("Please enter your height (inch):");scanf("\n%d", &inch);cm = inch * 2.54;printf("Your height is : %f cm!\n", cm);return 0;
}
/*下面是终端三个输出结果*/
//[user@CentOS84 test3.7]$ ./test3.7
Please enter your height (inch):160
Your height is : 406.399994 cm!//[user@CentOS84 test3.7]$ ./test3.7
Please enter your height (inch):60
Your height is : 152.399994 cm!//[user@CentOS84 test3.7]$ ./test3.7
Please enter your height (inch):95
Your height is : 241.300003 cm!
/*第八题*/
#include <stdio.h>
int main()
{float cup, pint, ounce, spoon, teaspoon;printf("Please enter your cup count: ");scanf("\n%f", &cup);printf("%f cup is equal to the %f pint!\n", cup, cup/2);printf("%f cup is equal to the %f ounce!\n", cup, cup*8);printf("%f cup is equal to the %f spoon!\n", cup, cup*16);printf("%f cup is equal to the %f teaspoon!\n", cup, cup*48);return 0;
}/*输出结果*/
Please enter your cup number: 2
2.000000 cup is equal to the 1.000000 pint!
2.000000 cup is equal to the 16.000000 ounce!
2.000000 cup is equal to the 32.000000 spoon!
2.000000 cup is equal to the 96.000000 teaspoon!//浮点类型比整数类型更加合适,如果是3杯的时候用整数类型的话就会舍掉小数了,这显然不符合等量交换的意义。

好了,第三章也完结了,说明一下,本系列的代码都是经过编译运行通过后才放出来给大家看的,所以请放心,在Linux操作系统上安装的Vscode下编写运行的!请各位发现有问题的地方请留言,烦请各位多多指正!

C Primer Plus(第六版)第三章 数据和C相关推荐

  1. C primer plus 学习笔记_第三章 数据和C

    第3章 数据和C 关键字:int .short.long.unsigned.char.float.double._Bool. _Complex._Imaginary 运算符:sizeof() 函数:s ...

  2. c primer plus第六版 第七章

    /*1.编写一个程序读取输入,读到#字符停止,然后报告读取的空格 数.换行符数和所有其他字符的数量.*/ #include<stdio.h> #include<ctype.h> ...

  3. c++ primer plus 第六版第十七章学习笔记

    Ostream类字符显示方法(需用对象调用);put(char)(用于单个字符显示):write(char*,int)(用于显示int指定的多个字符,不检查字符串是否越界),其第一个参数为读取数据的地 ...

  4. C Primer Plus第六版第五章运算符,表达式,语句源码

    源码 //5.1#include<stdio.h> #define ADJUST 7.31 int main(void) {const double SCALE = 0.333;doubl ...

  5. C Primer Plus第六版第七章编程题目与参考答案⭐

    1.编写一个程序读取输入,读到#字符停止,然后报告读取的空格数.换行符数和所有其他字符的数量. #include <stdio.h> #define STOP '#' #define SP ...

  6. C Primer Plus (第六版) 第七章 7.11编程练习 参考答案

    11.ABC 邮购杂货店出售的洋蓟售价为 2.05 美元/磅,甜菜售价为 1.15美元/磅,胡萝卜售价为 1.09美元/磅.在添加运费之前,100美元的订单有5%的打折优惠.少于或等于5磅的订单收取6 ...

  7. 操作系统教程第六版——第三章课后作业

    1.思考题 (1)什么是逻辑地址?什么是物理地址? (2)什么是地址转换?哪些方法可以实现地址转换? (3)什么是存储保护?在分区存储管理中如何实现分区的存储保护? (4)在页式存储器中实现程序共享时 ...

  8. c primer plus 第六版 第五章练习

    /* 1.编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的 时间.使用#define或const创建一个表示60的符号常量或const变量.通 过while循环让用户重复输入值,直到用户输入小 ...

  9. 计量经济学第六版第三章计算机答案,计量经济学第3章计算机习题.docx

    计量经济学第3章计算机习题 PAGE \* MERGEFORMAT 9 班级:金融学106班 姓名:丁涛 学号:0100726 C3.5 log(wage)= 解:通过对例3.2进行"排除其 ...

最新文章

  1. iOS开发UI篇—懒加载
  2. Vert.x学习笔记(一) Vert.x 核心包
  3. Win32程序简单演示-模拟电子表格移动光标到另一单元格
  4. C++存储和处理字符串
  5. Visual Studio 2013开发 mini-filter driver step by step 应用层与内核通讯(8)
  6. Centos5.5安装使用Xen
  7. Chrome 双击关闭标签,新窗口打开新地址,一个插件搞定,安装方便,自带hosts
  8. (转) vector的reserve和resize
  9. c 与matlab混编,C与MATLAB混合编程之调用MATLAB引擎
  10. 超级计算机的水冷散热,1U服务器集成16颗AMD 64核心霄龙:全水冷散热
  11. 计算机中的bit byte(B) mb gb 的关系
  12. 生信学习笔记:生物信息学测序分析基本流程入门笔记
  13. Waymo无人车设立中国全资子公司,取名慧摩,与谷歌上海同楼办公
  14. 17-面向对象之语法(2)
  15. Android 2.3 Gingerbreader 正式发布,向游戏开发者献媚
  16. 百度AI的语音识别与语音合成
  17. 阿里云域名网站https申请,ssl续签设置图文教程
  18. 制药巨头测试IBM的区块链系统以改善临床试验
  19. P1085 [NOIP2004 普及组第一题] 不高兴的津津 ← 模拟题
  20. TOP100summit:【分享实录-华为】微服务场景下的性能提升最佳实践

热门文章

  1. 黑鲨3能升级鸿蒙5g吗,红魔5g和黑鲨3哪个好-红魔5g和黑鲨3参数对比
  2. 如何设置vs窗口的属性管理器和解决方案管理器的位置
  3. ftp服务器连接时间太长(耗时20s或40s)问题解决(超详细图文教程)
  4. Windows Terminal + WSL2 + CENTOS 配置Windows命令终端
  5. 机器学习-推荐系统-利用用户标签数据
  6. 区块链是什么,如何简单易懂地介绍区块链
  7. 网易人工智能受邀出席第二届云创大会
  8. Unity实现BStar寻路
  9. 虚拟机无法ping通物理机解决方案
  10. 挂载并修改img镜像的分区文件