¿Qué hace el colon en c?

Me dieron este ejemplo en clase y no estoy seguro de lo que hace. Entiendo que el colon agrega un campo de bits, pero todavía no estoy seguro de esta pregunta:

a = b > 0 ? 3:1; 

?: operador se llama el operador condicional.

Si el valor de b es > 0 , el valor 3 se asigna a a persona, el valor 1 se asigna a a .

Tome su libro de Kernighan y Ritchie, 2da edición, capítulo 2.11 Expresiones condicionales, se explica el comportamiento del operador.

? es un operador condicional:

 a = b > 0 ? 3:1; 

es equivalente a:

 if(b > 0) a = 3; else a = 1; 

Este es el operador condicional . Es equivalente a:

 if (b > 0) a = 3; else a = 1; 

Léalo como “a = if b> 0 y luego 3 más 1”.

Es el operador condicional (generalmente llamado operador ternario), que se utiliza como una forma corta de escribir declaraciones.

En general, se puede leer:

 condition ? value_if_true : value_if_false 

Así, en tu caso:

 a = b > 0 ? 3:1; 

Puede ser reescrito como:

 if(b > 0) a = 3; else a = 1; 

En este ejemplo, los dos puntos no significan nada relacionado con los campos de bits, es solo la segunda parte del condicional.