the c programing language 学习过程3
ControlFlow 控制流
specify 指定 compound statement 复合语句 cryptic有隐含意义的 ambiguity歧义 robust稳健 disintegration解体 sparingly节制 algorithm演算法 appropriate适合的适当的 iteration循环 nontrival非平凡的 重大的 dogmatic教条 武断
1复合语句(分程序)语法上等价于单个语句 分程序最右边的}不用加分号
2else在ifelse语句中可以缺省 但是嵌套中会与最近的if 匹配 如果不希望这样 最好加上花括号 (C PRIM PLUS 里面提到 else;加上可以微微提高程序效率,同时在多重elseif语句中 可以用最后个else来检查错误)
if ( n >= 0 )
for ( i = 0; i < n; i++ )
if ( s[i] > 0) {
printf ( "…" ); //注意这里也要加分号
return i;
}
else /* 错 */
printf ( "error -- n is negative\n" ); 比如这坨 缩进看起来else匹配第一个if 实际上还是匹配第二个if
3switch case ‘常量或者整数表达式’:statement;
statement;
break;//立刻exit form the switch 不加的话 switch会继续执行下一个语句 return也可以结束 同样 break也可以结束while for do的循环
4不添加break可以让程序执行下一个case 但是这个方法不够稳健 程序修改时容易出现错误 我们应当尽量减少这种情况 在必要的情况下 要加上注释 同样d e f a u l t 之后加一个break;也为程序多一道保险
5,运算符 从左到右运算 c=(1+1,2+1) 取右边的值 2+1
6continue用在while for 当中不能用在switch 但是在switch内出现可以控制switch外的循环
7goto 非必要 但是也挺方便的 (CPRIME +我看到一个说这个方法有个缺点 是啥来着=,=) 标签带冒号 覆盖范围是整个函数
goto found;
BLABLABLA
found:
blablabla
用goto的语句
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
if (a[i] == b[j])
goto found;
/* 没有找到相同元素 */
…
found:
/* 取一个满足a[i] ==b[j]的元素 */
…
不用的语句
found = 0;
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
if (a[i] == b[j])
found = 1;
if (found)
/* 取一个满足a[i-1] ==b[j-1]的元素 */
…
else
/* 没有找到相同元素 */
…
虽然goto容易看懂,也方便维护 但是最好别用 (查了下 大致是说会弄乱程序逻辑和结构 当然你的goto只是向下延伸应该问题不大 这玩意学的时候看到说不要用 自己也没怎么记)
the c programing language 学习过程3的更多相关文章
- the c programing language 学习过程8
glean 捡拾落穗; glean insight 深入了解 modeled模型化 peripheral外围的 himogeneous匀称的 intents 意图 excerpt摘录 intende ...
- the c programing language 学习过程7
interact 互动 carriage运费运输 linefeed 换行 redirection改方向 interleaved交叉存取 adequate足够的 untouched原样的 specif ...
- the c programing language 学习过程6
payroll工资名单 hierarchy分层层次 vexing 使人烦恼的 alignment结盟 semantics 语义 aethetic审美 parameterize 参数化 1结构标记 成员 ...
- the c programing language 学习过程5
lumped 集成总结 mandating托管 consecutively连续地 contiguous临近的 mnemonic记忆力的 mimics 酷似 魔方 bind捆绑 synonym同义词 s ...
- the c programing language 学习过程4
4Functions and Program Structure scratch 刮擦 starting over from scratch从头开始 reside驻留 separately 分别的 f ...
- the c programing language 学习过程2
manipulated 操纵 notations符号 hexadecimal十六进制 precision精度 be concatenated at 把····联系起来 enumerations枚举 ...
- 使用一个数组存储一个英文句子"java is an object oriented programing language"
class fun { public static void main(String[] args) { String str="java is an object oriented pro ...
- The python programing language
Python is an example of high-level language. As you might infer from the name “high-level language”, ...
- Linux下C高手成长过程
建议学习路径: 首先先学学编辑器,vim, emacs什么的都行. 然后学make file文件,只要知道一点就行,这样就可以准备编程序了. 然后看看<C程序设计语言>K&R, ...
随机推荐
- HTML学习(二)
表格和列表 <!-- /* @dl→definition list(定义列表),ul→unordered list(无序列表),ol→ordered list * @一个完整的表格.table. ...
- sqlserver2008客户端设置主键自增
是标识改为是
- mysql5.7安装配置,常用命令,常见问题
1.安装配置 参考:http://www.cnblogs.com/Fiona20170420/p/6738185.html 1. 下载 2. 解压缩 3. 添加path环境变量,路径指向mysql所在 ...
- Linux安装JDK、MySQL和Tomcat
1 依赖的安装 因为JDK.Tomcat和MySQL的安装过程中需要从网上下载部分支持包才可以继续,所以需要提前安装好依赖. yum install glibc.1686 yum -y install ...
- 【sed & awk 第二版笔记】以州和人名排列_P38
[root@nhserver1 02]# cat listJohn Daggett, 341 King Road, Plymouth MAAlice Ford, 22 East Broadday, R ...
- 自定义Func模块
自定义Func模块 (1)自定义模块步骤 (2)生成模块 [root@controller modules]# cd /usr/lib/python2.7/site-packages/func/min ...
- IIS6/7 配置操作
关于httpHandlers.handlers和httpModules.modules的那些配置中的各种问题 在web.config中配置httpHandlers.handlers和httpMod ...
- [DeeplearningAI笔记]Multi-class classification多类别分类Softmax regression_02_3.8-3.9
Multi-class classification多类别分类 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.8 Softmax regression 原有课程我们主要介绍的是二分分类( ...
- linux上的组管理
上一次我们谈了CentOS上的用户管理,现在我们再来谈下CentOS上的用户组管理. groupadd创建一个新的组 用法如下: groupadd [选项] groupname 常用选项: -f 强制 ...
- BZOJ 4408: [Fjoi 2016]神秘数 [主席树]
传送门 题意: 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},8无法表示为集合S的子集的和,故集合S的神秘数为8.现给定n个正整数a[1]. ...