В следующем коде я использовал size_t
в качестве аргумента функции и передал отрицательное значение. Я скомпилировал программу на GCC (Linux), используя следующую команду.
g++ -Wall size.cpp -o size
GCC успешно скомпилирован без предупреждения, но результаты не такие, как я ожидал:
size_t : 18446744073709551615
int : -1
Код:
#include <iostream>
void func1(size_t i)
{
std::cout << "size_t : " << i << std::endl;
}
void func2(int i)
{
std::cout << "int : " << i << std::endl;
}
int main()
{
func1(-1);
func2(-1);
return 0;
}
Почему компилятор не генерирует предупреждения для отрицательного значения с size_t
?
size_t
— беззнаковый тип. - person tkausl   schedule 27.10.2017