我可以检查一下我对scanf的理解吗?
int a;
scanf("%d",&a);如果我输入13,转换说明符是否将13转换为二进制并将其存储在a中
如果输入是13.3,那么它是否将十进制分数13.3转换为二进制并将其存储在?
发布于 2014-03-24 20:15:21
我不知道你对C语言的了解,但是在C中数据存储是一个非常重要和有趣的话题。当数据存储在变量中时,它总是二进制格式,在简单的C语言中不可能看到二进制数据,但你可以在嵌入式C中看到二进制数据。我们在任何端口或任何在内部提供数据的程序中传递数据,然后将输出发送到连接到led的任何端口。假设您在一个端口中传入-1,并且该端口正在向与其连接的led发送输出,那么您可以看到与其连接的所有led都将发光。在C语言中,你可以这样观察
char c=-1;
printf("%u",c); output=255 %u用于无符号整数,这不是一个错误,您可以检查它。int和char总是以相同的方式存储,这意味着如果你尝试存储char A,那么我认为它的ASCII值65将以二进制方式存储。
char ch='A';
printf("%d",ch);
output 65 相同的
int i=65;
printf("%c",i);输出A;但是浮点数的存储完全不同于int,它有三个不同的部分,一个是符号位,第二个是尾数,然后是指数。假设
float f=5.55;
if(f==5.55)
pf("true");
else
pf("false");
output : false现在再说一遍
float f=5.25;
if(f==5.25)
pf("true");
else
pf("false");输出:真的,所以这都是关于内存中的数据存储,非常重要的话题,通常老师不会在课堂上讨论。希望能为你用足。
发布于 2014-03-24 17:39:16
发布于 2014-03-24 17:42:28
简而言之,不是。但您可以更改代码以使其几乎正常工作。
float a;
scanf("%f",&a);然而,.3永远不能精确地存储在浮点型中。
还有一种十进制类型,基于十进制的浮点数(与基于二进制的类型相反)。它可以准确地存储0.3 (以及您可以键入的所有其他数字,直到它的精度)。但是你仍然不能存储1/3 (你需要一个零碎的存储来精确地存储它)。或者π(你需要一个符号库来存储它)。然而,您并不总是需要精确。
https://stackoverflow.com/questions/22605469
复制相似问题