2014-11-09 46 views
0

我想三列打印出来:在C中打印特定数据类型的值?

值:数据类型:大小(以字节为单位):

到控制台:

#include <stdio.h> 
/* 
print out the primitive (basic built in) data types for C 
along with their size in bytes. 
*/ 
int main(){ 
    char letter = 'j'; 
    short int x = 55437; 
    long int y = 1234567; 
    double dbl = 5.99; 
    float boobs = 4.66; 

    printf("Value: Datatype: Size(in bytes):\n\n"); 

    printf("%c\t char\t %c\n", letter, sizeof(letter)); 
    printf("%d\t short\t %d\n", x, sizeof(x)); 
    printf("%ld\t long\t %ld\n", y, sizeof(y)); 
    printf("%lf\t double\t %lf\n", dbl, sizeof(dbl)); 
    printf("%f\t float\t %f\n", boobs, sizeof(boobs)); 
} 

我几乎得到了它,但我仍然有一些不正确的输出: new problems

为什么我的短整型打印出-10099(与我已经将其分配给55437相矛盾)?为什么我的数据类型列中的double和float数据类型说明符已被移位到正确的位置?

+0

。 '%c'只适用于字符。 – 0x499602D2 2014-11-09 04:59:55

+0

谢谢大家。我看它是正确的:)我如何标记我的问题解决? – 2014-11-09 06:01:26

+0

单击您认为最好(或最能帮助您)的答案旁边的复选标记。 – 0x499602D2 2014-11-09 06:02:54

回答

1

试试这个

printf("%c\tchar\t %d\n", letter, (int)sizeof(letter)); 
printf("%hd\tshort\t %d\n", x, (int)sizeof(x));//55437 > max of int16 
printf("%ld\tlong\t %d\n", y, (int)sizeof(y)); 
printf("%f\tdouble\t %d\n", mile, (int)sizeof(mile)); 
printf("%f\tfloat\t %d\n", wage, (int)sizeof(wage)); 
+0

你知道int16的最大值是在C吗?也许如果我切换到一个小于这个数字,它会解决我的-10099问题。 – 2014-11-09 05:34:50

+0

@SamPeterson因为你的环境中的短小是2个字节,55437超过了可以表示的上限。 'short'(2字节整数):-32768〜32767 – BLUEPIXY 2014-11-09 05:39:06

1

当使用"%c"printf中打印值时,将其转换为unsigned char。但是,对于ASCII,范围从0x200x7E的值只有printable characters。其他字符如何显示取决于终端。

0

试试这个你不使用其他变量类型相应的格式说明:)

printf("%c\t char\t %g\n", letter, sizeof(letter)); 
printf("%d\t short\t %g\n", x, sizeof(x)); 
printf("%ld\t long\t %g\n", y, sizeof(y)); 
printf("%g.2\t double\t %g\n", dbl, sizeof(dbl)); 
printf("%f.2\t float\t %g\n", boobs, sizeof(boobs)); 
+0

您忘记将(数据类型)附加到sizeof的左侧。 – 2014-11-09 06:09:30