本文主要是介绍翁恺C语言程序设计:学习笔记5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
整数的输入输出1
数据类型有很多:char、int、long、long long…
但在输入输出格式化时,只有两种:
-
%d
:int -
%ld
: long long
变换看待方式,还有unsigned:
-
%u
: unsigned -
%lu
: unsigned long long
在计算机内部,一串字符在现实中表示什么取决于用什么样的方式去看待它,比如
%d
与%u
同样输出同一个位串
,会不一样。 -
-
八进制与十六进制
字面量,是在编译器编写界面里的内容,可以有比如
012
表示8进制
,编译器会自动将其转成10进制
,但是这是编译器这个层面的事情,在计算机底层只有2进制
。-
8进制
以
0
开头的数字字面量 -
16进制
以
0x
开头的数字字面量一个4位的二进制,刚好是一个16进制
进制 字面量 输入输出格式化 2进制 字面量并不会直接写二进制 8进制 0开头 %o、%O 10进制 正常数字 %d、%ld 16进制 0x开头 %x、%X -
-
整数类型的选择
C语言有很多整数类型,因为设计之初,需要考虑到跟硬件打交道,位数不同是适应不同硬件配置。
当下,尽量默认选择
int
作为整数。因为当下计算机已经默认了32位,即便是使用char
、short
类型,实际调用中可能基于内存对齐,速度反而更慢。unsigned
只是作用于输出过程,没有热别需要也不使用。 -
浮点数
浮点数有两种:
- float
- double
类型 输入输出格式化 字长 范围 有效数字 备注 float scanf: %f
;
printf:%f
,%.16f
(小数点后16位,四舍五入),%e
(科学记数法),%E
(大写)32(4个字节) ± ( 1.2 ∗ 1 0 − 38 , 3.4 ∗ 1 0 38 ) , 0 , ± i n f , n a n \pm(1.2*10^{-38} , 3.4*10^{38}),0,\pm inf,nan ±(1.2∗10−38,3.4∗1038),0,±inf,nan 7 在 0左右
很小区域内,是无法表达的double scanf: %lf
;
printf:%lf
,%e
(科学记数法),%E
64 ± ( 3.2 ∗ 1 0 − 308 , 1.79 ∗ 1 0 − 308 ) , 0 , ± i n f , n a n \pm(3.2*10^{-308} , 1.79*10^{-308}),0,\pm inf,nan ±(3.2∗10−308,1.79∗10−308),0,±inf,nan 15 在 0左右
很小区域内,是无法表达的nan
:不是有效的数字有效数字:*7(15)个数字是有效的,第8(16)*个就是不准确的。
浮点数有精度,数字本质上连续的,但是计算机只能通过离散数来表示一个准确的数,实际上计算机内部不能准且表示,
double
相比于float
精度更高,能表示的更准确,但依然是个近似值。 -
References
翁恺, C语言程序设计, [B站], 6.1.5 - 6.1.7 ↩︎
这篇关于翁恺C语言程序设计:学习笔记5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!