几道题想问一下。

hificat 2003-03-23 12:33:40
1、oabc 这个数属于八进制数吗?这里的o不是数字0,是字母o

2、一个很奇怪的问题,这个题在机器上运行,得不出正确的结果:
int e=1,f=4,g=2;float m=10.5,n=4.0,k;
k=(e+f)/g+sqrt((double)n)*1.2/g+m 求k的值.答案:13.700000
式中存在2.0*1.2/2.0 难道分子、分母两个2.0可以约掉?如果按计算顺序不是应该从左到右的吗?

3、main()
{int m=5;
if (m++>5) printf("%d",m); else printf("%d",m--);
}

答案:6 可以看出是m加了1后再跟5比较,请问为什么不是先m和5比较,然后再自加1?

4、有这么一题:
t=0;
while (printf("*")
{t++;
if (t<3) break;
}
答案:其中循环控制表达式与'0'等价。 请问这句话什么意思,为什么和字符'0'等价

5、有这么个FOR语句 for(y=0.x=1;x>++y;x=i++) i=x;
请问()里面最后那个x=i++ ,是不是在这里就可以简单的理解成和x=++i相同,还是应该理解成先把i给x,然后,i++,即新的i值要下一次循环判断时再赋给x?
...全文
46 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ww2003 2003-03-23
  • 打赏
  • 举报
回复
2、一个很奇怪的问题,这个题在机器上运行,得不出正确的结果:
int e=1,f=4,g=2;float m=10.5,n=4.0,k;
k=(e+f)/g+sqrt((double)n)*1.2/g+m
k=(1+4)/2+1.2+10.5
注意(1+4)/2=2而不是2.5,所以结果等于13.7

5、有这么个FOR语句 for(y=0.x=1;x>++y;x=i++) i=x;
应该理解成先把i给x,然后i++.
lifanxi 2003-03-23
  • 打赏
  • 举报
回复
1.当然不是八进制数,只能当标识符用了。
2.int e=1,f=4,g=2;float m=10.5,n=4.0,k;
k=(e+f)/g+sqrt((double)n)*1.2/g+m
= (1+4)/2+sqrt(4.0)*1.2/2+10.5
= 5/2 + 2.0*1.2/2+10.5
= 2 + 1.2 + 10.5
= 13.7
有问题吗?
3.比较m++>5时,因为m=5,所以不满足,做else后面的,此时m为6。
printf("%d", m--)打印m的值是6,然后m自减为5。
hificat 2003-03-23
  • 打赏
  • 举报
回复
上面那题输入的内容漏打了,是这样的:
从键盘输入:aa bb<CR>
cc dd<CR>

<CR>代表回车,aa,bb cc,dd 之间有一个空格
yzb1000 2003-03-23
  • 打赏
  • 举报
回复
main()
{
char a1[5],a2[5],a3[5],a4[5];
scanf("%s%s",a1,a2);
puts(a1);
puts(a2);
puts(a3);
puts(a4);
}
不完整吧?
HITGB 2003-03-23
  • 打赏
  • 举报
回复
想不通的这种无关紧要的问题就不要想
maximos 2003-03-23
  • 打赏
  • 举报
回复
1。对于i++和++i,到底是先+1再操作还是操作后再+1,具体以来编译器的实现
2。多多了解运算符优先级再说。
hificat 2003-03-23
  • 打赏
  • 举报
回复
又碰到一个想不通的问题,请指点:

main()
{
char a1[5],a2[5],a3[5],a4[5];
scanf("%s%s",a1,a2);
puts(a1);
puts(a2);
puts(a3);
puts(a4);
}

答案:
aa
bb

cc dd

从此可以看出,aa,bb分别赋值给了a1,a2;回车给了a3,a4为cc dd
但为什么a4是cc dd.为什么不是遇到cc后同的空格就结束,想不通。
在scanf语句中,aa后面的空格起到作用,使aa给a1,bb给a2。
langzi8818 2003-03-23
  • 打赏
  • 举报
回复
5,先赋值在加.++i是先加后赋值.
4.printf返回值是输出的字母个数,在这时是1,换成bool型就是真。而'0'是0x30换成bool也是真(学习);
3.比较m++>5时,因为m=5,所以不满足,m加1,做else后面的,此时m为6。
printf("%d", m--)打印m的值是6,然后m自减为5。
2.
lifanxi 2003-03-23
  • 打赏
  • 举报
回复
4.printf返回值是输出的字母个数,在这时是1,换成bool型就是真。而'0'是0x30换成bool也是真所以说它们等价。不过我觉得这样说有一点不合适。
5.当然是后者,把i值给x后i再自增。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧