gpt4 book ai didi

c - 条件运算符中赋值的优先级

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:44 25 4
gpt4 key购买 nike

我创建了这个简单的程序来自动生成要在 Avisynth scipt 中使用的帧序列:

#include <stdio.h>

int main(void) {

const int step = 3;
const int arr[] = {31997, 31998, 32001};
int i, ii = 0;

for(i = 32002; i <= 32121; i += step, (sizeof(arr)/sizeof(int) - 1 ) != ii ? ++ii : ii = 0) {

printf("freezeframe(%d,%d,%d)\n", i, i + step, arr[ii]);

}

return 0;
}

将 MinGW 与 GCC 4.6.2 结合使用时,出现此错误:需要左值作为赋值的左操作数。

通过在 ii=0 周围使用括号可以简单地解决这个问题。但是,我不明白为什么这是一个错误。赋值运算符不应该先求值吗?

最佳答案

条件运算符的优先级高于 C 中的赋值运算符。

(sizeof(arr)/sizeof(int) - 1 ) != ii ? ++ii : ii = 0

被评估为

((sizeof(arr)/sizeof(int) - 1 ) != ii ? ++ii : ii) = 0

要快速了解 C 中的运算符优先级,您可以看到:

http://www.kernel.org/doc/man-pages/online/pages/man7/operator.7.html

关于c - 条件运算符中赋值的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14002361/

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