2013-02-24 3 views
0

У меня есть код на C++, как этотВозвращаемое значение программы в Cygwin

int main(int argc, char** argv){ 
    exit(-1); 
} 

я на машине Windows, сделать-ки и выполнения этой программы в Cygwin. Я хочу вернуть значение эха (для целей тестирования).

echo $? 

дает 255 insted -1, why? (Переполнение?)

+0

возможно потому, что оболочка окна использует байты без знака для типов возврата, и -1 представлен в качестве байта без знака 255 –

+0

да, конечно, но мне нужно выйти со значением ниже 0 – rluks

+0

, вы выходите со значением ниже 0. Если оболочка Windows не может ее представлять, какая польза от этого? Если вы захватили его в оболочке и передали в другую программу, вы можете конвертировать из беззнакового байта в подписанный int, и у вас будет отрицательный ответ. –

ответ

0

выхода принимает целые числа (0-255), return -1 отличается, выход возвращает 255, когда дается значение вне диапазона

+0

стоило бы проверить это; попробуйте 'exit (-2)' и посмотрите, все ли вы получите 255 или 254. 254 указывает, что это подписанное беззнаковое преобразование, 255 будет указывать значение вне диапазона. –

+0

Все стоит проверить. – Gjordis

+0

Возврат, похоже, имеет такое же поведение, как и выход в вопросе возвращаемого значения в $? – rluks

Смежные вопросы