Greg,
Thank you for your proof of Fermat's last theorem, your mistake is at line 6. I have been trying to teach you C for so long now that I cannot remember how long it is, but if this is an example of how much you have learned, then perhaps I spent about 20 minutes on your lessons? Run the program I attached and not your incorrect program. Mine confirms that cnt is 5 and that therefore the expression is 10, which your C program is merely confirming. as well as confirming that one should not try to write C at 9PM on a Sunday after a few beers and a curry. unless you are me. If a prior version of jBASE did not return 10 in this instance then it was incorrect. In fact, I think I remember fixing this bug in 4.x (and specifically only at the major point release). or maybe I don't. Perhaps you remember me doing this. nah, it was more than 20 minutes ago ;-) (c.f. The Invisible Gorilla) Anyway, your program is evaluating the expression and storing it in the variable 'res', but then your printf statement is outputting the value of cnt (I think you are missing a letter perhaps? =:?o), which as cnt is has been incremented twice by then, will, as you acidulously demonstrate, have the value 5, thus proving that C thinks that 3 +1 +1 is 5. So, you have fallen for the same issue only worse, in that the ++var will always happen before the binary operator + and so this will be 5 + 5 = 10. However your mistake is even worse because you are not even printing out the correct variable. If you are having trouble typing in the program that I attached to my email in the first place, then please let me know, so I can show you how to type in October when I am back in London. I was going to visit with you of course, but I am not sure if I should be associating with junior C programmers ;-) Now, it could well be that the original parser at some point in 3.x did not have the correct precedence on the pre_increment operator and so it gives the wrong answer. However, the answer that the OP is getting from the latest jBASE is the correct one. In future my eld padwan, you should concentrate on handing out the res due to your old master, otherwise you risk looking like a As I presume that pointing out that your C program is utter crap and merely verifies my much cleverer program, I take it that this is sufficient demolition of your argument and that you will now be buying the second and third rounds as well as the first, as well of course being. Yours respectfully, etc etc, Ben Franklin. From: [email protected] [mailto:[email protected]] On Behalf Of Gregory Cooper Sent: Sunday, September 05, 2010 12:13 PM To: [email protected] Subject: RE: Pre-increment Jim me eld mucker, All very well and good, but .. On jBASE 3.x, the answer given is 9 (and then 15 for the second test). This is what Xze (??) was expecting and differs to what he saw on jBASE 5.x , answers of 10 and 16. So no matter what your argument, the fact we get different answers on different jBASE releases shows that something is wrong. As you were responsible for the jBASE 3.x compiler and not for the jBASE 5.x compiler, I would obviously expect the jBASE 3.x answer to be correct ;-) You then talk about "reference this in C if you don't believe me". Now, not as though I didn't believe you or anything, but writing a simple C program on Suse 11.2 gives this main() { int cnt , res ; cnt = 3 ; res = ++cnt + ++cnt ; printf("cnt = %d\n",cnt); } cnt = 5 So that doesn't match up with either of the jBASE releases or what you had said about C. So there is obviously some behaviour that is hard to pin down with these pre and post increments. I am sure I am missing something here, and await your demolishment of this email to prove you right again ! ;-) Greg From: [email protected] [mailto:[email protected]] On Behalf Of Jim Idle Sent: 02 September 2010 17:11 To: [email protected] Subject: RE: Pre-increment This is correct, reference this in C if you don't believe me. Technically it is because the operator is unary right associative and is 'pre' increment. Hence, the instruction set generated is (roughly): INC CNT in place ; CNT is now 4 INC CNT in place ; CNT is now 5 LD CNT ; 5 ADD CNT ; Add 5 And the answer is 10. I presume that you can derive the sequence for your second example from this. Now contrast that with 'post' increment. Jim #include <stdio.h> int main(int cnt, char * argc[]) { int c, c1; c = 3; printf("Expr is %d\n, c is %d\n\n", ++c + ++c, c); c = 3; printf("Expr is %d\n, c is %d\n\n", c++ + c++, c); } From: [email protected] [mailto:[email protected]] On Behalf Of [ Xze ] Sent: Wednesday, September 01, 2010 5:35 AM To: [email protected] Subject: Pre-increment Hi all! My question pertains to the way that jbase treats pre-increments Consider the following routine: 0004 PROGRAM MY.MATH 0005 0006 CNT = 3 0007 RES = ++CNT + ++CNT 0008 0009 PRINT 'RES = ':RES 0010 RETURN 0011 END The output result is RES = 10 if i change line 007 to RES = ++CNT + ++CNT + ++CNT, then the output result is RES = 16 Can anybody explain this behaviour? (I expected the first case to output RES = 9 and the second RES = 15) My system configuration: OS : AIX 5.3 jbase : Major 5.0 , Minor 20 , Patch 0364 (Change 85159) Regards -- Please read the posting guidelines at: http://groups.google.com/group/jBASE/web/Posting%20Guidelines IMPORTANT: Type T24: at the start of the subject line for questions specific to Globus/T24 To post, send email to [email protected] To unsubscribe, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jBASE?hl=en -- Please read the posting guidelines at: http://groups.google.com/group/jBASE/web/Posting%20Guidelines IMPORTANT: Type T24: at the start of the subject line for questions specific to Globus/T24 To post, send email to [email protected] To unsubscribe, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jBASE?hl=en -- Please read the posting guidelines at: http://groups.google.com/group/jBASE/web/Posting%20Guidelines IMPORTANT: Type T24: at the start of the subject line for questions specific to Globus/T24 To post, send email to [email protected] To unsubscribe, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jBASE?hl=en -- Please read the posting guidelines at: http://groups.google.com/group/jBASE/web/Posting%20Guidelines IMPORTANT: Type T24: at the start of the subject line for questions specific to Globus/T24 To post, send email to [email protected] To unsubscribe, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jBASE?hl=en
