C语言运行结果分析?

#include <stdio.h>
int ex();
int x=1;
main()
{
int x=0;
while(x++<5){
x++;
printf("%d",x);
}
x+=2;
ex();
printf("%d",x);
}
int ex()
{
x+=2;
}

跑的结果是2,4,6,9
为什么不是2,4,6,8呢 9 是怎么来的?

while(x++<5),先与5比较,后加1,所以6也是在循环内打印出来的,跳出循环后X=7,然后再加2不就是9咯!
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-30
printf(“%d,%d\n”,a,b)这个就不解释了;
printf(“%u,%u\n”,a,b)%u是无符号整型,所以b=-100会转化成无符号的,即2^32-100;
printf(“%u,%u\n”,c,d) c赋值为a所以100,d赋值为b,是-100,同上的解释;
c=a=e d=b=f printf(“%d,%d\n”,a,b) 因为e是Long型,a=e会截断,只取e的低16位,而e=2^32,低16位全部为0,所以a=0,b=f同理解释。
由于已经精度损失了,所以即使用%u输出,同样是上面的结果。
希望能解决您的问题。追问

这啥??

第2个回答  2014-06-30
printf(“%d,%d\n”,a,b)这个就不解释了;
printf(“%u,%u\n”,a,b)%u是无符号整型,所以b=-100会转化成无符号的,即2^32-100;
printf(“%u,%u\n”,c,d) c赋值为a所以100,d赋值为b,是-100,同上的解释;
c=a=e d=b=f printf(“%d,%d\n”,a,b) 因为e是Long型,a=e会截断,只取e的低16位,而e=2^32,低16位全部为0,所以a=0,b=f同理解释。
由于已经精度损失了,所以即使用%u输出,同样是上面的结果。
第3个回答  2014-06-30
x=6的时候while里面的x还会+1,然后判断失败,跳出循环,就是7+2=9喽
第4个回答  2019-06-18
Status
InitTriplet(Triplet*T,ElemType
v1,ElemType
v2,ElemType
v3)
InitTriplet(T,2,2,2);
函数要求传递指针,而调用时却是用了值传递。按你的意思应该是
int
main()
{

Triplet
*T;
//这里应该为指针

InitTriplet(T,2,2,2);

printf("%d\n%d\n%d\n",T[0],T[1],T[2]);

return
OK;
}
手头没C,可能是这样的

C语言:分析下面程序的运行结果
运行switch(1)时,将执行case(1)语句,并接着往下执行直至遇到break,或者整个switch语句结束 所以最终b=1+1+2+3=7 3、输出为:5 实际上for循环中 i 有两次自加运算,故步长为2,;即当 i 增加2时,a加1;当 i >=10时,跳出循环 最终循环一共进行了5次,所以结果a=5 4、输出为;101...

c语言运行结果
C语言代码如下:include<stdio.h> int main(){ int a,b;printf("please enter two number:"); ---两个数字用空格隔开,以回车键结束输入。scanf("%d %d",&a,&b);if(a>b)printf("The max is %d",a);else if(b>a)printf("The max is %d",b);else printf("The two Numbers ...

c语言中如何让程序运行输出结果?
1、首先在打开的c语言软件中,第一行输入代码,表示输出。2、接下来输入三行代码,输入的值在这里进行转换,如下图所示。3、接下来就用到了if,这里表示如果的意思,如下图所示。4、现在开始运行,CTRL+F5,接下来在控制台上随便输入3个数。例如:60,50,40,就可以看到输出了40,表示运行成功了。

C语言问题 运行结果是多少 为什么 求详细解答
结果15 之所以容易被理解错误是由于运算符优先级的问题 解决此类问题,第一步,宏展开 k=10*MIN(i,j);即 k=10*(i)<(j)? (i):(j);第二步,根据运算符优先级、结合性判断 原式等效于 k=(10*(i))<(j)? (i):(j);二目运算符*优先级高于三目运算符? :第三步,代入值,判断计...

c语言,分析程序运行结果
当遍历到目标字符ch,进入内层的for循环,for循环就是从当前遍历到的字符ch开始将后续的字符全部向前移动一位,也就实现了将遍历到当前ch字符从字符串中删除的目的,然后尝试寻找下一ch,直至字符串遍历结束 所以运行的结果就是将原str字符串中的字符'e'删除后输出 ...

c语言程序运行结果
答案是0,12。因为判断那里是一个逗号表达式,判断结果取决于后面y=10时循环结束,根据循环体看,每次循环x=x\/2-1,y=y+3,一直推可以得到答案

C语言分析下面程序的运行结果
运行switch(1)时,将执行case(1)语句,并接着往下执行直至遇到break,或者整个switch语句结束 所以最终b=1+1+2+3=7 3、输出为:5 实际上for循环中 i 有两次自加运算,故步长为2,;即当 i 增加2时,a加1;当 i >=10时,跳出循环 最终循环一共进行了5次,所以结果a=5 4、输出为;101...

C语言运行结果分析?
while(x++<5),先与5比较,后加1,所以6也是在循环内打印出来的,跳出循环后X=7,然后再加2不就是9咯!

C语言,关于程序运行结果的解释
这个程序的意思是,从键盘输入一行字符,照原样显示出来。当输入!后,程序执行结束。执行的原理关键在这一行:while(putchar(c=getchar())!='!')首先:c=getchar(),字符变量c从缓冲区获得一个字符 然后:putchar(c=getchar()),将字符打印出来 最后:putchar(c=getchar())!='!',判断字符是...

c语言这个运行结果是什么
第一句输出和第三句输出以及第四句结果都是相同的,意思就是最后一句printf输出的就是a的地址,只是用十进制的方式输出来的。原因如下:我们知道,数组的首地址和首个元素的地址是一样的,所以&a[0]输出的就是数组a的首地址,又因为printf("%d",a)和printf("%d",&a[0])结果一致,说明输出的都...

相似回答
大家正在搜