×

# Hexadecimal (hex) Literals in C programming Language

Hexadecimal literals in C language: Here, we are going to learn about to hexadecimal literals in C language, how to use hexadecimal literals, how to assign hexadecimal literal to a variable etc?
Submitted by IncludeHelp, on February 11, 2019

## Hexadecimal literals in C

Hexadecimal numbers are the technique to represent the numbers which uses the base-16 number; it uses 16 alphanumeric digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A/a, B/b, C/c, D/d, E/e, F/f. (Read: Computer number systems)

In C programming language, we can use hexadecimal literals in any expressions; we can assign hexadecimal numbers to the variables. To use hexadecimal literals, we use 0X or 0x as a prefix with the number. For example 0x10 is a hexadecimal number, which is equivalent to 16 in the decimal number system.

## Printing hexadecimal number in decimal format

To print a hexadecimal number in decimal format, we use %X or %x format specifier.

## Printing hexadecimal number in hexadecimal format

To print an hexadecimal number or other type of numbers in hex format, we use %X or %x format specifier.

```#include <stdio.h>
int main(){

//printing hexadecimal number in decimal format
printf("%d\n", 0x10);
printf("%X\n", 0x10);
//printing other format number in hexadecimal format
printf("%X\n", 16);

return 0;
}
```

Output

```16
10
10
```

## Using hexadecimal literals in the expressions

```#include <stdio.h>
int main(){

printf("%d\n", (0x10+0x20));
printf("%d\n", (0x10+0x20+30+40));

return 0;
}
```

Output

```48
118
```

## Assigning hexadecimal literals to the variables

```#include <stdio.h>
int main(){

int a = 0x10;
int b = 0x76541;

printf("a in hexadecimal: %x, and in decimal: %d\n", a, a);
printf("b in hexadecimal: %x, and in decimal: %d\n", b, b);

return 0;
}
```

Output

```a in hexadecimal: 10, and in decimal: 16
b in hexadecimal: 76541, and in decimal: 484673
```

## Input a number in hexadecimal format

To input a number in an hexadecimal format, we use %X or %x format specifier in the scanf() function

```#include <stdio.h>
int main(){

int a;

printf("Enter value of a in hexadecimal: ");
scanf("%x", &a);
printf("a in hex: %X, and in decimal: %d\n", a, a);

return 0;
}
```

Output

```Enter value of a in hexadecimal: 0192Af
a in hex: 192AF, and in decimal: 103087
```

## Error while using an invalid digit with hexadecimal literal

If we use any other digits except except 0-9 and A-F or a-f, program returns a compilation error "invalid digit 'x' in integer constant"

```#include <stdio.h>
int main(){

int a = 0x10A;
int b = 0x129AG;

printf("a in hexadecimal: %X, and in decimal: %d\n", a, a);
printf("b in hexadecimal: %X, and in decimal: %d\n", b, b);

return 0;
}
```

Output

```prog.c: In function 'main':
prog.c:3:13: error: invalid suffix "G" on integer constant
int b = 0x129AG;
^
```