黑马程序员技术交流社区
标题:
关系运算符==的问题
[打印本页]
作者:
申延超
时间:
2012-7-21 13:01
标题:
关系运算符==的问题
我要判断各月份有多少天,不用switch case, 用if的话
Console.WriteLine("请输入月份:");
int month = Convert.ToInt32(Console.ReadLine());
if(month==1)
为啥不能写成 if(month==1,3,5,7,10,12)
(就是说直接判断month的值为1,3,5,7,10,12中的某一个,)
而不用写成 if(month=1)
{
}
if(month=2)
{
}
if(month=3)
{
}
作者:
康子龙
时间:
2012-7-21 13:25
只能说语法就是这么规定的没啥为什么,==是二元运算符只能带有两个参数。
或许这么说更明白点,当你对==符号进行运算符重载时,参数的类型必须与声明该运算符的类或结构的类型相同也就是如下:
public static Complex operator ==(Complex c1, Complex c2)
复制代码
这就说明了C#对其的定义就是==右边只能有一个参数,而且我知道的所有语言都是只能进行二元运算
作者:
刘建素
时间:
2012-7-21 13:28
==为关系运算符 关系操作符都是二元运算符 顾名思义只能是两个表达式之间的比较 返回值为 true,false 你写的 int 型 的month 和 (1,2,3)明显不是两个表达式之间的比较
作者:
申延超
时间:
2012-7-21 13:39
哦 忘记二元运算符这回事了 ,谢谢回复
作者:
王超
时间:
2012-7-21 16:10
=表示的是赋值运算符
==表示的关系运算符
作者:
宫明星
时间:
2012-7-21 16:28
楼上几位该说的都说了
一个是赋值,一个是关系。
性质就不一样。
作者:
京鱼龙
时间:
2012-7-21 21:38
想法是好,但是要想到运算速度的关系,虽然微不足道,还有代码的从简性,你或者可以写成if(month==1||month==2||......||month==12),这种方法比一个一个判断要好些。但是也不可取。这样代码阅读起来太长费劲。最简单的还是一次性写完。
作者:
ARMdong
时间:
2012-7-21 23:51
当用month=1时,意思是将1赋值给month;
用month==1时,才是比较month的值是不是等于1;
当month的值为1时,表达式(month==1)的值为true,month不为1,表达式的值为false。
作者:
曾玉锋
时间:
2012-7-22 09:47
正是因为这样的原因,开发人员也有和楼主一样的想法,所以才有swith.....case....的问世啊! 多值判断,如果不想用if,那就用switch...case最合适。
作者:
黑马李果
时间:
2012-7-26 20:33
if(month==1,3,5,7,10,12), 哪有这种想当然的语法?
可以这样写:
if (new []{1,3,5,7,8,10,12}.Contains(month))
作者:
张腾达
时间:
2012-7-26 20:48
我比较喜欢switch 哈哈 结构多清晰啊
作者:
吴清华
时间:
2012-7-29 21:11
=是赋值运算符,=左边必须是个变量而不能是表达式或者常量。=右边则没有这些限制。
==是二元关系运算符,相当于数学上的等号 判断左右两边的值是否相等,返回的是布尔类型的值为真或者假、
作者:
郭正续
时间:
2012-7-30 08:51
==是个二元运算符,所以只能一个一个来判断,如果写成 if(month==1,3,5,7,10,12)是违背程序规定的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2