<?= 运算符 C++ 更大 更少 问号 等号
Posted
技术标签:
【中文标题】<?= 运算符 C++ 更大 更少 问号 等号【英文标题】:<?= operator C++ greater less question mark equals sign 【发布时间】:2013-04-14 03:19:54 【问题描述】:我看到 = 和 >?= 在代码中使用: http://community.topcoder.com/stat?c=problem_solution&rm=151152&rd=5854&pm=2923&cr=310333
我尝试在不包含包含的情况下进行编译以测试它是否是标准的,但它不起作用。然后我添加了包含,但它仍然给出了同样的错误:
question-mark.cpp:15:5: error: '?' 之前的预期主表达式 令牌 question-mark.cpp:15:6:错误:预期的主表达式 在'='标记 question-mark.cpp:15:9 之前:错误:预期的':'之前 ';' token question-mark.cpp:15:9: error: expected primary-expression 在';'标记之前
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main()
int x = 3;
int y = 2;
x >?= y;
printf("x = %d\n", x);
return 0;
以下是链接代码中的使用方式:
x <?= h[i][j]; // x = (h[i][j] < x) ? h[i][j] : x;
我怎样才能做到这一点?
【问题讨论】:
What does the >?= operator mean?的可能重复 请选择最佳答案。 【参考方案1】:这些是 GCC 扩展运算符。 a <?= b
与 a = min(a, b)
具有相同的含义(>?=
是“max”运算符),但它只对其左侧表达式求值一次。当a
是一个变量时,这并不重要,但当a
表示一个表达式时,它可能会有所不同,尤其是当表达式有副作用时。例如,在
*dest++ <?= *src++;
dest++
中的 ++
只会被评估一次。
这两个运营商现在都是deprecated。
【讨论】:
我不确定它是否完全相同,因为<?=
运算符似乎只评估a
一次(例如考虑f() <?= g()
)。【参考方案2】:
这是一个 GCC 扩展。 x >?= y
相当于:
x = max(x, y);
我已经有一段时间没有看到它使用了。
【讨论】:
应该是x = max(x, y)
?
@tacp:他们提到了here,但只是说他们已经被删除了。以上是关于<?= 运算符 C++ 更大 更少 问号 等号的主要内容,如果未能解决你的问题,请参考以下文章