The UNIX and Linux Forums  


Go Back   Die UNIX-und Linux-Foren > Top Foren > High-Level-Programmierung
.
Google unix.com



High-Level-Programmierung Post Fragen zu C, C + +, Java, SQL, und andere Programmiersprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Wird sich dieses Skript in crontab Wirkung So 9? thepurple SUN Solaris 2 10-05-2007 05:31 AM
Vorübergehend deaktivieren Wirkung von Set-e in ksh ugeek Shell Programmierung und Scripting 1 03-28-2007 05:21 AM
Wie Eigenschaften Wirkung Skript? Chiefos UNIX for Dummies Questions & Answers 1 06-21-2006 07:23 AM
Auswirkungen der Preemptive Kernel sriram.ec UNIX für Fortgeschrittene und Experten 2 03-15-2006 01:43 AM
rekursive Wirkung! sskb UNIX for Dummies Questions & Answers 2 01-30-2003 12:05 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Suche diesen Thread Bewertung: Thread Rating: 1 votes, 2.00 average. Anzeige-Modi
  #1 (permalink)  
Old 11-20-2008
cdbug cdbug is offline
Registrierte Nutzer
  
 

Join Date: Oct 2008
Beiträge: 52
seltsamen Effekt: wenn ... sonst in C Einfluss einer früheren Erklärung

Ich schreibe einen kurzen Code in C

es kann gut funktionieren, aber wenn ich ein, wenn ... else ... Struktur, eine Berechnung vor der Struktur können nicht eine richtige Ergebnis

Zusammenstellung und Ausführung kann das gut, aber das Ergebnis ist falsch. Sehr merkwürdig

(1)
y2 \u003d expression; / / y2 \u003d 0 immer 0 Fehler
.................

Hinzufügen: if (a-> is_root) c \u003d m2 - y2;
else f \u003d m2 - y2;


(2)

y2 \u003d expression; / / y2 \u003d 0 immer 0 Fehler
.................

Hinzufügen: if (a-> is_root) c \u003d m2 - y2;
if (! a-> is_root) f \u003d m2 - y2;


(3)
y2 \u003d expression; / / y2 \u003d Normalwert; normalen
.................

hinzufügen: / / if (a-> is_root) c \u003d m2 - y2;
if (! a-> is_root) f \u003d m2 - y2;


(4)

y2 \u003d expression; / / y2 \u003d Normalwert; normalen
.................

Hinzufügen: if (a-> is_root) c \u003d m2 - y2;
/ / if (! a-> is_root) f \u003d m2 - y2;

(5)
y2 \u003d expression; / / y2 \u003d Normalwert; normalen

hinzufügen: / / if (a-> is_root) c \u003d m2 - y2;
/ / if (! a-> is_root) f \u003d m2 - y2;

Trouble: nicht verwenden können, wenn ... else ... normalerweise

Frage: (1), wenn ... else ... beeinflussen können, eine frühere Erklärung, warum?
(2) Wie um das Problem zu lösen?

Zuletzt bearbeitet von cdbug; am 11-20-2008 05:38 AM..
  #2 (permalink)  
Old 11-20-2008
Respekt redoubtable is offline
Registrierte Nutzer
  
 

Join Date: Aug 2008
Ort: Portugal
Beiträge: 242
Es wäre hilfreich, wenn Sie könnte eine compilierbaren Beispiel für Ihr Problem.
  #3 (permalink)  
Old 11-20-2008
cdbug cdbug is offline
Registrierte Nutzer
  
 

Join Date: Oct 2008
Beiträge: 52
Dies geschieht in einer großen Aufgabe, die einen relativ komplizierten Algorithmus.

Einfach gesprochen, seine Struktur ist als solche:
___________________________________________________________
einige grundlegende Berechnung
------------------------------

y \u003d expression;

-------------------------------
____________________________________________________________
einige Operationen
--------------------------------

--------------------------------

if (
Block 1;
)

else (
if (Block 2;)
else (Block 3;)
)

Die Struktur der Blöcke 2 und 3 wird die Art und Weise, wie y berechnet. Das Ergebnis ist falsch. Ich es durch gdb. Die fünf oben genannten Ergebnisse sind erhältlich bei der gleichen Umgebung mit Ausnahme der Änderungen in den beiden Blöcken

In vielen Ausführungen, und ist immer gleich auf 0 gesetzt. Andernfalls wird es sehr viel größer als ein Wert.

Aber wenn einer oder jeder der beiden Blöcke wird entfernt, und erhalten einen normalen Wert.

Ich kann nicht verstehen,
  #4 (permalink)  
Old 11-20-2008
jlliagre jlliagre is offline Forum Advisor  
ɹǝsn sıɹɐlosuǝdo
  
 

Join Date: Dezember 2007
Ort: Paris
Posts: 1475
Ich fürchte, Ihre Beschreibung des Problems geben, keine Ahnung.
Ohne einen compilierbaren Beispiel, niemand wird zu erraten, was schief gelaufen ist, mit Ihrem Code.
  #5 (permalink)  
Old 11-21-2008
Respekt redoubtable is offline
Registrierte Nutzer
  
 

Join Date: Aug 2008
Ort: Portugal
Beiträge: 242
Die einzig mögliche Situation hier ist, dass block2 oder block3 sind überfüllt eine Variable auf dem Stack und die Funktion Ihres y var wird verändert.

Eine Funktion, die Stack besteht (ein Wachstum von hohen Speicher zu wenig Speicher) von Variablen (in umgekehrter Reihenfolge), eip, esp, Namen und Funktion esp.

Hier ist ein einfaches Beispiel für Ihre mögliche Situation:

Code:
void of()
{
    char a[10];
    char b[10];
    strcpy (a, "aaaaaaaaaa");
    printf ("%s\n", a);
    strcpy(b, "bbbbbbbbbboverflow");
    printf ("%s\n", a);
}

void
main ()
{
    of();
}

Wie Sie sehen können, variable b Overflows in Variable a.
  #6 (permalink)  
Old 11-23-2008
cdbug cdbug is offline
Registrierte Nutzer
  
 

Join Date: Oct 2008
Beiträge: 52
Die falschen Wert zugeordnet ist, wenn y ausführen "y \u003d expression;"

in gdb, "py" wird nach den falschen Wert runing die obige Erklärung ab.

, sondern "Ausdruck p" gibt den richtigen Wert.

block2 und block3 sind wie folgt aus:

if (a-> is_root) c \u003d m2 - y2;
else f \u003d m2 - y2;

Wie schon gesagt:
nur eine Erklärung: if (a-> is_root) c \u003d m2 - y2; / / y2 normalen
nur eine Erklärung: if (! a-> is_root) f \u003d m2 - y2; / / y2 normalen

aber:

if (a-> is_root) c \u003d m2 - y2;
else f \u003d m2 - y2;

oder

if (a-> is_root) c \u003d m2 - y2;
if (! a-> is_root) f \u003d m2 - y2;

beide y2 anormal. "y2 \u003d Ausdruck" ist weit weg von if__ andere Struktur __

Vielen Dank für Ihren Unterricht

Zuletzt bearbeitet von cdbug; am 11-23-2008 04:28 AM..
  #7 (permalink)  
Old 11-23-2008
Respekt redoubtable is offline
Registrierte Nutzer
  
 

Join Date: Aug 2008
Ort: Portugal
Beiträge: 242
Hum! Welche Art von var y2? Was ist die Ausdruck zugeordnet werden? Es gibt wirklich ein paar Dinge, die dazu führen, dass ist so ein bisschen schwer zu helfen, ohne die volle compilierbaren Code.
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 11:24 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0