define-Wert abfragen in if
-
supertux schrieb:
ja, 18_16 == 24_10
Hexazahl mit Dezimalzahl --> aber 0x200 + 24 sollte doch auch funktionieren, weil intern eh alles umgewandelt wird???
Oder übersehe ich etwas anderes?
Tim
-
derTim schrieb:
supertux schrieb:
ja, 18_16 == 24_10
Hexazahl mit Dezimalzahl --> aber 0x200 + 24 sollte doch auch funktionieren, weil intern eh alles umgewandelt wird???
Klar funktioniert das - das Ergebnis ist 0x218==536. (intern rechnet C sowieso mit Binärzahlen)
-
CStoll schrieb:
derTim schrieb:
supertux schrieb:
ja, 18_16 == 24_10
Hexazahl mit Dezimalzahl --> aber 0x200 + 24 sollte doch auch funktionieren, weil intern eh alles umgewandelt wird???
Klar funktioniert das - das Ergebnis ist 0x218==536. (intern rechnet C sowieso mit Binärzahlen)
kannst du das noch mal für mich ausführlicher erklären? also die 18 am ende entsprechen der 24 aber die 0x218 versteh ich leider nicht
Tim
-
Wenn du 0x200+24 addierst, was kommt da wohl heraus?
-
ja aber wo kommen die 0x200 her???
if(testdefine != ((unsigned int) 24))
testdefine = 0x18
Tim
-
ok jetzt hab ich`s kapiert... die 0x200 waren nur ein Bsp:
im prinzip möchte ich nur wissen, warum die if-Anweisung gültig ist:
#define testdefine ((unsigned int) 24)
if(testdefine != ((unsigned int) 24))
Tim
-
bzw. warum ist diese Aussage wahr
if(24 != 24)
Tim
-
diese Aussage ist nicht wahr.
-
wenn ich das so schreibe, wird bei mir die If-Anweisung immer ausgeführt und nicht die else-anweisung...
also ist da irgendwas faul???
und bei
if(testdefine != ((unsigned int) 24))
sollte auch die else-Ausführung bearbeitet werden, oder???
Tim
-
zeig mal lieber deinen ganzen Code
-
supertux schrieb:
zeig mal lieber deinen ganzen Code
das ist der ganze Code.... mehr steht wirklich nicht drinnen...
#define testdefine ((unsigned int) 24) int main(void) { int i=0; if(testdefine != ((unsigned int) 24)) i++; else i=3; while(1); }
d.h. hier macht der Compiler irgendwas falsch - richtig?
Tim
-
und woran kannst du erkennen (ohne printf oder debugger), dass i++ ausgeführt wird?
-
indem ich breakpoints setze
Tim
-
also, bei mir liefert dieser Code
#include <stdio.h> #define testdefine ((unsigned int) 24) int main(void) { int i=0; if(testdefine != ((unsigned int) 24)) i++; else i=3; printf("i = %d\n", i); return 0; }
yanez@pselap08:~> gcc b.c -ob yanez@pselap08:~> ./b i = 3
das ist ja in Ordnung.
-
so würde ich das auch erwarten... naja mal eine mail an die entsprechende firma schicken...
Tim
-
derTim schrieb:
so würde ich das auch erwarten... naja mal eine mail an die entsprechende firma schicken...
Lass das lieber, wenn du auf die Blamage verzichten willst.
Lass dir lieber mal den Wert von testdefine ausgeben.
Welcher Compiler?
-
betman schrieb:
derTim schrieb:
so würde ich das auch erwarten... naja mal eine mail an die entsprechende firma schicken...
Lass das lieber, wenn du auf die Blamage verzichten willst.
Lass dir lieber mal den Wert von testdefine ausgeben.
Welcher Compiler?hab mir grad testdefine ausgeben lassen mittels printf() und es ist 24...
Tim