OT odcitanie v C

Michal Gregor a2x1nptda8 na email.cz
Čtvrtek Duben 24 11:13:22 CEST 2014


Boleni hlavy :-)

Hned prvni radek, chybi tam zavorka, takze musim zbytecne premyslet nad 
poradim vyhodnocovani v C:

  if (l - h < 3) result |= 1;

Druha vec co vyleze z "l - h" unsigned nebo signed? Vzhledem k prapodivnym 
vlastnostech ruznych prekladcu se clovek muze dockat velmi zvlastnich 
vysledku.

Michal Gregor

----- Original Message ----- 
From: "Jan Waclawek" <konfera na efton.sk>
To: "HW-news" <hw-list na list.hw.cz>
Sent: Thursday, April 24, 2014 10:14 AM
Subject: OT odcitanie v C


Aky je vysledok?

#include <stdint.h>

volatile uint32_t l;
volatile uint16_t h;
volatile uint8_t result;

int main(void) {

  l = 0x00000002;
  h = 0xFFFE;

  result = 0;

  if (l - h < 3) result |= 1;
  if ( ((uint16_t)l - h) < 3 ) result |= 2;
  if ( (uint16_t)(l - h) < 3 ) result |= 4;
  if ( (uint16_t)((uint16_t)l - h) < 3 ) result |= 8;

  if (l - h < 10) result |= 16;
  if ( ((uint16_t)l - h) < 10 ) result |= 32;
  if ( (uint16_t)(l - h) < 10 ) result |= 64;
  if ( (uint16_t)((uint16_t)l - h) < 10 ) result |= 128;


  while(1) {
  };
}


Aplikacia: mam 32-bitovy volne beziaci casovac (l), a potrebujem odmerat
nejaky kratky cas, menej ako 65535 tikov (do h si odlozim hodnotu na
zaciatku odmeriavania).

wek

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list 



Další informace o konferenci Hw-list