使用条件语句的 C 语言中的励志名言是否正确?

dum*_*mmf -4 c c++

我在这里读了一篇文章,但我想它很混乱,而且写得不好。所以我会在这里试一试,因为我仍然想找出答案。希望我不会收到那么多反对票。

事情是这样的,有一个励志有趣的引语:

if (sad() == true) {
    sad().stop;
    beAwesome();
}
Run Code Online (Sandbox Code Playgroud)

就我而言,这是 C 或 C++。我猜这两种语言都可以。所以我的主要问题是:这可以在 C 中工作吗?当然,假设变量存在。如果是这样,这也可以写成下面的代码吗?

if sad() {
    sad().stop;
    beAwesome();
}
Run Code Online (Sandbox Code Playgroud)

编辑:我已经得到了两个反对票......因为我是新来的,有人可以帮我理解我的错误吗?

G. *_*pen 6

第一个变体不是有效的 C。原因是如果sad()返回可以与 比较的东西true,它不能是struct。它必须是一个结构体sad().stop才能有效。它是有效的 C++,因为您可以重载结构或类的比较运算符以允许它与true.

如果不使用宏来确保条件周围有括号,则第二部分在 C 或 C++ 中无效:

#define sad() (...)
Run Code Online (Sandbox Code Playgroud)

  • @AsteroidsWithWings 混淆 C 竞赛记录了许多此类犯罪行为。 (2认同)