С++. Разъясните пожалуйста одну строчку в программе?

С++. Разъясните пожалуйста одну строчку в программе?
Даны произвольные числа a b c.Написать программу, которая проверяла бы, можно ли построить треугольник с такими длинами сторон, и если можно, то определить вид треугольника по соотношению сторон (равносторонний, равнобедренный, разносторонний) и по соотношению углов ( остроугольный, прямоугольный, тупоугольный) . По результатам проверки вывести на экран соответствующее сообщение.
#include "stdafx.h"
#include
using namespace std;
int main(){
double a,b,c,m,q; int d;
cout< <"3 numbers: "; cin>>a>>b>>c;
m=a>b?a:b; m=m>c?m:c;
if(2*m>=a+b+c)cout< <"impossiblen";
else{
m*=m; q=a*a+b*b+c*c-m;
d=(m>=q)+(m>q);
switch(d){
case 2: cout< <"obtuzen"; break;
case 1: cout< <"rightn"; break;
case 0: cout< <"acuten";}}
cin.get(); cin.get();}
Не могу понять, что означает 11 строка ( d=(m>=q)+(m>q) )
В 10 строке квадрат большей стороны присвоили переменной m, а переменной q присвоили сумму квадратов двух меньших сторон.
Непонятно именно, что за математическое выражение идёт после 10 строки? Почему переменной d присвоили такое значение?