加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

!= 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”的东西)或至少不读取同一列表构造中的赋值变量,因为您无法确定左或从左到右的评估(它依赖于编译器).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读