Hatalar, hatalar, sorular - sayfa 2761

 
Aleksey Mavrin :

0xFF muhtemelen derleyiciyi 4 bayta çevirir.

hayır, ancak doğru şekilde başlatılıyor

 uchar uc[ 16 ];
ArrayInitialize (uc,( uchar ) 0xFF ); // truncation of constant value        
ArrayPrint (uc);                   //     255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
 

İyi günler, sorun nasıl çözülür:

Optimize ederken bir hata çıkıyor:

2020.05.31 15:05:32.738 çekirdek 7 genetik geçiş (0, 53), 0:00:00.153'te "OnTick işlevinde (sıfır bölme, Experts\e1.ex5, dosya e1.mq5, satır 826, sütun 73) kritik çalışma zamanı hatası 503" hatasıyla test edildi

double Mix1 = NormalizeDouble((MathAbs(ZExtLevel[0] - ZExtLevel[1])), 2);

double Mix2 = NormalizeDouble((MathAbs(ZExtLevel[1] - ZExtLevel[2])), 2);

double Mix = NormalizeDouble((Mix1/Mix2),2);

Nerelerdeydin:

1) ondalık basamak sayısını azaltmak için Mix1 ve Mix2'yi çarpar;

2) normalleştirme sırasında karakter sayısını değiştirdi;

3) Tüm ZExtLevel, 0 içermediklerini kontrol etti.


 
Igor Makanu :

hayır, ancak doğru şekilde başlatılıyor

Neden emin değilsin? Varsayılan olarak, bir tamsayı temsil eder. sizeof bunu söylüyor

 
Aleksey Mavrin :

Neden emin değilsin? Varsayılan olarak, bir tamsayı temsil eder. sizeof bunu söylüyor

uint, daha doğrusu.

 
Aleksey Mavrin :

Neden emin değilsin? Varsayılan olarak, bir tamsayı temsil eder. sizeof bunu söylüyor


ayrıca uyarılar olmadan çalışır?

 char c[ 16 ];
ArrayInitialize (c, 127 );

karşılık gelen bir ArrayInitialize imzası olduğundan

 int   ArrayInitialize(
   char     array[],     // инициализируемый массив
   char      value          // значение, которое будет установлено
   );

ve imzasız bir uchar için bilinmeyen bir nedenden dolayı ArrayInitialize() yapmadılar

 
Igor Makanu :

ayrıca uyarılar olmadan çalışır?

karşılık gelen bir ArrayInitialize imzası olduğundan

ve imzasız bir uchar için bilinmeyen bir nedenden dolayı ArrayInitialize() yapmadılar

İmza ya da yokluğuyla ilgili değil. Gerçek şu ki, 4 bayt 1'e dönüştürülür, bilgi teorik olarak kaybolabilir, derleyici bu konuda uyarır.

ArrayInitialize'ı deneyin (c, (char)10000 );

ayrıca bir uyarı olacak

 
Aleksey Mavrin :

İmza ya da yokluğuyla ilgili değil. Gerçek şu ki, 4 bayt 1'e dönüştürülür, bilgi teorik olarak kaybolabilir, derleyici bu konuda uyarır.

ArrayInitialize (c, (char)10000 ) deneyin;

ayrıca bir uyarı olacak

Evet, bunun orijinal olduğu açık

burada soru farklı, char'ın gerçekten gerekli olduğu yer burası mı?

ve uchar'ı StringToCharArray() ve CryptEncode() içinde kullanıyorum ve yardımı gözden geçirirseniz hala

bu yüzden ArrayInitialize kullanarak bir char dizisini başlatabilirim, ancak uchar kullanamıyorum


tamam holivar asil çıktı, bir şeylerin değişeceğinden şüpheliyim;)


Not: 0xFF = 255 (1 bayt)

 
Igor Makanu :

evet her şeyin başından beri olduğu açık

burada soru farklı, char'a gerçekten ihtiyaç duyulan yer burası mı?

StringToCharArray() ve CryptEncode() içinde uchar kullanıyorum ve yardımı gözden geçirirseniz hala

bu yüzden ArrayInitialize kullanarak bir char dizisini başlatabilirim, ancak uchar yapamıyor


tamam, asil holivar çıktı, bir şeylerin değişeceğinden şüpheliyim;)


Not: 0xFF = 255 (1 bayt)

 ArrayInitialize (uc,( char ) 0xFF ); // truncation of constant value         
 
Igor Makanu :

Evet, bunun orijinal olduğu açık

burada soru farklı, char'ın gerçekten gerekli olduğu yer burası mı?

ve uchar'ı StringToCharArray() ve CryptEncode() içinde kullanıyorum ve yardımı gözden geçirirseniz hala

bu yüzden ArrayInitialize kullanarak bir char dizisini başlatabilirim, ancak bir uchar başlatamıyorum

tamam holivar asil çıktı, bir şeylerin değişeceğinden şüpheliyim;)

Not: 0xFF = 255 (1 bayt)

Neden yapamıyorsun anlamıyorum. uchar ile her şey char ile aynı şekilde çalışır.

İlk başta uyarının nedenini sordunuz, çünkü 1'de 4 bayt ve 255 değeri hiç önemli değil. ve 0 ve bir hem 1 hem de 2 ve 4 ve 8 bayt aynı olabilir)

 

Alain Verleyen :

 ArrayInitialize (uc,( char ) 0xFF );

kontrol:

 uchar uc[ 16 ];
ArrayInitialize (uc, ( char ) 0xFF );
ArrayPrint (uc); 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255

Tamam, derleyici uyarıları olmadan çalışır

teşekkürler