C语言编程这道题我输出是0……感觉好像没毛病呀? c语言输出结果一直是0
这道C语言题目的输出结果为什么是0?
共同体中r的大小是8个字节,一个int型对象4个字节,一个char对象一个字节
且,该共同体中,字符数组c和int型数组i的第一个元素拥有相同的地址
s->i[0]=0x39;//对int数组的第一个元素赋值
int是4个字节,所以第一个字节是39H,第二个字节是0,第三个字节是0,第四个字节是0
s->i[1]=0x38;//对数组i的第二个元素赋值
同样,第五个字节是38H,第六个字节是0,第七个字节是0,第八个字节是0
printf("%x\n",s->c[1]);//输出的是第二个字节的内容,自然是0
C语言编程设计过程中输出结果总为0,这是为什么?
x是double,要用%lf输入,而不是ld
#include<stdio.h>
#include<math.h>
int main (void)
{
double x,y;
printf ("Enter x:");
scanf ("%lf",&x);//%lf
if (x<0){
y=pow(x,5)+2*x+1/x;
}
else {
y=sqrt(x);
}
printf ("y=%lf\n",y);
return 0;
}
问什么这个C语言程序输出的是 0,0 ,不是 0,1 ?
1、&&是逻辑运算符,所以k的结果只能是0,1。
2、同理<是逻辑运算符,n=b<a 结果也只能是0或1。因为a=1,b=2 b<a不满足,所以n=0。
3、&&是逻辑运算符,计算是从左到右,因为&&运算的性质,只要有一方是0,结果就是0,所以算出n=0时,k结果已经确定是0,逻辑判断已经完成,c语言不会继续执行m=a<b。
所以m仍然是初始化的值0。
这个C语言程序为什么会输出 0
c的值为1.5,如果对应%f输出,则输出1.5,对应%d输出,则按整型数输出。
但c是按浮点型存储的,即1.5 = 0.75 * 2,存储时,只存储尾码0.75(二进制为0.11)和阶码1(二进制为1)即可,占8个字节,按int型输出时,只取前4个字节。
double浮点数占8字节,64位,int数占4字节,32位。
double浮点数从高到低位分别存储符号位(1位)、指数部分(11位)和小数部分(52位)
1.5的浮点存储格式为:
0 000 0000 0001 011(后面49个0)
符号位(0表示正数) 指数部分(1) 小数部分(0.75)
按整型数输出时,取低32位(全0):
即输出0。