Софтуерно Инженерство
Loading...
+ Нов въпрос
Thedi avatar Thedi 198 Точки
Best Answer

Здравей,

Зависи книга за кой език четеш. Всъщност в доста езици това е напълно валиден синтаксис.
Това което прави едното равно е, че придава стойноста. В случая if (a=b) ще  се придете стойнота на b към стойност на a  и ще се изпълни if-a само единствено ако b не е false. Това е защото повечето езици приемат, че всичко което не е false e true.

Няколко примера с PHP и JavaScript (Може да се прила и в други езици който подържат този синтаксис) какво ще се случи:

Пример №1 с PHP:

<?php
$a = 10;

if ($b = $a){ // Тази проверка ще си мине като true.
    var_dump($b); // $b тук е 10.
}

Пример №2 с PHP:

<?php
$a = false;

if ($b = $a){ //Тази проверка се приема за false и няма се изпълни.
    echo "happened"; // Това нещо няма да се принтира в този случай.
}

Пример №3 с JavaScript:

let a = 10;
let b = 1;
if (b = a) { // Ще мине проверката като true.
    console.log(b); // Ще се принтира 10 на екрана защото това е вече стойноста на b;
}

Пример №4 с JavaScript:
 

let a = false;
let b = 1;
if (b = a) { Тук проверката е false и се пропуска.
    console.log("happened"); // Няма да се изпълни.
}


Заради тези неща в такива езици е хубаво да се внимва когато се сравнява с null. Това е така защото следните случай могът да се получат.

Грешка ако изпуснем едно равно:
 

<?php

$a = 10;

if($a = null){ //Искаме да проверим дали $a е равно на null И да направим нещо, но изпускаме едното равно    във бързината.

  var_dump($a); // Тук $a вече ни е null понеже без да искаме сме изпуснали едното равно при сръвнението.
}

 

Мже да се защитиме от това като сръвняваме null с променливата защото неможе да предаваме стойност на null:

<?php

$a = 10;

if(null == $a){ // При този синтаксис дори и да изпуснем едното равно това ще ни даде exception и няма да тръгне.

 
}



Надявам се това да отговаря на въпросът ти. Ако имаш още въпроси питай :)

0
26/01/2018 22:00:38
svetlioi avatar svetlioi 30 Точки

Благодаря! 

 

0
svetoslav_0 avatar svetoslav_0 586 Точки

Би трябвало да не можеш да използваш = в условни конструкции. Само един път равно се използва за присвояване на стойност, а два пъти равно за проверка, тоест смисълът на == е "дали нещо е със същата стойност като нещо друго. Например:

If (a == b)

{

c = 11;

}

Тоест ако а е със същата стойност като b, то в с запиши 11. Успех :)

1
denis.argatski avatar denis.argatski 25 Точки

Знака "==" е знак за сравнение на две стойности.Знака "=" е за присвояване на стойност на променлива.

1
dvdty avatar dvdty 461 Точки

С едно равно присвояваш стойност, с 2 проверяваш такава:

X = 5;

Променливата х е равна на 5.

If (x == 5) {…}

Променливата х равна ли е на 5? Ако е написаното в {} ще се изпълни.

0
desislava777 avatar desislava777 159 Точки

Колегите са напълно прави. Това лесно се научава. Успех!

-2
svetlioi avatar svetlioi 30 Точки

Абсолютно. Знам ги тези работи, щом сега съм на масиви. Но чета в книги, че има if с едно равно и се шокирам, та реших да споделя.

0
kolioi avatar kolioi 371 Точки

На C и C++ може.

За кой език питаш?

-1