如何丢弃C中void表达式的指示符?

问题描述 投票:0回答:1

我的问题如标题所述。 C11 对 void 表达式有如下描述:

void 表达式(类型为 void 的表达式)的(不存在的)值不得以任何方式使用,并且不得进行隐式或显式转换(除 void 之外) 应用于这样的表达式。如果任何其他类型的表达式被计算为 void 表达式,其值或指示符被丢弃。 (对 void 表达式进行求值 副作用。)

我读过很多人对这段话的解释。现在,我大概明白了丢弃其价值意味着什么。然而,这段话中的“指示符被丢弃”让我感到困惑。

指示符被丢弃”是什么意思?这里的“指定者”指的是什么?能举个例子给我看一下吗?

这个问题可能很简单,也许根本没有用。但我还是想知道这里标准的用意。

感谢您的阅读。

c language-lawyer c11
1个回答
0
投票

想象一下:

void foo(int a)
{
     (void)a;
     /* .... */
}

该值和指示符被丢弃,但如果容易产生副作用,则可能会对其进行评估。

示例:

volatile x;

(void)x;

© www.soinside.com 2019 - 2024. All rights reserved.