エラー、バグ、質問 - ページ 2762 1...275527562757275827592760276127622763276427652766276727682769...3185 新しいコメント Aleksey Mavrin 2020.05.31 13:43 #27611 Igor Makanu: をチェックしました。 OK、コンパイラの警告 なしで動作します 感謝 笑われるかもしれませんが、それすらも警告なしに動作します uchar c[16]; int ini2=0xFFFF; ArrayInitialize(c, (uchar)ini2); Maxim Kuznetsov 2020.05.31 13:58 #27612 Aleksey Mavrin: 笑われるかもしれませんが、これでも警告を出さずに動くんです でも、これがUBへの道であり、次のビルドでトリッキーなバグを取り除く道でもあるのです :-) int foo=-1; uchar bar=(uchar)foo; // чему должен быть равен bar ? Stanislav Korotky 2020.05.31 14:00 #27613 Igor Makanu: をチェックしました。 OK、コンパイラの警告 なしで動作します 感謝 この場合、なぜArrayInitializeの呼び出しが必要なのでしょうか?uchar uc[16] = {0xFF}; と書けばよいのでは? ArrayInitializeは動的に分散された配列に対して意味を持つが、ここでは記述時にサイズが分かっているはずである。 Igor Makanu 2020.05.31 14:02 #27614 Aleksey Mavrin: 笑われそうですが、これでも警告なしで動作します というのはおかしい、正しい初期化ではない、なぜそうしたのか理解できないかもしれない。 ucharにキャストする際に、上位バイトが切り捨てられることは明らかです。 Stanislav Korotky:この場合、なぜArrayInitializeの呼び出しが必要なのでしょうか?uchar uc[16] = {0xFF}; と書けばよいのでは? ArrayInitializeは動的に分散された配列に対して意味があり、ここではサイズが記述の時点で分かっているはずである。 うまくいかない 印刷を解除すると、最初の要素が255、残りの要素が0, 0, 0, ... となります。 Andrei Trukhanovich 2020.05.31 14:15 #27615 Igor Makanu: OK、コンパイラの警告 なしで動作します ゴーストがない場合は、通常このようになります。 ArrayInitialize(uc, '\xFF'); UPD いいえ、警告です。このようなリテラルは ushort 型です。 Sergey Dzyublik 2020.05.31 14:54 #27616 もう一度、平常心で...void OnStart(){ uchar uc[16]; ArrayInitialize (uc, -1); ArrayPrint(uc); // 255 255 255 255 255 ... } Alain Verleyen 2020.05.31 15:11 #27617 Sergey Dzyublik : もう一度、同じ土俵で... 何が問題なのか? Aleksey Mavrin 2020.05.31 19:44 #27618 Sergey Dzyublik: 改めてその場で... 完全に混乱しています ) 128と0xFFの定数については警告されますが、同じ値を持つint変数については警告されません。 さらに、定数-1intについても警告を出さない。何か理屈があるのでしょうか? s.s. -1で理解できるかと思いますが、ルール上、最大値で任意の符号なし値に還元されます。 Maxim Kuznetsov 2020.05.31 20:45 #27619 Andrei Trukhanovich: そんなゴーストがいなければ UPD いいえ、警告です。このようなリテラルは ushort 型です。 '\xFF' ?ワオ...を4個(たまに開いている)ロールにしています。 void OnStart() { ushort foo='\xFF'; } PS/たまには、近くにホームページを持っている人がいたら、平手打ちしてあげてください。 Oleg Breus 2020.06.01 06:30 #27620 ビルド2460と2470では、すべての取引を削除し、自動更新を無効にし、新しい注文を開くと、彼らはすべて、これは起こらなかったとアドバイザーと指標の一部がエラー400とエラー401を書く前に再表示されますが、彼らはエラーなしでコンパイルが動作したくないです....。 1...275527562757275827592760276127622763276427652766276727682769...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
をチェックしました。
OK、コンパイラの警告 なしで動作します
感謝
笑われるかもしれませんが、それすらも警告なしに動作します
笑われるかもしれませんが、これでも警告を出さずに動くんです
でも、これがUBへの道であり、次のビルドでトリッキーなバグを取り除く道でもあるのです :-)
int foo=-1;
uchar bar=(uchar)foo; // чему должен быть равен bar ?
をチェックしました。
OK、コンパイラの警告 なしで動作します
感謝
この場合、なぜArrayInitializeの呼び出しが必要なのでしょうか?uchar uc[16] = {0xFF}; と書けばよいのでは?
ArrayInitializeは動的に分散された配列に対して意味を持つが、ここでは記述時にサイズが分かっているはずである。
笑われそうですが、これでも警告なしで動作します
というのはおかしい、正しい初期化ではない、なぜそうしたのか理解できないかもしれない。
ucharにキャストする際に、上位バイトが切り捨てられることは明らかです。
この場合、なぜArrayInitializeの呼び出しが必要なのでしょうか?uchar uc[16] = {0xFF}; と書けばよいのでは?
ArrayInitializeは動的に分散された配列に対して意味があり、ここではサイズが記述の時点で分かっているはずである。
うまくいかない
印刷を解除すると、最初の要素が255、残りの要素が0, 0, 0, ... となります。
OK、コンパイラの警告 なしで動作します
ゴーストがない場合は、通常このようになります。
UPD いいえ、警告です。このようなリテラルは ushort 型です。もう一度、同じ土俵で...
改めてその場で...
完全に混乱しています )
128と0xFFの定数については警告されますが、同じ値を持つint変数については警告されません。
さらに、定数-1intについても警告を出さない。何か理屈があるのでしょうか?
s.s. -1で理解できるかと思いますが、ルール上、最大値で任意の符号なし値に還元されます。そんなゴーストがいなければ
UPD いいえ、警告です。このようなリテラルは ushort 型です。'\xFF'
?ワオ...を4個(たまに開いている)ロールにしています。
void OnStart()
{
ushort foo='\xFF';
}
PS/たまには、近くにホームページを持っている人がいたら、平手打ちしてあげてください。