【问题标题】:What is the <?= operator in C++ [duplicate]什么是 C++ 中的 <?= 运算符 [重复]
【发布时间】:2011-08-25 18:26:43
【问题描述】:

可能重复:
What does the >?= operator mean?

我想知道我在 C++ 代码中经常看到的 &lt;?= 运算符是什么。它不能在我的系统上编译,但我确信它是正确的。是这样使用的:a &lt;?= something;

另外,我需要做什么才能编译它?

编辑帖子:

请参阅此源代码(它是练习Google Code Jam 比赛获胜者的问题 Square Fields(问题 B)的解决方案 -- 请参阅 here)。我在其他一些提交中也看到了相同的字符模式。

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<sstream>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<numeric>
#include<cmath> using namespace std;

#define ALL(t) t.begin(),t.end()
#define FOR(i,n) for (int i=0; i<(int)(n); i++)
#define FOREACH(i,t) for (typeof(t.begin()) i=t.begin(); i!=t.end(); i++) typedef vector<int> vi; typedef long long int64;

int t[15][1<<15]; int main() {   int N;cin>>N;   for(int c=1;c<=N;c++){
    int n,k,x[30],y[30];
    cin>>n>>k;
    FOR(i,n)cin>>x[i]>>y[i];
    FOR(take,1<<n)if(take){
      int minx=1000000,maxx=-1,miny=1000000,maxy=-1;
      FOR(i,n)if(take&1<<i)minx<?=x[i],maxx>?=x[i],miny<?=y[i],maxy>?=y[i];
      t[1][take]=(maxx-minx)>?(maxy-miny); //      cout<<take<<" "<<t[1][take]<<endl;
    }
    for(int kk=2;kk<=k;kk++)FOR(take,1<<n){
      t[kk][take]=t[kk-1][take];
      for(int take2=take;take2;take2=(take2-1)&take)
        t[kk][take]<?=t[kk-1][take-take2]>?t[1][take2];
    }
    cout<<"Case #"<<c<<": "<<t[k][(1<<n)-1]<<endl;   }   return 0; }

【问题讨论】:

  • 你错了,没有这样的运算符。也许您看到了类似的东西并弄乱了顺序。
  • 可能由于代码页问题导致代码出现乱码。 C++ 中没有这样的运算符。
  • 它一定是一个错字,并且不可能在一个合理一致的 C++ 编译器上编译。这不是a trigraph nor a digraph,而且在我从事 C++ 编程的这些年里,我从未在 C++ 代码中看到过 &lt;?=。你能提供更多的上下文吗? (比如说,你发现的代码 sn-p 有这个?)你正在查看的代码可能根本不是 C++。
  • It doesn't compile on my system, but I'm sure it is correct. 编译线索不够,它正确吗?学会相信你的编译器——在这些事情上它比你更经常是正确的...... :)
  • 刚刚发现是an extension present in older versions of the GCC C++ compiler,这可能是我从未见过这样的运营商的原因。作为副本关闭。

标签: c++ operators


【解决方案1】:

编辑:

它是旧版本 GCC 的扩展。看到这个:

What does the >?= operator mean?

但是扩展名是 &lt;?&gt;? 。我仍然没有看到&lt;?=

6.1 Minimum and Maximum Operators in C++


较早的帖子:

我向你保证,C++ 中没有这样的运算符。肯定是打错了。

程序员很可能想输入&lt;=?:

或者,您可能在此处输入错误,而实际上您打算输入 digraph or trigraph(但您输入的既不是 digraph 也不是 trigraph)。 p>

正如你自己所说的it doesn't compile on my system。会怎样?打错字了。

【讨论】:

  • 看来a &lt;?= b的意思是a = min(a, b),也就是&lt;?运算符的赋值形式。
  • @hammar: 但a&lt;?b 无论如何都会返回最小值。所以&lt;?= 中的分配没有任何区别。
  • &lt;?&lt;?= 就像 ++=。所以它不仅计算最小值,还将结果分配给a
  • @hammar:哦……现在说得通了。
【解决方案2】:

我本来想说它是一个三元运算符,但事实并非如此。这可能是一个错字。

【讨论】:

    【解决方案3】:

    您是否可能与此运算符混淆: a ?乙:丙。 否则,请发布您在其中看到的一些代码的链接,因为它肯定不是普通的 c++。 它可能是另一种语言,但在谷歌上搜索它会返回 nothing,所以我认为这不是答案。

    【讨论】:

    • 我发布了一个示例代码,但由于我的问题已经得到解答。
    猜你喜欢
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 2011-04-17
    • 2014-01-15
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多