当前位置:编程学习 > C/C++ >>

C++菜鸟学习中的问题

#include "iostream.h"
int main()
{
 int a=0,b=1,c=2;
 switch (a)
 {
 case 0:
  cout <<b+c <<endl;
 case 1:
  {
   a=a+b*c;
   switch (a)
   {
   case 2:
    cout <<b+c <<endl;
   case 5:
    cout <<(a=a+b*c) <<endl;
   default :
    c=c*2;
    break;
   }
  }
 default :
  cout <<a+b+c <<endl;
  break;
 }
return 0;
}

问:问啥子case 5中把5改成啥子数答案都不变,问哈cout <<(a=a+b*c) <<endl;
为啥子加()。。。

我很菜。。。才学为了考2级。。。

补充:switch (a)
   {
   case 2:
    cout <<b+c <<endl;
   case 5:
    cout <<(a=a+b*c) <<endl;
   default :
    c=c*2;
    break;
   }
我把case 2 改成 case 8结果直接略过不执行   而  case 5 改的话 没影响。。。???不懂。。。
答案:

case 5:
    cout <<(a=a+b*c) <<endl;
直接输出改成cout<<(a+b*c)<<endl;,你直接输出结果, 所以那个a=是多余的,如果写成cout <<(a=a+b*c) <<endl;两个小括号就必须加了,因为考虑到优先及问题,如果写成cout<<(a+b*c)<<endl这个括号就可有可无了,但一般习惯加括号,这样保险,读起来容易,也养成好的习惯

 

cout <<(a=a+b*c) <<endl;
若不加括号 会变成 cout<<a

                                            =

                                              a.....

这样会直接输出a,本意是输出赋值后的a

符号有何优先级的问题 在有关符号那一章有详细的优先级表

=是优先级最小的 也就是 最后才执行它 所以先执行<<a  在执行=  这样就会运行错误

 

能不能把问题说清楚一点啊

case 2:
    cout <<b+c <<endl;

break; b+c是一个表达式 (a=a+b*c) 是一个表达式

每个case语句结束时需要break,否则程序会继续执行以下的代码直到出现第一个break为止

上一个:谁能告诉学习C++怎么入门
下一个:如何学习C++语言

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,