s3c Postado Novembro 9, 2006 Denunciar Share Postado Novembro 9, 2006 Pessoal, neste código:begin While true do begin . . . end; end;Porque ele satisfaz a condição ? Que true é esse ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Novembro 10, 2006 Autor Denunciar Share Postado Novembro 10, 2006 Estranho, no D6 e Turbo ele incrementa.Quanto essa última procedure algo, você está chamando ela em algum lugar ? porque se não chamar ele não gera código mesmo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Novembro 10, 2006 Denunciar Share Postado Novembro 10, 2006 Quanto essa última procedure algo, você está chamando ela em algum lugar ? porque se não chamar ele não gera código mesmo.Mesmo se chamar não gera código, porque não há nada a fazer.Bom creio que o caso esteja resolvido, né? Quando se coloca While True o compilador identifica e coloca um Jump incondicional(jmp) sem fazer teste nenhum, e quando há uma condição usa-se cmp para fazer a comparação e um jump condicional(jl, jnl, jg, já..........). Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Novembro 11, 2006 Denunciar Share Postado Novembro 11, 2006 Outra coisa, se ele sabe que está em loop infinito, porque não é dada ao menos uma msg de warning ?s3c, Está aí uma boa pergunta! Ele realmente poderia. Mas o fato de permitir este tipo de construção (loop infinito), talvez tornasse complexo o processo para esta avaliação já que a implementação que se encontra no "recheio" poderia "dar um nó" no compilador. Talvez apenas avisar da possibilidade de que ocorra, mas sem garantias.Help do Delphi:A while statement is similar to a repeat statement, except that the control condition is evaluated before the first execution of the statement sequence. Hence, if the condition is false, the statement sequence is never executed.The syntax of a while statement iswhile expression do statementwhere expression returns a Boolean value and statement can be a compound statement. The while statement executes its constituent statement repeatedly, testing expression before each iteration. As long as expression returns True, execution continues.Então: While true do; para mim true seria o retorno booleano da avaliação de uma expressão que neste caso não existe.s3c acho que todo o "problema" na verdade é gerado por uma questão de interpretação. Seja nossa ou de quem compôs o help. Isto porquê as constantes são tratadas como expressões. Vejamos alguns fragmentos do arquivo de ajuda:Tópico: Boolean types[...]Boolean values are denoted by the predefined constants True and False.[...]Assim entendemos que True e False são processadas pelo compilador como contantes.Tópico: True constants (aqui não é sobre a constante TRUE e sim "constantes de verdade")[...]The syntax for declaring a true constant isconst identifier = constantExpressionwhere identifier is any valid identifier and constantExpression is an expression that the compiler can evaluate without executing your program. (see constant expression - abaixo)[...]Tópico: Constant ExpressionsA constant expression is an expression that the compiler can evaluate without executing the program in which it occurs. Constant expressions include numerals; character strings; true constants; values of enumerated types; the special constants True, False, and nil; and expressions built exclusively from these elements with operators, typecasts, and set constructors.[...]Quanto essa última procedure algo, você está chamando ela em algum lugar ? porque se não chamar ele não gera código mesmo.Mesmo se chamar não gera código, porque não há nada a fazer.Bom creio que o caso esteja resolvido, né?Pô Thales, agora que eu ia participar. :D Quando se coloca While True o compilador identifica e coloca um Jump incondicional(jmp) sem fazer teste nenhum, e quando há uma condição usa-se cmp para fazer a comparação e um jump condicional(jl, jnl, jg, já..........).Mas daí eu já acho que é uma questão de otimização do compilador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
s3c
Pessoal, neste código:
Porque ele satisfaz a condição ? Que true é esse ?
Link para o comentário
Compartilhar em outros sites
28 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.