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

 
Igor Makanu:

をチェックしました。

OK、コンパイラの警告 なしで動作します

感謝

笑われるかもしれませんが、それすらも警告なしに動作します

uchar c[16];
int ini2=0xFFFF;
ArrayInitialize(c, (uchar)ini2);
 
Aleksey Mavrin:

笑われるかもしれませんが、これでも警告を出さずに動くんです

でも、これがUBへの道であり、次のビルドでトリッキーなバグを取り除く道でもあるのです :-)

int foo=-1;

uchar bar=(uchar)foo; // чему должен быть равен bar ?

 
Igor Makanu:

をチェックしました。

OK、コンパイラの警告 なしで動作します

感謝

この場合、なぜArrayInitializeの呼び出しが必要なのでしょうか?uchar uc[16] = {0xFF}; と書けばよいのでは?

ArrayInitializeは動的に分散された配列に対して意味を持つが、ここでは記述時にサイズが分かっているはずである。

 
Aleksey Mavrin:

笑われそうですが、これでも警告なしで動作します

というのはおかしい、正しい初期化ではない、なぜそうしたのか理解できないかもしれない。

ucharにキャストする際に、上位バイトが切り捨てられることは明らかです。


Stanislav Korotky:

この場合、なぜArrayInitializeの呼び出しが必要なのでしょうか?uchar uc[16] = {0xFF}; と書けばよいのでは?

ArrayInitializeは動的に分散された配列に対して意味があり、ここではサイズが記述の時点で分かっているはずである。

うまくいかない

印刷を解除すると、最初の要素が255、残りの要素が0, 0, 0, ... となります。

 
Igor Makanu:

OK、コンパイラの警告 なしで動作します

ゴーストがない場合は、通常このようになります。

ArrayInitialize(uc, '\xFF');
UPD いいえ、警告です。このようなリテラルは ushort 型です。
 
もう一度、平常心で...
void OnStart(){
   uchar uc[16];
   ArrayInitialize (uc, -1);
   ArrayPrint(uc);  // 255 255 255 255 255 ...
}
 
Sergey Dzyublik :
もう一度、同じ土俵で...
何が問題なのか?
 
Sergey Dzyublik:
改めてその場で...

完全に混乱しています )

128と0xFFの定数については警告されますが、同じ値を持つint変数については警告されません。

さらに、定数-1intについても警告を出さない。何か理屈があるのでしょうか?

s.s. -1で理解できるかと思いますが、ルール上、最大値で任意の符号なし値に還元されます。
 
Andrei Trukhanovich:

そんなゴーストがいなければ

UPD いいえ、警告です。このようなリテラルは ushort 型です。
'\xFF'

?ワオ...を4個(たまに開いている)ロールにしています。

void OnStart()
  {
ushort foo='\xFF';

  }

PS/たまには、近くにホームページを持っている人がいたら、平手打ちしてあげてください。

 
ビルド2460と2470では、すべての取引を削除し、自動更新を無効にし、新しい注文を開くと、彼らはすべて、これは起こらなかったとアドバイザーと指標の一部がエラー400とエラー401を書く前に再表示されますが、彼らはエラーなしでコンパイルが動作したくないです....。