Karen Shaeffer <[EMAIL PROTECTED]> writes: > int main(int argc, char * argv[]) { > const int ic = 0; > const int * cip; > int * ip; > cip = ⁣ > ip = (int *)cip; > *ip = 5; > printf("const int ic = %d *cip = %d *ip = %d\n", ic, *cip, *ip); > printf("&ic = %p cip = %p ip = %p\n", &ic, cip, ip); > gcip = &gic; > gip = (int *)gcip; > #if 0 > *gip = 5; > printf("global const int gic = %d *gcip = %d *gip = %d\n", > gic, *gcip, *gip); > printf("&gic = %p gcip = %p gip = %p\n", &gic, gcip, gip); > #endif > return 0; > } > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ~~~~~~~~~~~~~~~~ output ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > $ const_ints > const int ic = 0 *cip = 5 *ip = 5 > &ic = 0xbfbd72a0 cip = 0xbfbd72a0 ip = 0xbfbd72a0 > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > The global variable code would segfault, as I expected. But the > auto variable code gives this illogical result. I would appreciate > comments. I am not on this list, so please ensure I am cc'd with > any responses. I'll be happy to file a bug, if it is a bug.
Modifying a variable which is declared const is undefined behaviour. You can not predict what happens. Ian