エラー、バグ、質問 - ページ 1127

 
Fleder:

この再配置は何をするのか? tはULONG_MAX-1より 低く、そのままである。

私はこの間違った例を引用しました - それは int との比較でしたが、ここでは long との比較です。

for(int t=0
void OnStart()
{
  long t=0;
 

uint型と ulong型は int型とlong型より優先順位が高いです。

二項演算で結合する場合の変換について

比較される式でより高い型への変換を使用するのは論理的なことであろう。

しかし、これはチェック対象のループ式には当てはまらないようです。

 
ULONG_MAXは それ自体には型がなく、intと比較するとintになり、longと比較するとlongになります。
 
A100:
ULONG_MAXは それ自体で型を持たない
この番号の型は18446744073709551615ですか?
 
A100:
ULONG_MAXは それ自体には型がなく、intと比較するとintになり、longと比較するとlongになります。

また、ulongと比較すると?

void OnStart()
{
  ulong n=18446744073709551615;
  Print(ULONG_MAX==n);   //true
}
 
A100:
ULONG_MAXは それ自体には型がなく、intと比較するとintになり、longと比較するとlongになります。

その逆はあり得るのでしょうか?

intとlongの比較ではulongでしょうか。

 
Fleder:

その逆はあり得るのでしょうか?

intとlongの比較ではulongでしょうか。

符号付きと符号なしを比較する場合、一方が明示的に他方に変換されない限り、おそらくビット単位の比較になるとの警告が表示される
 

サイクルは符号付きタイプに変換されているようです。

void OnStart()
{
  ulong n=0;
  for(ulong i=0;i<ULONG_MAX;i++) {n++;}
  Print("n = ",n);          //0
  Print((long)ULONG_MAX);   //-1
}

また、反復は行われない。

 
A100:
符号付きと符号なしを比較する場合、一方が明示的に他方に変換されない限り、おそらくビット単位の比較となるため、警告が出されます。
void OnStart()
{
  long l=13;
  ulong u=13;
  bool compare=(l==u);           //предупреждения нет
  Print("compare = ",compare);   //compare = true
}

 
bool f( int i, uint j )
{
        return ( i < j );
}
が、そういうものなのです。