tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
216
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    FJK FJK ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    158
    Hi,

    hab mal eine kleine simple frage,

    kann man in c# einer variablen einen festen werte bereich zuteilen?

    zB
    Radius von 0 bis 2^32
    wenn dann Radius = 1 ist, geschieht folgendes
    Radius - 4 = 0

    oder
    Grad von 0 bis 359
    wenn Grad = 359 ist
    Grad + 2 = 1

    ich weiß das dass zwei unterschiedliche Fälle sind, einmal mit überlauf und einmal ohne.
    klar könnte man es auch mit einer if Anweisung regeln, aber jedes mal diese Überprüfung einzufügen macht den Code unübersichtlich.

    ich hab schon an Bit operationen gedacht
    wie ist es wenn man einen unsign int hat, und einen kleineren Wert als 0 bekommt, fängt er dann nicht wieder beim größten Wert an?

    für C++ würde mich das auch intressieren

    gruß
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    3.992
    Zitat Zitat von FJK Beitrag anzeigen
    wie ist es wenn man einen unsigned int hat, und einen kleineren Wert als 0 bekommt, fängt er dann nicht wieder beim größten Wert an?

    für C++ würde mich das auch intressieren
    Für C und C++: Ja, da wird am anderen Ende weitergemacht
     

  3. #3
    Izzy84 Tutorials.de Gastzugang
    Ich denke da wird dir nur die if-Abfrage bleiben.
    Du musst die ja auch nicht an jeder Stelle einfügen.

    Erstell eine Methode die die Überprüfung übernimmt und entsprechend reagiert (Überlauf ja/nein) und diese Methode kann dann ja immer aufgerufen werden. MMn ohnehin schöner als die selbe Abfrage an 50Stellen stehen zu haben.

    Aber ich kenne das .NET Framework auch nicht auswendig, vlt kennt ja jemand eine bessere Möglichkeit
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    7.983
    Hi.

    Es gibt keine Möglichkeit einen Wertebereich festzulegen (so das der Compiler diesen automatisch überprüft bzw. einhält).

    Für den 2. Fall verwendet man üblicherweise Modulo Operationen:
    Code cpp:
    1
    2
    
    int i = 359;
    i = (i + 2) % 360;

    \edit: Man kann sich z.B. eine Struktur dermaßen erstellen:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    public struct Grad {
        private int _value;
        
        public Grad(int i) {
            _value = i % 360; 
        }
        public static implicit operator int(Grad d) {
            return d.Value;
        }
        public static implicit operator Grad(int i) {
            return new Grad(i);
        }
        
        public int Value {
            get {
                return _value;
            }
            set {
                _value = value % 360;
            }
        }
        
        public override string ToString () {
            return Value.ToString();
        }
    }
    Verwendung:
    Code csharp:
    1
    2
    3
    4
    
    Grad g = 359;
    g += 2;
     
    println(g); // == 1
    Gruß
    Geändert von deepthroat (12.08.10 um 12:26 Uhr)
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Es darf nur einen geben!
    Von XChris im Forum .NET Café
    Antworten: 4
    Letzter Beitrag: 10.03.10, 11:20
  2. Button einen Wert geben
    Von zuckerbrini im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 29.01.09, 21:29
  3. <div>-Element einen Focus geben
    Von Geflügel im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 01.09.07, 11:03
  4. Includes geben keine URL-Variablen weiter
    Von Firestorm696 im Forum PHP
    Antworten: 6
    Letzter Beitrag: 04.03.06, 17:37