我不明白为什么答案是5,我会写下面的程序

时间:2011-01-20 05:43:47

标签: c

#include<stdio.h>
void main()
{
 int cats,dogs,others,total_pets;
 cats=10;
 dogs=43;
 others=36;
 total_pets=cats+dogs;
 printf("there are %c  total pets are",total_pets);
}

8 个答案:

答案 0 :(得分:10)

使用%d代替%c中的printf

total_pet的值为53。当您在%c中使用printf时,您正在尝试打印53值为5的字符{{1}}恰好为{{1}}。

答案 1 :(得分:4)

请参阅此处的ASCII表:http://web.cs.mun.ca/~michael/c/ascii-table.html

为什么打印5: -

实际上它的'5'不是5.你的代码是打印字符5而不是十进制5.当你使用%c打印整数变量的值时,printf转换整数值与字符等价(如你在ASCII表中看到的)

您可以尝试使用此代码(或者您应该自己编写代码)

void main()
{
    int num;
    printf("Printing ASCII values Table...\n\n");
    num = 1;
    while(num<=255)
    {
       // here you can see how %c and %d works for same variable
       printf("\nValue:%d = ASCII Character:%c", num, num); 
       num++;
     }
    printf("\n\nEND\n");
}

快乐的编码。

答案 2 :(得分:3)

为什么要将其格式化为%c 使用%d

  

printf(“总共有%d个宠物   是”,total_pets);

答案 3 :(得分:2)

为什么使用%c。使用%d

%c single character
%d and %i both used for integer type
%u used for representing unsigned integer
%o octal integer unsigned
%x,%X used for representing hex unsigned integer
%e, %E, %f, %g, %G floating type
%s strings that is sequence of characters

答案 4 :(得分:2)

因为53是ascii图表中'5'所在的位置。

在printf中使用%d。

答案 5 :(得分:2)

%c是字符说明符,因此printf("there are %c total pets are",total_pets);打印ascii字符,其值为53,即5字符。

答案 6 :(得分:1)

%c是打印一个字符。尝试将其更改为%d以获取整数值。

您要打印的是解释为字符的整数值。

答案 7 :(得分:1)

您需要将%c更改为%d