我在代码中看到<?=和>?= http://community.topcoder.com/stat?c=problem_solution&rm=151152&rd=5854&pm=2923&cr=310333
我试图在没有包含的情况下进行编译,以测试它是否符合标准,但它没有用。然后我添加了包含,但它仍然给出了同样的错误:
question-mark.cpp:15:5:错误:在'?'之前预期的primary-expression token question-mark.cpp:15:6:错误:期望的primary-expression 在'='之前令牌问号-mark.cpp:15:9:错误:预期':'之前 ';'token question-mark.cpp:15:9:错误:期望的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;
我该如何做到这一点?
答案 0 :(得分:9)
这些是GCC扩展运营商。 a <?= b
与a = min(a, b)
具有相同的含义(>?=
是“max”运算符),但它仅评估其左侧表达式一次。当a
是变量时,这并不重要,但当a
表示表达式时,它可能会有所不同,尤其是当表达式具有副作用时。例如,在
*dest++ <?= *src++;
++
中的dest++
只会评估一次。
这两个运营商现在都是deprecated。
答案 1 :(得分:3)
这是GCC扩展。 x >?= y
相当于:
x = max(x, y);
我有一段时间没见过它。