gpt4 book ai didi

c++ - 为什么 Microsoft 的 C/C++ 编译器允许带有逗号分隔表达式的 if 语句?

转载 作者:行者123 更新时间:2023-11-28 00:07:25 26 4
gpt4 key购买 nike

<分区>

我最近在将一个 c++ 项目从 Windows 移植到 Linux 时偶然发现了一些语法上看起来很奇怪的代码。

if ( isObjectNear( objectPos, objectLength ) + .025, 0.125 ) { ...  }"

在此 if 语句中,括号放错了位置,导致该语句由两个用逗号分隔的表达式组成。 bool "isObjectNear(..)" 方法具有默认参数,尽管存在明显的错误,但仍允许使用 Microsoft 的编译器进行调用。

这是在使用 GCC 在 Linux 上构建时发现的问题,并给出了错误消息:

error: value computed is not used [-Werror=unused-value]

我案例中的代码比与问题相关的代码更有趣,下面的代码通过注释中的返回值更清楚地服务于问题的目的:

if ( true, 0.5 ) ... // returns true since 0.5 > 0 ( 0 == false)

if ( true, 0.0 ) ... // returns false

if ( 1.0, false ) ... // returns false

if ( true, false, false, ..., true ) ... // returns true

回到问题“为什么 Microsoft 的 C/C++ 编译器允许带有逗号分隔表达式的 if 语句?”

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com