BSDForen.de  

Zurück   BSDForen.de > Geekstuff > Programmieren

Antwort
 
Themen-Optionen Thema bewerten Ansicht
Alt 08.08.2012, 19:52   #1
darktrym
NetBSD Paladin
 
Benutzerbild von darktrym
 
Registrierungsdatum: Aug 2006
Ort: Gera
Beiträge: 666
C/C++ Term in Bedingung

Kann mir mal jemand folgendes Verhalten erklären:
Code:
#include <stdio.h> int main() { unsigned int a=126, b=127; unsigned char c=126, d=127; if(a-b < 0) { printf("1. true\n"); } if(c-d < 0) { printf("2. true\n"); } }
Ausgabe:
Zitat:
2. true
__________________
"Don't just believe that because something is trendy that it's good", Knuth 2012

NetBSD_6.99.19@Thinkpad_X220i
darktrym ist offline   Mit Zitat antworten
Alt 09.08.2012, 00:14   #2
waki87
Registered User
 
Registrierungsdatum: Mar 2010
Beiträge: 145
C macht keine Arithmetik mit Typen, die kleiner als ein int sind. In so einem Fall wird dann einfach erstmal nach "int" konvertiert. Das "unsigned" ist bei einem char also nutzlos. Du müßtest das Resultat der zweiten Subtraktion nach "unsigned char" casten, also (unsigned char)(c-d). Vgl. http://publications.gbdirect.co.uk/c...rithmetic.html unter 2.8.1.1.
waki87 ist offline   Mit Zitat antworten
Alt 09.08.2012, 06:08   #3
darktrym
NetBSD Paladin
 
Benutzerbild von darktrym
 
Registrierungsdatum: Aug 2006
Ort: Gera
Beiträge: 666
Danke dir. Der erste Fall ist mir erst gestern zum ersten Mal begegnet und ich konnt's nicht erklären.
__________________
"Don't just believe that because something is trendy that it's good", Knuth 2012

NetBSD_6.99.19@Thinkpad_X220i
darktrym ist offline   Mit Zitat antworten
Alt 09.08.2012, 06:36   #4
Kamikaze
Parasprite
 
Benutzerbild von Kamikaze
 
Registrierungsdatum: May 2005
Ort: /Earth/Europe/Germany/Karlsruhe
Beiträge: 9.634
Kamikaze eine Nachricht über ICQ schicken Kamikaze eine Nachricht über MSN schicken
Das ganze nennt sich Integer Promotion Rules und war bereits teil von ANSI-C. Bei diversen 8-Bit Compilern kann man das abschalten.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything.
Kamikaze ist offline   Mit Zitat antworten
Antwort


Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus
Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
>gnuls -la --color | more #geht nicht? HaraldLangner FreeBSD - Anwendungen und Ports 6 12.03.2008 18:56
a/e term schmiert ab Dustin FreeBSD - Allgemein 0 11.07.2003 00:39


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 Uhr.


Powered by vBulletin (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.