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

 
Vladimir Simakov:
いや、開発者のロジックは理解できるが、私としては、必要なときに必要なだけu'y'を明示的に指定したい。

ただ、char型が どのように倒されるかは不明です。

 
コンパイルエラーです。
void OnStart()
{
        Print(typename( char(0))); //Error: '0' - some operator expected
}

が、このように

        Print(typename((char)0) ); //нормально

どんな違いがあるのでしょうか?

 
A100:
コンパイルエラーです。

が、このように

どんな違いがあるのでしょうか?

型)値」だけが型変換で、「型(値)」は一種の初期化であり、あなたの場合は何も返せないようです。長い間、μlを開けていないのですが ))

 
Alexandr Andreev:

μlでは、「(type) value」だけが型変換のようですが、「type (value) 」は一種の初期化で、あなたの場合は何も返せないのですね。長い間、μlを開けて いないのですが ))

だからオープンhttps://www.mql5.com/ru/docs/basis/types/casting

単位:数値の種類を変換する。"明示的な型変換は次のように書きます"...。後略

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 

ええ、私もチェックしました。上に書いたことについて、ずいぶん前にこれに出会ったのを覚えています。誤った情報であることをお詫び申し上げます)。

 
A100:
コンパイルエラーです。

が、このように

どんな違いがあるのでしょうか?

はい、これもコンパイルエラー です

#define  J '+'          // char

void OnStart()
{
    Print((typename)J);
}
#define  J '+'          // char

void OnStart()
{
    Print((typename)(J));
}
 
Vladimir Simakov:
開発者のロジックは非常に明快だが、私としては、必要なときに必要なだけ、u'y'を明確に指定した方がいいと思っている

この理屈は理解できない。どこもかしこも全体最適化、リソースの削減を優先すると、
なぜUnicodeの基本文字種を2バイトに増やすのでしょう。
そのため、mqlの文字列型は 高価になってしまう。
本当に、型の幽霊によるu'sh'

charが代入されるだけで、追加の指定子があった方が良い。

#define  J (char)'+'     // char

void OnStart()
{
    Print(J);           // 43
    Print(typename(J)); // char
}

しかし、この場合はタイプの違いがあります。

#define  J '+'              

void OnStart()
{
   Print(J);                // 43
   Print(typename(J));      // ushort
   Print(typename(char));   // char
}

このユニコードには本当に困ったものです。

 
Roman:

はい、これもコンパイルエラー です。

構文エラーです。(typename)を括弧で囲んだ作業コードの例を挙げてください。括弧内に(OnStart)と書いた方がいいかもしれません。

 

MQLコンパイラのメッセージに疑問がある別の例。

#ifdef __MQL__
void OnStart() {
{
}
#endif //Error: '#endif' - unexpected end of program

とは何の関係があるのでしょうか。また、実際のエラーの場所をどのように推測するのでしょうか。

C++がエラーについて通知するとき

#ifdef __cplusplus
void OnStart() {
{
} //Error: expected '}' at end of input
#endif
 

mqlの開発者がこのページを読んでくれているといいのですが。

いつになったら普通のバリデーターを作るんだ?

mt4用のValidatorにバグがあります。他の時間軸の始値、終値、ローソク足が取得できない。