Printing a two digit number as character

ascii table
digit character
char to ascii
convert int to char in c
int to char c
ascii number
ascii character lookup
c int to char array

I have this line of code:

printf("%c\n", '65');

This code prints 5 to the console.

I know that 65 is not a valid character and is not assigned to any ASCII value, so what is the reason behind this output?

Single quotes give the ascii value of a character and is called a character constant

printf("%c\n", '65');

is a multicharacter constant and this is implementation defined

65 is the ascii value for the 'A' character so I suppose you meant

printf("%c\n", 'A');

which is equivalent to

printf("%c\n", 65);

Using a multicharacter character constant, is implementation defined. For example gcc says

The compiler evaluates a multi-character character constant a character at a time, shifting the previous value left by the number of bits per target character, and then or-ing in the bit-pattern of the new character truncated to the width of a target character. The final bit-pattern is given type int, and is therefore signed, regardless of whether single characters are signed or not (a slight change from versions 3.1 and earlier of GCC). If there are more characters in the constant than would fit in the target int the compiler issues a warning, and the excess leading characters are ignored.

For example, 'ab' for a target with an 8-bit char would be interpreted as ‘(int) ((unsigned char) 'a' * 256 + (unsigned char) 'b')’, and '\234a' as ‘(int) ((unsigned char) '\234' * 256 + (unsigned char) 'a')’.


So in gcc you would get 5 since

printf("%c\n", '65');

is equivalent

printf("%c\n", (int)(((unsigned char)'6' * 256) | (unsigned char)'5'));

Finally from the title of your question, it would seem that you wanted

printf("%d\n", 65);

i.e. print the decimal value 65.

printf, fprintf, sprintf, Each function returns the number of characters transmitted (not including the \0 for sprintf ) The format is a character string that contains two types of objects: plain digits for the g conversion, or the maximum number of character to be printed  If the expression has a digit in the position where the # character appears in the format string, displays the digit; otherwise, displays nothing in that position. This symbol works exactly like the 0 digit placeholder, except that leading and trailing zeros aren't displayed if the number has fewer digits than there are # characters on either

%c prints only a character. %s prints a string.

So try this:

printf("%s\n", "65");


EDIT: If 65 is the decimal number of a character, then write this:

printf("%c\n", 65);

Annual Review in Automatic Programming: International Tracts in , A PRINT instruction has the meaning punch on the output tape the characters by a / and a decimal exponent expressed as sp or – and a two-digit number. Here you are trying to print '65' using %c. %c would look for printing 8 bits. '65' is 16 bits : Ascii value of 6 is 54, which in binary is 00110110 and that of 5 is 00110101 So the question is "is %c going to print former 8-bits or latter 8-bits".

As we know that a char is 8 bit in size. Here you are trying to print '65' using %c. %c would look for printing 8 bits. '65' is 16 bits : Ascii value of 6 is 54, which in binary is 00110110 and that of 5 is 00110101 So the question is "is %c going to print former 8-bits or latter 8-bits". Well, that depends on whether your system uses Little Endian or Big Endian. Big Endian is straight forward and store '54' as 00110110 00110101. But Little Endian stores LSB first and then MSB i.e. 00110101 00110110. It seems that your system supports Little endian and thus %c takes first 8-bits i.e. 00110101, which is 5.

Special two digit number, input : 59. output : 59 is a Special Two-Digit Number Explanation: Sum of Then, add the sum and product of the digits of the two-digit number and compare it to the original number. public static void main(String args[]) print ( "Invalid Input! The new Python 3 formatting is available in 2.6 as well, 2.7/3 allows you to be a little more terse with positional arguments. – Nick T Aug 17 '10 at 19:03 add a comment |

As the character occupies only 1 byte of memory, so whenever you print anything which is more than of 1 byte in the format of a character (i.e. %c), the compiler prints its lower 8 bits (i.e 1 byte) & discarded its all other bits.

Elementary Synchronous Programming: in C++ and Java via algorithms, Eventually, print the message Not two-digit number if n is not a two-digit number. input into a calculator: write an algorithm to read a real number a, a character,  string x = FormatNumber(1,2); Output will be 01 which is based on your padding parameter. Increasing it will increase the number of 0s

I had to assign two digit numbers as characters as you. When I search printing two digit numbers, only post is your post. Therefore, I am writing in here.

I wrote a function that might help everyone.

void setElementID(char* name,int count){
    int len = strlen(name);
    char buffer[5];
    int n = sprintf(buffer,"%d",count);
    for(int i=0;i<n;i++){
         name[len] = buffer[i];

I think this will solve your issue.

This function will generate clients IDs as many as you want. You just hold count variable and increment it when necessary.

If you want to print only numbers, you will just open char numbers[10]; and give it to this function with your counter.

My references:

Check input character is alphabet, digit or special character , All characters whether alphabet, digit or special character have ASCII value. Input character from the user will determine if it's Alphabet, Number or Special character. print ( " Special Character " ) Check whether the Average Character of the String is present or not · Special two digit number · Character arithmetic in C  Note the .5 that is included in the %s symbol: that tells printf to print a maximum of five characters (NULL termination is still valid). However, you can also control this programmatically, which is useful if the length you want to print is tracked in a variable:

C Program to find the product of digits of a number, The following is a C program to find the product of digits of a number: C Program to print the two digit number in words · C Program to calculate the power of a  A precision that gives the minimum number of digits to appear for the d, o, u, x, or X conversions, the number of digits to appear after the decimal point for the e and f conversions, the maximum number of significant digits for the g conversion, or the maximum number of character to be printed from a string in s conversion. The precision takes

C Program to print the two digit number in words, The first switch statement prints the word for the first digit and the second switch statement print the word for the second digit. Numbers from 11 to 19, require  Note: print() was a major addition to Python 3, in which it replaced the old print statement available in Python 2. There were a number of good reasons for that, as you’ll see shortly. Although this tutorial focuses on Python 3, it does show the old way of printing in Python for reference.

Scientific Information Transfer: The Editor’s Role: Proceedings of , It can be used for single characters or character sets. Protypes are composed in the following form: a basic character and a two-digit number; in the text the protypes are marked by a preceding control by the original characters for printing. A new line character appropriate to the platform running the application. You should always use %n, rather than . tB : A date & time conversion—locale-specific full name of month. td, te : A date & time conversion—2-digit day of month. td has leading zeroes as needed, te does not. ty, tY : A date & time conversion—ty = 2-digit year, tY