0
Я не могу объяснить себе, почему это даст 87. Моя IDE - это кодовые блоки и мой компилятор GNU GCC Compiler.Почему я получаю этот неожиданный вывод здесь? «87»
unsigned long getHigherValue(unsigned long Value1, unsigned long Value2);
int main(){
int a, b = 20;
b = 22;
/*============
It works fine if I replace the two lines above with "int a = 20; int b = 22"
=============*/
int c = getHigherValue(a, b);
printf("%d", c);
return 0;
}
unsigned long getHigherValue(unsigned long Value1, unsigned long Value2){
unsigned long HigherValue = Value2;
if(Value1 > Value2){
HigherValue = Value1;
}
if(Value1 == Value2){
HigherValue = 0;
}
return HigherValue;
}
Выход:
О да ... Спасибо. – Yannis
Итак, теперь вопрос очень прост: почему неопределенное поведение всегда одно и то же? то есть я получаю 87. Связано ли это с тем, как оно помещается в память? Моя цель состояла в том, чтобы получить какие-то знания в любом случае :) – Yannis
@Yannis: Вероятно, вы просто видите, что в то время происходило то, что произошло в этом регистре или месте стека. –