If you are trying to run modulo / remainder operator like below, there are higher chances you might get an error as “error: invalid operands to binary” The solution for this error is as mentioned below.

$ vim using_mod.c

#include <stdio.h> int main(void) { float num = 11.00; int remainder = num % 3.0; if (remainder == 0) { printf("number is divisible\n"); } else { printf("number is not divisible: Remainder = %d\n", remainder); } return 0; }

$ gcc using_mod.c using_mod.c: In function ‘main’: using_mod.c:5:22: error: invalid operands to binary % (have ‘float’ and ‘double’) int remainder = num % 3.0;

**Solution** : The remainder operator (otherwise known as the modulo operator) % is a binary operator (i.e., takes exactly 2 operands) and operates only on integer types (e.g., short, int, long, long long, etc).

Hence, we either need to change float to int, or typecast both the values before and after % operator. like

int remainder = (int)num % (int)3.0;

The complete working program will look like as below,

$ vim using_mod.c

#include <stdio.h> int main(void) { float num = 6.00; int remainder = (int)num % (int)3.0; if (remainder == 0) { printf("number is divisible\n"); } else { printf("number is not divisible: Remainder = %d\n", remainder); } return 0; }