Strumień wyjścia i warunek (?)

Strumień wyjścia i warunek (?)
CH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 128
0

Witam.
Byłby ktoś tak uprzejmy i wyjaśnił mi co oznacza formuła nawiasie? Chodzi konkretnie o i>a? i potem te " ":"*". Prosiłbym tak na chłopski rozum, ponieważ dopiero zaczynam a chciałbym doczytać i zrozumieć o co tu chodzi. ;/

Kopiuj
{
cout << (i>a? " ":"*");
}

Z góry dzięki! :)

PR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Pomorskie (Stare Kabaty)
1

Jeśli i>a wypisz <spacja>, w przeciwnym wypadku *

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
2

Jest to operator trójargumentowy (ternary operator), zastępuje on instrukcję if:

Kopiuj
if (costam) {
  return 'a';
} else {
  return 'b';
}

jest równoważne:

Kopiuj
return costam ? 'a' : 'b';
Xupicor
  • Rejestracja: dni
  • Ostatnio: dni
3

Trzeba też pamiętać, że ?: nie jest tak do końca równoważny if-else. Na przykład:

Kopiuj
int a = 1; 
int b = 2;
int& bigger = (a > b) ? a : b;

Żeby powyższe zrobić za pomocą if-else potrzebowalibyśmy nowej funkcji, lambdy albo czego tam jeszcze.
Owszem, przykład nieco wydumany, ale ilustruje fakt, że nie są to do końca równoważne rzeczy. ; )

CH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 128
0

Dzięki wszystkim! :D Teraz tylko muszę o tym przeczytać. haha :D

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
#include <iostream>
using namespace std;

template<typename T>
auto ifelse(bool cond, T v1, T v2) {
	if(cond) {
		return v1;
	}
	else {
		return v2;
	}
}

int main() {
	cout << (1>5? 1 : 5)
	     << (1<5? 1 : 5)
	     << endl;
	     
	cout << ifelse(1>5, 1, 5)
	     << ifelse(1<5, 1, 5)
	     << endl;
	return 0;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.