A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志祥 中级黑马   /  2012-3-27 12:05  /  1668 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李志祥 于 2012-3-27 12:22 编辑




为什么上面和下面的用的不都是=呢,下面的用==,上面的用的是=,而我下面用=的话,就不会输出李四的工资
有什么区别啊,求解,多谢

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

4 个回复

倒序浏览
柏云杉兄弟已给解答。

= 是赋值,==是判断两边的值是否相等然后返回一个bool值。
if 语句它会根据小括号中的表达式所返回的bool值来判断是否执行大括号中的代码。
所以要用==。
回复 使用道具 举报
   switch (input)
            {
                case "A":
                    salary += 500;
                    break;
                case "B":
                    salary += 200;
                    break;
                case "C":
                    break;
                case "D":
                    salary -= 200;
                    break;
                case "E":
                    salary -= 500;
                    break;
                default:
                    Console.WriteLine("您的输入有问题");
                    flag = true;
                    break;
             }
            if (flag = false)
            {
                Console.WriteLine("张三的工资是" + salary);
            }
当你输入后,switch会匹配对应的case,没有匹配到,则执行default中的代码块。
因为你输入了正确的匹配值,对应的case中的代码执行。但你没有看到输出结果。但也没有报错。
是因为if(flag=false) 在编译这句代码的时候把flag=false解析为给flag变量赋值,再做if判断。所以不会报错,if 中的条件是false,所以不会执行if中的代码块。
因此出现了你所说的情况

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
if()里面必须放的条件表达式,你放的=是赋值语句,怎么可能正确呢!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
看来你基础视频没有好好看啊,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马