嘿,非常感谢你抽出时间来!我在理解我的音频编码教科书中语句的语法时遇到了困难。在一个示例中,有一个打印函数,如下所示
printf("%d semitones up or %d semitones down\n", interval,
interval ? 12-interval : 0 );
我不理解的部分是条件运算符,或"?“。看起来我应该把它理解为"if interval不等于0,interval = 12 - interval“,但这里的语法似乎很奇怪。我习惯了条件运算符是一种更丰富的语句,比如:
a = b > c ? b : c;
我忘记了C/C++中(if ? then : else)格式的技术术语。此外,在Cython (Python的C变体)中是否支持这种语法?
我需要知道技术名称,这样我就可以查找是否Cython支持这个特性。
更新:有人知道Cython是否支持这个吗?
解决方案:在cython/python中,这是与(a ? b : c)相比以(b if a else c)形式编写的
只有一个关于三元条件运算符的小问题,这个问题让我困惑了很长一段时间。
代码示例(python 2.7):
>>> x, y = None, 3
>>> x, y
(None, 3)
>>> (x == None and x or y)
3
>>> (x != None and x or y)
3
>>> (x if x == None else y)
第三行和第四行是老式的条件运算符。两者都会产生相同的结果。显然,前者的结果是“错误的”。根据python的说法,也许这不是错误的。但是在程序中很容易出错,而
我是一个C语言新手,在编译一个简单的代码时遇到了以下问题:
#include <stdio.h>
int main()
{
int i, a, b;
i = 3;
a = b = 0;
printf("Before: ");
printf("%d %d\n", a, b);
i == 3 ? a = 4 : a = 10; /* Line 9 */
printf("After: ");
printf("%d %d\n", a, b);
ret