fragen zum cast in C

OP #6776879
Lesenswert?

Guten morgen,
ich habe mal eine frage zum casten von Variablen in C.
1
#define OFFSET 500u
2

3
uint16_t var = 65500u;
4

5
uint16_t res1;
6
uint16_t res2;
7

8
res1 = var + OFFSET;
9
res2 = (uint16)(var + OFFSET);

bei res2 bekomme ich 465 heraus. Bei res1 bekomme ich 66000 heraus.
ist res1 dann automatisch auf uint32 gecastet worden? welchen typ hat 
var dann nach dieser berechnung?
Gast #6776946
Lesenswert?

1
#include <stdint.h>
2

3
#define OFFSET 500u
4

5
int main() {
6
  uint16_t var = 65500u;
7
  uint16_t res1;
8
  uint16_t res2;
9

10
  res1 = var + OFFSET;
11
  res2 = (uint16_t)(var + OFFSET);
12

13
  return 0;
14
}

Ich bekomme 464 für beide Variablen im Debugger.
#6776955
Lesenswert?

>res2 = (uint16)(var + OFFSET);

uint16 soll wohl uint16_t sein, oder?
Ich empfehle immer den Originalcode zu kopieren und nicht neu zu tippen.
Fehler im Originalcode werden beim Abtippen entweder übersehen oder neue 
werden eingebaut.

Der wichtigste Fehler liegt also zuerst mal in der Diskrepanz zwischen 
Originalcode und Fragebeitrag.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren