【问题标题】:Why do I always get the char '?' when converting between int and char?为什么我总是得到 char '?在 int 和 char 之间转换时?
【发布时间】:2017-06-08 15:28:48
【问题描述】:

我正在使用 Microsoft Visual C#:

Console.Write((char)((int)sentence[i] + random.Next(2) == 0 ? 1 : -1));

我正在尝试 Console.Write 我在当前的 sentence[i] 索引中的字符,但随机获取它上面或下面的字符。 但是,相反,我总是得到字符“?”。 为什么?

【问题讨论】:

  • 您缺少括号。您的代码正在执行 if sentence[i] + rnd == 0 而不是 sentence[i] + if (rnd) {} ...。将代码更改为:Console.Write((char)((int)sentence[i] + (random.Next(2) == 0 ? 1 : -1)));
  • 哦,当然!谢谢伙计,这很有意义。

标签: c# char int


【解决方案1】:

您遇到了操作顺序问题。尝试添加括号:

Console.Write((char)((int)sentence[i] + (random.Next(2) == 0 ? 1 : -1)));

没有括号,它正在做:

(sentence[i] + random.Next(2)) == 0 ? 1:-1

... 你可以看到它总是导致 1 或 -1。考虑到 ASCII 字符范围,几乎可以肯定它总是导致 -1,这显然不是可打印字符,因此是 ? 输出。

【讨论】:

  • 感谢您详细介绍。当失败背后有逻辑推理时,它可以帮助我记住失败。
猜你喜欢
  • 1970-01-01
  • 2012-04-26
  • 2015-01-05
  • 2013-09-15
  • 2012-11-27
  • 2013-10-05
  • 1970-01-01
相关资源
最近更新 更多