首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

白痴的三元运算符有关问题

2012-01-21 
白痴的三元运算符问题inta8intb9intvswitch(a+b){casebv 8?true:false:}别问我为什么这么做,我只是

白痴的三元运算符问题
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试试编译能通过不?

热点排行