C#小游戏

Forty2 2016-08-29 09:13:59

代码很简单,单项选择A,B,C,能附上理由更佳。
请尽量回答后再上机验证:)

class Program
{
static void Main()
{
int a = 1, b = 2, c = 3;
System.Console.WriteLine("{0} {1}", a < b, c > (1 + 1) * 1.5, a, b, c);
}
}

/*
A: true false
B: true true
C: Visual Studio不知道如何编译。
*/
...全文
415 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Forty2 2016-08-30
  • 打赏
  • 举报
回复
谢谢朋友们的参与。 答案是C,原因确如大家所讨论的,是泛型语法(大于号,小于号)造成的歧义,导致VS编译错误。 把a < b, c > (1 + 1) * 1.5 解释为泛型函数调用的例子如下:
class Program
{
    static void Main()
    {
        Console.WriteLine("{0} {1}", a<b, c>(1 + 1) * 1.5, "");  // 输出 30
    }

    static double a<T1, T2>(double d) { return 20; }
    class b { }
    class c { }
}
注一、 答案C也不是绝对准确。DotNet1.1还不支持泛型, Visual Studio .NET 2003可以通过编译并运行出答案A。 注二、 微软早知道该歧义(C++也有类似问题)。因为出现歧义的概率很小,而且可以用编译器来抱怨,他们还是选用了(大于号,小于号)作为泛型语法标志。
dianjixue1 2016-08-30
  • 打赏
  • 举报
回复
原来结果是这样。3#,5#已将答案贴出......
HerveyHall 2016-08-29
  • 打赏
  • 举报
回复
学习到了
xian_wwq 2016-08-29
  • 打赏
  • 举报
回复
实践证明要确保表达式的正确性,()非常重要
  • 打赏
  • 举报
回复
好吧。。。。。居然是无法编译…… 看来编译器判断泛型的优先级比较高
bigbaldy 2016-08-29
  • 打赏
  • 举报
回复
b和c被当成泛型参数了
  • 打赏
  • 举报
回复
A a<b这个不难理解,c > (1 + 1) * 1.5这个是整形与double型比较,整形会被强转为double型,而在强转后,一般会出现精度问题,即丢失精度,进而导致比同等值的double小,最终又回到了double比较方式是 Math.Abs(c- (1 + 1) * 1.5)<0.0001这种小于指定精度就认为正确的解决方案上来
xuzuning 2016-08-29
  • 打赏
  • 举报
回复
C a < b, c > (1 + 1) * 1.5 < b, c > 被解释成了类型声明 编译器将其理解为在执行 a<b, c> (1 + 1) 方法 写作
System.Console.WriteLine("{0} {1}", (a < b), c > (1 + 1) * 1.5, a, b, c);
即可
巴士上的邂逅 2016-08-29
  • 打赏
  • 举报
回复
歧义句
夏天的枫 2016-08-29
  • 打赏
  • 举报
回复
引用 2 楼 hjq624779687 的回复:
我把a<b改成了(a<b),结果是True Flase
按照原来的写法会报错。。。VS把a<b,c>看成一个单元了。
夏天的枫 2016-08-29
  • 打赏
  • 举报
回复
我把a<b改成了(a<b),结果是True Flase
巴士上的邂逅 2016-08-29
  • 打赏
  • 举报
回复
哈哈,竟然会这样!!
crystal_lz 2016-08-29
  • 打赏
  • 举报
回复
差点就上当选A了。。。。。。。。
Poopaye 2016-08-29
  • 打赏
  • 举报
回复
选项应该这样写 A: true true B: true false C: false true D: false false
Poopaye 2016-08-29
  • 打赏
  • 举报
回复
我选c

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧