- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
循环、分支跳转语句、逗号运算符和条件运算符。
程序块:用一对大括号{}括起来的一段代码。在这段代码里声明或定义的变量,以及里面的循环控制语句,其作用域仅在当前这对大括号范围内。
执行语句:除了类型的定义、函数的声明,变量的声明或定义,之外的语句是执行语句。
逗号表达式:函数的参数列表不是逗号表达式。且最后一条语句一定要有一个值
问号表达式:
语句的未定义行为:参考《C专家编程》第一章P12和《C语言495个问题》11章11.35节
如何避免复杂表达式出现未定义行为参考《C语言495个问题》3.9节
else到底与谁匹配
if(0==x)
if(0==y)error();
else{
//programcode
}
C语言有这样的规定:else始终与同一大括号内最近的未匹配的if语句结合。
while(1)(或if(a==1)(
;);)
对于whileforif循环控制语句,若后面的大括号对里没有执行语句,则等价于:
while(1)
;或if(a==1)
;
浮点数的比较
floatm=3.1;
if(m==3.1)
printf(m==3.1\n);
上节课我们说到浮点数的存储格式,计算机一般都是用一种浮点的格式来近似地模拟实数算术运算。无论是float还是double类型的变量,都有精度限制。不要假设浮点运算结果是精确的,尤其不能直接比较两个浮点数是否相等。有的机器的浮点运算寄存器的精度可能比内存中的double变量还高,这可能导致某些看上去确实相等的浮点数并不相等。这并不是C语言特有的问题,其他程序设计语言有同样的问题,它依赖于cpu的处理能力。在没有“正确”浮点模型的处理器上,编译器要被迫进行代价非凡的仿真。
那么有什么方法检查浮点数在“足够接近”情况下的相等?
浮点数的定义决定他的绝对精度会随着其量级而变化。所以比较两个浮点数最好的方法就是用一个浮点数的量级相关的阀值。
参考C语言的495个问题14章14.5节P172
switch语句中,case后面必须只能是整型或字符型的常量或常量表达式(想想字符型数据在内存里是怎么存的),不能是浮点数或字符串。
比较语句:
for(i=0;i5;i++){
if(i==3)
break;
printf(“%d\n”,i);
}
printf(“afterfor\n”);
for(i=0;i5;i++){
if(i==3)
continue;
printf(“%d\n”,i);
}
printf(“afterfor\n”);
用gdb跟踪调试该程序。
break从最近的一个循环体或switch语句中跳出。
continue最近的一个循环体的一次执行中止,继续该循环。
标准输入输出函数的缓冲区介绍。
t
att汇编语言
参考《深入理解计算机系统》第三章
寄存器:pc或eip、psw
eax、ebx、ecx、edx、esi、edi、ebp、esp
访存方式:P113
数据传送指令:movpushpop
数据处理指令:lealincdecaddsubimulxororand
比较跳转指令:cmpjmpje等
C语言语句分析,一些逻辑思维题目练习
文档评论(0)