注册 登录
编程论坛 C++教室

刚学c++这是书上的例子,上边有几个不懂的地方,求解!

星星碎了 发布于 2013-09-02 15:29, 1375 次点击
因为用word文档写的,大小写没有注意,这个代码是正确的,我就是有几个疑问。

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
Int menu_select();
void main()
{
  for(; ;)
{
 switch(menu_select())
{
  Case 1:
       Printf("FindNum\n");
Case 2:
     Printf("Diamond\n");
Case 3:
    Printf("Goodbye\n");
    Exit(0);
}
}
}
Int ment_select()
{
  Char s;
Int cn;
Printf("1.FindNum\n");
Printf("2.Diamond\n");
Printf("3.Goodbye\n");
Printf("Input 1-3:");
Do{
    s=getchar();
    Cn=(int)s-48;
} while(cn<0||cn>3);
Return 0;

}
有两个地方不懂
for(;;)存在的意义
cn=(int)s-48;
为什么要减48啊
实在不懂   求解!
12 回复
#2
rjsp2013-09-02 15:52
1。 foo(;;) 等效于 while(1)

2。'0'的值为48,因此'0'减去48就转化为0;'1'减去48就转化为1,'2'减去48就转化为2,'3'减去48就转化为3,……
#3
tanglixue2013-09-02 17:01
回答你的第二个,我没看懂哎,能解释下吗?
#4
peach54602013-09-02 17:14
回复 3楼 tanglixue
你知道什么叫ascii码表么?
#5
星星碎了2013-09-03 07:09
貌似大概是懂了,因为定义的是char类型,所以每个字符都有对应的ascii码,而下边条件while(cn<0||cn>3);限制只能输出1,2,3.真是太感谢了~\(≧▽≦)/~啦啦啦
#6
星星碎了2013-09-03 07:13
我昨天晚上竟然梦见我发的贴,都说太白痴,郁闷啊。。。不过今天一来还有人回复我,我感动啊
#7
星星碎了2013-09-03 07:16
谢谢各位前辈,嘿嘿
#8
ssy8711202013-09-03 13:15
回复 2楼 rjsp
正解
#9
一生轻松5182013-09-05 18:37
走上一遭
#10
can39811322013-09-06 16:15
类型转换
#11
超神级2013-09-07 21:04
上面定义#include<stdio.h>
#include<stdlib.h>头文件是C语言类型的吧!C++也可以用
#12
tanglixue2013-09-10 12:54
了解了
#13
郁闷的终结2013-09-10 20:34
二楼正解
1