I noticed that some compilers treat "int" as unsigned instead of signed, and that most have it as an option. Is code portable if you don't specify signed or unsigned?
Yes, code is portable if you don't specify signed, because signed is the default by the Standards. However, it is true that many compilers let you play with that at compile time -- even modern ones. I don't know why, though... probably to quiet the hysterical raisins in there.