|
Author |
Topic: strange behaviour of int() inside parenthesis (Read 428 times) |
|
baffo
|
strange behaviour of int() inside parenthesis
« on: Dec 12th, 2003, 1:46am » |
|
Hello, while working with rev0067, I got strange compilation errors on a conditional. I have pared down the behaviour to this minimal piece of code: an int() conversion between parentheses creates unhappiness in a way I cannot understand. I am not a Java programmer, so maybe this is a very silly question. Anyway here is the example code. int i = 1.0; // can also be a float void setup() { print((1==int(i))); print((int(i)==1)); // this line makes the compiler stop // with "expecting RPAREN, found '('" print((int(i))); // this one does too print((1)); } Of course the example code is completely pointless, but I was going for the minimal case. This has happened with Processing Alpha rev0067, under Windows 2000 Professional. There is nothing inside stderr.txt or the build folder.
|
-- art is not where you think you're going to find it
|
|
|
mKoser
|
Re: strange behaviour of int() inside parenthesis
« Reply #1 on: Dec 12th, 2003, 3:15pm » |
|
you need to use the java-syntax for this (i remember this problem being brought up before, but do not recall if it has been addressed yet!.. Ben?) anyway, this syntax works: Code: float fx = 2.4; int ix; ix = (int)fx; // instead of int(fx) |
| ...so, your code from above would be (just moved around some parentheses): Code: int i = 1; // can also be a float void setup() { print((1==int(i))); print(((int)i==1)); // this line makes the compiler stop // with "expecting RPAREN, found '('" print(((int)i)); // this one does too print((1)); } |
| hope that helps Mikkel
|
mikkel crone koser | www.beyondthree.com | http://processing.beyondthree.com
|
|
|
fry
|
Re: strange behaviour of int() inside parenthesis
« Reply #2 on: Dec 12th, 2003, 4:42pm » |
|
actually the int() stuff works fine, it's when there are double parentheses that causes the problem. so if you change: print((int(i)==1)); to boolean isone = int(i) == 1; print(isone); i'm guessing it'd be ok. apparently this is a difficult bug to fix in the parser (according to danm who wrote the parser code) because of the ambiguity on what parentheses mean, since we're supporting the int(x) syntax.
|
|
|
|
|