[rosedu-general] [techblog] Undefined & unspecified behaviour in C

Adrian Scoica adrian.scoica at gmail.com
Sat Jul 28 01:50:19 EEST 2012


2012/7/28 Mihai Maruseac <mihai.maruseac at gmail.com>:
> 2012/7/28 Alexandru Juncu <alexj at rosedu.org>:
>>> https://github.com/rosedu/techblog/commit/701f08b96323bdb7e55f5e31c8c0af7cfed37296
>>> https://github.com/rosedu/techblog/blob/master/_posts/2012-07-29-weird-fact-in-c.md
>>
>> You are kidding, right? Nu există un site randat cu propuneri?
> Nop, s-a modificat asta cam acum o lună. Se builduiește local sau se
> vede pe github :)

Meh, presupun ca nu conteaza, nu moare nimeni sa faca review la cod
sursa, desi... recunosc ca imi taie considerabil din rabdare.

Revenind la chestii mai utile, am cateva propuneri:

1. Nu stiu daca intra la capitolul asta sau nu, dar GCC trateaza
artimetica pe void* ca si cum ar fi pe char*, ceea ce e o extensie de
compilator.

2. Overflow-ul intregilor cu semn. (De obicei, MAXINT + 1 face MININT,
dar nu e specificat in standard ca ar trebui sa se intample asa).

Daca esti dispus sa intri si in C++, mai am doua dragute:

1. Ordinea de invocare a contructorilor globali.
// spatiul global
A a;
B b;

Unde ambii constructori fac apeleaza fix inc() si dec() din exemplul tau.

2. (asta e interesant, mai ales pentru ca in C99 e bine definit) *NULL
e nedefinit. Nu se garanteaza Segmentation Fault.


More information about the rosedu-general mailing list