Strumień wyjścia i warunek (?)

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. ;/

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

Z góry dzięki! :)

1

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

2

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

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

jest równoważne:

return costam ? 'a' : 'b';
3

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

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. ; )

0

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

0
#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;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1