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正在更新我的答案。你能告诉我这行代码是如何运行的吗?>。