Erros, bugs, perguntas - página 2212

 

Caros programadores, por favor esclareçam, é normal que o compilador não dê um aviso sobre a conversão do tipo em tal cadeia?

const bool barsToStart = Bars( _Symbol, _Period, startTime, timeCurrent );
 
A100:

Se aqui

(*) implica A::a = 2, não ::a = 2

então S::q = S::z também deve estar aí implícito, não S::q = ::z

Porque é que S::z estaria aí implícito, se a expressão não está em função do objecto S, mas a nível global.

O nível global é, ou seja, ::z está implícito - sem nenhum destes.

 
Alexey Kozitsyn:

Caros programadores, por favor esclareçam, é normal que o compilador não dê um aviso sobre a conversão do tipo em tal cadeia?

Estranho... Não me diz nada...

 
Georgiy Merts:

Isso é estranho... O meu não diz nada...

É isso mesmo, ele não escreve nada. E ele deveria, penso eu...

 
Alexey Kozitsyn:

É isso mesmo, ele não escreve nada. Mas deveria, penso eu...

Quer dizer que o resultado da int é convertido em bool?

Sim, em teoria, deveria gerar um aviso.

 
Georgiy Merts:

Quer dizer que o resultado da int é convertido em bool?

Sim, é suposto dar um aviso.

Sim, a conversão implícita passa sem aviso prévio.

 
Alexey Kozitsyn:

É isso mesmo, ele não escreve nada. Mas ele devia, penso eu...

Ele deveria. Posso adivinhar porque não o faz. Presume-se que o zero é falso, qualquer coisa que não seja zero é verdade.

ou seja.

bool b1 = 123; // true
b1 = 0; // false

Provavelmente por estas regras, embora, mais uma vez, penso que o aviso deve ser

Escrever no SD.

 
Alexey Volchanskiy:

Escrever para o SD

Sim, eu fiz... mas sem resposta. Em geral, as CBO funcionam de forma estranha: eu escrevo um pedido, o pedido é aceite para consideração. E depois o silêncio. Porque devo apresentar um pedido se não vou responder? E assim por diante, absolutamente todas as aplicações.

 
Alexey Kozitsyn:

Caros programadores, por favor esclareçam, é normal que o compilador não dê um aviso sobre a conversão do tipo em tal cadeia?

A resposta dos promotores:

Какого предупреждения вы ждёте? 0 это false, не 0 - true.
Это обычная практика в логических выражениях

É preciso ter mais cuidado.

 
Alexey Kozitsyn:

Caros programadores, por favor esclareçam, é normal que o compilador não dê um aviso sobre a conversão do tipo em tal cadeia?

Os bares vêem aquilo a que regressa e aquilo a que está a tentar igualá-lo.

const bool barsToStart = Bars( _Symbol, _Period, startTime, timeCurrent ) == 0 ? false : true;
Razão: