白痴的三元运算符问题
int a=8;
int b=9;
int v;
switch (a + b)
{
case b=v> 8?true:false:
}
别问我为什么这么做,我只是打个比方,也别说违背面向对象思想,我就是想这么实现,case b=v> 8?true:false: 编译不过去,其实条件很多,所以我用case,虽然我把这个if掉了 但是还是想知道是否能实现case b=v> 8?true:false:这句话,
在线等,请给出正确答案,别扯文言!行就给答案,不行说不行
马上给分
------解决方案--------------------既然你不编译,我也不编译,
case b=v> 8?true:false:
这里你想得到什么呢?
b=v> 8//v右移8位,赋值给b
这里b至少不是bool类型,那就无法使用?,因为三目运算符需要?前面是个返回bool的表达式或者bool值。
不知道你想实现什么,C#里不支持逗号表达式的。
------解决方案--------------------不行,case语句生成的IL代码看看就知道了,case中的判断条件必须是常量,但是可以进行折衷处理。
case如果搞成了变量逻辑上倒是能说过去,但是实际上运行开销就加大了,我是说不是说编译器做不到,关键看这么做的必要性和开销
------解决方案--------------------我找到了一篇blog,有switch的C语言版和汇编版,楼主对比一下马上就明白了
http://codefan.spaces.live.com/blog/cns!a4330c839cff6d86!139.entry
------解决方案--------------------这不是三运算符的问题,b=v> 8?true:false可以看做是赋值,
你写个case b=true试试编译能通过不?