Berkeley CSUA MOTD:Entry 19960
Berkeley CSUA MOTD
 
WIKI | FAQ | Tech FAQ
http://csua.com/feed/
2025/05/24 [General] UID:1000 Activity:popular
5/24    

2000/11/30-12/1 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:19960 Activity:high
11/30   In java, if int a=10 and:
        a) a = a + a++;
        b) a = a++ + a;
        The result of a and b SHOULD be the same, but are not. What's up?
           \_ Think about it, its not always going to be the same. Mostly
              likely it will be similar to the following:
              a) 1. fetch value from addr of a and store in reg 1
                 2. fetch value from addr of a and store in reg 2
                 3. increment value stored at addr of a
                 4. add reg1 and reg2 and store at addr of a
                 -> a is 20 (10 + 10)
              b) 1. fetch value from addr of a and store in reg 1
                 2. increment value stored at addr of a
                 3. fetch value from addr of a and store in reg 2
                 4. add reg1 and re2 and store at addr of a
                 -> a is 21 (10 + 11)
        \_ The ++ is executed immediately after its original value is used?
           a) a = 10 + 10 (a now = 11, but very temporarily)
           b) a = 10 + 11
           \_ This is correct: Java (unlike C or C++) specifies that the
              increment happens immediately after its value is used.
        \_ Whoever writes code like this that relies on the implementation
           of execution order should be shot.
              \_ Um, there is only one possible execution order for the code
                 given above according to the rules of precedence.
                 \_ Oh yeah?  Just for "a = a + a++" alone I can get two
                    different results:
                    \_ Those results (and more) are both valid in C++, but
                       in Java only the second can happen.
                    1) Fetch value of "a" on the left of '+', 10.
                       Fetch value of "a++" on the right of '+', 10.
                       Do increment for "a++".  "a" becomes 11.
                       Write result of addition to "a".  "a" becomes 20.
                    2) Fetch value of "a" on the right of '+', 10.
                       Do increment for "a++".  "a" becomes 11.
                       Fetch value of "a" on the left of '+', 11.
                       Write results of addition to "a".  "a" becomes 21.
                       \_ I did not say that a and b are equivalent. I
                          said that there is only one possible order of
                          execution based on the rules of precedence.
                    \_ I guess this falls under the part of the ANSI C spec.
                       that says that the order of execution of subexpressions
                       in an expression is implementation defined. I suppose
                       the following would be possible as well:
                       incr a, fetch a, fetch a, store a -> a = 22
           \_ Oh, you can write code that is independent of execution order?
              You rule.
              \_ No, but I can write code that only relies on execution order
                 that is implementation-indepedent.  E.g. I can write C code
                 like "if (foo() || bar()) {......}" and rely on the fact
                 that foo() is executed before bar().  But I won't write code
                 like "baz(bar(), foo());" and assume that foo() is always
                 executed before bar().
        \_ Wanna really have fun? Run this in C, using native compiler,
           gcc, and others and you'll get a DIFFERENT result. TRY IT!!!
           \_ Okay, I don't see how a and b can ever be the same. You
              are asking for two different actions to be performed.
        \_ Ok, I just tried it on a sun box with gcc.  the answer is 11 in
           both cases.  How can this be?
ERROR, url_link recursive (eces.Colorado.EDU/secure/mindterm2) 2025/05/24 [General] UID:1000 Activity:popular
5/24    

You may also be interested in these entries...
2014/1/14-2/5 [Computer/SW/Languages/C_Cplusplus] UID:54763 Activity:nil
1/14    Why is NULL defined to be "0" in C++ instead of "((void *) 0)" like in
        C?  I have some overloaded functtions where one takes an integer
        parameter and the other a pointer parameter.  When I call it with
        "NULL", the compiler matches it with the integer version instead of
        the pointer version which is a problem.  Other funny effect is that
        sizeof(NULL) is different from sizeof(myPtr).  Thanks.
	...
2013/4/9-5/18 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Apps, Computer/SW/Languages/Perl] UID:54650 Activity:nil
4/04    Is there a good way to diff 2 files that consist of columns of
        floating point numbers, such that it only tells me if there's a
        difference if the numbers on a given line differ by at least a given
        ratio?  Say, 1%?
        \_ Use Excel.
           1. Open foo.txt in Excel.  It should convert all numbers to cells in
	...
2013/4/29-5/18 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:54665 Activity:nil
4/29    Why were C and Java designed to require "break;" statements for a
        "case" section to terminate rather than falling-through to the next
        section?  99% of the time poeple want a "case" section to terminate.
        In fact some compilers issue warning if there is no "break;" statement
        in a "case" section.  Why not just design the languages to have
        termination as the default behavior, and provide a "fallthru;"
	...
2012/7/19-11/7 [Computer/SW/Languages/C_Cplusplus] UID:54439 Activity:nil
7/19    In C or C++, how do I write the code of a function with variable
        number of parameters in order to pass the variable parameters to
        another function that also has variable number of parameters?  Thanks.
        \_ The usual way (works on gcc 3.0+, Visual Studio 2005+):
               #define foo(fmt, ...) printf(fmt, ##__VA_ARGS__)
           The cool new way (works on gcc 4.3+):
	...
2011/3/7-4/20 [Computer/SW/Languages/C_Cplusplus] UID:54056 Activity:nil
3/7     I have a C question.  I have the following source code in two identical
        files t.c and t.cpp:
                #include <stdlib.h>
                int main(int argc, char *argv[]) {
                  const char * const * p1;
                  const char * * p2;
	...
2011/2/5-19 [Computer/SW/Languages/C_Cplusplus] UID:54027 Activity:nil
2/4     random C programming/linker fu question.  If I have
        int main() { printf("%s is at this adddr %p\n", "strlen", strlen); }
        and soda's /proc/sys/kernel/randomize_va_space is 2 (eg; on)
        why is strlen (or any other libc fn) at the same address every time?
        \_ I don't pretend to actually know the right answer to this, but
           could it have something to do with shared libraries?
	...
2010/2/12-3/9 [Computer/SW/Languages/C_Cplusplus] UID:53708 Activity:nil
2/12    I need a way to make a really big C++ executable (~200MBs) that does
        nothing.  No static initialization either.  Any ideas?
        \_ static link in lots of libraries?
        \_ #define a   i=0; i=0; i=0; i=0; i=0; i=0; i=0; i=0; i=0; i=0;
           #define b   a a a a a a a a a a
           #define c   b b b b b b b b b b
	...
2009/9/28-10/8 [Computer/SW/Languages/C_Cplusplus] UID:53409 Activity:nil
9/28    http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
        Java is #1!!! Followed by C, PHP, C++, Visual Basic, Perl,
        C#, Python, Javascript, then finally Ruby. The good news is
        Pascal is going waaaay back up!
        \_ C is still more popular than C++?  I feel much better about myself
           now.
	...
2009/8/7-14 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:53252 Activity:high
8/6     In C one can do "typedef int my_index_t;".  What's the equivalent in
        C#?  Thanks.
        \_ C#? Are you serious? Is this what the class of 2009 learn?
           \_ No.  I have to learn .NET code at work.  I am Class of '93.
           \_ python is what 2009 learns, see the motd thread about recent
              cal courses and languages
	...
2009/7/21-24 [Computer/SW/Languages/Java] UID:53168 Activity:moderate
7/20    For those who care btw, it looks like eclipse is now A Standard Tool
        at UCB ugrad cs, probably replaced emacs.  Furthermore, people get
        angry at seeing Makefiles, (since eclispe takes care of that).  I
        guess it's just a sign of the times.
        \_ The more people at my work use eclipse the less the code is
           managable in emacs.  I'm not sure which application's fault
	...
2013/3/5-26 [Computer/SW/Languages/Java] UID:54618 Activity:nil
3/5     Three emergency Java updates in a month. Why do I have a feeling
        that the third one won't be the last one?
        \_ Bingo!
	...
2012/12/18-2013/1/24 [Computer/SW/Languages/Perl] UID:54561 Activity:nil
12/18   Happy 25th birthday Perl, and FUCK YOU Larry Wall for fucking up
        the computer science formalism that sets back compilers development
        back for at least a decade:
        http://techcrunch.com/2012/12/18/print-happy-25th-birthday-perl
        \_ I tried to learn Perl but was scared away by it.  Maybe scripting
           lanauages have to be like that in order to work well?
	...
2012/8/29-11/7 [Computer/SW/Security] UID:54467 Activity:nil
8/29    There was once a CSUA web page which runs an SSH client for logging
        on to soda.  Does that page still exist?  Can someone remind me of the
        URL please?  Thx.
        \_ what do you mean? instruction on how to ssh into soda?
           \_ No I think he means the ssh applet, which, iirc, was an applet
              that implemented an ssh v1 client.  I think this page went away
	...
2011/12/8-2012/1/10 [Computer/SW/Languages/Java, Computer/SW/Security] UID:54252 Activity:nil
12/8    Java code much worse IRL than pretty much everything else:
        http://preview.tinyurl.com/d5e46cq [ars technica]
	...
2011/4/16-7/13 [Computer/SW/Languages/Python] UID:54086 Activity:nil
4/16    Whoa, I just heard that MIT discontinued 6.001 (classic scheme)
        to 6.01. In fact, 6.00, 6.01 and 6.02 all use Python. What the
        hell? What has the world become? It's a sad sad day. SICP forever!
        \_ old story, they've ditched that shitty book and lang for a while.
        \_ I used to think scheme was cool, then I saw Ka Ping Yee's
           "Beautiful Code" class aka 61a in python, and converted.
	...
2011/2/24-4/20 [Computer/SW/Languages/Java] UID:54048 Activity:nil
2/24    Go Programming Language.  Anyone here use it?  It kind of
        reminds me of java-meets python, and well, that is fitting given it's
        a GOOG product.  What is so special about it?
        \_ as I understand it, it's a suitable OOP-y systems language with more
           structure than C, less complexity than C++, and less overhead than
           Java/Python.
	...
2010/8/8-9/7 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Web] UID:53914 Activity:nil
8/8     Trying to make a list of interesting features languages have
        touted as this whole PL field comes around, trying to see if they
        have basis in the culture of the time: feel free to add some/dispute
        1970 C, "portability"
        1980 C++, classes, oop, iterators, streams, functors, templates
             expert systems
	...
2009/12/5-26 [Computer/SW/Languages/Java] UID:53569 Activity:nil
12/4    what do people have their JAVA_HOME's set to on soda?
        \_ don't. are you trying to get sun java? It is installed, but not
           the default.  check dpkg -l and dpkg -L
           \_ I'm trying to run maven to get scala/lift.net working
              properly and it's complaining that JAVA_HOME is not set.
              \_ you probably want one of the directories in /usr/lib/jvm,
	...