在C中打印特定数据类型的值?
我试图打印出三列: 值:数据类型:大小(以字节为单位): 到控制台:在C中打印特定数据类型的值?,c,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; doub
#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));
}
#包括
/*
打印出C的基本(基本内置)数据类型
以及它们的大小(以字节为单位)。
*/
int main(){
字符字母='j';
短整数x=55437;
长整数y=1234567;
双dbl=5.99;
浮胸=4.66;
printf(“值:数据类型:大小(字节):\n\n”);
printf(“%c\t char\t%c\n”,字母,大小(字母));
printf(“%d\t短\t%d\n”,x,sizeof(x));
printf(“%ld\t长\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));
}
我差一点就知道了,但仍然有一些不正确的输出:
为什么我的短int打印为-10099(与我已将其分配给55437的内容相矛盾)?为什么数据类型列中的double和float数据类型说明符会向右移位?当在
printf
中用%c“
打印值时,它会转换为无符号字符。但是,对于ASCII,仅显示从0x20
到0x7E
的值。其他字符的显示方式取决于终端。试试这个
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));
试试这个:)
您没有为其他变量类型使用适当的格式说明符<代码>%c
仅用于字符。谢谢大家。我让它看起来正确:)我如何标记我的问题已解决?单击答案旁边您认为最好(或对您帮助最大)的复选标记。右移是因为\t为8个字符,第一个制表符位于第7列,每个连续制表符位于右侧8列。因此,当一个值覆盖第一个制表符位置时,输出一个制表符将跳转到第二个制表符位置。一个短制表符可以存储的最大值是32767,再大一点,它就像汽车里程表一样“滚动”;更糟糕的是,在最终返回到0之前,它会变大并为负值。您是否知道int16在C中的最大值是多少?如果我切换到一个比这个小的数字,它可能会解决我的-10099问题。@SamPeterson,因为您环境中的短字符是2字节,55437超出了它的表示形式的上限short
(2字节整数):-32768~32767您忘记将(数据类型)附加到sizeof的左侧。
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));