Компилаторщини
36 отговора
0 прегледа
Компилаторщини
if(a>b) return 1;
if(a<b) return -1;
if(a==b) return 0;
Not all control paths return value


Pecunia non olet!
if(a<b) return -1;
if(a==b) return 0;
Not all control paths return value
Pecunia non olet!
Re: Компилаторщини
Ха ха, ако са позамислиш компилаторът винаги е прав! А това като го видях, първото което ми хрумна е, че е сътворено в МЕИ или поне от негов възпитаник.
А какво ще каже компилатора ако
if(a>b) return 1;
else if(a<b) return -1;
else return 0;
Bеer? Mоre?
Плацебото
else if(a<b) return -1;
else return 0;
Bеer? Mоre?
Плацебото
Re: А какво ще каже компилатора ако
Съгласен, ама кво ша кайш да разкараме елсовете, само цапат?
П.П. ето как би станало на един ред
return a > b ? 1 : a < b ? -1 : 0;
П.П. ето как би станало на един ред
return a > b ? 1 : a < b ? -1 : 0;
Редактирано от ГHУCEH®ГHOM на
Разбира ви главата...
Компилаторът си е много прав даже.
Излез от тривиалния случай и се замисли какво става ако a и b са споделени променливи между 2 треда и вторият тред ги променя когато му дойде?
Ако са защитени в критична секция може и да си прав.
Излез от тривиалния случай и се замисли какво става ако a и b са споделени променливи между 2 треда и вторият тред ги променя когато му дойде?
Ако са защитени в критична секция може и да си прав.
ти наясно ли си ...
що е това компилатор и има ли той почва у нас?
На него изобщо не му е работа да да разсъждава какви си ги надробил. Той просто трябва да "преведе" твоите писания до нещо разбираемо за процесора. В конретния случай компилатора си казва - ако третия if не се изпълни какво да върна? За тебе може да е очевидно, че това няма как да стане ама ако компилаторът вземе да ги прави тези разсъждения "Hello World!" ще почне да се компилира за 1 ден. Има си други програми, който правят подобни анализи на компилаторът не му е това работата.
На него изобщо не му е работа да да разсъждава какви си ги надробил. Той просто трябва да "преведе" твоите писания до нещо разбираемо за процесора. В конретния случай компилатора си казва - ако третия if не се изпълни какво да върна? За тебе може да е очевидно, че това няма как да стане ама ако компилаторът вземе да ги прави тези разсъждения "Hello World!" ще почне да се компилира за 1 ден. Има си други програми, който правят подобни анализи на компилаторът не му е това работата.
Re: Компилаторщини
това е елементарно бе приятел.
направи го със swith или със вложени if else
if(a>b)
{
return 1
}
else
{
if a<b)
{
return -1
}
else
{
if(a==b)
{
return 0
}
}
}
направи го със swith или със вложени if else
if(a>b)
{
return 1
}
else
{
if a<b)
{
return -1
}
else
{
if(a==b)
{
return 0
}
}
}
Re: Компилаторщини
Ми нормално, и правилно
Както се е изказал колега по-горе, при положение че не знаеш типа на променливите не можеш да разчиташ на пълна линейна наредба
представи си че се на Ц++ и съм овърлоаднал операциите < > == да връщат винаги false
Както се е изказал колега по-горе, при положение че не знаеш типа на променливите не можеш да разчиташ на пълна линейна наредба
представи си че се на Ц++ и съм овърлоаднал операциите < > == да връщат винаги false
Re: Компилаторщини
Това дето си написал не прави същото като кода с ифовете тъй като резултатът при твоето може да бъде различен от -1, 0 или 1.
Re: Компилаторщини
Гуру правилно но по принцип компилаторите знаят типа на данните и биха могли да не генерират съобщение за фундаменталните типове, а те го правят(поне тези с които аз съм работил).
Re: Компилаторщини
Компилаторите не са Static code analyzers.
Пък и нали компилатора на C е хубав точно защото си се прострелваш в крака без никакви грижи :)
[линк]
Пък и нали компилатора на C е хубав точно защото си се прострелваш в крака без никакви грижи :)
[линк]
Re: Компилаторщини
Така ли пиле шарено? Ако въпросния тип е double и стойността на a е NaN, a b е 0 кой от if-овете ще зацепи дипломиран селски пъдарино?
Re: Компилаторщини
Аз като почна и 2 часа мога да псувам static code analajazari, мама им проста на някои дето е грешка на природата, че са се родили във време дето компютрите са били измислени.
Re: А какво ще каже компилатора ако
[code]
return a > b ? 1 : a < b ? -1 : 0;
[/code]
Взе ми го от устата (от клавиатурата, де!)
return a > b ? 1 : a < b ? -1 : 0;
[/code]
Взе ми го от устата (от клавиатурата, де!)
Re: Разбира ви главата...
Точно щях да викна, че ако са в два или повече треда, къде са му мутексите, ама видях, че си написал за критичната секция...
Re: Компилаторщини
Tака, бай-дъ-уей, как мога да сложа НаН в дабъл, в Ц или Ц++?
General Protection Fault in module 0xDEEBAA. Рестартирайте държавата!
General Protection Fault in module 0xDEEBAA. Рестартирайте държавата!
Re: Компилаторщини
Верно ли вааа, бах па язе си мислех, че е същото. А ние о нашия квартал дините с корите ги ядеме да знаеш.
Функцията не връща bool а най-малкото signed char. Е да този който ползва функцията, ако и той е кретен и проверява за "== -1", както и автора на функцията, който държи да върне -1. Ша стане кофти. Но идеята е да върнеш три вариянта да документираш какво ще значи водещия бит на върнатото и гутоу. ако а и б са инт а връщаш лонг и проблем с препълването няма да имаш и пак гутоу ... ама кво значение има ... дано да не попадам на твоите писаници.
Функцията не връща bool а най-малкото signed char. Е да този който ползва функцията, ако и той е кретен и проверява за "== -1", както и автора на функцията, който държи да върне -1. Ша стане кофти. Но идеята е да върнеш три вариянта да документираш какво ще значи водещия бит на върнатото и гутоу. ако а и б са инт а връщаш лонг и проблем с препълването няма да имаш и пак гутоу ... ама кво значение има ... дано да не попадам на твоите писаници.