Home > Software design >  Why below C program gives output?
Why below C program gives output?

Time:11-17

Why output of below C code gives number when int datatype value is assigned as character

#include<stdio.h>
int main()
{
int i= '5';
printf("%d",i);
return 0;
}

How its output is 53

CodePudding user response:

Because char is an integer type.

For human convenience, you can use letters instead of their codes. Most modern systems use ASCII codes.

'5' is 53 in ASCII

Dec     Hex Binary      HTML    Char    Description
0       00  00000000    &#0;    NUL     Null
1       01  00000001    &#1;    SOH     Start of Header
2       02  00000010    &#2;    STX     Start of Text
3       03  00000011    &#3;    ETX     End of Text
4       04  00000100    &#4;    EOT     End of Transmission
5       05  00000101    &#5;    ENQ     Enquiry
6       06  00000110    &#6;    ACK     Acknowledge
7       07  00000111    &#7;    BEL     Bell
8       08  00001000    &#8;    BS  Backspace
9       09  00001001    &#9;    HT  Horizontal Tab
10      0A  00001010    &#10;   LF  Line Feed
11      0B  00001011    &#11;   VT  Vertical Tab
12      0C  00001100    &#12;   FF  Form Feed
13      0D  00001101    &#13;   CR  Carriage Return
14      0E  00001110    &#14;   SO  Shift Out
15      0F  00001111    &#15;   SI  Shift In
16      10  00010000    &#16;   DLE     Data Link Escape
17      11  00010001    &#17;   DC1     Device Control 1
18      12  00010010    &#18;   DC2     Device Control 2
19      13  00010011    &#19;   DC3     Device Control 3
20      14  00010100    &#20;   DC4     Device Control 4
21      15  00010101    &#21;   NAK     Negative Acknowledge
22      16  00010110    &#22;   SYN     Synchronize
23      17  00010111    &#23;   ETB     End of Transmission Block
24      18  00011000    &#24;   CAN     Cancel
25      19  00011001    &#25;   EM  End of Medium
26      1A  00011010    &#26;   SUB     Substitute
27      1B  00011011    &#27;   ESC     Escape
28      1C  00011100    &#28;   FS  File Separator
29      1D  00011101    &#29;   GS  Group Separator
30      1E  00011110    &#30;   RS  Record Separator
31      1F  00011111    &#31;   US  Unit Separator
32      20  00100000    &#32;   space   Space
33      21  00100001    &#33;   !   Exclamation mark
34      22  00100010    &#34;   "   Double quote
35      23  00100011    &#35;   #   Number
36      24  00100100    &#36;   $   Dollar sign
37      25  00100101    &#37;   %   Percent
38      26  00100110    &#38;   &   Ampersand
39      27  00100111    &#39;   '   Single quote
40      28  00101000    &#40;   (   Left parenthesis
41      29  00101001    &#41;   )   Right parenthesis
42      2A  00101010    &#42;   *   Asterisk
43      2B  00101011    &#43;       Plus
44      2C  00101100    &#44;   ,   Comma
45      2D  00101101    &#45;   -   Minus
46      2E  00101110    &#46;   .   Period
47      2F  00101111    &#47;   /   Slash
48      30  00110000    &#48;   0   Zero
49      31  00110001    &#49;   1   One
50      32  00110010    &#50;   2   Two
51      33  00110011    &#51;   3   Three
52      34  00110100    &#52;   4   Four
53      35  00110101    &#53;   5   Five
54      36  00110110    &#54;   6   Six
55      37  00110111    &#55;   7   Seven
56      38  00111000    &#56;   8   Eight
57      39  00111001    &#57;   9   Nine
58      3A  00111010    &#58;   :   Colon
59      3B  00111011    &#59;   ;   Semicolon
60      3C  00111100    &#60;   <   Less than
61      3D  00111101    &#61;   =   Equality sign
62      3E  00111110    &#62;   >   Greater than
63      3F  00111111    &#63;   ?   Question mark
64      40  01000000    &#64;   @   At sign
65      41  01000001    &#65;   A   Capital A
66      42  01000010    &#66;   B   Capital B
67      43  01000011    &#67;   C   Capital C
68      44  01000100    &#68;   D   Capital D
69      45  01000101    &#69;   E   Capital E
70      46  01000110    &#70;   F   Capital F
71      47  01000111    &#71;   G   Capital G
72      48  01001000    &#72;   H   Capital H
73      49  01001001    &#73;   I   Capital I
74      4A  01001010    &#74;   J   Capital J
75      4B  01001011    &#75;   K   Capital K
76      4C  01001100    &#76;   L   Capital L
77      4D  01001101    &#77;   M   Capital M
78      4E  01001110    &#78;   N   Capital N
79      4F  01001111    &#79;   O   Capital O
80      50  01010000    &#80;   P   Capital P
81      51  01010001    &#81;   Q   Capital Q
82      52  01010010    &#82;   R   Capital R
83      53  01010011    &#83;   S   Capital S
84      54  01010100    &#84;   T   Capital T
85      55  01010101    &#85;   U   Capital U
86      56  01010110    &#86;   V   Capital V
87      57  01010111    &#87;   W   Capital W
88      58  01011000    &#88;   X   Capital X
89      59  01011001    &#89;   Y   Capital Y
90      5A  01011010    &#90;   Z   Capital Z
91      5B  01011011    &#91;   [   Left square bracket
92      5C  01011100    &#92;   \   Backslash
93      5D  01011101    &#93;   ]   Right square bracket
94      5E  01011110    &#94;   ^   Caret / circumflex
95      5F  01011111    &#95;   _   Underscore
96      60  01100000    &#96;   `   Grave / accent
97      61  01100001    &#97;   a   Small a
98      62  01100010    &#98;   b   Small b
99      63  01100011    &#99;   c   Small c
100     64  01100100    &#100;  d   Small d
101     65  01100101    &#101;  e   Small e
102     66  01100110    &#102;  f   Small f
103     67  01100111    &#103;  g   Small g
104     68  01101000    &#104;  h   Small h
105     69  01101001    &#105;  i   Small i
106     6A  01101010    &#106;  j   Small j
107     6B  01101011    &#107;  k   Small k
108     6C  01101100    &#108;  l   Small l
109     6D  01101101    &#109;  m   Small m
110     6E  01101110    &#110;  n   Small n
111     6F  01101111    &#111;  o   Small o
112     70  01110000    &#112;  p   Small p
113     71  01110001    &#113;  q   Small q
114     72  01110010    &#114;  r   Small r
115     73  01110011    &#115;  s   Small s
116     74  01110100    &#116;  t   Small t
117     75  01110101    &#117;  u   Small u
118     76  01110110    &#118;  v   Small v
119     77  01110111    &#119;  w   Small w
120     78  01111000    &#120;  x   Small x
121     79  01111001    &#121;  y   Small y
122     7A  01111010    &#122;  z   Small z
123     7B  01111011    &#123;  {   Left curly bracket
124     7C  01111100    &#124;  |   Vertical bar
125     7D  01111101    &#125;  }   Right curly bracket
126     7E  01111110    &#126;  ~   Tilde
127     7F  01111111    &#127;  DEL Delete

Table (C) https://www.rapidtables.com/code/text/ascii-table.html

CodePudding user response:

Single quotes in C mean it is a Character (similar to a String).

i = '5';

assigns ASCII character "5" to variable i. And ASCII character 5 is encoded as value 53.

If you want integer 5, it would be:

int i = 5;  // Note the lack of quotes.
  • Related