24小时热门版块排行榜    

查看: 248  |  回复: 7
当前主题已经存档。
【悬赏金币】回答本帖问题,作者努力着将赠送您 1 个金币

努力着

荣誉版主 (职业作家)

低调隐士

[求助] C程序两问!

我刚刚开始学习C程序,所以遇到两个问题无法解决。求助高手,希望能给出比较详细的解答,多谢了!!!


1,a=5,那么++a*--a的结果是多少?
(答案是25,我运行的结果也是25,为什么呢?我觉得是30)

1,现有如下程序段,此程序段编译有错误,则程序段的错误在于
#include
{int a=30,b=40,c=50,d;
d=a>30?b:c;
switch(d)      {case a:   printf("%d",a);
                    case b:   printf("%d",b);
                    case c:   printf("%d",c);
                    default:  printf("#";}}

A)default:printf("#";这个语句
B)d=a>30?b:c;这个语句
C)case a:   printf("%d",a);   case b:   printf("%d",b)  case c:   printf("%d",c);这三个语句
D)switch(d) 这个语句

(答案是c.后面答案的解释是这样的:“case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后的表达式类型相同”。我不理解这是什么意思,查书也没有查到)

» 猜你喜欢

已阅   关注TA 给TA发消息 送TA红花 TA的回帖

huagong12

木虫 (小有名气)

问题2:case后面判断条件应该是常数,为确定值才对.
2楼2006-09-11 23:36:57
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

努力着

荣誉版主 (职业作家)

低调隐士

可是a,b,c就是常数啊
3楼2006-09-11 23:42:12
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

huagong12

木虫 (小有名气)


努力着(金币+1):多谢!
在前面是已经定义了他们的值,但是在后面做判断的时候就要求用常数表示啊.a,b,c表示的是变量,后面要用确切的数字才行.
4楼2006-09-11 23:51:57
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

huagong12

木虫 (小有名气)

那你把a,b,c全换成数字看看?应该没什么问题了.
5楼2006-09-11 23:52:49
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

huangck

木虫 (正式写手)


努力着(金币+1):多谢!
一:
++ -- 运算符的优先级高于* 所以语句相当于
(++a)*(--a)
6楼2006-09-11 23:55:48
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

yuzhan

木虫 (正式写手)

Keep moving forward


努力着(金币+1):多谢!
引用回帖:
Originally posted by huangck at 2006-9-11 11:55 PM:
一:
++ -- 运算符的优先级高于* 所以语句相当于
(++a)*(--a)

楼上正确。


详细的说就是a经过一个++操作与一个--操作后,a还是为5。所以++a*--a就是相当于5×5。楼主试试b=--a*--a与b=++a*++a就知道了。//分别为36与16。
7楼2006-09-12 01:53:23
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

yonggl

金虫 (正式写手)

你要理解什么是:常量表达式

只进行一些运算的常量形成的表达式,比如:
3+5*6
个人blog: www.x5dj.com/yonggl 三十不立,四十不富,五十不豪,人生白活
8楼2006-09-12 09:22:11
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 努力着 的主题更新
信息提示
请填处理意见