오류, 버그, 질문 - 페이지 1127

 
Fleder :

그리고 이 순열은 무엇을 제공합니까? t는 ULONG_MAX -1보다 작으므로 동일하게 유지되었다.

잘못된 예를 들었습니다. int와 비교가 있었지만 여기서는 long

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

uint 및 ulong 유형의 우선순위는 int 및 long 유형보다 높습니다.

이진 연산으로 결합할 때의 변환

비교 표현식에서 이전 유형으로의 변환을 사용하는 것이 논리적입니다.

그러나 체크 루프 표현식의 경우에는 그렇지 않은 것 같습니다.

 
ULONG_MAX 에는 int와 비교하여 유형이 없습니다. long - long에 비해 int가 됩니다.
 
A100 :
ULONG_MAX 자체에 유형이 없습니다.
그리고 이 번호는 어떤 유형 인가요? 18446744073709551615?
 
A100 :
ULONG_MAX 에는 int와 비교하여 유형이 없습니다. long - long에 비해 int가 됩니다.

그리고 ulong에 비해?

 void OnStart ()
{
   ulong n= 18446744073709551615 ;
   Print ( ULONG_MAX ==n);   //true
}
 
A100 :
ULONG_MAX 에는 int와 비교하여 유형이 없습니다. long - long에 비해 int가 됩니다.

아니면 그 반대도 마찬가지인가요?

int와 long은 ulong에 비해 ulong이 될까요?

 
Fleder :

아니면 그 반대도 마찬가지인가요?

int와 long은 ulong에 비해 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 );
}
그래서 있다