Исправление: «IF» условие не будет работать правильно при запуске приложения Visual C++, созданные в Visual Studio 2010 с пакетом обновления 1

Переводы статьи Переводы статьи
Код статьи: 2719783
Развернуть все | Свернуть все

В этой статье

Проблема

Рассмотрим следующий сценарий:
  • С помощью Microsoft Visual Studio 2010 Пакет обновления 1 (SP1) для разработки приложений Visual C++.
  • Исходный код приложения, удовлетворяющие следующим условиям:
    • Исходный код содержит оператор IF в вложенного цикла.
    • Условие IF содержит проверку, которая определяет, является ли переменная целого числа со знаком минус, а также проверку, определяющую, является ли переменная целого числа со знаком больше, чем другой номер.
    • Код, который находится за пределами Условие IF имеет линейную функцию, которая использует переменную со знаком.
  • Скомпилируйте приложение с помощью Visual Studio 2010 или командной строки.

    Примечание Компиляция приложения во время компиляции включена.
  • Запустите приложение.
В этом случае инструкция IF не работает правильно.

Решение

Сведения об исправлении

Доступно исправление от корпорации Майкрософт. Тем не менее оно предназначено для устранения проблемы, описанной в этой статье. Предлагаемое исправление должно применяться исключительно в системах, в которых обнаружена эта специфическая неполадка. Это исправление может проходить дополнительное тестирование. Таким образом если вы не наблюдаете эту проблему, рекомендуется отложить ее решение до выхода ближайшего пакета обновления, содержащего это исправление.

Чтобы решить проблему немедленно, обратитесь в службу поддержки пользователей Майкрософт для получения исправления. Полный список телефонов служб поддержки клиентов корпорации Майкрософт и сведения о стоимости поддержки посетите следующий веб-узел корпорации Майкрософт:
http://support.Microsoft.com/contactus/?ws=support
Примечание В особых случаях расходов, предусмотренная для звонков в службу поддержки может быть отменена, если специалистом службы поддержки Майкрософт определяет, что обновление будет решением проблемы. Дополнительные услуги по технической поддержке, не связанные с данным исправлением, оплачиваются на стандартных условиях.

Необходимые условия

Чтобы применить данное исправление, у вас должна быть установлена Visual Studio 2010 SP1.

Необходимость перезагрузки

Необходимо перезагрузить компьютер после установки исправления, если файлы не используются в процессе установки. Рекомендуется закрыть все компоненты, связанные с Visual Studio 2010, перед установкой исправления.

Сведения о замене исправлений

Это исправление не заменяет других исправлений.

Сведения о файле

Английская версия данного исправления содержит атрибуты файла (или более поздними), приведенные в следующей таблице. Дата и время для этих файлов указаны в UTC. При просмотре сведений о файле, оно преобразуется в локальное время. Чтобы узнать разницу между временем по Гринвичу и местным временем, следует использовать Часовой пояс на вкладке Дата и время элемент панели управления.
Для всех поддерживаемых версий Visual Studio 2010
Свернуть эту таблицуРазвернуть эту таблицу
Имя файлаВерсия файлаРазмер файлаДатаПлатформы
C2.dll16.0.40219.4042,608,19213-Дек-2012x86
C2.dll16.0.40219.4042,494,52813-Дек-2012x86
C2.dll16.0.40219.4042,593,34413-Дек-2012x86
C2.dll16.0.40219.4042,962,49613-Дек-2012x64

Статус

Корпорация Майкрософт подтверждает, что это является проблемой в продуктах Майкрософт, перечисленных в разделе «Относится к».

Дополнительная информация

Дополнительные сведения о параметрах Visual C++ /O посетите следующий веб-узел MSDN:
Общие сведения о параметрах /O
Можно воспроизвести эту проблему, запустите приложение C++, использующий следующий код:
#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;
}
После запуска приложения появляется следующий результат:
-3
-2
-1
0
1
2
3
4
5
6
7
8
Однако в этом случае предполагается следующие результаты:
0
1
2
3
4
5
6
7
8

Свойства

Код статьи: 2719783 - Последний отзыв: 10 января 2013 г. - Revision: 4.0
Ключевые слова: 
kbqfe kbfix kbexpertiseadvanced kbhotfixserver kbsurveynew kbmt KB2719783 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: 2719783

Отправить отзыв

 

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