C编程语法

C编程语法,c,syntax,syntax-error,C,Syntax,Syntax Error,有可能有这行代码吗 loops_per_msec = (1000000 * loops_per_msec / run_time ? : loops_per_msec); 虽然这行代码完全是从其他可用源文件复制和粘贴的,但我的编译器给了我错误信息。否?:运算符的语法错误 应该是, result = condition ? if success : (else) fail; 您组合的?:可以在GCC(as)中工作,但我不会在Visual Studio中工作 这是可能的,这取决于您

有可能有这行代码吗

loops_per_msec = (1000000 * loops_per_msec / run_time ? :
        loops_per_msec);

虽然这行代码完全是从其他可用源文件复制和粘贴的,但我的编译器给了我错误信息。

否?:运算符的语法错误

应该是,

result = condition ? if success : (else) fail;

您组合的
?:
可以在GCC(as)中工作,但我不会在Visual Studio中工作

这是可能的,这取决于您使用的是哪种C语言方言

 ? :
是GNU扩展

C的GNU扩展允许省略第二个操作数,并隐式使用第一个操作数作为第二个操作数 (来源维基百科)

有关此问题的更多信息:

因此,您可以修复代码(正如其他用户所指出的),也可以更改编译选项,只要您使用兼容的编译器。

三元数需要三个操作数

但GCC接受,作为一个扩展,它接受

在您的情况下,编码

loops_per_msec = (1000000 * loops_per_msec / run_time ? run_time :
    loops_per_msec);

任何编译器都会感到高兴。

您能发布错误吗?请参阅此处了解C运算符优先级:什么编译器?它使用gnu扩展名。您在?而。如果逻辑表达式求值为true,则取值。@ RoTimValon错误是错误的:预期表达式是附带的,它建议在最后一次ISO会议中包含在C++中,尽管有一些支持,但它被拒绝了。是的,但它仍然在GNU C++中有效(CLAN+++,G++)@Kevin正在更新我的答案。你能告诉我这行代码是如何运行的吗?>。