Я знаю, что если за номером следует U-суффикс, он обрабатывается как unsigned. Но почему следующая программа печатает правильное значение переменной i, даже если оно инициализируется отрицательным значением. (Составлено с GCC 4.9.2, 4.8.2, 4.7.1 &)U суффикс в объявлении переменной
Program1.cpp
#include <iostream>
int main()
{
int i=-5U;
std::cout<<i; // prints -5 on gcc 4.9.2, 4.8.2, & 4.7.1
}
Program2.cpp
#include <iostream>
int main()
{
auto i=-5U;
std::cout<<i; // prints large positive number as output
}
Но если я использую автоматическое ключевое слово (Тип deducer new C++ 0x), он дает мне большое положительное число, как ожидалось.
Пожалуйста, исправьте меня, если я что-то неправильно понимаю.
Если бы я должен был догадаться, я бы сказал, что число, которое вы получаете, будет чем-то вроде линий (2^32) -5, что составляет 4 294 967 261. Правильно? –
@AlexZywicki: правый !!! – Destructor