惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园_首页
AWS News Blog
AWS News Blog
阮一峰的网络日志
阮一峰的网络日志
Vercel News
Vercel News
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tailwind CSS Blog
PCI Perspectives
PCI Perspectives
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
IT之家
IT之家
V2EX - 技术
V2EX - 技术
Cloudbric
Cloudbric
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
宝玉的分享
宝玉的分享
Know Your Adversary
Know Your Adversary
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Schneier on Security
博客园 - 【当耐特】
G
Google Developers Blog
S
Security @ Cisco Blogs
N
Netflix TechBlog - Medium
T
Tenable Blog
C
Check Point Blog
The Cloudflare Blog
J
Java Code Geeks
The Register - Security
The Register - Security
Google Online Security Blog
Google Online Security Blog
Security Latest
Security Latest
T
Tor Project blog
T
The Blog of Author Tim Ferriss
S
Security Affairs
S
Securelist
P
Privacy & Cybersecurity Law Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Privacy International News Feed
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
G
GRAHAM CLULEY
Jina AI
Jina AI
Spread Privacy
Spread Privacy

Posts on Changkun's Blog

Why High-Output Systems Are Often the First to Stop Growing Dark Forest Theory: A Formal Derivation Agents (or Humans) in Goal-Directed and Goalless Environments: On Pipelines, Priors, and the Rhythm Between Exploration and Exploitation At the Boundary of Self-Reference: From Stable Structures in Artificial Intelligence to the Self as a Recursive Model in an Open Dissipative System 2023 Reading List 2022 Reading List 2021 Reading List Are PSS/USS and RSS Actually the Same Thing? Performance Differences from Page Faults vs. Prefetching 2020 Year-End Review Migration with Zero Downtime 2020 Reading List The All in Go Stack Pointers Might Not Be Ideal for Parameters Eliminating A Source of Measurement Errors in Benchmarks Setup Wordpress in 10 Minutes 我为什么不再写博客了? 2019 年终总结 2018-2019 读书清单 Ten years of blogging Rethinking the Reflections on Communications and Trusts 2018 年终总结 Go source code study is open source Go source study: unsafe Pattern Go source study: sync.Pool Go runtime programming A Million WebSocket and Go Designing Asynchronous RESTful APIs 分布式杂谈01:CAP 理论的误解 Issues of Human-Bot Interaction 压缩法与深度网络的泛化性 Go in 1 Hour UMSLT04: The Past and Present of SGD UMSLT03: A Gentle Start of Learning Theory UMSLT02: A Breif History of Neural Networks UMSLT01: A Breif History of Regularization 不笑不足以为道 论文笔记:Generalization in Deep Learning 2017 年终总结 2017 读书清单 深度学习的泛化理论简介 删除 GitHub 上已经提交的敏感信息 硕士生涯的第一年就这样告一段落了 人肉计算(10): 系统参与激励 人肉计算(9): 陷阱的解法 别聊,一聊你就暴露 人肉计算(8): 人肉计算与数据科学中的陷阱 人肉计算(7): 社会行为分析 Hexo + GitHub + Travis CI + VPS 自动部署 人肉计算(6): 预测市场 人肉计算(5): 信用风险评级模型 读书与回报 瞎扯: 对现代企业理论与当下IT企业的商业模式和信息产业链的规律性的思考 人肉计算(4): 输入数据聚合与PageRank 又一次打整了一下博客 人肉计算(3): 输入数据聚合与链路预测 人肉计算(2): 意图博弈 GWAPs 人肉计算(1): 众包与群众智慧 对后辈同学在计算机专业上的答疑与解惑 在德国的医疗及住院体验 这可能不是一个技术博客了 实验楼楼赛第3期-Python-题解 迅速更换了 DISQUS Electron 深度实践总结 良好的编码体验的三个方面 2016 年终总结 2016 读书清单 最近在着手写的文章 微信小程序文档极致总结 谈谈过去三个月在实验楼的实习经历 Built a Desktop Client for My Blog Guacamole 源码分析与 VNC 中 RFB 协议的坑 《高速上手 C++11/14》正式发布 Docker 极速入门教程02 - 镜像与容器管理 Docker 极速入门教程01 - 基本概念和操作 阶段性沉默 ELK+Redis 最佳实践 终于全面启用了 HTTPS 苹果开源了LZFSE无损压缩 Hash 碰撞的一种思路 记一次完整的 Kaldi-TIMIT 示例运行 Kaldi 上的 TIMIT 例子 Kaldi 安装与部署 从科研写作谈起 Swift API 设计指南 有趣的人类 所以其实论文并没有什么鬼用 Githug 通关记录及指南 小结一下这学期的收获 2015 读书清单 2015 年终总结 负能量爆表 转眼就快两个月了 博客迁移记录 大三总结 这个世界,终究不会是我们的。 Linux 内核分析 之六:Linux 内核创建进程的过程 小说「泽缘」 Linux 内核分析 之五:system_call中断处理过程的简要分析 大创项目的标题真是每年都在考验同学们的想象力啊
C Details 之 基本细节
Changkun Ou · 2013-03-28 · via Posts on Changkun's Blog

Published at发布于:   |   PV/UV: /   |   Reading阅读: 1 min

1、有效数字

一般而言,double型数据可以接受实型常量的16位有效数字,而float型变量仅能接受实型常量的7位有效数字, 在有效数字后面输出的数字都是不准确的。

例如:

1
2
float  a = 123456.7890123456e12;
double b = 123456.7890123456e12;

可以尝试:

1
printf("%f\n%f\n",a,b);

2、变量定义的位置

C语言中要求定义变量必须在所有可执行语句之前。

例如:

1
2
3
printf("Input n:");
int n;
scanf("%d",&n);

这一规定仅仅只是在C89中规定,从C99开始便取消了这一规定并且,C++也并没有这一规定,例如:

1
2
for( int i = 0; i < Num; i++ )
    Do something;

3、关于自增

一个疑问:对于

1
2
3
a = 1;
b = a++;
c = ++a;

为什么b的值为1,c的值为2?

先解答为什么会出现这个问题:

因为根据C运算符的优先级与结合性可以知道,++运算符的优先级是高于=运算符的。

再来解答这是为什么:

b = a++; 的实际效果是 b = a;a = a + 1; 但是之前我们提到,其实++运算符的优先级是高于=运算符的, 但是为什么没有发生 b 的值为 2 的情况,这是因为如果按照这一优先级,b = a++ 则会变成 (b = a)++, 这样的话就违背了语言的本意。总结来说就是,这类情况属于 C 语言未定义的那部分东西,就好像 j++ + ++j 这种无聊的东西结果是会和编译器有关系的,它本身就包涵错误。最好的解决办法是:尽量使用括号。

4、一些常用的格式转换说明符

函数printf()的格式转换说明符

符号 说明
%d 输出带符号的十进制整数。
%u 以无符号的十进制整数形式输出。
%o 以无符号的八进制整数心事输出,不输出前导符0(八进制整数由0开头)。
%x 以无符号十六进制整数形式(小写)输出,不输出前导符0x。
%X 以无符号十六进制整数形式(大写)输出,不输出前导符0x。
%e 以指数形式(小写e表示指数部分)输出实数,要求小数点前必须有且仅有一位非零数字。
%E 以指数形式(大写E表示指数部分)输出实数。

5、随机函数rand()

随机函数rand()产生的是一个在 0~RAND_MAX之间的整数,符号常量RAND_MAX是在头文件stdlib.h中

定义的,因此使用该函数时需要包涵头文件stdlib.h

标准C规定RAND_MAX的值不大于双字节整数的最大值32767。

可以采用下面方法来控制计算机生成的随机数的取值范围:

  1. 利用取余运算rand()%b将函数rand()生成的随机数变化到0~b-1之间。

  2. 利用rand()%b+a运算将随机数取值范围平移到[a,a+b-1]之间。

实际上,函数 rand 所产生的随机数其实只是一个伪随机数,反复调用函数rand()所残生的一些列数看似是随机的,但每次执行程序所产生的随机数序列却是一样的,都是相同的一个数列,而程序又每次值用到了数列中的第一个随机数。

解决这个问题的办法是使程序每次运行时产生不同的随机数列。残生这种随机数的过程称为“随机化”,他是通过调用标准库函数 srand() 为函数 rand() 设置随机数种子来实现的。它的原型为:

1
void srand(unsigned seed);

但是这个的弊端就是每次都必须通过向 srand() 传入一个随机数种子来完成随机化。在头文件 <time.h> 中的函数 time() 返回以秒计算的当前时间值,即一个代表时间的字符串,使用 NULL 作为 time() 的参数时,time(NULL) 的返回值被转换为一个无符号整数,可以作为随机数发生器种子。因此我们可以通过编写