Página 1 de 2
Bug no Harbour
Enviado: 11 Jan 2016 15:50
por Kapiaba
Como resolver isto no HARBOUR? Em xHarbour funciona normal. No HARBOUR da erro de Sintaxe.
Código: Selecionar todos
MEMVAR x
FUNCTION MAIN()
// ? 1 ^^ 2
x := Cube( 1 )
? x
RETURN NIL
Function Cube( n )
Return n ^^ 2
Obg. abs.
Bug no Harbour
Enviado: 11 Jan 2016 16:43
por Jairo Maia
Olá Kapiaba,
Uma curiosidade: Tem certeza que a função Cube() é nativa do [x]Harbour? Não é uma função que você inseriu em seu sistema?
Também será que ela não tem alguma crítica, já que 1 não é passível de exponenciação (no caso, elevado ao cubo)?
Bug no Harbour
Enviado: 11 Jan 2016 17:07
por Kapiaba
Boa tarde Jairo, você pode fazer assim: ? 1 ^^ 2 que dará erro de sintaxe, já no xHarbour, retronará: 3.
Você pode trocar o nome da função para o seu gosto. o que importa é o 1 ^^ 2 ok?
Obg. abs.
Bug no Harbour
Enviado: 11 Jan 2016 17:24
por Jairo Maia
Olá Kapiaba,
Muito curioso isso. Mas como gosto de aprender coisas novas (e não tenho dúvida, penso que todos gostamos), o bug então não é do xHarbour? porque se:
? 1 ^^ 2 retorna 3 no xHarbour, está retornando 1 + 2 = 3.
Pelo que sei o circunflexo é sinal de exponenciação, então:
Código: Selecionar todos
? 1 ^ 1000000 // retorna 1
? 2 ^ 2 // retorna 4
? 2 ^ 3 // retorna 8, e assim sucessivamente...
Só não entendo porque duplo circunflexo.
Bug no Harbour
Enviado: 12 Jan 2016 09:28
por Kapiaba
Jairo:
https://books.google.com.br/books?id=vr ... er&f=false
A minha dúvida, é porque não compila com HARBOUR?
Bug no Harbour
Enviado: 12 Jan 2016 09:44
por JoséQuintas
Tá falando desta parte?
Bug no Harbour
Enviado: 12 Jan 2016 09:55
por Jairo Maia
Kapiaba, veja: o correto é apenas
1 circunflexo, ou
duplo asterisco.
Não há operador com duplo circunflexo. Você disse que o xHarbour aceita, mas veja que apesar do xHarbour aceitar o resultado não é exponeciação. Parece que xHarbour permuta duplo circunflexo por adição pelo que você disse.
Código: Selecionar todos
// Usando circuflexo:
? 2 ^ 3 // ( 2 x 2 x 2 ) = 8
? 2 ^ 4 // ( 2 x 2 x 2 x 2 ) = 16
?
// Usando duplo asterisco:
? 2 ** 3 // ( 2 x 2 x 2 ) = 8
? 2 ** 4 // ( 2 x 2 x 2 x 2 ) = 16
Bug no Harbour
Enviado: 12 Jan 2016 09:59
por Kapiaba
valeu Jairo, entendi. Muito obrigado.
Bug no Harbour
Enviado: 12 Jan 2016 09:59
por JoséQuintas
Até esqueci de mencionar:
Que perigo, aceitar coisa errada.
Ponto para o Harbour.
E um ponto bem grande.... rs
Bug no Harbour
Enviado: 12 Jan 2016 10:03
por Kapiaba
kkk, assim compila nos dois, como só uso xHarbour, fiquei na dúvida, estou iniciando testes no Harbour, para comparar.
Assim, funciona nos dois:
Código: Selecionar todos
MEMVAR x
FUNCTION MAIN()
// ? 1 ^^ 2
x := Cube( 1 )
? x
RETURN NIL
Function Cube( n )
Return n ^ 2
Obg. abs.
Bug no Harbour
Enviado: 13 Jan 2016 12:13
por JoséQuintas
Assim já é bug do programador.... rs
Um número ao cubo é ele elevado a três, e colocou dois.
Provavelmente é só teste, mas não resisti em comentar.
Bug no Harbour
Enviado: 13 Jan 2016 18:54
por asimoes
Do manual do xHarbour:
// The example shows some results of the "**" operator.
PROCEDURE Main
? 5 ** 0 // result: 1.00
? 5 ** 1 // result: 5.00
? 5 ** 2 // result: 25.00
? 5 ** -2 // result: 0.04
? -5 ** 2 // result: 25.00
? 5 ˆ 0 // result: 1.00
? 5 ˆ 1 // result: 5.00
? 5 ˆ 2 // result: 25.00
? 5 ˆ -2 // result: 0.04
? -5 ˆ 2 // result: 25.00
RETURN
Bug no Harbour
Enviado: 13 Jan 2016 18:57
por asimoes
Kapiaba,
xHarbour ficou sem pai e mãe, cuidado com os bug´s !
Bug no Harbour
Enviado: 13 Jan 2016 19:14
por JoséQuintas
É até estranho, já que existe o produto comercial xHarbour.
Deveria até ser o contrário.
Bug no Harbour
Enviado: 13 Jan 2016 20:24
por asimoes
Quintas,
Eu conheço quem mantém o xHarbour comercial, inclusive já levou uma chamada não lembro se foi do Viktot ou Przemyslaw, mas está postado aqui no fórum.
De está usando o código Harbour na versão comercial sem critério nenhum.
Numa tentativa de evoluir para o nível do Harbour.