Korriger: "IF-betingelse ikke fungerer riktig når du kjører en Visual C++-program som utvikles i Visual Studio 2010 SP1

Artikkeloversettelser Artikkeloversettelser
Artikkel-ID: 2719783
Vis alt | Skjul alt

På denne siden

Symptom

Tenk deg følgende:
  • Du kan bruke Microsoft Visual Studio 2010 Service Pack 1 (SP1) til å utvikle et program i Visual C++.
  • Kildekoden for programmet oppfyller følgende vilkår:
    • Kildekoden inneholder en IF-setning i en nestet løkke.
    • Hvis vilkåret inneholder en sjekk som fastslår om et signert heltallsvariabel er negativ, og en sjekk som bestemmer om heltall med fortegn-variabelen er større enn et annet tall.
    • Koden som er utenfor Hvis-betingelse har en lineær funksjon som bruker variabelen signert.
  • Du kompilere programmet ved hjelp av Visual Studio 2010 eller ledeteksten.

    Obs! Du kompilere programmet mens et alternativ for kompilering er aktivert.
  • Du kjører programmet.
I dette tilfellet fungerer hvis-uttrykket ikke på riktig måte.

Løsning

Informasjon om hurtigreparasjon

En støttet hurtigreparasjon er nå tilgjengelig fra Microsoft. Den er ment å løse problemet som er beskrevet i denne artikkelen. Bruk den bare på systemer som har dette bestemte problemet. Denne hurtigreparasjonen kan gjennomgå ytterligere testing. Hvis du ikke er alvorlig påvirket av dette problemet, anbefaler vi derfor at du venter på neste programvareoppdatering som inneholder denne hurtigreparasjonen.

Hvis du vil løse dette problemet umiddelbart, kontakter du Microsoft kundestøtte for å få hurtigreparasjonen. For en fullstendig liste over telefonnumre for Microsofts kundestøttetjenester og informasjon om støttekostnader, kan du gå til følgende Microsoft-webområde:
http://support.Microsoft.com/contactus/?ws=support
Obs! I spesielle tilfeller kan avgifter som vanligvis påløper for oppringinger til kundestøtte avbrytes hvis en Microsoft-tekniker avgjør at en bestemt oppdatering løser problemet. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av den gjeldende oppdateringen.

Forutsetninger

Hvis du vil bruke denne hurtigreparasjonen, må du ha Visual Studio 2010 SP1 installert.

Krav om omstart

Du har ikke datamaskinen på nytt etter at du har installert hurtigreparasjonen, hvis de berørte filene ikke er i bruk under installasjonen. Vi anbefaler at du lukker alle Visual Studio 2010-relaterte komponenter før du installerer hurtigreparasjonen.

Informasjon om erstatning av hurtigreparasjoner

Denne hurtigreparasjonen erstatter ikke andre hurtigreparasjoner.

Filinformasjon

Den engelskspråklige versjonen av denne hurtigreparasjonen har filattributtene (eller senere filattributter) som er oppført i tabellen nedenfor. Datoene og klokkeslettene for disse filene er oppført i Coordinated Universal Time (UTC). Når du viser filinformasjonen, konverteres den til lokal tid. Hvis du vil finne forskjellen mellom UTC og lokal tid, bruker den Tidssone kategorien i den Dato og klokkeslett elementet i Kontrollpanel.
For alle støttede versjoner av Visual Studio 2010
Skjul denne tabellenVis denne tabellen
FilnavnFilversjonFilstørrelseDatoPlattform
C2.dll16.0.40219.4042,608,19213-DES-2012x 86
C2.dll16.0.40219.4042,494,52813-DES-2012x 86
C2.dll16.0.40219.4042,593,34413-DES-2012x 86
C2.dll16.0.40219.4042,962,49613-DES-2012x 64

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Mer informasjon

Hvis du vil ha mer informasjon om Visual C++ /O alternativer, kan du gå til følgende MSDN-webområde:
Generell informasjon om /O alternativer
Hvis du vil gjenskape dette problemet, kjører du en C++-program som bruker følgende kode:
#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;
}
Når du kjører programmet, kan du få følgende resultat:
-3
-2
-1
0
1
2
3
4
5
6
7
8
Imidlertid forventer du følgende resultater i denne situasjonen:
0
1
2
3
4
5
6
7
8

Egenskaper

Artikkel-ID: 2719783 - Forrige gjennomgang: 10. januar 2013 - Gjennomgang: 4.0
Nøkkelord: 
kbqfe kbfix kbexpertiseadvanced kbhotfixserver kbsurveynew kbmt KB2719783 KbMtno
Maskinoversatt
Viktig: Denne artikkelen har blitt maskinoversatt, og dermed ikke oversatt av en person. For at alle artikler i vår database skal være oversatt til ditt språk, vil Microsoft benytte både personoversatte og maskinoversatte artikler. Det er viktig å merke seg at en maskinoversatt artikkel ikke alltid er perfekt. Det kan forekomme stave, strukturelle eller grammatiske feil. Microsoft er ikke ansvarlig for unøyaktigheter, feil eller skade ved bruk av innhold i artikkel som måtte forårsakes av feiloversettelse. Microsoft vil jevnlig oppdatere sitt maskinoversettelses programvare.
Den engelske versjonen av denne artikkelen er den følgende: 2719783

Gi tilbakemelding

 

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