为什么我总是得到字符'?'当在int和char之间转换时?
问题描述:
我使用Microsoft Visual C#:为什么我总是得到字符'?'当在int和char之间转换时?
Console.Write((char)((int)sentence[i] + random.Next(2) == 0 ? 1 : -1));
我想Console.Write炭我有一句话当前指数[I],但随机要么得到它的上面或下面的字符。然而,我总是得到char'?'。 为什么?
答
您正遇到操作顺序问题。尝试添加括号:
Console.Write((char)((int)sentence[i] + (random.Next(2) == 0 ? 1 : -1)));
没有括号,它是做:
(句子[I] + random.Next(2))== 0? 1:-1
...您可以看到总是以1或-1结果。给定ASCII字符范围,几乎肯定总是导致-1,这显然不是可打印的字符,因此输出为?
。
+0
感谢您的详细。当他们有逻辑推理时,它帮助我记住失败。 – PlayCreatively
你错过了括号。你的代码正在执行'if sentence [i] + rnd == 0'而不是'sentence [i] + if(rnd){} ...'。改变代码为:'Console.Write((char)((int)sentence [i] +(random.Next(2)== 0?1:-1)));' – Rob
哦,当然!谢谢你,这让人感觉很有意思。 – PlayCreatively