!= C语言中的符号查询
发布时间:2020-12-16 10:22:12 所属栏目:百科 来源:网络整理
导读:int x = 15 ;printf ( "n%d t %d t %d",x != 15,x = 20,x 30 ) ; 代码的输出是1 20 1,但我认为它应该是0 20 1,因为15 == 15 … 我遇到了“x!= 15”部分的问题 解决方法 根据我的经验,大多数C/C++编译器都会从右到左处理大多数参数列表,即使规范没有说明
int x = 15 ; printf ( "n%d t %d t %d",x != 15,x = 20,x < 30 ) ; 代码的输出是1 20 1,但我认为它应该是0 20 1,因为15 == 15 … 我遇到了“x!= 15”部分的问题 解决方法
根据我的经验,大多数C/C++编译器都会从右到左处理大多数参数列表,即使规范没有说明所需的评估顺序.
通过对多少编译器工作的理解,您的参数列表将被评估 printf ( "n%d t %d t %d",x < 30 ) ; 按顺序评估(可能) x < 30 => 1 x = 20 (assigns x to 20,returning 20) => 20 x != 15 => 1 (because x is now 20) 如果此编译顺序适用于您的编译器,则重新排列参数,如此 printf ( "n%d t %d t %d",x < 30,x != 15 ) ; 应该是 1 20 0 因为比较x!= 15将在x被重新分配到20之前发生. 本练习的教训是通常避免列表构造中的赋值(看起来像“a,b,c,d”的东西)或至少不读取同一列表构造中的赋值变量,因为您无法确定左或从左到右的评估(它依赖于编译器). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- swift 自定义log输出
- EBS Form开发 弹性域定义中的参数<->
- c – 编译错误:对’__ atomic_fetch_add_4’的未定义引用
- 【玩转cocos2d-x之二十一】多线程和同步01-pthread库
- xml 绑定到 comboBox (DisplayMember和ValueMember)
- Oracle之索引
- c# – Thread.Sleep(1);对于Silverlight动画来说太慢了,还有
- Oracle EBS中有关Form的触发器的执行顺序
- 使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuer
- WCF服务编程设计规范(1):最新版WCF Coding Standard 介绍和