<?= 运算符 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 &lt;?= ba = min(a, b) 具有相同的含义(&gt;?= 是“max”运算符),但它只对其左侧表达式求值一次。当a 是一个变量时,这并不重要,但当a 表示一个表达式时,它可能会有所不同,尤其是当表达式有副作用时。例如,在

*dest++ <?= *src++;

dest++ 中的 ++ 只会被评估一次。

这两个运营商现在都是deprecated。

【讨论】:

我不确定它是否完全相同,因为&lt;?= 运算符似乎只评估a 一次(例如考虑f() &lt;?= g())。【参考方案2】:

这是一个 GCC 扩展。 x &gt;?= y 相当于:

x = max(x, y);

我已经有一段时间没有看到它使用了。

【讨论】:

应该是x = max(x, y)? @tacp:他们提到了here,但只是说他们已经被删除了。

以上是关于<?= 运算符 C++ 更大 更少 问号 等号的主要内容,如果未能解决你的问题,请参考以下文章

用更少的内存在 C++ 中实现二维数组

Python调用C++

Python调用C++

Python调用C++

Softmax回归介绍

Ruby问号运算符,这是啥意思? [复制]