-2

我有一个unsigned const volatile short int*. 我希望它是 (x + y),在定义时设置为 0。但是,我希望如果由于某种原因 y 更改为 5,我也希望unsigned const volatile short int*更改。

这在C中可能吗?

(注意:我使用的是带有 GNU 扩展的独立 C99 模式,我的意思是它会自动更改,而不是使用函数。)

4

2 回答 2

1

没有办法让变量根据其他变量(如 C 中的变量)自动更新。

与其将 和 的总和存储xy变量中,不如考虑创建一个函数,在需要时重新计算总和。添加应该非常快:

int get_the_sum()
{
    return x + y;
}

或者,您可以考虑制作xy成为只能使用 setter 函数更改的静态变量。setter 函数用于更新任何需要更新的变量xy如果不了解您的应用程序的更多信息,很难判断这种方法是否值得。

void change_y(int new_y)
{
  y = new_y;
  sum = x + y;
}
于 2017-02-23T19:31:56.040 回答
0

假设y声明为

volatile unsigned short int y = -x;

(或等价物),并且 的值y最初不同于 5,您可以定义

unsigned const volatile short int *p = &y;

这将满足您提出的要求,尽管它强加了您未指定的条件。除了上面明确给出的那些之外,它假设您需要更改以响应 的更改y,但没有提及更改以响应 的更改,x这意味着指向的值实际上不需要响应 的更改x.

当然,我倾向于认为这根本不代表您的真正意思。 不能在 C 中实现。指针指的是内存中的位置,但表达式的值例如x + y不驻留在内存中。

于 2017-02-23T19:41:29.870 回答