C语言之路-小白篇


目前我在学习C Primer Plus (第六版) 中文版。正好有在学的。可以一起交流。

在这里插入图片描述

一、各种各样的问题

在此会列举一些问题,以及我的解决方法。这些解决方法可能会从网上翻找资料。有可能问别人。难免会有问题,望各位前辈指正。也欢迎跟我一样在学习的同学,把你遇到的问题在下方留言,我会整理到这篇文章中。前人栽树后人乘凉。加油坚持!

问题汇总。

1. “5.4.2 语句”中存在这样一段话:

尽管如此,我们还是要提醒读者:声明创建了名称和类型,并为其分配内存位置。注意,声明不是表达式语句。也就是说,如果删除声明后面的分号,剩下的部分不是一个表达式,也没有值:
int port /* 不是表达式,没有值 */

疑问点:没明白这一段话想表达什么意思呢?

2. float double类型

在第五章,5.11编程练习第7题,当时让输入一个double类型的数。我在想,float和double到底有什么区别呢?于是,我开始在网上搜集资料。
链接1:链接: link.

  1. 范围(链接1)

loat和double的范围是由指数的位数来决定的。
float的指数位有8位,而double的指数位有11位,分布如下:
float:1bit(符号位) 8bits(指数位) 23bits(尾数位)
double:1bit(符号位) 11bits(指数位) 52bits(尾数位)
于是,float的指数范围为-127 ~ > +128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。float的范围为-2^128 > ~ 2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~> +2^1024,也即-1.79E+308 ~ +1.79E+308。

对于类型的分布,可以参考IEEE 754标准。
在这里插入图片描述

3. fabs和abs的区别

第六章开头,函数: fabs()

使用fabs()函数(声明在math.h头文件中) 可以方便地比较浮点数,该函数返回一个浮点值的绝对值(即,没有代数符 号的值)。

取绝对值的函数有四个:abs(), fabs(), cabs(), labs();

int abs(int i); //abs的参数为int型,返回值也是int型。i为整型参数。
double fabs(double x); //fabs的参数为double型,返回值也是double型。x为双精度参数。
double cabs(struct complext znum); //cabs的参数为XXX,返回值是XXX。znum为XXX。
long labs(long n); //long的参数为长整型,返回值也是长整型。

4. 构建比较表达式

许多经验丰富的程序员在构建比较是否相等的表达式时,都习惯把常量放在左侧。

5. 运算符的优先级

算术 > 关系 > 赋值

算术 > 关系高优先级组 > 关系低优先级组 > 赋值
关系高优先级组: > , >=, <, <=
关系低优先级组: ==, !=

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值