FIX: "Dacă" condiție nu funcționează corect atunci când executați o aplicație Visual C++ care este dezvoltat în Visual Studio 2010 SP1

Traduceri articole Traduceri articole
ID articol: 2719783
Măriți totul | Reduceți totul

În această pagină

Simptome

Luați în considerare următorul scenariu:
  • Utilizați Microsoft Visual Studio 2010 pachet Service Pack 1 (SP1) pentru a dezvolta o aplicație Visual C++.
  • Codul sursă al aplicației îndeplinește următoarele condiții:
    • Codul sursă conține o instrucțiune IF într-o buclă imbricate.
    • Dacă condiție conține un cec care determină dacă o variabilă de întreg semnat este negativ, și, de asemenea, un cec care determină dacă variabila întreg semnat este mai mare decât un alt număr.
    • Codul care este în afara condiție dacă are o func?ie liniară care utilizează variabila de semnat.
  • Compilați aplicația utilizând linia Către de comandă sau Visual Studio 2010.

    Notă Să compilați cererea în marcă de timp ce o opțiune de compilare este activată.
  • Executați aplicația.
În acest scenariu, instrucțiune IF nu funcționează corect.

Rezoluție

Informații despre remedierea rapidă

O remediere rapidă este acum disponibilă de la Microsoft. Cu toate acestea, acesta este destinat pentru a corecta numai problema descrisă în acest articol. Aplicați-l numai pe sistemele care întâmpină această problemă anume. Această remediere rapidă poate să necesite testare suplimentară. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următoarea actualizare software care conține această remediere rapidă.

Pentru a rezolva imediat problema, contactați Serviciile de asistență pentru clienți Microsoft pentru a obține remedierea rapidă. Pentru o listă completă de numere de telefon serviciilor de asistență pentru clienții Microsoft și informații despre costurile de asistență, vizitați următorul site Web Microsoft:
http://support.Microsoft.com/contactus/?ws=support
Notă În cazuri speciale, costurile sunt de obicei pentru apelurile de asistență pot fi revocate dacă un profesionist de suport Microsoft stabilește că o anumită actualizare va rezolva problema. Costurile uzuale de asistență se vor aplica pentru întrebări suplimentare de asistență și pentru probleme ce nu fac obiectul actualizării în chestiune.

Cerințe preliminare

Pentru a aplica această remediere rapidă, trebuie să aveți Visual Studio 2010 SP1 instalat.

Informații cu privire la necesitatea unui restart

Nu trebuie să reporniți computerul după ce instalați remedierea rapidă dacă fișierele afectate nu sunt utilizate în timpul procesului de instalare. Vă recomandăm să închideți toate componentele legate de Visual Studio 2010 înainte de a instala remedierea rapidă.

Informații despre înlocuirea remedierilor rapide

Această remediere rapidă nu înlocuiește orice altă remediere rapidă.

Informații cu privire la fișiere

Versiunea în engleză a acestei remedieri rapide are atributele de fișier (sau atribute de fișier mai târziu) enumerate în următorul tabel. Datele și orele acestor fișiere sunt prezentate în ora universală (UTC). Când vizualizați informațiile despre fișiere, este convertit la ora locală. Pentru a afla diferența între universal și ora locală, utilizați Fusul orar fila în Data și ora element din Panou de control.
Pentru toate versiunile acceptate de Visual Studio 2010
Reduceți tabelulMăriți tabelul
Nume de fi?ierVersiunea fișieruluiDimensiune fișierDataPlatforma
C2.dll16.0.40219.4042,608,19213-Dec-2012x 86
C2.dll16.0.40219.4042,494,52813-Dec-2012x 86
C2.dll16.0.40219.4042,593,34413-Dec-2012x 86
C2.dll16.0.40219.4042,962,49613-Dec-2012x 64

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft listate în secțiunea "Se aplică la".

Informații suplimentare

Pentru mai multe informații despre opțiunile de Visual C++ /O , du-te la următorul site Web MSDN:
Informații generale despre /O opțiuni
Pentru a reproduce această problemă, executați o aplicație de C++ care foloseste urmatorul cod:
#include "stdafx.h"
 
int main()
{
        for( int i = -1; i <= 3; i++ ) 
        {
               for( int j = -1; j <= 3; j++ ) 
               {
                      if (i >= 0 && i < 3 && j >= 0 && j < 3)
                      {
                            printf("%d\n", i * 3 + j);
                      }
               }
        }
        return 0;
}
După ce executați aplicația, primiți următorul rezultat:
-3
-2
-1
0
1
2
3
4
5
6
7
8
Cu toate acestea, vă așteptați următoarele rezultate în această situație:
0
1
2
3
4
5
6
7
8

Proprietă?i

ID articol: 2719783 - Ultima examinare: 10 ianuarie 2013 - Revizie: 4.0
Cuvinte cheie: 
kbqfe kbfix kbexpertiseadvanced kbhotfixserver kbsurveynew kbmt KB2719783 KbMtro
Traducere automată
IMPORTANT: Acest articol a fost tradus de software-ul de traducere automată Microsoft, si nu de un traducător. Microsoft vă oferă atât articole traduse de persoane, cât și articole traduse automat, astfel incat aveti access la toate articolele din Baza noastră de informatii în limba dvs. materna. Totuși, un articol tradus automat nu este întotdeauna perfect. Acesta poate conține greșeli de vocabular, sintaxă sau gramatică, la fel cum un vorbitor străin poate face greșeli vorbind limba dvs. materna. Compania Microsoft nu este responsabilă pentru nici o inexactitate, eroare sau daună cauzată de traducerea necorespunzătoare a conținutului sau de utilizarea traducerii necorespunzătoare de către clienții nostri. De asemenea, Microsoft actualizează frecvent software-ul de traducere automată.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 2719783

Trimite?i feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com