黑马程序员技术交流社区

标题: 求解下图程序中=和==的区别 [打印本页]

作者: 李志祥    时间: 2012-3-27 12:05
标题: 求解下图程序中=和==的区别
本帖最后由 李志祥 于 2012-3-27 12:22 编辑




为什么上面和下面的用的不都是=呢,下面的用==,上面的用的是=,而我下面用=的话,就不会输出李四的工资
有什么区别啊,求解,多谢
作者: 李志祥    时间: 2012-3-27 12:22
柏云杉兄弟已给解答。

= 是赋值,==是判断两边的值是否相等然后返回一个bool值。
if 语句它会根据小括号中的表达式所返回的bool值来判断是否执行大括号中的代码。
所以要用==。

作者: 张恒    时间: 2012-3-27 12:28
   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中的代码块。
因此出现了你所说的情况
作者: 张学良    时间: 2012-3-27 12:38
if()里面必须放的条件表达式,你放的=是赋值语句,怎么可能正确呢!
作者: 孙树迁    时间: 2012-3-27 12:47
看来你基础视频没有好好看啊,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2