关于C语言中语句不执行的问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于 C 语言中语句不执行的问题
同为嵌入式培训中心 谢诗义
1 实例 #include <stdio.h> unsigned char arr[20]={1,0,2,0,3,1,3,9,4,4,0,5}; int main() { int i; int k=10; for(i=0;i<5;i++) { if ((arr[i]!=0) || k--) { printf("i=%d k=%d \n",i,k); } } return 0; } 如果不仔细看,很可能认为有如下结果: 09 18 27 36 45 但实际wk.baidu.com情况是: 0 10 19 29 38 48
3
2 原因 当i=0时,对于if ((arr[i]!=0) || k--)这个语句,由于arr[0]是1,所以(arr[0]!=0) 为真,此时由于(arr[0]!=0)与k--是或的关系,而(arr[i]!=0)已经为真,所有后一项 k--不用计算都可知:((arr[i]!=0) || k--)为真。既然k—没有计算,所以第一次打 印的结果是0 10,以后也可以按此分析得到。
同为嵌入式培训中心 谢诗义
1 实例 #include <stdio.h> unsigned char arr[20]={1,0,2,0,3,1,3,9,4,4,0,5}; int main() { int i; int k=10; for(i=0;i<5;i++) { if ((arr[i]!=0) || k--) { printf("i=%d k=%d \n",i,k); } } return 0; } 如果不仔细看,很可能认为有如下结果: 09 18 27 36 45 但实际wk.baidu.com情况是: 0 10 19 29 38 48
3
2 原因 当i=0时,对于if ((arr[i]!=0) || k--)这个语句,由于arr[0]是1,所以(arr[0]!=0) 为真,此时由于(arr[0]!=0)与k--是或的关系,而(arr[i]!=0)已经为真,所有后一项 k--不用计算都可知:((arr[i]!=0) || k--)为真。既然k—没有计算,所以第一次打 印的结果是0 10,以后也可以按此分析得到。