From: "JOA" Newsgroups: comp.os.msdos.djgpp Subject: PROBLEM WITH FUNCTION RAND() Date: Fri, 8 May 1998 21:29:23 +0200 Organization: Telefonica Transmision de Datos Lines: 12 Message-ID: <6ivreu$jo5$2@talia.mad.ibernet.es> NNTP-Posting-Host: iv13.diandel.com To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Hello. When i make a program (i want print a rand number into the screen) whit this function or random function,and execute it a few times the random numbers donīt change. The function randomize() isn`t in the help of Rhide. Thanks || __dpmi_lock_linear_region(&mi) < 0 > || __dpmi_set_segment_base_address(ldt, ADDR) < 0 This is setting the segment base to the physical address of your device, when it should be using the linear location (as it stands, there is no point in making the address mapping at all because you don't do anything with the linear address that it returns). > || __dpmi_set_segment_limit(ldt, 0x10000 - 1) < 0) > { > printf("physical mapping error\n"); > exit(1); > } Although this is technically correct (ANSI C guarantees shortcircuit evaluation for chains of logical operations like this), I feel that it is quite confusing to string all your function calls together like this. Some pre-ANSI compilers might evaluate this construct in the wrong order, and I had to look carefully at it before I could see that it was ok. IMHO it would be much clearer if you did each of these calls as a separate operation. -- Shawn Hargreaves - shawn AT talula DOT demon DOT co DOT uk - http://www.talula.demon.co.uk/ "Miracles are nothing if you've got the wrong intentions" - Mike Keneally